@timber-js/app 0.2.0-alpha.2 → 0.2.0-alpha.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -0
- package/agent-skill.md +346 -0
- package/dist/_chunks/actions-d1hCqnU3.js +345 -0
- package/dist/_chunks/actions-d1hCqnU3.js.map +1 -0
- package/dist/_chunks/als-registry-C6kcfprT.js +41 -0
- package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
- package/dist/_chunks/base-path-DaQrzbez.js +80 -0
- package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
- package/dist/_chunks/build-manifest-DTmSGLRz.js +135 -0
- package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
- package/dist/_chunks/build-output-helper-9dqCv1pZ.js +370 -0
- package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
- package/dist/_chunks/cache-api-ByagcC-J.js +1149 -0
- package/dist/_chunks/cache-api-ByagcC-J.js.map +1 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
- package/dist/_chunks/chains-Bpb0W4ax.js +412 -0
- package/dist/_chunks/chains-Bpb0W4ax.js.map +1 -0
- package/dist/_chunks/cli-check-D6VolrDV.js +293 -0
- package/dist/_chunks/cli-check-D6VolrDV.js.map +1 -0
- package/dist/_chunks/cli-schema-sync-D6rO-VcS.js +299 -0
- package/dist/_chunks/cli-schema-sync-D6rO-VcS.js.map +1 -0
- package/dist/_chunks/cloudflare-BFb__LYG.js +1290 -0
- package/dist/_chunks/cloudflare-BFb__LYG.js.map +1 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
- package/dist/_chunks/convention-lint-fRkwVwEH.js +893 -0
- package/dist/_chunks/convention-lint-fRkwVwEH.js.map +1 -0
- package/dist/_chunks/dist-DtrJyBbw.js +386 -0
- package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
- package/dist/_chunks/error-boundary-BfPHZjm0.js +1050 -0
- package/dist/_chunks/error-boundary-BfPHZjm0.js.map +1 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
- package/dist/_chunks/file-cache-Dw6BJPG7.js +458 -0
- package/dist/_chunks/file-cache-Dw6BJPG7.js.map +1 -0
- package/dist/_chunks/format-BKclgVbk.js +14 -0
- package/dist/_chunks/format-BKclgVbk.js.map +1 -0
- package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
- package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
- package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
- package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
- package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
- package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
- package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
- package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
- package/dist/_chunks/live-graph-D_2D32Ad.js +150 -0
- package/dist/_chunks/live-graph-D_2D32Ad.js.map +1 -0
- package/dist/_chunks/logger-uLBuGKDI.js +1484 -0
- package/dist/_chunks/logger-uLBuGKDI.js.map +1 -0
- package/dist/_chunks/navigation-context-D0TU0Jog.js +135 -0
- package/dist/_chunks/navigation-context-D0TU0Jog.js.map +1 -0
- package/dist/_chunks/navigation-root-mHSK9psY.js +126 -0
- package/dist/_chunks/navigation-root-mHSK9psY.js.map +1 -0
- package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
- package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
- package/dist/_chunks/plugin-context-8idfR3UZ.js +321 -0
- package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
- package/dist/_chunks/poison-scan-Bm9Yyqk9.js +101 -0
- package/dist/_chunks/poison-scan-Bm9Yyqk9.js.map +1 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
- package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
- package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
- package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
- package/dist/_chunks/scan-BoP17W3w.js +140 -0
- package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
- package/dist/_chunks/scanner-AiazgH_f.js +1771 -0
- package/dist/_chunks/scanner-AiazgH_f.js.map +1 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
- package/dist/_chunks/segment-context-D9_89u34.js +34 -0
- package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
- package/dist/_chunks/segment-keys-lqtdookO.js +256 -0
- package/dist/_chunks/segment-keys-lqtdookO.js.map +1 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
- package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
- package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
- package/dist/_chunks/{ssr-data-DLnbYpj1.js → ssr-data-D6T6Y3ef.js} +3 -31
- package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +1 -0
- package/dist/_chunks/state-FippDgxN.js +52 -0
- package/dist/_chunks/state-FippDgxN.js.map +1 -0
- package/dist/_chunks/status-page-marker-DwQBrLBz.js +496 -0
- package/dist/_chunks/status-page-marker-DwQBrLBz.js.map +1 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
- package/dist/_chunks/walkers-B6XUtmqK.js +144 -0
- package/dist/_chunks/walkers-B6XUtmqK.js.map +1 -0
- package/dist/adapters/build-output-helper.d.ts +72 -0
- package/dist/adapters/build-output-helper.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.d.ts +109 -0
- package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +74 -0
- package/dist/adapters/cloudflare-dev.js.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.js +123 -0
- package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +200 -22
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +2 -188
- package/dist/adapters/compress-module.d.ts +17 -4
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/fs-identity.d.ts +64 -0
- package/dist/adapters/fs-identity.d.ts.map +1 -0
- package/dist/adapters/nitro-presets.d.ts +37 -0
- package/dist/adapters/nitro-presets.d.ts.map +1 -0
- package/dist/adapters/nitro-preview.d.ts +32 -0
- package/dist/adapters/nitro-preview.d.ts.map +1 -0
- package/dist/adapters/nitro.d.ts +82 -37
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +457 -288
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +62 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/adapters/types.d.ts +28 -6
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/analyze/chains.d.ts +124 -0
- package/dist/analyze/chains.d.ts.map +1 -0
- package/dist/analyze/classify.d.ts +150 -0
- package/dist/analyze/classify.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.d.ts +17 -0
- package/dist/analyze/crawl-entry.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.js +313 -0
- package/dist/analyze/crawl-entry.js.map +1 -0
- package/dist/analyze/crawl.d.ts +134 -0
- package/dist/analyze/crawl.d.ts.map +1 -0
- package/dist/analyze/graph-cache.d.ts +104 -0
- package/dist/analyze/graph-cache.d.ts.map +1 -0
- package/dist/analyze/graph-command.d.ts +43 -0
- package/dist/analyze/graph-command.d.ts.map +1 -0
- package/dist/analyze/graph-command.js +472 -0
- package/dist/analyze/graph-command.js.map +1 -0
- package/dist/analyze/live-graph.d.ts +81 -0
- package/dist/analyze/live-graph.d.ts.map +1 -0
- package/dist/analyze/poison-rules.d.ts +72 -0
- package/dist/analyze/poison-rules.d.ts.map +1 -0
- package/dist/analyze/poison-scan.d.ts +48 -0
- package/dist/analyze/poison-scan.d.ts.map +1 -0
- package/dist/analyze/scan.d.ts +73 -0
- package/dist/analyze/scan.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +48 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/fast-hash.d.ts +27 -0
- package/dist/cache/fast-hash.d.ts.map +1 -0
- package/dist/cache/handler-store.d.ts +33 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +32 -9
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +3 -284
- package/dist/cache/invalidation-epoch.d.ts +43 -0
- package/dist/cache/invalidation-epoch.d.ts.map +1 -0
- package/dist/cache/json-lossy-check.d.ts +11 -0
- package/dist/cache/json-lossy-check.d.ts.map +1 -0
- package/dist/cache/redis-handler.d.ts +141 -9
- package/dist/cache/redis-handler.d.ts.map +1 -1
- package/dist/cache/singleflight.d.ts +21 -2
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/stable-stringify.d.ts +9 -0
- package/dist/cache/stable-stringify.d.ts.map +1 -1
- package/dist/cache/store.d.ts +53 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
- package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.js +29 -0
- package/dist/cache/stores/cloudflare-kv.js.map +1 -0
- package/dist/cache/stores/memory.d.ts +42 -0
- package/dist/cache/stores/memory.d.ts.map +1 -0
- package/dist/cache/stores/memory.js +90 -0
- package/dist/cache/stores/memory.js.map +1 -0
- package/dist/cache/stores/redis.d.ts +69 -0
- package/dist/cache/stores/redis.d.ts.map +1 -0
- package/dist/cache/stores/redis.js +35 -0
- package/dist/cache/stores/redis.js.map +1 -0
- package/dist/cache/stores/vercel.d.ts +36 -0
- package/dist/cache/stores/vercel.d.ts.map +1 -0
- package/dist/cache/stores/vercel.js +33 -0
- package/dist/cache/stores/vercel.js.map +1 -0
- package/dist/cache/tag-aware-handler.d.ts +52 -0
- package/dist/cache/tag-aware-handler.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +21 -11
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cdn/cloudflare-purge.d.ts +23 -0
- package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
- package/dist/cdn/cloudflare-purge.js +30 -0
- package/dist/cdn/cloudflare-purge.js.map +1 -0
- package/dist/cdn/fastly-purge.d.ts +25 -0
- package/dist/cdn/fastly-purge.d.ts.map +1 -0
- package/dist/cdn/fastly-purge.js +33 -0
- package/dist/cdn/fastly-purge.js.map +1 -0
- package/dist/cdn/headers.d.ts +97 -0
- package/dist/cdn/headers.d.ts.map +1 -0
- package/dist/cdn/index.d.ts +5 -0
- package/dist/cdn/index.d.ts.map +1 -0
- package/dist/cdn/index.js +94 -0
- package/dist/cdn/index.js.map +1 -0
- package/dist/cdn/purge-store.d.ts +23 -0
- package/dist/cdn/purge-store.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.d.ts +20 -0
- package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.js +35 -0
- package/dist/cdn/workers-cache-purge.js.map +1 -0
- package/dist/cli-check.d.ts +163 -0
- package/dist/cli-check.d.ts.map +1 -0
- package/dist/cli-schema-sync.d.ts +59 -0
- package/dist/cli-schema-sync.d.ts.map +1 -0
- package/dist/cli.d.ts +75 -8
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +175 -47
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +37 -1
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/action-queue.d.ts +44 -0
- package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +63 -0
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
- package/dist/client/browser-entry/index.d.ts +30 -0
- package/dist/client/browser-entry/index.d.ts.map +1 -0
- package/dist/client/browser-entry/post-hydration.d.ts +29 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +46 -0
- package/dist/client/browser-entry/router-init.d.ts.map +1 -0
- package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
- package/dist/client/browser-entry/scroll.d.ts +28 -0
- package/dist/client/browser-entry/scroll.d.ts.map +1 -0
- package/dist/client/deny-last-resort.d.ts +29 -0
- package/dist/client/deny-last-resort.d.ts.map +1 -0
- package/dist/client/error-boundary.d.ts +66 -6
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +2 -126
- package/dist/client/error-reconstituter.d.ts +61 -0
- package/dist/client/error-reconstituter.d.ts.map +1 -0
- package/dist/client/form.d.ts +16 -27
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/global-context.d.ts +15 -0
- package/dist/client/global-context.d.ts.map +1 -0
- package/dist/client/history.d.ts +50 -9
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +20 -33
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +323 -1148
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +20 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +818 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link.d.ts +63 -60
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/location-search.d.ts +12 -0
- package/dist/client/location-search.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts +121 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-commit.d.ts +98 -0
- package/dist/client/navigation-commit.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +51 -31
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/navigation-root.d.ts +98 -0
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/navigation-transition.d.ts +187 -0
- package/dist/client/navigation-transition.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts +1 -1
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/params-context.d.ts +81 -0
- package/dist/client/params-context.d.ts.map +1 -0
- package/dist/client/react-root.d.ts +44 -0
- package/dist/client/react-root.d.ts.map +1 -0
- package/dist/client/router-effects.d.ts +130 -0
- package/dist/client/router-effects.d.ts.map +1 -0
- package/dist/client/router-lifecycle.d.ts +98 -0
- package/dist/client/router-lifecycle.d.ts.map +1 -0
- package/dist/client/router-pipeline.d.ts +87 -0
- package/dist/client/router-pipeline.d.ts.map +1 -0
- package/dist/client/router-ref.d.ts +2 -2
- package/dist/client/router-ref.d.ts.map +1 -1
- package/dist/client/router-skew.d.ts +21 -0
- package/dist/client/router-skew.d.ts.map +1 -0
- package/dist/client/router-types.d.ts +272 -0
- package/dist/client/router-types.d.ts.map +1 -0
- package/dist/client/router.d.ts +1 -97
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +104 -26
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +161 -25
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-context.d.ts +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +68 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/segment-update-context.d.ts +15 -0
- package/dist/client/segment-update-context.d.ts.map +1 -0
- package/dist/client/shallow-url.d.ts +10 -0
- package/dist/client/shallow-url.d.ts.map +1 -0
- package/dist/client/slot-content-cache-context.d.ts +35 -0
- package/dist/client/slot-content-cache-context.d.ts.map +1 -0
- package/dist/client/slot-context.d.ts +31 -0
- package/dist/client/slot-context.d.ts.map +1 -0
- package/dist/client/slot-outlet.d.ts +16 -0
- package/dist/client/slot-outlet.d.ts.map +1 -0
- package/dist/client/slot-provider.d.ts +25 -0
- package/dist/client/slot-provider.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +29 -7
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/stale-client.d.ts +69 -0
- package/dist/client/stale-client.d.ts.map +1 -0
- package/dist/client/state.d.ts +19 -8
- package/dist/client/state.d.ts.map +1 -1
- package/dist/client/status-page-marker.d.ts +25 -0
- package/dist/client/status-page-marker.d.ts.map +1 -0
- package/dist/client/top-loader.d.ts +7 -6
- package/dist/client/top-loader.d.ts.map +1 -1
- package/dist/client/unload-guard.d.ts +5 -0
- package/dist/client/unload-guard.d.ts.map +1 -1
- package/dist/client/use-cookie.d.ts +12 -0
- package/dist/client/use-cookie.d.ts.map +1 -1
- package/dist/client/use-link-status.d.ts +5 -5
- package/dist/client/use-link-status.d.ts.map +1 -1
- package/dist/client/use-pathname.d.ts +13 -11
- package/dist/client/use-pathname.d.ts.map +1 -1
- package/dist/client/use-pending-navigation.d.ts +23 -0
- package/dist/client/use-pending-navigation.d.ts.map +1 -0
- package/dist/client/use-query-states.d.ts +10 -4
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/client/use-router.d.ts +2 -2
- package/dist/client/use-router.d.ts.map +1 -1
- package/dist/client/use-search-params.d.ts +15 -8
- package/dist/client/use-search-params.d.ts.map +1 -1
- package/dist/client/use-segment-params.d.ts +55 -0
- package/dist/client/use-segment-params.d.ts.map +1 -0
- package/dist/codec.d.ts +69 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +76 -0
- package/dist/codec.js.map +1 -0
- package/dist/config-types.d.ts +322 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +51 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/cookies/define-cookie.d.ts +58 -25
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.d.ts +3 -2
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/index.js +256 -36
- package/dist/cookies/index.js.map +1 -1
- package/dist/cookies/json-cookie.d.ts +64 -0
- package/dist/cookies/json-cookie.d.ts.map +1 -0
- package/dist/cookies/validation.d.ts +34 -0
- package/dist/cookies/validation.d.ts.map +1 -0
- package/dist/dev-tools/404-page.d.ts +50 -0
- package/dist/dev-tools/404-page.d.ts.map +1 -0
- package/dist/dev-tools/browser-logs.d.ts +40 -0
- package/dist/dev-tools/browser-logs.d.ts.map +1 -0
- package/dist/dev-tools/dev-page-shell.d.ts +78 -0
- package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
- package/dist/dev-tools/error-page.d.ts +32 -0
- package/dist/dev-tools/error-page.d.ts.map +1 -0
- package/dist/dev-tools/holding-server.d.ts +46 -0
- package/dist/dev-tools/holding-server.d.ts.map +1 -0
- package/dist/dev-tools/hydration-overlay.d.ts +11 -0
- package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
- package/dist/dev-tools/index.d.ts +31 -0
- package/dist/dev-tools/index.d.ts.map +1 -0
- package/dist/dev-tools/instrumentation.d.ts +59 -0
- package/dist/dev-tools/instrumentation.d.ts.map +1 -0
- package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
- package/dist/dev-tools/logger.d.ts.map +1 -0
- package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
- package/dist/dev-tools/logs.d.ts.map +1 -0
- package/dist/dev-tools/overlay.d.ts +91 -0
- package/dist/dev-tools/overlay.d.ts.map +1 -0
- package/dist/dev-tools/stack-classifier.d.ts +34 -0
- package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
- package/dist/dev-tools/terminal.d.ts +28 -0
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/fonts/ast-walk.d.ts +68 -0
- package/dist/fonts/ast-walk.d.ts.map +1 -0
- package/dist/fonts/ast.d.ts +112 -8
- package/dist/fonts/ast.d.ts.map +1 -1
- package/dist/fonts/bundle.d.ts +50 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +2 -1
- package/dist/fonts/css.d.ts.map +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/fallbacks.d.ts +0 -7
- package/dist/fonts/fallbacks.d.ts.map +1 -1
- package/dist/fonts/google.d.ts +5 -3
- package/dist/fonts/google.d.ts.map +1 -1
- package/dist/fonts/local.d.ts +6 -4
- package/dist/fonts/local.d.ts.map +1 -1
- package/dist/fonts/paths.d.ts +43 -0
- package/dist/fonts/paths.d.ts.map +1 -0
- package/dist/fonts/pipeline.d.ts +177 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +82 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +47 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +77 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +35 -153
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10488 -13975
- package/dist/index.js.map +1 -1
- package/dist/params/codec-registry.d.ts +26 -0
- package/dist/params/codec-registry.d.ts.map +1 -0
- package/dist/params/define-schema.d.ts +81 -0
- package/dist/params/define-schema.d.ts.map +1 -0
- package/dist/params/index.d.ts +5 -0
- package/dist/params/index.d.ts.map +1 -0
- package/dist/params/index.js +34 -0
- package/dist/params/index.js.map +1 -0
- package/dist/params/resolve-schema.d.ts +34 -0
- package/dist/params/resolve-schema.d.ts.map +1 -0
- package/dist/plugin-context.d.ts +276 -0
- package/dist/plugin-context.d.ts.map +1 -0
- package/dist/plugins/adapter-build.d.ts +21 -1
- package/dist/plugins/adapter-build.d.ts.map +1 -1
- package/dist/plugins/build-manifest.d.ts +7 -3
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +54 -7
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/cache.d.ts +64 -0
- package/dist/plugins/cache.d.ts.map +1 -0
- package/dist/plugins/callsite-ast.d.ts +117 -0
- package/dist/plugins/callsite-ast.d.ts.map +1 -0
- package/dist/plugins/callsite-jsx.d.ts +35 -0
- package/dist/plugins/callsite-jsx.d.ts.map +1 -0
- package/dist/plugins/chunks.d.ts +11 -4
- package/dist/plugins/chunks.d.ts.map +1 -1
- package/dist/plugins/client-chunks.d.ts +40 -0
- package/dist/plugins/client-chunks.d.ts.map +1 -0
- package/dist/plugins/cloudflare-wasm.d.ts +21 -0
- package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-discovery.d.ts +123 -0
- package/dist/plugins/dev-discovery.d.ts.map +1 -0
- package/dist/plugins/dev-server.d.ts +17 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +32 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +16 -65
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/graph-endpoint.d.ts +112 -0
- package/dist/plugins/graph-endpoint.d.ts.map +1 -0
- package/dist/plugins/mdx.d.ts +24 -5
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/prebuilt-capture.d.ts +60 -0
- package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
- package/dist/plugins/prebuilt.d.ts +82 -0
- package/dist/plugins/prebuilt.d.ts.map +1 -0
- package/dist/plugins/prerender-sugar.d.ts +39 -0
- package/dist/plugins/prerender-sugar.d.ts.map +1 -0
- package/dist/plugins/request-dep/analysis.d.ts +106 -0
- package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
- package/dist/plugins/request-dep/index.d.ts +75 -0
- package/dist/plugins/request-dep/index.d.ts.map +1 -0
- package/dist/plugins/request-dep/origin.d.ts +61 -0
- package/dist/plugins/request-dep/origin.d.ts.map +1 -0
- package/dist/plugins/routing.d.ts +1 -1
- package/dist/plugins/routing.d.ts.map +1 -1
- package/dist/plugins/server-bundle.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts +29 -5
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +218 -21
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +26 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +61 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen-write.d.ts +51 -0
- package/dist/routing/codegen-write.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +8 -3
- package/dist/routing/codegen.d.ts.map +1 -1
- package/dist/routing/collision-probe.d.ts +104 -0
- package/dist/routing/collision-probe.d.ts.map +1 -0
- package/dist/routing/collision-spaces.d.ts +26 -0
- package/dist/routing/collision-spaces.d.ts.map +1 -0
- package/dist/routing/convention-lint.d.ts +55 -0
- package/dist/routing/convention-lint.d.ts.map +1 -0
- package/dist/routing/export-detect.d.ts +72 -0
- package/dist/routing/export-detect.d.ts.map +1 -0
- package/dist/routing/file-cache.d.ts +8 -0
- package/dist/routing/file-cache.d.ts.map +1 -0
- package/dist/routing/index.d.ts +13 -7
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +5 -2
- package/dist/routing/interception-overlap.d.ts +35 -0
- package/dist/routing/interception-overlap.d.ts.map +1 -0
- package/dist/routing/interception.d.ts +234 -10
- package/dist/routing/interception.d.ts.map +1 -1
- package/dist/routing/link-codegen.d.ts +105 -0
- package/dist/routing/link-codegen.d.ts.map +1 -0
- package/dist/routing/manifest-codegen.d.ts +26 -0
- package/dist/routing/manifest-codegen.d.ts.map +1 -0
- package/dist/routing/scanner.d.ts +14 -10
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/schema-validation.d.ts +35 -0
- package/dist/routing/schema-validation.d.ts.map +1 -0
- package/dist/routing/segment-classify.d.ts +114 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/segment-codegen.d.ts +38 -0
- package/dist/routing/segment-codegen.d.ts.map +1 -0
- package/dist/routing/segment-keys.d.ts +118 -0
- package/dist/routing/segment-keys.d.ts.map +1 -0
- package/dist/routing/slot-placement.d.ts +48 -0
- package/dist/routing/slot-placement.d.ts.map +1 -0
- package/dist/routing/types.d.ts +74 -26
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/routing/walkers.d.ts +57 -0
- package/dist/routing/walkers.d.ts.map +1 -0
- package/dist/rsc-runtime/rsc.d.ts +1 -1
- package/dist/rsc-runtime/rsc.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +14 -0
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/rsc-runtime/transforms.d.ts +13 -0
- package/dist/rsc-runtime/transforms.d.ts.map +1 -0
- package/dist/schema-bridge.d.ts +145 -0
- package/dist/schema-bridge.d.ts.map +1 -0
- package/dist/search-params/define.d.ts +262 -0
- package/dist/search-params/define.d.ts.map +1 -0
- package/dist/search-params/index.d.ts +3 -7
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +179 -360
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/parse-total.d.ts +81 -0
- package/dist/search-params/parse-total.d.ts.map +1 -0
- package/dist/search-params/serialize-equal.d.ts +9 -0
- package/dist/search-params/serialize-equal.d.ts.map +1 -0
- package/dist/search-params/wrappers.d.ts +76 -0
- package/dist/search-params/wrappers.d.ts.map +1 -0
- package/dist/server/access-gate.d.ts +98 -10
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-client.d.ts +42 -7
- package/dist/server/action-client.d.ts.map +1 -1
- package/dist/server/action-encryption.d.ts +76 -0
- package/dist/server/action-encryption.d.ts.map +1 -0
- package/dist/server/action-handler.d.ts +39 -5
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +29 -35
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +117 -13
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/asset-headers.d.ts +8 -18
- package/dist/server/asset-headers.d.ts.map +1 -1
- package/dist/server/body-limits.d.ts.map +1 -1
- package/dist/server/build-manifest.d.ts +25 -30
- package/dist/server/build-manifest.d.ts.map +1 -1
- package/dist/server/canonicalize.d.ts +10 -0
- package/dist/server/canonicalize.d.ts.map +1 -1
- package/dist/server/chain-url-parts.d.ts +82 -0
- package/dist/server/chain-url-parts.d.ts.map +1 -0
- package/dist/server/children-interception.d.ts +49 -0
- package/dist/server/children-interception.d.ts.map +1 -0
- package/dist/server/coalesce-tick.d.ts +40 -0
- package/dist/server/coalesce-tick.d.ts.map +1 -0
- package/dist/server/compress.d.ts.map +1 -1
- package/dist/server/cookie-context.d.ts +170 -0
- package/dist/server/cookie-context.d.ts.map +1 -0
- package/dist/server/cookie-parsing.d.ts +65 -0
- package/dist/server/cookie-parsing.d.ts.map +1 -0
- package/dist/server/csp-nonce.d.ts +45 -0
- package/dist/server/csp-nonce.d.ts.map +1 -0
- package/dist/server/csrf.d.ts +3 -2
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/debug.d.ts +82 -0
- package/dist/server/debug.d.ts.map +1 -0
- package/dist/server/default-logger.d.ts +22 -0
- package/dist/server/default-logger.d.ts.map +1 -0
- package/dist/server/default-status-page.d.ts +45 -0
- package/dist/server/default-status-page.d.ts.map +1 -0
- package/dist/server/deny-boundary.d.ts +253 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts +20 -9
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/dev-source-map.d.ts +22 -0
- package/dist/server/dev-source-map.d.ts.map +1 -0
- package/dist/server/early-hints-sender.d.ts.map +1 -1
- package/dist/server/early-hints.d.ts +14 -12
- package/dist/server/early-hints.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +101 -10
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/error-response-headers.d.ts +3 -0
- package/dist/server/error-response-headers.d.ts.map +1 -0
- package/dist/server/fallback-error.d.ts +12 -7
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/flight-injection-state.d.ts +66 -0
- package/dist/server/flight-injection-state.d.ts.map +1 -0
- package/dist/server/flight-scripts.d.ts +45 -0
- package/dist/server/flight-scripts.d.ts.map +1 -0
- package/dist/server/form-data.d.ts +41 -0
- package/dist/server/form-data.d.ts.map +1 -1
- package/dist/server/form-flash.d.ts +1 -1
- package/dist/server/head-response.d.ts +35 -0
- package/dist/server/head-response.d.ts.map +1 -0
- package/dist/server/html-injector-core.d.ts +257 -0
- package/dist/server/html-injector-core.d.ts.map +1 -0
- package/dist/server/html-injectors.d.ts +84 -42
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +18 -54
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +212 -2930
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts +1 -1
- package/dist/server/internal.d.ts +50 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +4034 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/logger.d.ts +39 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/metadata-collector.d.ts +71 -0
- package/dist/server/metadata-collector.d.ts.map +1 -0
- package/dist/server/metadata-platform.d.ts +2 -2
- package/dist/server/metadata-render.d.ts +2 -2
- package/dist/server/metadata-render.d.ts.map +1 -1
- package/dist/server/metadata-routes.d.ts +60 -11
- package/dist/server/metadata-routes.d.ts.map +1 -1
- package/dist/server/metadata-social.d.ts +2 -2
- package/dist/server/metadata.d.ts +10 -2
- package/dist/server/metadata.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +20 -5
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +105 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/nuqs-ssr-provider.d.ts +7 -3
- package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
- package/dist/server/param-coercion.d.ts +78 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +77 -0
- package/dist/server/pipeline-helpers.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +59 -9
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-metadata.d.ts +7 -1
- package/dist/server/pipeline-metadata.d.ts.map +1 -1
- package/dist/server/pipeline-outcome.d.ts +49 -0
- package/dist/server/pipeline-outcome.d.ts.map +1 -0
- package/dist/server/pipeline-phases.d.ts +70 -0
- package/dist/server/pipeline-phases.d.ts.map +1 -0
- package/dist/server/pipeline.d.ts +160 -24
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/port-resolution.d.ts +31 -0
- package/dist/server/port-resolution.d.ts.map +1 -0
- package/dist/server/prebuilt/cache-key.d.ts +63 -0
- package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-state.d.ts +57 -0
- package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
- package/dist/server/prebuilt/key-discipline.d.ts +52 -0
- package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
- package/dist/server/prebuilt/overlay.d.ts +100 -0
- package/dist/server/prebuilt/overlay.d.ts.map +1 -0
- package/dist/server/prebuilt/payload-source.d.ts +79 -0
- package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
- package/dist/server/prebuilt/slots.d.ts +99 -0
- package/dist/server/prebuilt/slots.d.ts.map +1 -0
- package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
- package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
- package/dist/server/prebuilt-builder.d.ts +121 -0
- package/dist/server/prebuilt-builder.d.ts.map +1 -0
- package/dist/server/prebuilt-runtime.d.ts +111 -0
- package/dist/server/prebuilt-runtime.d.ts.map +1 -0
- package/dist/server/primitives.d.ts +129 -45
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/publish-params.d.ts +33 -0
- package/dist/server/publish-params.d.ts.map +1 -0
- package/dist/server/render-timeout.d.ts +51 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/render-utils.d.ts +26 -0
- package/dist/server/render-utils.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +111 -107
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-dep.d.ts +15 -0
- package/dist/server/request-dep.d.ts.map +1 -0
- package/dist/server/response-cache-policy.d.ts +3 -0
- package/dist/server/response-cache-policy.d.ts.map +1 -0
- package/dist/server/route-element-builder.d.ts +57 -30
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-element-helpers.d.ts +12 -0
- package/dist/server/route-element-helpers.d.ts.map +1 -0
- package/dist/server/route-handler.d.ts +1 -1
- package/dist/server/route-handler.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +40 -38
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/route-module-loader.d.ts +37 -0
- package/dist/server/route-module-loader.d.ts.map +1 -0
- package/dist/server/rsc-cache-key-guard.d.ts +78 -0
- package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
- package/dist/server/rsc-entry/api-handler.d.ts +12 -3
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
- package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
- package/dist/server/rsc-entry/error-renderer.d.ts +38 -13
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +59 -42
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +40 -6
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +51 -0
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
- package/dist/server/rsc-entry/rsc-payload.d.ts +26 -6
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +39 -3
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +37 -5
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
- package/dist/server/rsc-error-envelope.d.ts +11 -0
- package/dist/server/rsc-error-envelope.d.ts.map +1 -0
- package/dist/server/rsc-prop-warnings.d.ts.map +1 -1
- package/dist/server/safe-load.d.ts +46 -0
- package/dist/server/safe-load.d.ts.map +1 -0
- package/dist/server/sensitive-fields.d.ts +74 -0
- package/dist/server/sensitive-fields.d.ts.map +1 -0
- package/dist/server/sitemap-generator.d.ts +130 -0
- package/dist/server/sitemap-generator.d.ts.map +1 -0
- package/dist/server/sitemap-handler.d.ts +22 -0
- package/dist/server/sitemap-handler.d.ts.map +1 -0
- package/dist/server/skippable-prefix.d.ts +29 -0
- package/dist/server/skippable-prefix.d.ts.map +1 -0
- package/dist/server/slot-interception.d.ts +80 -0
- package/dist/server/slot-interception.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +137 -7
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/slot-subtree-contain.d.ts +54 -0
- package/dist/server/slot-subtree-contain.d.ts.map +1 -0
- package/dist/server/ssr-bridge-types.d.ts +160 -0
- package/dist/server/ssr-bridge-types.d.ts.map +1 -0
- package/dist/server/ssr-entry.d.ts +1 -43
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +69 -22
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +93 -0
- package/dist/server/ssr-wrappers.d.ts.map +1 -0
- package/dist/server/state-tree-diff.d.ts +44 -9
- package/dist/server/state-tree-diff.d.ts.map +1 -1
- package/dist/server/static-generator.d.ts +112 -0
- package/dist/server/static-generator.d.ts.map +1 -0
- package/dist/server/static-not-found.d.ts +52 -0
- package/dist/server/static-not-found.d.ts.map +1 -0
- package/dist/server/status-code-resolver.d.ts +26 -15
- package/dist/server/status-code-resolver.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +47 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +56 -11
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-match.d.ts +49 -0
- package/dist/server/tree-match.d.ts.map +1 -0
- package/dist/server/types.d.ts +88 -7
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/element-type.d.ts +50 -0
- package/dist/server/utils/element-type.d.ts.map +1 -0
- package/dist/server/utils/escape-html.d.ts +14 -0
- package/dist/server/utils/escape-html.d.ts.map +1 -0
- package/dist/server/utils/mdx-file.d.ts +17 -0
- package/dist/server/utils/mdx-file.d.ts.map +1 -0
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/server/waituntil-bridge.d.ts.map +1 -1
- package/dist/server/workers-cache-bridge.d.ts +26 -0
- package/dist/server/workers-cache-bridge.d.ts.map +1 -0
- package/dist/shared/als-slots.d.ts +42 -0
- package/dist/shared/als-slots.d.ts.map +1 -0
- package/dist/shared/base-path.d.ts +56 -0
- package/dist/shared/base-path.d.ts.map +1 -0
- package/dist/shared/href-validation.d.ts +49 -0
- package/dist/shared/href-validation.d.ts.map +1 -0
- package/dist/shared/merge-search-params.d.ts +22 -0
- package/dist/shared/merge-search-params.d.ts.map +1 -0
- package/dist/shared/param-value.d.ts +104 -0
- package/dist/shared/param-value.d.ts.map +1 -0
- package/dist/shared/payload-root.d.ts +109 -0
- package/dist/shared/payload-root.d.ts.map +1 -0
- package/dist/shared/redirect-type.d.ts +17 -0
- package/dist/shared/redirect-type.d.ts.map +1 -0
- package/dist/shared/rsc-cache-key.d.ts +163 -0
- package/dist/shared/rsc-cache-key.d.ts.map +1 -0
- package/dist/shared/rsc-error-envelope.d.ts +16 -0
- package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
- package/dist/shared/rsc-manifest.d.ts +28 -0
- package/dist/shared/rsc-manifest.d.ts.map +1 -0
- package/dist/shared/rsc-media-type.d.ts +52 -0
- package/dist/shared/rsc-media-type.d.ts.map +1 -0
- package/dist/shared/rsc-payload-path.d.ts +42 -0
- package/dist/shared/rsc-payload-path.d.ts.map +1 -0
- package/dist/shared/segment-info.d.ts +66 -0
- package/dist/shared/segment-info.d.ts.map +1 -0
- package/dist/shared/slot-params.d.ts +52 -0
- package/dist/shared/slot-params.d.ts.map +1 -0
- package/dist/shared/static-platform-files.d.ts +71 -0
- package/dist/shared/static-platform-files.d.ts.map +1 -0
- package/dist/shared/status-reason-phrase.d.ts +26 -0
- package/dist/shared/status-reason-phrase.d.ts.map +1 -0
- package/dist/shims/font-google.d.ts +1 -1
- package/dist/shims/font-google.d.ts.map +1 -1
- package/dist/shims/font-google.js +42 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +26 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +20 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/headers.d.ts +53 -1
- package/dist/shims/headers.d.ts.map +1 -1
- package/dist/shims/image.d.ts +120 -120
- package/dist/shims/image.d.ts.map +1 -1
- package/dist/shims/navigation-client.d.ts +25 -12
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation-rsc.d.ts +21 -0
- package/dist/shims/navigation-rsc.d.ts.map +1 -0
- package/dist/shims/navigation.d.ts +10 -5
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/state-machine.d.ts +80 -0
- package/dist/utils/state-machine.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +236 -0
- package/docs/api/31-api-client.mdx +167 -0
- package/docs/api/32-api-cache.mdx +311 -0
- package/docs/api/33-api-search-params.mdx +176 -0
- package/docs/api/34-api-config.mdx +329 -0
- package/docs/api/35-api-typescript.mdx +91 -0
- package/docs/api/36-cli.mdx +192 -0
- package/docs/learn/00-introduction.mdx +109 -0
- package/docs/learn/01-quick-start.mdx +94 -0
- package/docs/learn/02-pages-and-layouts.mdx +147 -0
- package/docs/learn/03-fetching-data.mdx +211 -0
- package/docs/learn/04-access-control.mdx +115 -0
- package/docs/learn/05-the-flush-point.mdx +175 -0
- package/docs/learn/06-typed-params.mdx +275 -0
- package/docs/learn/07-typed-routes.mdx +108 -0
- package/docs/learn/08-forms-and-actions.mdx +146 -0
- package/docs/learn/09-streaming.mdx +140 -0
- package/docs/learn/10-caching.mdx +252 -0
- package/docs/learn/11-middleware.mdx +158 -0
- package/docs/learn/12-error-handling.mdx +188 -0
- package/docs/learn/13-deploying.mdx +287 -0
- package/llms.txt +55 -0
- package/package.json +117 -29
- package/src/adapters/build-output-helper.ts +351 -0
- package/src/adapters/cloudflare-dev.ts +183 -0
- package/src/adapters/cloudflare-kv-cache.ts +207 -0
- package/src/adapters/cloudflare.ts +747 -130
- package/src/adapters/compress-module.ts +101 -88
- package/src/adapters/fs-identity.ts +156 -0
- package/src/adapters/nitro-presets.ts +139 -0
- package/src/adapters/nitro-preview.ts +340 -0
- package/src/adapters/nitro.ts +279 -418
- package/src/adapters/raw-imports.d.ts +5 -0
- package/src/adapters/shared.ts +274 -0
- package/src/adapters/types.ts +28 -7
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/analyze/chains.ts +411 -0
- package/src/analyze/classify.ts +258 -0
- package/src/analyze/crawl-entry.ts +68 -0
- package/src/analyze/crawl.ts +500 -0
- package/src/analyze/graph-cache.ts +332 -0
- package/src/analyze/graph-command.ts +762 -0
- package/src/analyze/live-graph.ts +232 -0
- package/src/analyze/poison-rules.ts +165 -0
- package/src/analyze/poison-scan.ts +162 -0
- package/src/analyze/scan.ts +149 -0
- package/src/cache/cache-api.ts +107 -0
- package/src/cache/fast-hash.ts +39 -0
- package/src/cache/handler-store.ts +76 -0
- package/src/cache/index.ts +115 -22
- package/src/cache/invalidation-epoch.ts +93 -0
- package/src/cache/json-lossy-check.ts +75 -0
- package/src/cache/redis-handler.ts +198 -20
- package/src/cache/singleflight.ts +69 -6
- package/src/cache/sizeof.ts +33 -0
- package/src/cache/stable-stringify.ts +65 -2
- package/src/cache/store.ts +71 -0
- package/src/cache/stores/cloudflare-kv.ts +52 -0
- package/src/cache/stores/memory.ts +125 -0
- package/src/cache/stores/redis.ts +97 -0
- package/src/cache/stores/vercel.ts +59 -0
- package/src/cache/tag-aware-handler.ts +237 -0
- package/src/cache/timber-cache.ts +180 -48
- package/src/cdn/cloudflare-purge.ts +50 -0
- package/src/cdn/fastly-purge.ts +63 -0
- package/src/cdn/headers.ts +153 -0
- package/src/cdn/index.ts +23 -0
- package/src/cdn/purge-store.ts +34 -0
- package/src/cdn/workers-cache-purge.ts +34 -0
- package/src/cli-check.ts +507 -0
- package/src/cli-schema-sync.ts +401 -0
- package/src/cli.ts +262 -55
- package/src/client/browser-dev.ts +157 -2
- package/src/client/browser-entry/action-dispatch.ts +197 -0
- package/src/client/browser-entry/action-queue.ts +90 -0
- package/src/client/browser-entry/hmr.ts +70 -0
- package/src/client/browser-entry/hydrate.ts +148 -0
- package/src/client/browser-entry/index.ts +131 -0
- package/src/client/browser-entry/post-hydration.ts +123 -0
- package/src/client/browser-entry/router-init.ts +418 -0
- package/src/client/browser-entry/rsc-stream.ts +166 -0
- package/src/client/browser-entry/scroll.ts +50 -0
- package/src/client/deny-last-resort.tsx +54 -0
- package/src/client/error-boundary.tsx +316 -40
- package/src/client/error-reconstituter.tsx +79 -0
- package/src/client/form.tsx +36 -32
- package/src/client/global-context.ts +31 -0
- package/src/client/history.ts +81 -10
- package/src/client/index.ts +89 -53
- package/src/client/internal.ts +59 -0
- package/src/client/link.tsx +452 -159
- package/src/client/location-search.ts +15 -0
- package/src/client/navigation-api.ts +347 -0
- package/src/client/navigation-commit.ts +295 -0
- package/src/client/navigation-context.ts +67 -98
- package/src/client/navigation-root.tsx +224 -0
- package/src/client/navigation-transition.ts +327 -0
- package/src/client/nuqs-adapter.tsx +21 -9
- package/src/client/params-context.ts +187 -0
- package/src/client/react-root.ts +72 -0
- package/src/client/router-effects.ts +228 -0
- package/src/client/router-lifecycle.ts +354 -0
- package/src/client/router-pipeline.ts +490 -0
- package/src/client/router-ref.ts +3 -3
- package/src/client/router-skew.ts +30 -0
- package/src/client/router-types.ts +294 -0
- package/src/client/router.ts +436 -424
- package/src/client/rsc-fetch.ts +512 -73
- package/src/client/segment-cache.ts +327 -40
- package/src/client/segment-context.ts +13 -5
- package/src/client/segment-outlet.tsx +96 -0
- package/src/client/segment-update-context.ts +23 -0
- package/src/client/shallow-url.ts +22 -0
- package/src/client/slot-content-cache-context.ts +43 -0
- package/src/client/slot-context.ts +50 -0
- package/src/client/slot-outlet.tsx +22 -0
- package/src/client/slot-provider.tsx +32 -0
- package/src/client/ssr-data.ts +30 -9
- package/src/client/stale-client.ts +191 -0
- package/src/client/state.ts +29 -15
- package/src/client/status-page-marker.tsx +32 -0
- package/src/client/top-loader.tsx +36 -29
- package/src/client/unload-guard.ts +35 -3
- package/src/client/use-cookie.ts +70 -18
- package/src/client/use-link-status.ts +7 -7
- package/src/client/use-pathname.ts +22 -31
- package/src/client/use-pending-navigation.ts +40 -0
- package/src/client/use-query-states.ts +206 -36
- package/src/client/use-router.ts +6 -3
- package/src/client/use-search-params.ts +38 -49
- package/src/client/use-segment-params.ts +69 -0
- package/src/client/use-selected-layout-segment.ts +2 -2
- package/src/codec.ts +149 -0
- package/src/config-types.ts +322 -0
- package/src/config-validation.ts +347 -0
- package/src/cookies/define-cookie.ts +222 -53
- package/src/cookies/index.ts +13 -2
- package/src/cookies/json-cookie.ts +105 -0
- package/src/cookies/validation.ts +192 -0
- package/src/dev-tools/404-page.ts +286 -0
- package/src/dev-tools/browser-logs.ts +55 -0
- package/src/dev-tools/dev-page-shell.ts +260 -0
- package/src/dev-tools/error-page.ts +331 -0
- package/src/dev-tools/holding-server.ts +185 -0
- package/src/dev-tools/hydration-overlay.ts +158 -0
- package/src/dev-tools/index.ts +83 -0
- package/src/dev-tools/instrumentation.ts +213 -0
- package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
- package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
- package/src/dev-tools/overlay.ts +469 -0
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/dev-tools/terminal.ts +182 -0
- package/src/fonts/ast-walk.ts +235 -0
- package/src/fonts/ast.ts +479 -128
- package/src/fonts/bundle.ts +138 -0
- package/src/fonts/css.ts +3 -2
- package/src/fonts/dev-middleware.ts +85 -0
- package/src/fonts/fallbacks.ts +0 -23
- package/src/fonts/google.ts +101 -19
- package/src/fonts/local.ts +13 -8
- package/src/fonts/paths.ts +58 -0
- package/src/fonts/pipeline.ts +348 -0
- package/src/fonts/transform.ts +311 -0
- package/src/fonts/types.ts +52 -1
- package/src/fonts/virtual-modules.ts +179 -0
- package/src/index.ts +486 -344
- package/src/params/codec-registry.ts +34 -0
- package/src/params/define-schema.ts +115 -0
- package/src/params/index.ts +17 -0
- package/src/params/resolve-schema.ts +84 -0
- package/src/plugin-context.ts +503 -0
- package/src/plugins/adapter-build.ts +229 -7
- package/src/plugins/build-manifest.ts +201 -26
- package/src/plugins/build-report.ts +275 -43
- package/src/plugins/cache.ts +243 -0
- package/src/plugins/callsite-ast.ts +472 -0
- package/src/plugins/callsite-jsx.ts +243 -0
- package/src/plugins/chunks.ts +74 -5
- package/src/plugins/client-chunks.ts +185 -0
- package/src/plugins/cloudflare-wasm.ts +141 -0
- package/src/plugins/content.ts +5 -1
- package/src/plugins/dev-discovery.ts +218 -0
- package/src/plugins/dev-server.ts +369 -96
- package/src/plugins/entries.ts +148 -18
- package/src/plugins/fonts.ts +251 -524
- package/src/plugins/graph-endpoint.ts +532 -0
- package/src/plugins/mdx.ts +116 -40
- package/src/plugins/prebuilt-capture.ts +217 -0
- package/src/plugins/prebuilt-options-analysis.ts +175 -0
- package/src/plugins/prebuilt.ts +655 -0
- package/src/plugins/prerender-sugar.ts +320 -0
- package/src/plugins/request-dep/analysis.ts +447 -0
- package/src/plugins/request-dep/index.ts +376 -0
- package/src/plugins/request-dep/origin.ts +310 -0
- package/src/plugins/routing.ts +273 -277
- package/src/plugins/server-bundle.ts +103 -14
- package/src/plugins/shims.ts +259 -97
- package/src/plugins/static-build.ts +708 -66
- package/src/react-canary.d.ts +2 -0
- package/src/routing/codegen-shared.ts +39 -0
- package/src/routing/codegen-types.ts +62 -0
- package/src/routing/codegen-write.ts +141 -0
- package/src/routing/codegen.ts +349 -232
- package/src/routing/collision-probe.ts +438 -0
- package/src/routing/collision-spaces.ts +281 -0
- package/src/routing/convention-lint.ts +623 -0
- package/src/routing/export-detect.ts +448 -0
- package/src/routing/file-cache.ts +23 -0
- package/src/routing/index.ts +16 -7
- package/src/routing/interception-overlap.ts +141 -0
- package/src/routing/interception.ts +1044 -67
- package/src/routing/link-codegen.ts +280 -0
- package/src/routing/manifest-codegen.ts +226 -0
- package/src/routing/scanner.ts +393 -219
- package/src/routing/schema-validation.ts +155 -0
- package/src/routing/segment-classify.ts +280 -0
- package/src/routing/segment-codegen.ts +98 -0
- package/src/routing/segment-keys.ts +186 -0
- package/src/routing/slot-placement.ts +97 -0
- package/src/routing/types.ts +75 -26
- package/src/routing/walkers.ts +98 -0
- package/src/rsc-runtime/rsc.ts +9 -0
- package/src/rsc-runtime/ssr.ts +51 -0
- package/src/rsc-runtime/transforms.ts +13 -0
- package/src/rsc-runtime/vendor-types.d.ts +19 -0
- package/src/schema-bridge.ts +380 -0
- package/src/search-params/define.ts +677 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/parse-total.ts +91 -0
- package/src/search-params/serialize-equal.ts +14 -0
- package/src/search-params/wrappers.ts +150 -0
- package/src/server/access-gate.tsx +196 -57
- package/src/server/action-client.ts +136 -35
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +256 -56
- package/src/server/actions.ts +112 -68
- package/src/server/als-registry.ts +160 -21
- package/src/server/asset-headers.ts +15 -37
- package/src/server/body-limits.ts +10 -2
- package/src/server/build-manifest.ts +33 -57
- package/src/server/canonicalize.ts +6 -3
- package/src/server/chain-url-parts.ts +163 -0
- package/src/server/children-interception.ts +115 -0
- package/src/server/coalesce-tick.ts +75 -0
- package/src/server/compress.ts +43 -8
- package/src/server/cookie-context.ts +484 -0
- package/src/server/cookie-parsing.ts +163 -0
- package/src/server/csp-nonce.ts +70 -0
- package/src/server/csrf.ts +39 -6
- package/src/server/debug.ts +137 -0
- package/src/server/default-logger.ts +99 -0
- package/src/server/default-status-page.ts +88 -0
- package/src/server/deny-boundary.ts +533 -0
- package/src/server/deny-renderer.ts +214 -112
- package/src/server/dev-source-map.ts +31 -0
- package/src/server/early-hints-sender.ts +4 -3
- package/src/server/early-hints.ts +39 -29
- package/src/server/error-boundary-wrapper.ts +181 -44
- package/src/server/error-response-headers.ts +18 -0
- package/src/server/fallback-error.ts +79 -102
- package/src/server/flight-injection-state.ts +113 -0
- package/src/server/flight-scripts.ts +67 -0
- package/src/server/form-data.ts +124 -12
- package/src/server/form-flash.ts +2 -2
- package/src/server/head-response.ts +54 -0
- package/src/server/html-injector-core.ts +512 -0
- package/src/server/html-injectors.ts +272 -235
- package/src/server/index.ts +40 -192
- package/src/server/instrumentation.ts +1 -1
- package/src/server/internal.ts +173 -0
- package/src/server/logger.ts +73 -36
- package/src/server/metadata-collector.ts +174 -0
- package/src/server/metadata-platform.ts +2 -2
- package/src/server/metadata-render.ts +30 -8
- package/src/server/metadata-routes.ts +205 -24
- package/src/server/metadata-social.ts +2 -2
- package/src/server/metadata.ts +23 -2
- package/src/server/middleware-runner.ts +32 -5
- package/src/server/node-stream-transforms.ts +323 -0
- package/src/server/nuqs-ssr-provider.tsx +8 -7
- package/src/server/param-coercion.ts +198 -0
- package/src/server/pipeline-helpers.ts +159 -0
- package/src/server/pipeline-interception.ts +109 -33
- package/src/server/pipeline-metadata.ts +15 -1
- package/src/server/pipeline-outcome.ts +218 -0
- package/src/server/pipeline-phases.ts +606 -0
- package/src/server/pipeline.ts +343 -389
- package/src/server/port-resolution.ts +53 -0
- package/src/server/prebuilt/cache-key.ts +299 -0
- package/src/server/prebuilt/capture-state.ts +89 -0
- package/src/server/prebuilt/key-discipline.ts +122 -0
- package/src/server/prebuilt/manifest-tag-index.ts +46 -0
- package/src/server/prebuilt/overlay.ts +256 -0
- package/src/server/prebuilt/payload-source.ts +202 -0
- package/src/server/prebuilt/slots.ts +190 -0
- package/src/server/prebuilt/synthetic-store.ts +122 -0
- package/src/server/prebuilt-builder.ts +804 -0
- package/src/server/prebuilt-runtime.ts +817 -0
- package/src/server/primitives.ts +246 -97
- package/src/server/publish-params.ts +42 -0
- package/src/server/render-timeout.ts +108 -0
- package/src/server/render-utils.ts +35 -0
- package/src/server/request-context.ts +244 -333
- package/src/server/request-dep.ts +37 -0
- package/src/server/response-cache-policy.ts +45 -0
- package/src/server/route-element-builder.ts +508 -360
- package/src/server/route-element-helpers.ts +37 -0
- package/src/server/route-handler.ts +40 -13
- package/src/server/route-matcher.ts +165 -272
- package/src/server/route-module-loader.ts +161 -0
- package/src/server/rsc-cache-key-guard.ts +122 -0
- package/src/server/rsc-entry/action-middleware-runner.ts +174 -0
- package/src/server/rsc-entry/api-handler.ts +78 -34
- package/src/server/rsc-entry/deny-fallback.ts +93 -0
- package/src/server/rsc-entry/error-renderer.ts +373 -95
- package/src/server/rsc-entry/helpers.ts +226 -95
- package/src/server/rsc-entry/index.ts +405 -323
- package/src/server/rsc-entry/render-route.ts +304 -0
- package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
- package/src/server/rsc-entry/rsc-payload.ts +239 -50
- package/src/server/rsc-entry/rsc-stream.ts +160 -30
- package/src/server/rsc-entry/ssr-bridge.ts +18 -5
- package/src/server/rsc-entry/ssr-renderer.ts +315 -57
- package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
- package/src/server/rsc-error-envelope.ts +18 -0
- package/src/server/rsc-prop-warnings.ts +3 -1
- package/src/server/safe-load.ts +60 -0
- package/src/server/sensitive-fields.ts +230 -0
- package/src/server/server-only-guard-noop.js +3 -0
- package/src/server/server-timing.ts +1 -1
- package/src/server/sitemap-generator.ts +337 -0
- package/src/server/sitemap-handler.ts +157 -0
- package/src/server/skippable-prefix.ts +172 -0
- package/src/server/slot-interception.ts +168 -0
- package/src/server/slot-resolver.ts +707 -300
- package/src/server/slot-subtree-contain.ts +255 -0
- package/src/server/ssr-bridge-types.ts +165 -0
- package/src/server/ssr-entry.ts +230 -85
- package/src/server/ssr-render.ts +357 -85
- package/src/server/ssr-wrappers.tsx +162 -0
- package/src/server/state-tree-diff.ts +85 -30
- package/src/server/static-generator.ts +715 -0
- package/src/server/static-not-found.ts +134 -0
- package/src/server/status-code-resolver.ts +107 -148
- package/src/server/stream-utils.ts +292 -0
- package/src/server/tracing.ts +151 -16
- package/src/server/tree-match.ts +262 -0
- package/src/server/types.ts +95 -10
- package/src/server/utils/element-type.ts +88 -0
- package/src/server/utils/escape-html.ts +20 -0
- package/src/server/utils/mdx-file.ts +22 -0
- package/src/server/version-skew.ts +104 -0
- package/src/server/waituntil-bridge.ts +5 -2
- package/src/server/workers-cache-bridge.ts +33 -0
- package/src/shared/als-slots.ts +74 -0
- package/src/shared/base-path.ts +80 -0
- package/src/shared/href-validation.ts +159 -0
- package/src/shared/merge-search-params.ts +55 -0
- package/src/shared/param-value.ts +281 -0
- package/src/shared/payload-root.ts +152 -0
- package/src/shared/redirect-type.ts +17 -0
- package/src/shared/rsc-cache-key.ts +269 -0
- package/src/shared/rsc-error-envelope.ts +16 -0
- package/src/shared/rsc-manifest.ts +29 -0
- package/src/shared/rsc-media-type.ts +59 -0
- package/src/shared/rsc-payload-path.ts +45 -0
- package/src/shared/segment-info.ts +67 -0
- package/src/shared/slot-params.ts +109 -0
- package/src/shared/static-platform-files.ts +75 -0
- package/src/shared/status-reason-phrase.ts +61 -0
- package/src/shims/font-google.ts +1 -1
- package/src/shims/font-local.ts +34 -0
- package/src/shims/headers.ts +122 -1
- package/src/shims/navigation-client.ts +36 -32
- package/src/shims/navigation-rsc.ts +47 -0
- package/src/shims/navigation.ts +10 -7
- package/src/utils/state-machine.ts +111 -0
- package/dist/_chunks/als-registry-k-AtAQ9R.js +0 -41
- package/dist/_chunks/als-registry-k-AtAQ9R.js.map +0 -1
- package/dist/_chunks/format-DNt20Kt8.js +0 -163
- package/dist/_chunks/format-DNt20Kt8.js.map +0 -1
- package/dist/_chunks/interception-DGDIjDbR.js +0 -676
- package/dist/_chunks/interception-DGDIjDbR.js.map +0 -1
- package/dist/_chunks/metadata-routes-CQCnF4VK.js +0 -153
- package/dist/_chunks/metadata-routes-CQCnF4VK.js.map +0 -1
- package/dist/_chunks/request-context-CRj2Zh1E.js +0 -329
- package/dist/_chunks/request-context-CRj2Zh1E.js.map +0 -1
- package/dist/_chunks/ssr-data-DLnbYpj1.js.map +0 -1
- package/dist/_chunks/tracing-DF0G3FB7.js +0 -173
- package/dist/_chunks/tracing-DF0G3FB7.js.map +0 -1
- package/dist/_chunks/use-cookie-dDbpCTx-.js +0 -91
- package/dist/_chunks/use-cookie-dDbpCTx-.js.map +0 -1
- package/dist/_chunks/use-query-states-DAhgj8Gx.js +0 -109
- package/dist/_chunks/use-query-states-DAhgj8Gx.js.map +0 -1
- package/dist/adapters/cloudflare.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/error-boundary.js.map +0 -1
- package/dist/client/head.d.ts +0 -16
- package/dist/client/head.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/segment-merger.d.ts +0 -119
- package/dist/client/segment-merger.d.ts.map +0 -1
- package/dist/client/stale-reload.d.ts +0 -44
- package/dist/client/stale-reload.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts +0 -74
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/use-navigation-pending.d.ts +0 -26
- package/dist/client/use-navigation-pending.d.ts.map +0 -1
- package/dist/client/use-params.d.ts +0 -92
- package/dist/client/use-params.d.ts.map +0 -1
- package/dist/content/index.d.ts +0 -11
- package/dist/content/index.d.ts.map +0 -1
- package/dist/content/index.js +0 -2
- package/dist/plugins/cache-transform.d.ts +0 -36
- package/dist/plugins/cache-transform.d.ts.map +0 -1
- package/dist/plugins/dev-error-overlay.d.ts +0 -60
- package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
- package/dist/plugins/dev-logs.d.ts.map +0 -1
- package/dist/plugins/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.d.ts.map +0 -1
- package/dist/plugins/server-action-exports.d.ts +0 -26
- package/dist/plugins/server-action-exports.d.ts.map +0 -1
- package/dist/routing/status-file-lint.d.ts +0 -33
- package/dist/routing/status-file-lint.d.ts.map +0 -1
- package/dist/search-params/analyze.d.ts +0 -54
- package/dist/search-params/analyze.d.ts.map +0 -1
- package/dist/search-params/builtin-codecs.d.ts +0 -105
- package/dist/search-params/builtin-codecs.d.ts.map +0 -1
- package/dist/search-params/codecs.d.ts +0 -53
- package/dist/search-params/codecs.d.ts.map +0 -1
- package/dist/search-params/create.d.ts +0 -106
- package/dist/search-params/create.d.ts.map +0 -1
- package/dist/search-params/registry.d.ts +0 -20
- package/dist/search-params/registry.d.ts.map +0 -1
- package/dist/server/client-module-map.d.ts +0 -47
- package/dist/server/client-module-map.d.ts.map +0 -1
- package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
- package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
- package/dist/server/dev-logger.d.ts.map +0 -1
- package/dist/server/dev-span-processor.d.ts +0 -29
- package/dist/server/dev-span-processor.d.ts.map +0 -1
- package/dist/server/dev-warnings.d.ts +0 -129
- package/dist/server/dev-warnings.d.ts.map +0 -1
- package/dist/server/flush.d.ts +0 -74
- package/dist/server/flush.d.ts.map +0 -1
- package/dist/server/manifest-status-resolver.d.ts +0 -58
- package/dist/server/manifest-status-resolver.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/tree-builder.d.ts +0 -126
- package/dist/server/tree-builder.d.ts.map +0 -1
- package/dist/utils/directive-parser.d.ts +0 -70
- package/dist/utils/directive-parser.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -99
- package/src/client/browser-entry.ts +0 -674
- package/src/client/head.ts +0 -61
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/segment-merger.ts +0 -345
- package/src/client/stale-reload.ts +0 -89
- package/src/client/transition-root.tsx +0 -160
- package/src/client/use-navigation-pending.ts +0 -38
- package/src/client/use-params.ts +0 -141
- package/src/content/index.ts +0 -13
- package/src/plugins/cache-transform.ts +0 -199
- package/src/plugins/dev-error-overlay.ts +0 -230
- package/src/plugins/dynamic-transform.ts +0 -161
- package/src/plugins/server-action-exports.ts +0 -220
- package/src/routing/status-file-lint.ts +0 -112
- package/src/search-params/analyze.ts +0 -192
- package/src/search-params/builtin-codecs.ts +0 -228
- package/src/search-params/codecs.ts +0 -153
- package/src/search-params/create.ts +0 -321
- package/src/search-params/registry.ts +0 -31
- package/src/server/client-module-map.ts +0 -58
- package/src/server/dev-fetch-instrumentation.ts +0 -96
- package/src/server/dev-span-processor.ts +0 -78
- package/src/server/dev-warnings.ts +0 -282
- package/src/server/flush.ts +0 -182
- package/src/server/manifest-status-resolver.ts +0 -215
- package/src/server/prerender.ts +0 -139
- package/src/server/tree-builder.ts +0 -382
- package/src/shims/server-only-noop.js +0 -6
- package/src/utils/directive-parser.ts +0 -529
package/src/adapters/nitro.ts
CHANGED
|
@@ -5,141 +5,38 @@
|
|
|
5
5
|
// compression, graceful shutdown, static file serving, and platform quirks.
|
|
6
6
|
// See design/11-platform.md and design/25-production-deployments.md.
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
8
|
+
import { cp, glob, readFile, writeFile } from 'node:fs/promises';
|
|
9
|
+
import { basename, dirname, join } from 'node:path';
|
|
10
|
+
import {
|
|
11
|
+
buildStaticDirectoryOutput,
|
|
12
|
+
findUnhashedStaticFiles,
|
|
13
|
+
runSharedBuildSteps,
|
|
14
|
+
writeHeadersFile,
|
|
15
|
+
} from './build-output-helper.ts';
|
|
16
|
+
import { generateCompressModule } from './compress-module.ts';
|
|
17
|
+
import { LOCALLY_PREVIEWABLE, PRESET_CONFIGS, type NitroPreset } from './nitro-presets.ts';
|
|
18
|
+
import {
|
|
19
|
+
generatePreviewScript,
|
|
20
|
+
generateSendResponseModule,
|
|
21
|
+
spawnNitroPreview,
|
|
22
|
+
} from './nitro-preview.ts';
|
|
23
|
+
import { IMMUTABLE_CACHE } from './shared.ts';
|
|
24
|
+
import type { TimberConfig, TimberPlatformAdapter } from './types.ts';
|
|
25
|
+
|
|
26
|
+
// NitroPreset is part of the public adapter API (NitroAdapterOptions.preset),
|
|
27
|
+
// so it stays importable from this module.
|
|
28
|
+
export type { NitroPreset } from './nitro-presets.ts';
|
|
30
29
|
|
|
31
|
-
// ───
|
|
30
|
+
// ─── Options ─────────────────────────────────────────────────────────────────
|
|
32
31
|
|
|
33
32
|
/**
|
|
34
|
-
*
|
|
33
|
+
* Static deploy target for `output: 'static'` mode.
|
|
35
34
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* Controls platform-specific files written alongside the static output:
|
|
36
|
+
* - `'github-pages'` — writes `.nojekyll` to skip Jekyll processing
|
|
37
|
+
* - `'generic'` — no extra files (default)
|
|
38
38
|
*/
|
|
39
|
-
export type
|
|
40
|
-
| 'vercel'
|
|
41
|
-
| 'vercel-edge'
|
|
42
|
-
| 'netlify'
|
|
43
|
-
| 'netlify-edge'
|
|
44
|
-
| 'aws-lambda'
|
|
45
|
-
| 'deno-deploy'
|
|
46
|
-
| 'azure-functions'
|
|
47
|
-
| 'node-server'
|
|
48
|
-
| 'bun';
|
|
49
|
-
|
|
50
|
-
/** Preset-specific Nitro configuration. */
|
|
51
|
-
interface PresetConfig {
|
|
52
|
-
/** Nitro preset name passed to the Nitro build. */
|
|
53
|
-
nitroPreset: string;
|
|
54
|
-
/** Output directory name within the build dir. */
|
|
55
|
-
outputDir: string;
|
|
56
|
-
/** Whether the runtime supports waitUntil. */
|
|
57
|
-
supportsWaitUntil: boolean;
|
|
58
|
-
/** Whether the runtime supports application-level 103 Early Hints. */
|
|
59
|
-
supportsEarlyHints: boolean;
|
|
60
|
-
/** Value for TIMBER_RUNTIME env var. See design/25-production-deployments.md. */
|
|
61
|
-
runtimeName: string;
|
|
62
|
-
/** Additional nitro.config fields for this preset. */
|
|
63
|
-
extraConfig?: Record<string, unknown>;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const PRESET_CONFIGS: Record<NitroPreset, PresetConfig> = {
|
|
67
|
-
'vercel': {
|
|
68
|
-
nitroPreset: 'vercel',
|
|
69
|
-
outputDir: '.vercel/output',
|
|
70
|
-
supportsWaitUntil: true,
|
|
71
|
-
supportsEarlyHints: false,
|
|
72
|
-
runtimeName: 'vercel',
|
|
73
|
-
extraConfig: { vercel: { functions: { maxDuration: 30 } } },
|
|
74
|
-
},
|
|
75
|
-
'vercel-edge': {
|
|
76
|
-
nitroPreset: 'vercel-edge',
|
|
77
|
-
outputDir: '.vercel/output',
|
|
78
|
-
supportsWaitUntil: true,
|
|
79
|
-
supportsEarlyHints: false,
|
|
80
|
-
runtimeName: 'vercel-edge',
|
|
81
|
-
},
|
|
82
|
-
'netlify': {
|
|
83
|
-
nitroPreset: 'netlify',
|
|
84
|
-
outputDir: '.netlify/functions-internal',
|
|
85
|
-
supportsWaitUntil: false,
|
|
86
|
-
supportsEarlyHints: false,
|
|
87
|
-
runtimeName: 'netlify',
|
|
88
|
-
},
|
|
89
|
-
'netlify-edge': {
|
|
90
|
-
nitroPreset: 'netlify-edge',
|
|
91
|
-
outputDir: '.netlify/edge-functions',
|
|
92
|
-
supportsWaitUntil: true,
|
|
93
|
-
supportsEarlyHints: false,
|
|
94
|
-
runtimeName: 'netlify-edge',
|
|
95
|
-
},
|
|
96
|
-
'aws-lambda': {
|
|
97
|
-
nitroPreset: 'aws-lambda',
|
|
98
|
-
outputDir: '.output',
|
|
99
|
-
supportsWaitUntil: false,
|
|
100
|
-
supportsEarlyHints: false,
|
|
101
|
-
runtimeName: 'aws-lambda',
|
|
102
|
-
},
|
|
103
|
-
'deno-deploy': {
|
|
104
|
-
nitroPreset: 'deno-deploy',
|
|
105
|
-
outputDir: '.output',
|
|
106
|
-
supportsWaitUntil: true,
|
|
107
|
-
supportsEarlyHints: false,
|
|
108
|
-
runtimeName: 'deno-deploy',
|
|
109
|
-
},
|
|
110
|
-
'azure-functions': {
|
|
111
|
-
nitroPreset: 'azure-functions',
|
|
112
|
-
outputDir: '.output',
|
|
113
|
-
supportsWaitUntil: false,
|
|
114
|
-
supportsEarlyHints: false,
|
|
115
|
-
runtimeName: 'azure-functions',
|
|
116
|
-
},
|
|
117
|
-
'node-server': {
|
|
118
|
-
nitroPreset: 'node-server',
|
|
119
|
-
outputDir: '.output',
|
|
120
|
-
supportsWaitUntil: true,
|
|
121
|
-
// Disabled by default: most node-server deployments sit behind a
|
|
122
|
-
// reverse proxy (nginx, caddy, traefik) that doesn't support 103
|
|
123
|
-
// Early Hints over HTTP/1.1. Sending 103 causes nginx to intermittently
|
|
124
|
-
// treat the response as an error and retry after proxy_connect_timeout
|
|
125
|
-
// (~5s stalls on ~23% of requests). Link headers on the 200 response
|
|
126
|
-
// are the safe fallback — Cloudflare and other CDNs convert them to
|
|
127
|
-
// 103 automatically at the edge (over HTTP/2+ to the browser).
|
|
128
|
-
supportsEarlyHints: false,
|
|
129
|
-
runtimeName: 'node-server',
|
|
130
|
-
},
|
|
131
|
-
'bun': {
|
|
132
|
-
nitroPreset: 'bun',
|
|
133
|
-
outputDir: '.output',
|
|
134
|
-
supportsWaitUntil: true,
|
|
135
|
-
// Disabled for same reason as node-server — reverse proxies choke on 103.
|
|
136
|
-
// Link headers on the 200 response are converted to 103 by CDNs.
|
|
137
|
-
supportsEarlyHints: false,
|
|
138
|
-
runtimeName: 'bun',
|
|
139
|
-
},
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
// ─── Options ─────────────────────────────────────────────────────────────────
|
|
39
|
+
export type StaticTarget = 'github-pages' | 'generic';
|
|
143
40
|
|
|
144
41
|
/** Options for the Nitro adapter. */
|
|
145
42
|
export interface NitroAdapterOptions {
|
|
@@ -149,6 +46,30 @@ export interface NitroAdapterOptions {
|
|
|
149
46
|
*/
|
|
150
47
|
preset?: NitroPreset;
|
|
151
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Enable application-level gzip compression for HTML and RSC responses.
|
|
51
|
+
*
|
|
52
|
+
* When `true` (default), the origin compresses responses using the Web
|
|
53
|
+
* `CompressionStream` API. This is useful for self-hosted deployments
|
|
54
|
+
* where no reverse proxy or CDN handles compression.
|
|
55
|
+
*
|
|
56
|
+
* Set to `false` when deploying behind a reverse proxy (nginx, caddy)
|
|
57
|
+
* or CDN (Cloudflare, Fastly, Vercel) that compresses at the edge.
|
|
58
|
+
* Disabling origin compression saves CPU on the Node.js event loop —
|
|
59
|
+
* compressing 1MB+ streaming HTML responses takes 10-15ms of main
|
|
60
|
+
* thread time per request, directly reducing throughput under load.
|
|
61
|
+
*
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
64
|
+
compress?: boolean;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Static deploy target for `output: 'static'` mode. Controls
|
|
68
|
+
* platform-specific files (e.g. `.nojekyll` for GitHub Pages).
|
|
69
|
+
* @default 'generic'
|
|
70
|
+
*/
|
|
71
|
+
staticTarget?: StaticTarget;
|
|
72
|
+
|
|
152
73
|
/**
|
|
153
74
|
* Additional Nitro configuration to merge into the generated config.
|
|
154
75
|
* Overrides default values for the selected preset.
|
|
@@ -176,47 +97,64 @@ export interface NitroAdapterOptions {
|
|
|
176
97
|
*/
|
|
177
98
|
export function nitro(options: NitroAdapterOptions = {}): TimberPlatformAdapter {
|
|
178
99
|
const preset = options.preset ?? 'node-server';
|
|
179
|
-
const
|
|
180
|
-
const pendingPromises: Promise<unknown>[] = [];
|
|
181
|
-
|
|
100
|
+
const compress = options.compress ?? true;
|
|
182
101
|
return {
|
|
183
102
|
name: `nitro-${preset}`,
|
|
184
103
|
|
|
185
104
|
async buildOutput(config: TimberConfig, buildDir: string) {
|
|
186
105
|
const outDir = join(buildDir, 'nitro');
|
|
187
|
-
await mkdir(outDir, { recursive: true });
|
|
188
|
-
|
|
189
|
-
// Copy client assets to public directory.
|
|
190
|
-
// When client JavaScript is disabled, skip .js files — only CSS,
|
|
191
|
-
// fonts, images, and other static assets are needed.
|
|
192
|
-
const clientDir = join(buildDir, 'client');
|
|
193
|
-
const publicDir = join(outDir, 'public');
|
|
194
|
-
await mkdir(publicDir, { recursive: true });
|
|
195
|
-
await cp(clientDir, publicDir, {
|
|
196
|
-
recursive: true,
|
|
197
|
-
filter: config.clientJavascriptDisabled ? (src: string) => !src.endsWith('.js') : undefined,
|
|
198
|
-
}).catch(() => {
|
|
199
|
-
// Client dir may not exist when client JavaScript is disabled
|
|
200
|
-
});
|
|
201
106
|
|
|
202
|
-
//
|
|
203
|
-
//
|
|
204
|
-
|
|
107
|
+
// ── Static mode: plain directory output ────────────────────────
|
|
108
|
+
// No Nitro server — just pre-rendered HTML + client assets.
|
|
109
|
+
if (config.output === 'static' && config.staticPagesDir) {
|
|
110
|
+
await buildStaticDirectoryOutput(config, buildDir, outDir, 'public');
|
|
111
|
+
const publicDir = join(outDir, 'public');
|
|
112
|
+
|
|
113
|
+
// Write _headers for cache control + extensionless Content-Type.
|
|
114
|
+
// Netlify supports the _headers convention just like Cloudflare.
|
|
115
|
+
await writeHeadersFile(publicDir, config, await findUnhashedStaticFiles(publicDir));
|
|
116
|
+
|
|
117
|
+
// Platform-specific files for static deploy targets.
|
|
118
|
+
const target = options.staticTarget ?? 'generic';
|
|
119
|
+
if (target === 'github-pages') {
|
|
120
|
+
// Deploy-from-a-branch runs Jekyll, which drops `_`-prefixed paths —
|
|
121
|
+
// every `_rsc/` payload. Written unconditionally: GitHub reads only
|
|
122
|
+
// that the file exists, never its contents.
|
|
123
|
+
await writeFile(join(publicDir, '.nojekyll'), '');
|
|
124
|
+
// GitHub Pages doesn't support _redirects files. Warn if any
|
|
125
|
+
// redirects were generated — those routes will 404 on GH Pages.
|
|
126
|
+
try {
|
|
127
|
+
const redirects = await readFile(join(publicDir, '_redirects'), 'utf-8');
|
|
128
|
+
if (redirects.trim().length > 0) {
|
|
129
|
+
console.warn(
|
|
130
|
+
`[timber] Warning: GitHub Pages does not support _redirects files. ` +
|
|
131
|
+
`Redirect rules from middleware/proxy will not work on this platform.`
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
} catch {
|
|
135
|
+
// No _redirects file — nothing to warn about
|
|
136
|
+
}
|
|
137
|
+
}
|
|
205
138
|
|
|
206
|
-
|
|
207
|
-
if (config.manifestInit) {
|
|
208
|
-
await writeFile(join(outDir, '_timber-manifest-init.js'), config.manifestInit);
|
|
139
|
+
return;
|
|
209
140
|
}
|
|
210
141
|
|
|
211
|
-
//
|
|
142
|
+
// Steps 1–5: shared across all adapters (mkdir, copy client/rsc/ssr,
|
|
143
|
+
// write _headers, write manifest-init).
|
|
144
|
+
await runSharedBuildSteps({
|
|
145
|
+
config,
|
|
146
|
+
buildDir,
|
|
147
|
+
outDir,
|
|
148
|
+
publicDirName: 'public',
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Write runtime helper modules used by the preview server.
|
|
212
152
|
// See design/25-production-deployments.md — self-hosted deployments
|
|
213
153
|
// need application-level compression (Cloudflare handles it at the edge).
|
|
214
|
-
await writeFile(join(outDir, '_compress.mjs'), generateCompressModule());
|
|
154
|
+
await writeFile(join(outDir, '_compress.mjs'), await generateCompressModule());
|
|
215
155
|
|
|
216
|
-
//
|
|
217
|
-
|
|
218
|
-
await cp(join(buildDir, 'rsc'), join(outDir, 'rsc'), { recursive: true });
|
|
219
|
-
await cp(join(buildDir, 'ssr'), join(outDir, 'ssr'), { recursive: true }).catch(() => {});
|
|
156
|
+
// Web→Node response bridge with backpressure. See TIM-1154.
|
|
157
|
+
await writeFile(join(outDir, '_send-response.mjs'), generateSendResponseModule());
|
|
220
158
|
|
|
221
159
|
// Prepend the manifest assignment directly into the RSC entry so
|
|
222
160
|
// globalThis.__TIMBER_BUILD_MANIFEST__ is set before any module reads it.
|
|
@@ -229,13 +167,35 @@ export function nitro(options: NitroAdapterOptions = {}): TimberPlatformAdapter
|
|
|
229
167
|
}
|
|
230
168
|
|
|
231
169
|
// Generate the Nitro entry point (imports from ./rsc/ within nitro dir)
|
|
232
|
-
const entry = generateNitroEntry(buildDir, outDir, preset);
|
|
170
|
+
const entry = generateNitroEntry(buildDir, outDir, preset, compress);
|
|
233
171
|
await writeFile(join(outDir, 'entry.ts'), entry);
|
|
234
172
|
|
|
235
173
|
// Run the Nitro build to produce a production-ready server bundle.
|
|
236
174
|
// The output goes to dist/nitro/.output/server/index.mjs (for node-server preset).
|
|
237
175
|
// Config is passed programmatically — no nitro.config.ts file needed.
|
|
238
|
-
await runNitroBuild(outDir, preset, options.nitroConfig);
|
|
176
|
+
const { serverDir } = await runNitroBuild(outDir, preset, options.nitroConfig);
|
|
177
|
+
|
|
178
|
+
// Copy prebuilt flight payloads from the canonical build source
|
|
179
|
+
// (buildDir/prebuilt, cleaned by the prebuilt plugin each build) into
|
|
180
|
+
// the Nitro output. The RSC entry resolves `../prebuilt/` relative to
|
|
181
|
+
// its bundled chunk (<serverDir>/_chunks/), so prebuilt/ must live at
|
|
182
|
+
// <serverDir>/prebuilt/. serverDir is the resolved path from Nitro
|
|
183
|
+
// (honors user overrides via nitroConfig.output.serverDir).
|
|
184
|
+
const prebuiltSrc = join(buildDir, 'prebuilt');
|
|
185
|
+
await cp(prebuiltSrc, join(serverDir, 'prebuilt'), {
|
|
186
|
+
recursive: true,
|
|
187
|
+
}).catch((e: NodeJS.ErrnoException) => {
|
|
188
|
+
if (e.code !== 'ENOENT') throw e;
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// Vercel with functionRules clones __server.func to per-route .func
|
|
192
|
+
// directories during the Nitro build. Copy prebuilt into those clones
|
|
193
|
+
// so requests routed to them also resolve ../prebuilt correctly.
|
|
194
|
+
if (preset === 'vercel' || preset === 'vercel-edge') {
|
|
195
|
+
const functionsDir = dirname(serverDir);
|
|
196
|
+
const baseFuncName = basename(serverDir);
|
|
197
|
+
await copyPrebuiltToVercelFuncClones(functionsDir, prebuiltSrc, baseFuncName);
|
|
198
|
+
}
|
|
239
199
|
},
|
|
240
200
|
|
|
241
201
|
// Only presets that produce a locally-runnable server get preview().
|
|
@@ -254,15 +214,6 @@ export function nitro(options: NitroAdapterOptions = {}): TimberPlatformAdapter
|
|
|
254
214
|
await spawnNitroPreview(command, [scriptPath], join(buildDir, 'nitro'));
|
|
255
215
|
}
|
|
256
216
|
: undefined,
|
|
257
|
-
|
|
258
|
-
waitUntil: presetConfig.supportsWaitUntil
|
|
259
|
-
? (promise: Promise<unknown>) => {
|
|
260
|
-
const tracked = promise.catch((err) => {
|
|
261
|
-
console.error('[timber] waitUntil promise rejected:', err);
|
|
262
|
-
});
|
|
263
|
-
pendingPromises.push(tracked);
|
|
264
|
-
}
|
|
265
|
-
: undefined,
|
|
266
217
|
};
|
|
267
218
|
}
|
|
268
219
|
|
|
@@ -273,7 +224,7 @@ export function generateNitroEntry(
|
|
|
273
224
|
buildDir: string,
|
|
274
225
|
outDir: string,
|
|
275
226
|
preset: NitroPreset,
|
|
276
|
-
|
|
227
|
+
compress = true
|
|
277
228
|
): string {
|
|
278
229
|
// The RSC entry is the main request handler — it exports the fetch handler as default.
|
|
279
230
|
// rsc/ is copied into the nitro dir so the import is local.
|
|
@@ -330,20 +281,17 @@ export function generateNitroEntry(
|
|
|
330
281
|
handlerCall = ` const webResponse = await handler(webRequest)`;
|
|
331
282
|
}
|
|
332
283
|
|
|
333
|
-
// Build manifest init must be imported before the handler so that
|
|
334
|
-
// globalThis.__TIMBER_BUILD_MANIFEST__ is set when the virtual module evaluates.
|
|
335
|
-
// ESM guarantees imports are evaluated in order.
|
|
336
|
-
const manifestImport = hasManifestInit ? "import './_timber-manifest-init.js'\n" : '';
|
|
337
|
-
|
|
338
284
|
// Import runWithWaitUntil only when the preset supports it.
|
|
339
285
|
const waitUntilImport = supportsWaitUntil ? ', runWithWaitUntil' : '';
|
|
340
286
|
|
|
287
|
+
const compressImport = compress ? "import { compressResponse } from './_compress.mjs'\n" : '';
|
|
288
|
+
const compressCall = compress ? 'compressResponse(webRequest, webResponse)' : 'webResponse';
|
|
289
|
+
|
|
341
290
|
return `// Generated by @timber-js/app/adapters/nitro
|
|
342
291
|
// Do not edit — this file is regenerated on each build.
|
|
343
292
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
293
|
+
import handler, { runWithEarlyHintsSender${waitUntilImport} } from '${serverEntryRelative}'
|
|
294
|
+
${compressImport}
|
|
347
295
|
// Set TIMBER_RUNTIME for instrumentation.ts conditional SDK initialization.
|
|
348
296
|
// See design/25-production-deployments.md §"TIMBER_RUNTIME".
|
|
349
297
|
process.env.TIMBER_RUNTIME = '${runtimeName}'
|
|
@@ -357,246 +305,93 @@ export default async function timberHandler(event) {
|
|
|
357
305
|
// h3 v2: event.req is the Web Request
|
|
358
306
|
const webRequest = event.req
|
|
359
307
|
${handlerCall}
|
|
360
|
-
return
|
|
308
|
+
return ${compressCall}
|
|
361
309
|
}
|
|
362
310
|
`;
|
|
363
311
|
}
|
|
364
312
|
|
|
365
|
-
|
|
366
|
-
export function generateNitroConfig(
|
|
367
|
-
preset: NitroPreset,
|
|
368
|
-
userConfig?: Record<string, unknown>
|
|
369
|
-
): string {
|
|
370
|
-
const presetConfig = PRESET_CONFIGS[preset];
|
|
371
|
-
|
|
372
|
-
const config: Record<string, unknown> = {
|
|
373
|
-
preset: presetConfig.nitroPreset,
|
|
374
|
-
entry: './entry.ts',
|
|
375
|
-
output: { dir: presetConfig.outputDir },
|
|
376
|
-
// Static asset cache headers — hashed assets are immutable, others get 1h.
|
|
377
|
-
// See design/25-production-deployments.md §"CDN / Edge Cache"
|
|
378
|
-
routeRules: {
|
|
379
|
-
'/assets/**': { headers: { 'Cache-Control': IMMUTABLE_CACHE } },
|
|
380
|
-
},
|
|
381
|
-
...presetConfig.extraConfig,
|
|
382
|
-
...userConfig,
|
|
383
|
-
};
|
|
313
|
+
// ─── Build Hint Filtering ────────────────────────────────────────────────────
|
|
384
314
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
315
|
+
/**
|
|
316
|
+
* Prefixes of nitro build-output lines that give wrong advice for timber
|
|
317
|
+
* builds. Every nitro bundler path emits these hints via `logger.success` —
|
|
318
|
+
* the rollup path hardcodes `npx nitro preview`; rolldown and vite default
|
|
319
|
+
* to it. That command resolves `.output/nitro.json` relative to cwd, but
|
|
320
|
+
* timber's nitro build lives at `.timber/dist/nitro/.output`, so the
|
|
321
|
+
* suggested command can never work from the project root.
|
|
322
|
+
* Prefix matching degrades gracefully: if upstream rewords the line
|
|
323
|
+
* entirely, it passes through rather than being silently eaten.
|
|
324
|
+
*/
|
|
325
|
+
const NITRO_PREVIEW_HINT_PREFIX = 'You can preview this build using';
|
|
326
|
+
const NITRO_DEPLOY_HINT_PREFIX = 'You can deploy this build using';
|
|
327
|
+
const SUPPRESSED_NITRO_HINT_PREFIXES = [NITRO_PREVIEW_HINT_PREFIX, NITRO_DEPLOY_HINT_PREFIX];
|
|
391
328
|
|
|
392
|
-
|
|
393
|
-
|
|
329
|
+
/** @internal Exported for testing. */
|
|
330
|
+
export function isSuppressedNitroHint(
|
|
331
|
+
message: unknown,
|
|
332
|
+
prefixes: readonly string[] = SUPPRESSED_NITRO_HINT_PREFIXES
|
|
333
|
+
): boolean {
|
|
334
|
+
return typeof message === 'string' && prefixes.some((prefix) => message.startsWith(prefix));
|
|
394
335
|
}
|
|
395
336
|
|
|
396
|
-
// ─── Preview ─────────────────────────────────────────────────────────────────
|
|
397
|
-
|
|
398
|
-
/** Presets that produce a locally-runnable server entry. */
|
|
399
|
-
const LOCALLY_PREVIEWABLE = new Set<NitroPreset>(['node-server', 'bun']);
|
|
400
|
-
|
|
401
337
|
/**
|
|
402
|
-
*
|
|
403
|
-
*
|
|
404
|
-
*
|
|
405
|
-
*
|
|
338
|
+
* Nitro's rolldown and vite builders render `framework.previewCommand` /
|
|
339
|
+
* `framework.deployCommand` into these hints. A user who explicitly set one
|
|
340
|
+
* via `nitroConfig` has provided valid guidance — only suppress the hints
|
|
341
|
+
* whose command is still nitro's broken default.
|
|
406
342
|
*
|
|
407
343
|
* @internal Exported for testing.
|
|
408
344
|
*/
|
|
409
|
-
export function
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
// Uses Node's built-in HTTP server to serve static assets and route
|
|
418
|
-
// dynamic requests through the RSC handler. No Nitro/h3 dependency.
|
|
419
|
-
|
|
420
|
-
import { createServer } from 'node:http';
|
|
421
|
-
import { readFile, stat } from 'node:fs/promises';
|
|
422
|
-
import { join, extname } from 'node:path';
|
|
423
|
-
import { fileURLToPath } from 'node:url';
|
|
424
|
-
import { existsSync } from 'node:fs';
|
|
425
|
-
|
|
426
|
-
// Set runtime before importing the handler.
|
|
427
|
-
process.env.TIMBER_RUNTIME = '${runtimeName}';
|
|
428
|
-
|
|
429
|
-
// Load the build manifest if it exists.
|
|
430
|
-
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
431
|
-
const manifestPath = join(__dirname, '${manifestInitPath}');
|
|
432
|
-
if (existsSync(manifestPath)) {
|
|
433
|
-
await import('${manifestInitPath}');
|
|
345
|
+
export function selectSuppressedHintPrefixes(framework?: {
|
|
346
|
+
previewCommand?: string;
|
|
347
|
+
deployCommand?: string;
|
|
348
|
+
}): string[] {
|
|
349
|
+
return [
|
|
350
|
+
...(framework?.previewCommand ? [] : [NITRO_PREVIEW_HINT_PREFIX]),
|
|
351
|
+
...(framework?.deployCommand ? [] : [NITRO_DEPLOY_HINT_PREFIX]),
|
|
352
|
+
];
|
|
434
353
|
}
|
|
435
354
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
// Import compression helper for self-hosted response compression.
|
|
440
|
-
const { compressResponse } = await import('./_compress.mjs');
|
|
441
|
-
|
|
442
|
-
const MIME_TYPES = {
|
|
443
|
-
'.html': 'text/html',
|
|
444
|
-
'.js': 'application/javascript',
|
|
445
|
-
'.mjs': 'application/javascript',
|
|
446
|
-
'.css': 'text/css',
|
|
447
|
-
'.json': 'application/json',
|
|
448
|
-
'.png': 'image/png',
|
|
449
|
-
'.jpg': 'image/jpeg',
|
|
450
|
-
'.jpeg': 'image/jpeg',
|
|
451
|
-
'.gif': 'image/gif',
|
|
452
|
-
'.svg': 'image/svg+xml',
|
|
453
|
-
'.ico': 'image/x-icon',
|
|
454
|
-
'.woff': 'font/woff',
|
|
455
|
-
'.woff2': 'font/woff2',
|
|
456
|
-
'.ttf': 'font/ttf',
|
|
457
|
-
'.otf': 'font/otf',
|
|
458
|
-
'.webp': 'image/webp',
|
|
459
|
-
'.avif': 'image/avif',
|
|
460
|
-
'.webm': 'video/webm',
|
|
461
|
-
'.mp4': 'video/mp4',
|
|
462
|
-
'.txt': 'text/plain',
|
|
463
|
-
'.xml': 'application/xml',
|
|
464
|
-
'.wasm': 'application/wasm',
|
|
465
|
-
};
|
|
466
|
-
|
|
467
|
-
const publicDir = join(__dirname, '${publicDir}');
|
|
468
|
-
const port = parseInt(process.env.PORT || '3000', 10);
|
|
469
|
-
const host = process.env.HOST || process.env.HOSTNAME || 'localhost';
|
|
470
|
-
|
|
471
|
-
const server = createServer(async (req, res) => {
|
|
472
|
-
const url = new URL(req.url || '/', \`http://\${host}:\${port}\`);
|
|
473
|
-
|
|
474
|
-
// Try serving static files from the public directory first.
|
|
475
|
-
const filePath = join(publicDir, url.pathname);
|
|
476
|
-
// Prevent path traversal.
|
|
477
|
-
if (filePath.startsWith(publicDir)) {
|
|
478
|
-
try {
|
|
479
|
-
const fileStat = await stat(filePath);
|
|
480
|
-
if (fileStat.isFile()) {
|
|
481
|
-
const ext = extname(filePath);
|
|
482
|
-
const contentType = MIME_TYPES[ext] || 'application/octet-stream';
|
|
483
|
-
const body = await readFile(filePath);
|
|
484
|
-
// Hashed assets get immutable cache, others get short cache.
|
|
485
|
-
const cacheControl = url.pathname.startsWith('/assets/')
|
|
486
|
-
? 'public, max-age=31536000, immutable'
|
|
487
|
-
: 'public, max-age=3600, must-revalidate';
|
|
488
|
-
res.writeHead(200, {
|
|
489
|
-
'Content-Type': contentType,
|
|
490
|
-
'Content-Length': body.length,
|
|
491
|
-
'Cache-Control': cacheControl,
|
|
492
|
-
});
|
|
493
|
-
res.end(body);
|
|
494
|
-
return;
|
|
495
|
-
}
|
|
496
|
-
} catch {
|
|
497
|
-
// File not found — fall through to the RSC handler.
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
// Convert Node request to Web Request.
|
|
502
|
-
const headers = new Headers();
|
|
503
|
-
for (const [key, value] of Object.entries(req.headers)) {
|
|
504
|
-
if (value) {
|
|
505
|
-
if (Array.isArray(value)) {
|
|
506
|
-
for (const v of value) headers.append(key, v);
|
|
507
|
-
} else {
|
|
508
|
-
headers.set(key, value);
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
let body = undefined;
|
|
514
|
-
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
515
|
-
body = await new Promise((resolve) => {
|
|
516
|
-
const chunks = [];
|
|
517
|
-
req.on('data', (chunk) => chunks.push(chunk));
|
|
518
|
-
req.on('end', () => resolve(Buffer.concat(chunks)));
|
|
519
|
-
});
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
const webRequest = new Request(url.href, {
|
|
523
|
-
method: req.method,
|
|
524
|
-
headers,
|
|
525
|
-
body,
|
|
526
|
-
duplex: body ? 'half' : undefined,
|
|
527
|
-
});
|
|
528
|
-
|
|
529
|
-
try {
|
|
530
|
-
// Support 103 Early Hints when available.
|
|
531
|
-
const earlyHintsSender = (typeof res.writeEarlyHints === 'function')
|
|
532
|
-
? (links) => { try { res.writeEarlyHints({ link: links }); } catch {} }
|
|
533
|
-
: undefined;
|
|
534
|
-
|
|
535
|
-
const rawResponse = earlyHintsSender && runWithEarlyHintsSender
|
|
536
|
-
? await runWithEarlyHintsSender(earlyHintsSender, () => handler(webRequest))
|
|
537
|
-
: await handler(webRequest);
|
|
538
|
-
|
|
539
|
-
// Compress the response for self-hosted deployments.
|
|
540
|
-
const webResponse = compressResponse(webRequest, rawResponse);
|
|
541
|
-
|
|
542
|
-
// Write the response back to the Node response.
|
|
543
|
-
res.writeHead(webResponse.status, Object.fromEntries(webResponse.headers.entries()));
|
|
544
|
-
|
|
545
|
-
if (webResponse.body) {
|
|
546
|
-
const reader = webResponse.body.getReader();
|
|
547
|
-
const pump = async () => {
|
|
548
|
-
while (true) {
|
|
549
|
-
const { done, value } = await reader.read();
|
|
550
|
-
if (done) { res.end(); return; }
|
|
551
|
-
res.write(value);
|
|
552
|
-
}
|
|
553
|
-
};
|
|
554
|
-
await pump();
|
|
555
|
-
} else {
|
|
556
|
-
res.end();
|
|
557
|
-
}
|
|
558
|
-
} catch (err) {
|
|
559
|
-
console.error('[timber preview] Request error:', err);
|
|
560
|
-
if (!res.headersSent) {
|
|
561
|
-
res.writeHead(500, { 'Content-Type': 'text/plain' });
|
|
562
|
-
}
|
|
563
|
-
res.end('Internal Server Error');
|
|
564
|
-
}
|
|
565
|
-
});
|
|
566
|
-
|
|
567
|
-
server.listen(port, host, () => {
|
|
568
|
-
console.log();
|
|
569
|
-
console.log(' ⚡ timber preview server running at:');
|
|
570
|
-
console.log();
|
|
571
|
-
console.log(\` ➜ http://\${host}:\${port}\`);
|
|
572
|
-
console.log();
|
|
573
|
-
});
|
|
574
|
-
`;
|
|
355
|
+
/** Minimal structural view of the nitro (consola) logger the wrap needs. */
|
|
356
|
+
interface NitroBuildLogger {
|
|
357
|
+
success: (message: unknown, ...args: unknown[]) => void;
|
|
575
358
|
}
|
|
576
359
|
|
|
577
|
-
/**
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
360
|
+
/**
|
|
361
|
+
* Wrap a nitro logger's `success` so hardcoded preview/deploy hints are
|
|
362
|
+
* dropped for this programmatic build only. Returns the original
|
|
363
|
+
* (unfiltered) success fn so timber can print its own hint — which shares
|
|
364
|
+
* the suppressed prefix on purpose, replacing nitro's wording.
|
|
365
|
+
*
|
|
366
|
+
* @internal Exported for testing.
|
|
367
|
+
*/
|
|
368
|
+
export function wrapNitroLoggerForBuild(
|
|
369
|
+
logger: NitroBuildLogger,
|
|
370
|
+
prefixes: readonly string[] = SUPPRESSED_NITRO_HINT_PREFIXES
|
|
371
|
+
): NitroBuildLogger['success'] {
|
|
372
|
+
const originalSuccess = logger.success.bind(logger);
|
|
373
|
+
const wrapped = (message: unknown, ...args: unknown[]) => {
|
|
374
|
+
if (isSuppressedNitroHint(message, prefixes)) return;
|
|
375
|
+
originalSuccess(message, ...args);
|
|
376
|
+
};
|
|
377
|
+
// Preserve consola LogFn properties (e.g. `.raw`) on the replacement.
|
|
378
|
+
logger.success = Object.assign(wrapped, logger.success);
|
|
379
|
+
return originalSuccess;
|
|
582
380
|
}
|
|
583
381
|
|
|
584
|
-
/**
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
args: [entryPath],
|
|
598
|
-
cwd: nitroDir,
|
|
599
|
-
};
|
|
382
|
+
/**
|
|
383
|
+
* Timber's own post-build hint. Locally-runnable presets are previewed via
|
|
384
|
+
* `timber preview`, which invokes this adapter's `preview()` to run the
|
|
385
|
+
* generated `_preview-server.mjs`. Serverless presets get no hint — their
|
|
386
|
+
* output lives under `.timber/dist/nitro/`, so any cwd-relative deploy
|
|
387
|
+
* command would be as wrong as the nitro hint this replaces.
|
|
388
|
+
*
|
|
389
|
+
* @internal Exported for testing.
|
|
390
|
+
*/
|
|
391
|
+
export function getPostBuildHint(preset: NitroPreset): string | null {
|
|
392
|
+
return LOCALLY_PREVIEWABLE.has(preset)
|
|
393
|
+
? 'You can preview this build using `timber preview`'
|
|
394
|
+
: null;
|
|
600
395
|
}
|
|
601
396
|
|
|
602
397
|
/**
|
|
@@ -605,13 +400,23 @@ export function generateNitroPreviewCommand(
|
|
|
605
400
|
* Externalizes the timber RSC/SSR output — those files are pre-built
|
|
606
401
|
* by timber and have internal references that nitro's bundler can't follow.
|
|
607
402
|
*/
|
|
403
|
+
interface NitroBuildResult {
|
|
404
|
+
/** Resolved output.serverDir — where the server bundle + _chunks/ live. */
|
|
405
|
+
serverDir: string;
|
|
406
|
+
}
|
|
407
|
+
|
|
608
408
|
async function runNitroBuild(
|
|
609
409
|
nitroDir: string,
|
|
610
410
|
preset: NitroPreset,
|
|
611
411
|
userConfig?: Record<string, unknown>
|
|
612
|
-
): Promise<
|
|
412
|
+
): Promise<NitroBuildResult> {
|
|
613
413
|
const presetConfig = PRESET_CONFIGS[preset];
|
|
614
|
-
const {
|
|
414
|
+
const {
|
|
415
|
+
createNitro,
|
|
416
|
+
build: nitroBuild,
|
|
417
|
+
prepare,
|
|
418
|
+
copyPublicAssets,
|
|
419
|
+
} = await import('nitro/builder');
|
|
615
420
|
|
|
616
421
|
const nitro = await createNitro({
|
|
617
422
|
rootDir: nitroDir,
|
|
@@ -623,6 +428,7 @@ async function runNitroBuild(
|
|
|
623
428
|
output: { dir: join(nitroDir, presetConfig.outputDir) },
|
|
624
429
|
routeRules: {
|
|
625
430
|
'/assets/**': { headers: { 'Cache-Control': IMMUTABLE_CACHE } },
|
|
431
|
+
'/_timber/fonts/**': { headers: { 'Cache-Control': IMMUTABLE_CACHE } },
|
|
626
432
|
},
|
|
627
433
|
// Don't bundle the timber RSC/SSR build output — it has its own
|
|
628
434
|
// internal file references that nitro's bundler can't follow.
|
|
@@ -634,30 +440,85 @@ async function runNitroBuild(
|
|
|
634
440
|
...userConfig,
|
|
635
441
|
});
|
|
636
442
|
|
|
443
|
+
// Drop nitro's `npx nitro preview` / `npx nitro deploy` hints —
|
|
444
|
+
// they can never work from the project root (see TIM-1375). Hints whose
|
|
445
|
+
// command the user explicitly configured via framework.previewCommand /
|
|
446
|
+
// deployCommand pass through untouched — except on the rollup builder,
|
|
447
|
+
// which ignores framework commands and unconditionally prints the broken
|
|
448
|
+
// defaults (nitro/dist/_build/rollup.mjs), so user commands are treated
|
|
449
|
+
// as absent there: defaults stay suppressed, timber's hint still prints.
|
|
450
|
+
// logSuccess is the unfiltered fn used below to print timber's hint.
|
|
451
|
+
const framework = nitro.options.builder === 'rollup' ? undefined : nitro.options.framework;
|
|
452
|
+
const logSuccess = wrapNitroLoggerForBuild(nitro.logger, selectSuppressedHintPrefixes(framework));
|
|
453
|
+
|
|
454
|
+
// Read the resolved serverDir AFTER config merging — userConfig may
|
|
455
|
+
// override output.dir or output.serverDir. Nitro appends a trailing
|
|
456
|
+
// slash during resolution; strip it for join() compatibility.
|
|
457
|
+
const raw = nitro.options.output.serverDir;
|
|
458
|
+
const serverDir = raw.endsWith('/') ? raw.slice(0, -1) : raw;
|
|
459
|
+
|
|
637
460
|
await prepare(nitro);
|
|
638
461
|
await copyPublicAssets(nitro);
|
|
639
462
|
await nitroBuild(nitro);
|
|
640
463
|
await nitro.close();
|
|
641
|
-
}
|
|
642
464
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
if (err) reject(err);
|
|
648
|
-
else resolve();
|
|
649
|
-
});
|
|
650
|
-
child.stdout?.pipe(process.stdout);
|
|
651
|
-
child.stderr?.pipe(process.stderr);
|
|
652
|
-
});
|
|
653
|
-
}
|
|
465
|
+
// A user-configured previewCommand already printed via nitro's own hint —
|
|
466
|
+
// don't print a second, conflicting one.
|
|
467
|
+
const hint = framework?.previewCommand ? null : getPostBuildHint(preset);
|
|
468
|
+
if (hint) logSuccess(hint);
|
|
654
469
|
|
|
470
|
+
return { serverDir };
|
|
471
|
+
}
|
|
655
472
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
656
473
|
|
|
657
474
|
/**
|
|
658
|
-
*
|
|
475
|
+
* Resolve the destination path for prebuilt flight payloads in the Nitro
|
|
476
|
+
* output directory. The RSC entry resolves `../prebuilt/` relative to its
|
|
477
|
+
* bundled chunk location (`<serverBundleDir>/_chunks/`), so prebuilt/ must
|
|
478
|
+
* live at `<serverBundleDir>/prebuilt/`.
|
|
479
|
+
*
|
|
480
|
+
* The serverBundleDir varies by preset — Nitro's Vercel preset uses
|
|
481
|
+
* `functions/__server.func` while most others use `server`.
|
|
482
|
+
*
|
|
659
483
|
* @internal Exported for testing.
|
|
660
484
|
*/
|
|
661
|
-
export function
|
|
662
|
-
|
|
485
|
+
export function resolvePrebuiltOutputPath(outDir: string, preset: NitroPreset): string {
|
|
486
|
+
const presetConfig = PRESET_CONFIGS[preset];
|
|
487
|
+
return join(outDir, presetConfig.outputDir, presetConfig.serverBundleDir, 'prebuilt');
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Copy prebuilt payloads into cloned Vercel function directories.
|
|
492
|
+
*
|
|
493
|
+
* When users configure `vercel.functionRules`, Nitro's compiled hook clones
|
|
494
|
+
* the base __server.func to per-route .func directories. These clones are
|
|
495
|
+
* created during `runNitroBuild()` — before our post-build prebuilt copy.
|
|
496
|
+
* Each clone resolves `../prebuilt` independently, so they each need a copy.
|
|
497
|
+
*
|
|
498
|
+
* @internal Exported for testing.
|
|
499
|
+
*/
|
|
500
|
+
export async function copyPrebuiltToVercelFuncClones(
|
|
501
|
+
functionsDir: string,
|
|
502
|
+
prebuiltSrc: string,
|
|
503
|
+
baseFuncName: string
|
|
504
|
+
): Promise<void> {
|
|
505
|
+
const funcDirs: string[] = [];
|
|
506
|
+
try {
|
|
507
|
+
for await (const match of glob('**/*.func', { cwd: functionsDir })) {
|
|
508
|
+
if (!match.endsWith(baseFuncName)) {
|
|
509
|
+
funcDirs.push(join(functionsDir, match));
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
} catch {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
await Promise.all(
|
|
516
|
+
funcDirs.map((dir) =>
|
|
517
|
+
cp(prebuiltSrc, join(dir, 'prebuilt'), { recursive: true }).catch(
|
|
518
|
+
(e: NodeJS.ErrnoException) => {
|
|
519
|
+
if (e.code !== 'ENOENT') throw e;
|
|
520
|
+
}
|
|
521
|
+
)
|
|
522
|
+
)
|
|
523
|
+
);
|
|
663
524
|
}
|