@timber-js/app 0.2.0-alpha.21 → 0.2.0-alpha.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -0
- package/agent-skill.md +346 -0
- package/bin/timber.mjs +15 -1
- package/dist/_chunks/actions-Rjk4htmA.js +1199 -0
- package/dist/_chunks/actions-Rjk4htmA.js.map +1 -0
- package/dist/_chunks/als-registry-DaxkVjt5.js +45 -0
- package/dist/_chunks/als-registry-DaxkVjt5.js.map +1 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
- package/dist/_chunks/base-path-DaQrzbez.js +80 -0
- package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
- package/dist/_chunks/build-manifest-DWppEdLB.js +86 -0
- package/dist/_chunks/build-manifest-DWppEdLB.js.map +1 -0
- package/dist/_chunks/build-output-helper-RV_BRcF1.js +367 -0
- package/dist/_chunks/build-output-helper-RV_BRcF1.js.map +1 -0
- package/dist/_chunks/cache-api-DGdYfNJn.js +1182 -0
- package/dist/_chunks/cache-api-DGdYfNJn.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-DGX9zmg9.js +272 -0
- package/dist/_chunks/chains-DGX9zmg9.js.map +1 -0
- package/dist/_chunks/classify-QwG5rxKI.js +147 -0
- package/dist/_chunks/classify-QwG5rxKI.js.map +1 -0
- package/dist/_chunks/cli-check-ajNY3B2e.js +252 -0
- package/dist/_chunks/cli-check-ajNY3B2e.js.map +1 -0
- package/dist/_chunks/cli-context-By7k2xVo.js +70 -0
- package/dist/_chunks/cli-context-By7k2xVo.js.map +1 -0
- package/dist/_chunks/cli-schema-sync-D2eI8jEg.js +299 -0
- package/dist/_chunks/cli-schema-sync-D2eI8jEg.js.map +1 -0
- package/dist/_chunks/client-dep-entries-2HCF09no.js +66 -0
- package/dist/_chunks/client-dep-entries-2HCF09no.js.map +1 -0
- package/dist/_chunks/cloudflare-Byxl8FWP.js +1333 -0
- package/dist/_chunks/cloudflare-Byxl8FWP.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/codegen-Bps1sLKJ.js +432 -0
- package/dist/_chunks/codegen-Bps1sLKJ.js.map +1 -0
- package/dist/_chunks/convention-lint-DLmhGsRS.js +590 -0
- package/dist/_chunks/convention-lint-DLmhGsRS.js.map +1 -0
- package/dist/_chunks/dev-server-TFpEwm3H.js +2039 -0
- package/dist/_chunks/dev-server-TFpEwm3H.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-DsNScGRM.js +1024 -0
- package/dist/_chunks/error-boundary-DsNScGRM.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/format-BKclgVbk.js +14 -0
- package/dist/_chunks/format-BKclgVbk.js.map +1 -0
- package/dist/_chunks/fs-identity-BRKuL215.js +207 -0
- package/dist/_chunks/fs-identity-BRKuL215.js.map +1 -0
- package/dist/_chunks/graph-cache-CYiUS2aS.js +303 -0
- package/dist/_chunks/graph-cache-CYiUS2aS.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-CVuRs2hG.js +66 -0
- package/dist/_chunks/json-lossy-check-CVuRs2hG.js.map +1 -0
- package/dist/_chunks/live-graph-cNuWMYQI.js +151 -0
- package/dist/_chunks/live-graph-cNuWMYQI.js.map +1 -0
- package/dist/_chunks/logger-BP0LN6vP.js +662 -0
- package/dist/_chunks/logger-BP0LN6vP.js.map +1 -0
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DSDjM_hJ.js} +71 -27
- package/dist/_chunks/metadata-routes-DSDjM_hJ.js.map +1 -0
- package/dist/_chunks/navigation-root-BQfo1-kG.js +126 -0
- package/dist/_chunks/navigation-root-BQfo1-kG.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-BPBPc3lL.js +345 -0
- package/dist/_chunks/plugin-context-BPBPc3lL.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-CfQ3unZR.js +99 -0
- package/dist/_chunks/poison-scan-CfQ3unZR.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/render-timeout-DOf_BBcO.js +46 -0
- package/dist/_chunks/render-timeout-DOf_BBcO.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-dffcs4jp.js +54 -0
- package/dist/_chunks/rsc-payload-path-dffcs4jp.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-DmqdxzbW.js +2056 -0
- package/dist/_chunks/scanner-DmqdxzbW.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-xtPUGfdq.js +137 -0
- package/dist/_chunks/segment-context-xtPUGfdq.js.map +1 -0
- package/dist/_chunks/segment-keys-D5hu1hz4.js +62 -0
- package/dist/_chunks/segment-keys-D5hu1hz4.js.map +1 -0
- package/dist/_chunks/singleflight-BeVMMKi0.js +55 -0
- package/dist/_chunks/singleflight-BeVMMKi0.js.map +1 -0
- package/dist/_chunks/sizeof-BM1409x2.js +36 -0
- package/dist/_chunks/sizeof-BM1409x2.js.map +1 -0
- package/dist/_chunks/ssr-data-nA3I70_n.js +49 -0
- package/dist/_chunks/ssr-data-nA3I70_n.js.map +1 -0
- package/dist/_chunks/state-BhNGPsdi.js +50 -0
- package/dist/_chunks/state-BhNGPsdi.js.map +1 -0
- package/dist/_chunks/status-page-marker-BRX9Ib-d.js +564 -0
- package/dist/_chunks/status-page-marker-BRX9Ib-d.js.map +1 -0
- package/dist/_chunks/tree-match-6yihorhk.js +169 -0
- package/dist/_chunks/tree-match-6yihorhk.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-Czu2jXFq.js +144 -0
- package/dist/_chunks/walkers-Czu2jXFq.js.map +1 -0
- package/dist/_chunks/write-file-atomic-D1qWqHb4.js +32 -0
- package/dist/_chunks/write-file-atomic-D1qWqHb4.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/canonicalize-module.d.ts +8 -0
- package/dist/adapters/canonicalize-module.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 +224 -24
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +2 -188
- package/dist/adapters/compress-module.d.ts +25 -4
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/fs-identity.d.ts +63 -0
- package/dist/adapters/fs-identity.d.ts.map +1 -0
- package/dist/adapters/nitro-presets.d.ts +31 -0
- package/dist/adapters/nitro-presets.d.ts.map +1 -0
- package/dist/adapters/nitro-preview.d.ts +64 -0
- package/dist/adapters/nitro-preview.d.ts.map +1 -0
- package/dist/adapters/nitro.d.ts +54 -37
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +631 -359
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +67 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/adapters/types.d.ts +122 -16
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js +0 -0
- package/dist/analyze/chains.d.ts +124 -0
- package/dist/analyze/chains.d.ts.map +1 -0
- package/dist/analyze/classify.d.ts +153 -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 +314 -0
- package/dist/analyze/crawl-entry.js.map +1 -0
- package/dist/analyze/crawl.d.ts +134 -0
- package/dist/analyze/crawl.d.ts.map +1 -0
- package/dist/analyze/graph-cache.d.ts +104 -0
- package/dist/analyze/graph-cache.d.ts.map +1 -0
- package/dist/analyze/graph-command.d.ts +43 -0
- package/dist/analyze/graph-command.d.ts.map +1 -0
- package/dist/analyze/graph-command.js +472 -0
- package/dist/analyze/graph-command.js.map +1 -0
- package/dist/analyze/live-graph.d.ts +81 -0
- package/dist/analyze/live-graph.d.ts.map +1 -0
- package/dist/analyze/poison-rules.d.ts +72 -0
- package/dist/analyze/poison-rules.d.ts.map +1 -0
- package/dist/analyze/poison-scan.d.ts +48 -0
- package/dist/analyze/poison-scan.d.ts.map +1 -0
- package/dist/analyze/scan.d.ts +73 -0
- package/dist/analyze/scan.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +48 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/fast-hash.d.ts +5 -0
- package/dist/cache/fast-hash.d.ts.map +1 -1
- package/dist/cache/handler-store.d.ts +33 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +32 -9
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +3 -326
- package/dist/cache/invalidation-epoch.d.ts +43 -0
- package/dist/cache/invalidation-epoch.d.ts.map +1 -0
- package/dist/cache/json-lossy-check.d.ts +11 -0
- package/dist/cache/json-lossy-check.d.ts.map +1 -0
- package/dist/cache/redis-handler.d.ts +141 -9
- package/dist/cache/redis-handler.d.ts.map +1 -1
- package/dist/cache/singleflight.d.ts +21 -2
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/stable-stringify.d.ts +9 -0
- package/dist/cache/stable-stringify.d.ts.map +1 -1
- package/dist/cache/store.d.ts +53 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
- package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.js +29 -0
- package/dist/cache/stores/cloudflare-kv.js.map +1 -0
- package/dist/cache/stores/memory.d.ts +42 -0
- package/dist/cache/stores/memory.d.ts.map +1 -0
- package/dist/cache/stores/memory.js +90 -0
- package/dist/cache/stores/memory.js.map +1 -0
- package/dist/cache/stores/redis.d.ts +69 -0
- package/dist/cache/stores/redis.d.ts.map +1 -0
- package/dist/cache/stores/redis.js +35 -0
- package/dist/cache/stores/redis.js.map +1 -0
- package/dist/cache/stores/vercel.d.ts +36 -0
- package/dist/cache/stores/vercel.d.ts.map +1 -0
- package/dist/cache/stores/vercel.js +33 -0
- package/dist/cache/stores/vercel.js.map +1 -0
- package/dist/cache/tag-aware-handler.d.ts +52 -0
- package/dist/cache/tag-aware-handler.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +21 -11
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cdn/cloudflare-purge.d.ts +23 -0
- package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
- package/dist/cdn/cloudflare-purge.js +30 -0
- package/dist/cdn/cloudflare-purge.js.map +1 -0
- package/dist/cdn/fastly-purge.d.ts +25 -0
- package/dist/cdn/fastly-purge.d.ts.map +1 -0
- package/dist/cdn/fastly-purge.js +33 -0
- package/dist/cdn/fastly-purge.js.map +1 -0
- package/dist/cdn/headers.d.ts +97 -0
- package/dist/cdn/headers.d.ts.map +1 -0
- package/dist/cdn/index.d.ts +5 -0
- package/dist/cdn/index.d.ts.map +1 -0
- package/dist/cdn/index.js +94 -0
- package/dist/cdn/index.js.map +1 -0
- package/dist/cdn/purge-store.d.ts +23 -0
- package/dist/cdn/purge-store.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.d.ts +20 -0
- package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.js +35 -0
- package/dist/cdn/workers-cache-purge.js.map +1 -0
- package/dist/cli-check.d.ts +133 -0
- package/dist/cli-check.d.ts.map +1 -0
- package/dist/cli-context.d.ts +54 -0
- package/dist/cli-context.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 +85 -13
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +224 -63
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +42 -2
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/action-queue.d.ts +63 -0
- package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +53 -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 +26 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +41 -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 +58 -9
- 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 +55 -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 +330 -1150
- 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 +792 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link.d.ts +85 -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 +133 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-commit.d.ts +111 -0
- package/dist/client/navigation-commit.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +54 -36
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/navigation-root.d.ts +106 -0
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/navigation-transition.d.ts +192 -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 +45 -0
- package/dist/client/react-root.d.ts.map +1 -0
- package/dist/client/router-effects.d.ts +137 -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 +84 -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 +334 -0
- package/dist/client/router-types.d.ts.map +1 -0
- package/dist/client/router-url.d.ts +24 -0
- package/dist/client/router-url.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 +110 -28
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +186 -25
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +68 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/segment-update-context.d.ts +15 -0
- package/dist/client/segment-update-context.d.ts.map +1 -0
- package/dist/client/shallow-url.d.ts +10 -0
- package/dist/client/shallow-url.d.ts.map +1 -0
- package/dist/client/slot-content-cache-context.d.ts +35 -0
- package/dist/client/slot-content-cache-context.d.ts.map +1 -0
- package/dist/client/slot-context.d.ts +31 -0
- package/dist/client/slot-context.d.ts.map +1 -0
- package/dist/client/slot-outlet.d.ts +16 -0
- package/dist/client/slot-outlet.d.ts.map +1 -0
- package/dist/client/slot-provider.d.ts +25 -0
- package/dist/client/slot-provider.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +26 -50
- 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 +21 -13
- 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 +15 -8
- 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 +323 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +68 -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 +95 -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 +74 -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/{plugins/dev-error-overlay.d.ts → dev-tools/overlay.d.ts} +15 -25
- package/dist/dev-tools/overlay.d.ts.map +1 -0
- package/dist/dev-tools/stack-classifier.d.ts +34 -0
- package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
- package/dist/dev-tools/terminal.d.ts +28 -0
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/fonts/ast-walk.d.ts +68 -0
- package/dist/fonts/ast-walk.d.ts.map +1 -0
- package/dist/fonts/ast.d.ts +112 -8
- package/dist/fonts/ast.d.ts.map +1 -1
- package/dist/fonts/bundle.d.ts +50 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/fallbacks.d.ts +0 -7
- package/dist/fonts/fallbacks.d.ts.map +1 -1
- package/dist/fonts/google.d.ts +5 -3
- package/dist/fonts/google.d.ts.map +1 -1
- package/dist/fonts/local.d.ts +5 -5
- package/dist/fonts/local.d.ts.map +1 -1
- package/dist/fonts/paths.d.ts +43 -0
- package/dist/fonts/paths.d.ts.map +1 -0
- package/dist/fonts/pipeline.d.ts +177 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +82 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +47 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +77 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +35 -181
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8871 -14233
- 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 +262 -0
- package/dist/plugin-context.d.ts.map +1 -0
- 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 +61 -11
- 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/client-dep-entries.d.ts +44 -0
- package/dist/plugins/client-dep-entries.d.ts.map +1 -0
- package/dist/plugins/cloudflare-wasm.d.ts +21 -0
- package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-discovery.d.ts +123 -0
- package/dist/plugins/dev-discovery.d.ts.map +1 -0
- package/dist/plugins/dev-server.d.ts +24 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +34 -4
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +35 -74
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/graph-endpoint.d.ts +112 -0
- package/dist/plugins/graph-endpoint.d.ts.map +1 -0
- package/dist/plugins/mdx.d.ts +18 -5
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/post-build.d.ts +110 -0
- package/dist/plugins/post-build.d.ts.map +1 -0
- package/dist/plugins/prebuilt-capture.d.ts +67 -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 +98 -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/react-resolve.d.ts +49 -0
- package/dist/plugins/react-resolve.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/rsc-assets-manifest.d.ts +33 -0
- package/dist/plugins/rsc-assets-manifest.d.ts.map +1 -0
- 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 +246 -26
- 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 +42 -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 +91 -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 +81 -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 +44 -9
- 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 +40 -5
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +78 -40
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +166 -16
- package/dist/server/als-registry.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 +149 -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 +36 -0
- package/dist/server/csp-nonce.d.ts.map +1 -0
- package/dist/server/csrf.d.ts +58 -15
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/debug.d.ts +0 -1
- package/dist/server/debug.d.ts.map +1 -1
- package/dist/server/default-logger.d.ts +23 -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 +257 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts +21 -15
- package/dist/server/deny-renderer.d.ts.map +1 -1
- 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 +102 -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 +19 -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 +2 -2
- 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 +17 -54
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +195 -2922
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts +11 -4
- package/dist/server/instrumentation.d.ts.map +1 -1
- package/dist/server/internal.d.ts +47 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +4645 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/json-status-response.d.ts +34 -0
- package/dist/server/json-status-response.d.ts.map +1 -0
- package/dist/server/logger.d.ts +78 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/metadata-collector.d.ts +73 -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 +71 -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 +83 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +193 -0
- package/dist/server/pipeline-helpers.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +70 -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 +59 -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 +147 -23
- 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-render.d.ts +25 -0
- package/dist/server/prebuilt/capture-render.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-routes.d.ts +37 -0
- package/dist/server/prebuilt/capture-routes.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-state.d.ts +101 -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/lifetime.d.ts +38 -0
- package/dist/server/prebuilt/lifetime.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 +106 -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 +101 -90
- 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/react-cache-bridge.d.ts +59 -0
- package/dist/server/react-cache-bridge.d.ts.map +1 -0
- package/dist/server/react-cache-scope.d.ts +49 -0
- package/dist/server/react-cache-scope.d.ts.map +1 -0
- package/dist/server/render-timeout.d.ts +66 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/render-utils.d.ts +35 -0
- package/dist/server/render-utils.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +128 -103
- 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 +55 -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-dispatcher.d.ts +67 -0
- package/dist/server/rsc-entry/action-dispatcher.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 +19 -3
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/deny-fallback.d.ts +55 -0
- package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
- package/dist/server/rsc-entry/error-renderer.d.ts +35 -21
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +14 -59
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +30 -6
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +50 -0
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
- package/dist/server/rsc-entry/render-signals.d.ts +65 -0
- package/dist/server/rsc-entry/render-signals.d.ts.map +1 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts +98 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
- package/dist/server/rsc-entry/rsc-payload.d.ts +30 -6
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +12 -30
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +6 -2
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +44 -7
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-error-envelope.d.ts +11 -0
- package/dist/server/rsc-error-envelope.d.ts.map +1 -0
- package/dist/server/safe-load.d.ts +39 -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/signal-identity.d.ts +43 -0
- package/dist/server/signal-identity.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 +138 -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 +198 -0
- package/dist/server/ssr-bridge-types.d.ts.map +1 -0
- package/dist/server/ssr-entry.d.ts +8 -47
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +60 -27
- 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 +59 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +57 -26
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-match.d.ts +59 -0
- package/dist/server/tree-match.d.ts.map +1 -0
- package/dist/server/types.d.ts +89 -8
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/element-type.d.ts +50 -0
- package/dist/server/utils/element-type.d.ts.map +1 -0
- package/dist/server/utils/escape-html.d.ts +14 -0
- package/dist/server/utils/escape-html.d.ts.map +1 -0
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/server/workers-cache-bridge.d.ts +26 -0
- package/dist/server/workers-cache-bridge.d.ts.map +1 -0
- package/dist/shared/als-slots.d.ts +42 -0
- package/dist/shared/als-slots.d.ts.map +1 -0
- package/dist/shared/base-path.d.ts +56 -0
- package/dist/shared/base-path.d.ts.map +1 -0
- package/dist/shared/csrf-reject.d.ts +16 -0
- package/dist/shared/csrf-reject.d.ts.map +1 -0
- package/dist/shared/error-digest.d.ts +28 -0
- package/dist/shared/error-digest.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 +110 -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 +48 -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/dist/utils/write-file-atomic.d.ts +17 -0
- package/dist/utils/write-file-atomic.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +239 -0
- package/docs/api/31-api-client.mdx +170 -0
- package/docs/api/32-api-cache.mdx +339 -0
- package/docs/api/33-api-search-params.mdx +176 -0
- package/docs/api/34-api-config.mdx +359 -0
- package/docs/api/35-api-typescript.mdx +91 -0
- package/docs/api/36-cli.mdx +202 -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 +227 -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 +270 -0
- package/docs/learn/11-middleware.mdx +164 -0
- package/docs/learn/12-error-handling.mdx +192 -0
- package/docs/learn/13-deploying.mdx +287 -0
- package/llms.txt +55 -0
- package/package.json +120 -29
- package/src/adapters/build-output-helper.ts +353 -0
- package/src/adapters/canonicalize-module.ts +29 -0
- package/src/adapters/cloudflare-dev.ts +183 -0
- package/src/adapters/cloudflare-kv-cache.ts +207 -0
- package/src/adapters/cloudflare.ts +809 -150
- package/src/adapters/compress-module.ts +110 -86
- package/src/adapters/fs-identity.ts +155 -0
- package/src/adapters/nitro-presets.ts +124 -0
- package/src/adapters/nitro-preview.ts +476 -0
- package/src/adapters/nitro.ts +317 -457
- package/src/adapters/raw-imports.d.ts +5 -0
- package/src/adapters/shared.ts +283 -0
- package/src/adapters/types.ts +127 -17
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/analyze/chains.ts +411 -0
- package/src/analyze/classify.ts +259 -0
- package/src/analyze/crawl-entry.ts +68 -0
- package/src/analyze/crawl.ts +500 -0
- package/src/analyze/graph-cache.ts +331 -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 +159 -0
- package/src/analyze/scan.ts +149 -0
- package/src/cache/cache-api.ts +107 -0
- package/src/cache/fast-hash.ts +5 -0
- package/src/cache/handler-store.ts +76 -0
- package/src/cache/index.ts +115 -22
- package/src/cache/invalidation-epoch.ts +93 -0
- package/src/cache/json-lossy-check.ts +69 -0
- package/src/cache/redis-handler.ts +198 -20
- package/src/cache/singleflight.ts +72 -6
- package/src/cache/sizeof.ts +35 -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 +254 -0
- package/src/cache/timber-cache.ts +165 -40
- package/src/cdn/cloudflare-purge.ts +50 -0
- package/src/cdn/fastly-purge.ts +63 -0
- package/src/cdn/headers.ts +153 -0
- package/src/cdn/index.ts +23 -0
- package/src/cdn/purge-store.ts +34 -0
- package/src/cdn/workers-cache-purge.ts +34 -0
- package/src/cli-check.ts +417 -0
- package/src/cli-context.ts +119 -0
- package/src/cli-schema-sync.ts +401 -0
- package/src/cli.ts +330 -78
- package/src/client/browser-dev.ts +192 -5
- package/src/client/browser-entry/action-dispatch.ts +237 -0
- package/src/client/browser-entry/action-queue.ts +152 -0
- package/src/client/browser-entry/hmr.ts +70 -0
- package/src/client/browser-entry/hydrate.ts +143 -0
- package/src/client/browser-entry/index.ts +120 -0
- package/src/client/browser-entry/post-hydration.ts +99 -0
- package/src/client/browser-entry/router-init.ts +406 -0
- package/src/client/browser-entry/rsc-stream.ts +145 -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 +279 -61
- package/src/client/error-reconstituter.tsx +84 -0
- package/src/client/form.tsx +36 -32
- package/src/client/global-context.ts +31 -0
- package/src/client/history.ts +74 -11
- package/src/client/index.ts +89 -53
- package/src/client/internal.ts +54 -0
- package/src/client/link.tsx +468 -151
- package/src/client/location-search.ts +15 -0
- package/src/client/navigation-api.ts +380 -0
- package/src/client/navigation-commit.ts +318 -0
- package/src/client/navigation-context.ts +67 -134
- package/src/client/navigation-root.tsx +236 -0
- package/src/client/navigation-transition.ts +337 -0
- package/src/client/nuqs-adapter.tsx +21 -9
- package/src/client/params-context.ts +187 -0
- package/src/client/react-root.ts +82 -0
- package/src/client/router-effects.ts +235 -0
- package/src/client/router-lifecycle.ts +354 -0
- package/src/client/router-pipeline.ts +458 -0
- package/src/client/router-ref.ts +3 -3
- package/src/client/router-skew.ts +30 -0
- package/src/client/router-types.ts +370 -0
- package/src/client/router-url.ts +32 -0
- package/src/client/router.ts +491 -424
- package/src/client/rsc-fetch.ts +510 -109
- package/src/client/segment-cache.ts +362 -41
- package/src/client/segment-context.ts +7 -4
- package/src/client/segment-outlet.tsx +96 -0
- package/src/client/segment-update-context.ts +23 -0
- package/src/client/shallow-url.ts +22 -0
- package/src/client/slot-content-cache-context.ts +43 -0
- package/src/client/slot-context.ts +50 -0
- package/src/client/slot-outlet.tsx +22 -0
- package/src/client/slot-provider.tsx +32 -0
- package/src/client/ssr-data.ts +27 -67
- package/src/client/stale-client.ts +191 -0
- package/src/client/state.ts +31 -24
- package/src/client/status-page-marker.tsx +32 -0
- package/src/client/top-loader.tsx +13 -10
- package/src/client/unload-guard.ts +35 -3
- package/src/client/use-cookie.ts +70 -18
- package/src/client/use-link-status.ts +7 -7
- package/src/client/use-pathname.ts +22 -31
- package/src/client/use-pending-navigation.ts +40 -0
- package/src/client/use-query-states.ts +206 -36
- package/src/client/use-router.ts +31 -9
- 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 +323 -0
- package/src/config-validation.ts +464 -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 +278 -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 +79 -0
- package/src/dev-tools/instrumentation.ts +261 -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/{plugins/dev-error-overlay.ts → dev-tools/overlay.ts} +25 -80
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/dev-tools/terminal.ts +182 -0
- package/src/fonts/ast-walk.ts +235 -0
- package/src/fonts/ast.ts +479 -128
- package/src/fonts/bundle.ts +138 -0
- package/src/fonts/css.ts +1 -1
- package/src/fonts/dev-middleware.ts +85 -0
- package/src/fonts/fallbacks.ts +0 -23
- package/src/fonts/google.ts +101 -19
- package/src/fonts/local.ts +12 -11
- package/src/fonts/paths.ts +58 -0
- package/src/fonts/pipeline.ts +348 -0
- package/src/fonts/transform.ts +311 -0
- package/src/fonts/types.ts +52 -1
- package/src/fonts/virtual-modules.ts +179 -0
- package/src/index.ts +513 -380
- 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 +502 -0
- package/src/plugins/build-manifest.ts +204 -36
- package/src/plugins/build-report.ts +299 -87
- 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/client-dep-entries.ts +78 -0
- package/src/plugins/cloudflare-wasm.ts +141 -0
- package/src/plugins/content.ts +31 -2
- package/src/plugins/dev-discovery.ts +218 -0
- package/src/plugins/dev-server.ts +360 -97
- package/src/plugins/entries.ts +149 -16
- package/src/plugins/fonts.ts +260 -657
- package/src/plugins/graph-endpoint.ts +532 -0
- package/src/plugins/mdx.ts +108 -35
- package/src/plugins/post-build.ts +327 -0
- package/src/plugins/prebuilt-capture.ts +213 -0
- package/src/plugins/prebuilt-options-analysis.ts +175 -0
- package/src/plugins/prebuilt.ts +670 -0
- package/src/plugins/prerender-sugar.ts +316 -0
- package/src/plugins/react-resolve.ts +149 -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/rsc-assets-manifest.ts +251 -0
- package/src/plugins/server-bundle.ts +99 -14
- package/src/plugins/shims.ts +260 -97
- package/src/plugins/static-build.ts +681 -71
- 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 +163 -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 +651 -0
- package/src/routing/export-detect.ts +536 -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 +232 -0
- package/src/routing/scanner.ts +417 -223
- package/src/routing/schema-validation.ts +155 -0
- package/src/routing/segment-classify.ts +280 -0
- package/src/routing/segment-codegen.ts +99 -0
- package/src/routing/segment-keys.ts +186 -0
- package/src/routing/slot-placement.ts +97 -0
- package/src/routing/types.ts +82 -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 +27 -0
- package/src/schema-bridge.ts +382 -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 +195 -56
- package/src/server/action-client.ts +126 -33
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +457 -111
- package/src/server/actions.ts +172 -85
- package/src/server/als-registry.ts +224 -25
- 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 +116 -0
- package/src/server/coalesce-tick.ts +75 -0
- package/src/server/compress.ts +43 -8
- package/src/server/cookie-context.ts +454 -0
- package/src/server/cookie-parsing.ts +163 -0
- package/src/server/csp-nonce.ts +58 -0
- package/src/server/csrf.ts +228 -35
- package/src/server/debug.ts +0 -1
- package/src/server/default-logger.ts +100 -0
- package/src/server/default-status-page.ts +88 -0
- package/src/server/deny-boundary.ts +527 -0
- package/src/server/deny-renderer.ts +201 -179
- package/src/server/early-hints-sender.ts +4 -3
- package/src/server/early-hints.ts +39 -29
- package/src/server/error-boundary-wrapper.ts +160 -44
- package/src/server/error-response-headers.ts +18 -0
- package/src/server/fallback-error.ts +88 -104
- 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 +3 -3
- package/src/server/head-response.ts +54 -0
- package/src/server/html-injector-core.ts +512 -0
- package/src/server/html-injectors.ts +270 -255
- package/src/server/index.ts +36 -192
- package/src/server/instrumentation.ts +11 -4
- package/src/server/internal.ts +168 -0
- package/src/server/json-status-response.ts +105 -0
- package/src/server/logger.ts +126 -38
- package/src/server/metadata-collector.ts +177 -0
- package/src/server/metadata-platform.ts +2 -2
- package/src/server/metadata-render.ts +30 -8
- package/src/server/metadata-routes.ts +220 -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 +201 -0
- package/src/server/pipeline-helpers.ts +485 -0
- package/src/server/pipeline-interception.ts +241 -32
- package/src/server/pipeline-metadata.ts +15 -1
- package/src/server/pipeline-outcome.ts +290 -0
- package/src/server/pipeline-phases.ts +496 -0
- package/src/server/pipeline.ts +385 -427
- package/src/server/port-resolution.ts +53 -0
- package/src/server/prebuilt/cache-key.ts +299 -0
- package/src/server/prebuilt/capture-render.ts +118 -0
- package/src/server/prebuilt/capture-routes.ts +104 -0
- package/src/server/prebuilt/capture-state.ts +196 -0
- package/src/server/prebuilt/key-discipline.ts +122 -0
- package/src/server/prebuilt/lifetime.ts +151 -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 +202 -0
- package/src/server/prebuilt/synthetic-store.ts +125 -0
- package/src/server/prebuilt-builder.ts +514 -0
- package/src/server/prebuilt-runtime.ts +813 -0
- package/src/server/primitives.ts +153 -171
- package/src/server/publish-params.ts +42 -0
- package/src/server/react-cache-bridge.ts +124 -0
- package/src/server/react-cache-scope.ts +104 -0
- package/src/server/render-timeout.ts +128 -0
- package/src/server/render-utils.ts +45 -0
- package/src/server/request-context.ts +269 -332
- package/src/server/request-dep.ts +37 -0
- package/src/server/response-cache-policy.ts +45 -0
- package/src/server/route-element-builder.ts +514 -355
- package/src/server/route-element-helpers.ts +37 -0
- package/src/server/route-handler.ts +67 -27
- package/src/server/route-matcher.ts +238 -267
- 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-dispatcher.ts +142 -0
- package/src/server/rsc-entry/action-middleware-runner.ts +130 -0
- package/src/server/rsc-entry/api-handler.ts +49 -81
- package/src/server/rsc-entry/deny-fallback.ts +151 -0
- package/src/server/rsc-entry/error-renderer.ts +301 -113
- package/src/server/rsc-entry/helpers.ts +90 -115
- package/src/server/rsc-entry/index.ts +370 -350
- package/src/server/rsc-entry/render-route.ts +229 -0
- package/src/server/rsc-entry/render-signals.ts +108 -0
- package/src/server/rsc-entry/revalidate-renderer.ts +349 -0
- package/src/server/rsc-entry/rsc-payload.ts +192 -72
- package/src/server/rsc-entry/rsc-stream.ts +128 -131
- package/src/server/rsc-entry/ssr-bridge.ts +19 -6
- package/src/server/rsc-entry/ssr-renderer.ts +300 -137
- package/src/server/rsc-error-envelope.ts +18 -0
- package/src/server/rsc-prop-warnings.ts +1 -1
- package/src/server/safe-load.ts +53 -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/signal-identity.ts +112 -0
- 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 +273 -0
- package/src/server/ssr-bridge-types.ts +201 -0
- package/src/server/ssr-entry.ts +225 -104
- package/src/server/ssr-render.ts +354 -91
- package/src/server/ssr-wrappers.tsx +162 -0
- package/src/server/state-tree-diff.ts +85 -30
- package/src/server/static-generator.ts +680 -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 +343 -0
- package/src/server/tracing.ts +163 -68
- package/src/server/tree-match.ts +494 -0
- package/src/server/types.ts +96 -11
- package/src/server/utils/element-type.ts +88 -0
- package/src/server/utils/escape-html.ts +20 -0
- package/src/server/version-skew.ts +104 -0
- package/src/server/waituntil-bridge.ts +1 -1
- package/src/server/workers-cache-bridge.ts +33 -0
- package/src/shared/als-slots.ts +74 -0
- package/src/shared/base-path.ts +80 -0
- package/src/shared/csrf-reject.ts +15 -0
- package/src/shared/error-digest.ts +46 -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 +153 -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 +52 -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/src/utils/write-file-atomic.ts +32 -0
- package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
- package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
- package/dist/_chunks/debug-B3Gypr3D.js +0 -108
- package/dist/_chunks/debug-B3Gypr3D.js.map +0 -1
- package/dist/_chunks/format-RyoGQL74.js +0 -164
- package/dist/_chunks/format-RyoGQL74.js.map +0 -1
- package/dist/_chunks/interception-BOoWmLUA.js +0 -676
- package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
- package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
- package/dist/_chunks/request-context-BQUC8PHn.js +0 -330
- package/dist/_chunks/request-context-BQUC8PHn.js.map +0 -1
- package/dist/_chunks/ssr-data-MjmprTmO.js +0 -88
- package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
- package/dist/_chunks/tracing-CemImE6h.js +0 -187
- package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
- package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
- package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
- package/dist/_chunks/use-query-states-D5KaffOK.js +0 -109
- package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
- package/dist/adapters/cloudflare.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/error-boundary.js.map +0 -1
- package/dist/client/head.d.ts +0 -16
- package/dist/client/head.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/segment-merger.d.ts +0 -119
- package/dist/client/segment-merger.d.ts.map +0 -1
- package/dist/client/stale-reload.d.ts +0 -44
- package/dist/client/stale-reload.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts +0 -74
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/types.d.ts +0 -14
- package/dist/client/types.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/adapter-build.d.ts +0 -18
- package/dist/plugins/adapter-build.d.ts.map +0 -1
- 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.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/asset-headers.d.ts +0 -42
- package/dist/server/asset-headers.d.ts.map +0 -1
- package/dist/server/client-module-map.d.ts +0 -47
- package/dist/server/client-module-map.d.ts.map +0 -1
- package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
- package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
- package/dist/server/dev-logger.d.ts.map +0 -1
- package/dist/server/dev-span-processor.d.ts +0 -29
- package/dist/server/dev-span-processor.d.ts.map +0 -1
- package/dist/server/dev-warnings.d.ts +0 -129
- package/dist/server/dev-warnings.d.ts.map +0 -1
- package/dist/server/flush.d.ts +0 -74
- package/dist/server/flush.d.ts.map +0 -1
- package/dist/server/manifest-status-resolver.d.ts +0 -58
- package/dist/server/manifest-status-resolver.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/tree-builder.d.ts +0 -126
- package/dist/server/tree-builder.d.ts.map +0 -1
- package/dist/utils/directive-parser.d.ts +0 -70
- package/dist/utils/directive-parser.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -103
- package/src/client/browser-entry.ts +0 -678
- package/src/client/head.ts +0 -61
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/segment-merger.ts +0 -339
- package/src/client/stale-reload.ts +0 -87
- package/src/client/transition-root.tsx +0 -166
- package/src/client/types.ts +0 -21
- 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/adapter-build.ts +0 -118
- package/src/plugins/cache-transform.ts +0 -199
- 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/asset-headers.ts +0 -81
- package/src/server/client-module-map.ts +0 -58
- package/src/server/dev-fetch-instrumentation.ts +0 -96
- package/src/server/dev-span-processor.ts +0 -78
- package/src/server/dev-warnings.ts +0 -283
- package/src/server/flush.ts +0 -182
- package/src/server/manifest-status-resolver.ts +0 -215
- package/src/server/prerender.ts +0 -139
- package/src/server/tree-builder.ts +0 -382
- package/src/shims/server-only-noop.js +0 -6
- package/src/utils/directive-parser.ts +0 -529
package/src/adapters/nitro.ts
CHANGED
|
@@ -5,141 +5,44 @@
|
|
|
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 { join, relative } from 'node:path';
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { cp, glob, readFile, writeFile } from 'node:fs/promises';
|
|
10
|
+
import { basename, dirname, join, relative, sep } from 'node:path';
|
|
11
|
+
import {
|
|
12
|
+
buildStaticDirectoryOutput,
|
|
13
|
+
runSharedBuildSteps,
|
|
14
|
+
writeHeadersFile,
|
|
15
|
+
} from './build-output-helper.ts';
|
|
16
|
+
import { generateCompressModule } from './compress-module.ts';
|
|
17
|
+
import { generateCanonicalizeModule } from './canonicalize-module.ts';
|
|
18
|
+
import { LOCALLY_PREVIEWABLE, PRESET_CONFIGS, type NitroPreset } from './nitro-presets.ts';
|
|
19
|
+
import {
|
|
20
|
+
generatePreviewScript,
|
|
21
|
+
generateSendResponseModule,
|
|
22
|
+
spawnNitroPreview,
|
|
23
|
+
} from './nitro-preview.ts';
|
|
24
|
+
import { adapterBase, IMMUTABLE_CACHE } from './shared.ts';
|
|
25
|
+
import type {
|
|
26
|
+
BuildArtifacts,
|
|
27
|
+
PreviewTarget,
|
|
28
|
+
TimberConfig,
|
|
29
|
+
TimberPlatformAdapter,
|
|
30
|
+
} from './types.ts';
|
|
31
|
+
|
|
32
|
+
// NitroPreset is part of the public adapter API (NitroAdapterOptions.preset),
|
|
33
|
+
// so it stays importable from this module.
|
|
34
|
+
export type { NitroPreset } from './nitro-presets.ts';
|
|
30
35
|
|
|
31
|
-
// ───
|
|
36
|
+
// ─── Options ─────────────────────────────────────────────────────────────────
|
|
32
37
|
|
|
33
38
|
/**
|
|
34
|
-
*
|
|
39
|
+
* Static deploy target for `output: 'static'` mode.
|
|
35
40
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
41
|
+
* Controls platform-specific files written alongside the static output:
|
|
42
|
+
* - `'github-pages'` — writes `.nojekyll` to skip Jekyll processing
|
|
43
|
+
* - `'generic'` — no extra files (default)
|
|
38
44
|
*/
|
|
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 ─────────────────────────────────────────────────────────────────
|
|
45
|
+
export type StaticTarget = 'github-pages' | 'generic';
|
|
143
46
|
|
|
144
47
|
/** Options for the Nitro adapter. */
|
|
145
48
|
export interface NitroAdapterOptions {
|
|
@@ -166,6 +69,13 @@ export interface NitroAdapterOptions {
|
|
|
166
69
|
*/
|
|
167
70
|
compress?: boolean;
|
|
168
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Static deploy target for `output: 'static'` mode. Controls
|
|
74
|
+
* platform-specific files (e.g. `.nojekyll` for GitHub Pages).
|
|
75
|
+
* @default 'generic'
|
|
76
|
+
*/
|
|
77
|
+
staticTarget?: StaticTarget;
|
|
78
|
+
|
|
169
79
|
/**
|
|
170
80
|
* Additional Nitro configuration to merge into the generated config.
|
|
171
81
|
* Overrides default values for the selected preset.
|
|
@@ -194,106 +104,186 @@ export interface NitroAdapterOptions {
|
|
|
194
104
|
export function nitro(options: NitroAdapterOptions = {}): TimberPlatformAdapter {
|
|
195
105
|
const preset = options.preset ?? 'node-server';
|
|
196
106
|
const compress = options.compress ?? true;
|
|
197
|
-
const presetConfig = PRESET_CONFIGS[preset];
|
|
198
|
-
const pendingPromises: Promise<unknown>[] = [];
|
|
199
|
-
|
|
200
107
|
return {
|
|
201
108
|
name: `nitro-${preset}`,
|
|
202
109
|
|
|
203
|
-
async buildOutput(config: TimberConfig,
|
|
204
|
-
const outDir = join(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
110
|
+
async buildOutput(config: TimberConfig, artifacts: BuildArtifacts) {
|
|
111
|
+
const outDir = join(artifacts.outputDir, 'nitro');
|
|
112
|
+
|
|
113
|
+
// ── Static mode: plain directory output ────────────────────────
|
|
114
|
+
// No Nitro server — just pre-rendered HTML + client assets.
|
|
115
|
+
if (artifacts.output === 'static') {
|
|
116
|
+
await buildStaticDirectoryOutput(config, artifacts, outDir, 'public');
|
|
117
|
+
const publicDir = join(outDir, 'public');
|
|
118
|
+
|
|
119
|
+
// Write _headers for cache control + extensionless Content-Type.
|
|
120
|
+
// Netlify supports the _headers convention just like Cloudflare.
|
|
121
|
+
await writeHeadersFile(publicDir, config, artifacts);
|
|
122
|
+
|
|
123
|
+
// Local preview serves the site as the build recorded it.
|
|
124
|
+
await writeFile(join(outDir, CANONICALIZE_MODULE), await generateCanonicalizeModule());
|
|
125
|
+
await writeFile(
|
|
126
|
+
join(outDir, PREVIEW_SCRIPT),
|
|
127
|
+
generatePreviewScript({
|
|
128
|
+
output: 'static',
|
|
129
|
+
immutableDirs: artifacts.immutableDirs,
|
|
130
|
+
base: adapterBase(config),
|
|
131
|
+
contentTypes: artifacts.contentTypes,
|
|
132
|
+
})
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
// Platform-specific files for static deploy targets.
|
|
136
|
+
const target = options.staticTarget ?? 'generic';
|
|
137
|
+
if (target === 'github-pages') {
|
|
138
|
+
// Deploy-from-a-branch runs Jekyll, which drops `_`-prefixed paths —
|
|
139
|
+
// every `_rsc/` payload. Written unconditionally: GitHub reads only
|
|
140
|
+
// that the file exists, never its contents.
|
|
141
|
+
await writeFile(join(publicDir, '.nojekyll'), '');
|
|
142
|
+
// GitHub Pages doesn't support _redirects files. Warn if any
|
|
143
|
+
// redirects were generated — those routes will 404 on GH Pages.
|
|
144
|
+
try {
|
|
145
|
+
const redirects = await readFile(join(publicDir, '_redirects'), 'utf-8');
|
|
146
|
+
if (redirects.trim().length > 0) {
|
|
147
|
+
console.warn(
|
|
148
|
+
`[timber] Warning: GitHub Pages does not support _redirects files. ` +
|
|
149
|
+
`Redirect rules from middleware/proxy will not work on this platform.`
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
} catch {
|
|
153
|
+
// No _redirects file — nothing to warn about
|
|
154
|
+
}
|
|
155
|
+
}
|
|
223
156
|
|
|
224
|
-
|
|
225
|
-
if (config.manifestInit) {
|
|
226
|
-
await writeFile(join(outDir, '_timber-manifest-init.js'), config.manifestInit);
|
|
157
|
+
return;
|
|
227
158
|
}
|
|
228
159
|
|
|
229
|
-
//
|
|
160
|
+
// Steps 1–5: shared across all adapters (mkdir, copy client/rsc/ssr,
|
|
161
|
+
// write _headers, write manifest-init).
|
|
162
|
+
await runSharedBuildSteps({
|
|
163
|
+
config,
|
|
164
|
+
artifacts,
|
|
165
|
+
outDir,
|
|
166
|
+
publicDirName: 'public',
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// Write runtime helper modules used by the preview server.
|
|
230
170
|
// See design/25-production-deployments.md — self-hosted deployments
|
|
231
171
|
// need application-level compression (Cloudflare handles it at the edge).
|
|
232
|
-
await writeFile(join(outDir, '_compress.mjs'), generateCompressModule());
|
|
233
|
-
|
|
234
|
-
//
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
172
|
+
await writeFile(join(outDir, '_compress.mjs'), await generateCompressModule());
|
|
173
|
+
|
|
174
|
+
// Web→Node response bridge with backpressure. See TIM-1154.
|
|
175
|
+
await writeFile(join(outDir, '_send-response.mjs'), generateSendResponseModule());
|
|
176
|
+
|
|
177
|
+
// Standalone preview server for presets with a local runtime. It loads
|
|
178
|
+
// the build's own RSC bundle — not the copy under nitro/rsc/ — because
|
|
179
|
+
// the handler reads prebuilt payloads from ../prebuilt beside its
|
|
180
|
+
// bundle, and the build's prebuilt/ is cleaned every build while
|
|
181
|
+
// nitro/prebuilt/ is not: a build that captured nothing would otherwise
|
|
182
|
+
// preview an earlier build's payloads.
|
|
183
|
+
if (LOCALLY_PREVIEWABLE.has(preset)) {
|
|
184
|
+
await writeFile(join(outDir, CANONICALIZE_MODULE), await generateCanonicalizeModule());
|
|
185
|
+
await writeFile(
|
|
186
|
+
join(outDir, PREVIEW_SCRIPT),
|
|
187
|
+
generatePreviewScript({
|
|
188
|
+
output: 'server',
|
|
189
|
+
runtimeName: PRESET_CONFIGS[preset].runtimeName,
|
|
190
|
+
rscEntry: importSpecifier(outDir, join(artifacts.rsc.path, 'index.js')),
|
|
191
|
+
hasManifestInit: !!artifacts.manifestInit,
|
|
192
|
+
immutableDirs: artifacts.immutableDirs,
|
|
193
|
+
base: adapterBase(config),
|
|
194
|
+
})
|
|
195
|
+
);
|
|
196
|
+
}
|
|
238
197
|
|
|
239
198
|
// Prepend the manifest assignment directly into the RSC entry so
|
|
240
199
|
// globalThis.__TIMBER_BUILD_MANIFEST__ is set before any module reads it.
|
|
241
200
|
// This must be top-level code, not an import, because rollup tree-shakes
|
|
242
201
|
// side-effect-only globalThis assignments from imported modules.
|
|
243
|
-
if (
|
|
202
|
+
if (artifacts.manifestInit) {
|
|
244
203
|
const rscEntry = join(outDir, 'rsc', 'index.js');
|
|
245
204
|
const rscContent = await readFile(rscEntry, 'utf-8');
|
|
246
|
-
await writeFile(rscEntry, `${
|
|
205
|
+
await writeFile(rscEntry, `${artifacts.manifestInit}\n${rscContent}`);
|
|
247
206
|
}
|
|
248
207
|
|
|
249
208
|
// Generate the Nitro entry point (imports from ./rsc/ within nitro dir)
|
|
250
|
-
const entry = generateNitroEntry(
|
|
209
|
+
const entry = generateNitroEntry(preset, compress);
|
|
251
210
|
await writeFile(join(outDir, 'entry.ts'), entry);
|
|
252
211
|
|
|
253
212
|
// Run the Nitro build to produce a production-ready server bundle.
|
|
254
213
|
// The output goes to dist/nitro/.output/server/index.mjs (for node-server preset).
|
|
255
214
|
// Config is passed programmatically — no nitro.config.ts file needed.
|
|
256
|
-
await runNitroBuild(
|
|
215
|
+
const { serverDir } = await runNitroBuild(
|
|
216
|
+
outDir,
|
|
217
|
+
preset,
|
|
218
|
+
artifacts.immutableDirs,
|
|
219
|
+
options.nitroConfig
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
// Copy prebuilt flight payloads into the Nitro output. The RSC entry
|
|
223
|
+
// resolves `../prebuilt/` relative to its bundled chunk
|
|
224
|
+
// (<serverDir>/_chunks/), so prebuilt/ must live at
|
|
225
|
+
// <serverDir>/prebuilt/. serverDir is the resolved path from Nitro
|
|
226
|
+
// (honors user overrides via nitroConfig.output.serverDir).
|
|
227
|
+
if (artifacts.prebuilt) {
|
|
228
|
+
const prebuiltSrc = artifacts.prebuilt.path;
|
|
229
|
+
await cp(prebuiltSrc, join(serverDir, 'prebuilt'), { recursive: true });
|
|
230
|
+
|
|
231
|
+
// Vercel with functionRules clones __server.func to per-route .func
|
|
232
|
+
// directories during the Nitro build. Copy prebuilt into those clones
|
|
233
|
+
// so requests routed to them also resolve ../prebuilt correctly.
|
|
234
|
+
if (preset === 'vercel' || preset === 'vercel-edge') {
|
|
235
|
+
const functionsDir = dirname(serverDir);
|
|
236
|
+
const baseFuncName = basename(serverDir);
|
|
237
|
+
await copyPrebuiltToVercelFuncClones(functionsDir, prebuiltSrc, baseFuncName);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
257
240
|
},
|
|
258
241
|
|
|
259
|
-
//
|
|
260
|
-
//
|
|
261
|
-
// local runtime
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
242
|
+
// buildOutput wrote the preview server for this build: a static file
|
|
243
|
+
// server for a static build, and for a server build on a preset with a
|
|
244
|
+
// local runtime (node-server, bun), one that routes to the RSC handler.
|
|
245
|
+
// Serverless presets (vercel, netlify, aws-lambda, etc.) have no local
|
|
246
|
+
// runtime, so a server build on one has nothing to preview.
|
|
247
|
+
async preview(_config: TimberConfig, { output, outputDir }: PreviewTarget) {
|
|
248
|
+
if (output === 'server' && !LOCALLY_PREVIEWABLE.has(preset)) {
|
|
249
|
+
throw new Error(
|
|
250
|
+
`[timber] The nitro '${preset}' preset has no local runtime, so \`timber preview\` ` +
|
|
251
|
+
`cannot run its server build. Preview with a node-server build, or with the ` +
|
|
252
|
+
`platform's own tooling.`
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
const nitroDir = join(outputDir, 'nitro');
|
|
256
|
+
const script = join(nitroDir, PREVIEW_SCRIPT);
|
|
257
|
+
if (!existsSync(script)) {
|
|
258
|
+
throw new Error(
|
|
259
|
+
`[timber] No preview server at ${script}. Run \`timber build\` before \`timber preview\`.`
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
// Only a bun server build needs Bun. The static file server uses Node
|
|
263
|
+
// built-ins, so it runs on the Node already running timber, as does a
|
|
264
|
+
// node-server build — no PATH lookup for either.
|
|
265
|
+
const command = output === 'server' && preset === 'bun' ? 'bun' : process.execPath;
|
|
266
|
+
await spawnNitroPreview(command, [script], nitroDir);
|
|
267
|
+
},
|
|
284
268
|
};
|
|
285
269
|
}
|
|
286
270
|
|
|
271
|
+
/** The preview server buildOutput writes into the Nitro output directory. */
|
|
272
|
+
const PREVIEW_SCRIPT = '_preview-server.mjs';
|
|
273
|
+
|
|
274
|
+
/** The request-path canonicalizer the preview server imports beside it. */
|
|
275
|
+
const CANONICALIZE_MODULE = '_canonicalize.mjs';
|
|
276
|
+
|
|
277
|
+
/** A relative ESM import specifier for `file`, as imported from a module in `fromDir`. */
|
|
278
|
+
function importSpecifier(fromDir: string, file: string): string {
|
|
279
|
+
const path = relative(fromDir, file).split(sep).join('/');
|
|
280
|
+
return path.startsWith('../') ? path : './' + path;
|
|
281
|
+
}
|
|
282
|
+
|
|
287
283
|
// ─── Entry Generation ────────────────────────────────────────────────────────
|
|
288
284
|
|
|
289
285
|
/** @internal Exported for testing. */
|
|
290
|
-
export function generateNitroEntry(
|
|
291
|
-
buildDir: string,
|
|
292
|
-
outDir: string,
|
|
293
|
-
preset: NitroPreset,
|
|
294
|
-
compress = true,
|
|
295
|
-
hasManifestInit = false
|
|
296
|
-
): string {
|
|
286
|
+
export function generateNitroEntry(preset: NitroPreset, compress = true): string {
|
|
297
287
|
// The RSC entry is the main request handler — it exports the fetch handler as default.
|
|
298
288
|
// rsc/ is copied into the nitro dir so the import is local.
|
|
299
289
|
// The manifest init is prepended to rsc/index.js before the nitro build,
|
|
@@ -349,11 +339,6 @@ export function generateNitroEntry(
|
|
|
349
339
|
handlerCall = ` const webResponse = await handler(webRequest)`;
|
|
350
340
|
}
|
|
351
341
|
|
|
352
|
-
// Build manifest init must be imported before the handler so that
|
|
353
|
-
// globalThis.__TIMBER_BUILD_MANIFEST__ is set when the virtual module evaluates.
|
|
354
|
-
// ESM guarantees imports are evaluated in order.
|
|
355
|
-
const manifestImport = hasManifestInit ? "import './_timber-manifest-init.js'\n" : '';
|
|
356
|
-
|
|
357
342
|
// Import runWithWaitUntil only when the preset supports it.
|
|
358
343
|
const waitUntilImport = supportsWaitUntil ? ', runWithWaitUntil' : '';
|
|
359
344
|
|
|
@@ -363,15 +348,7 @@ export function generateNitroEntry(
|
|
|
363
348
|
return `// Generated by @timber-js/app/adapters/nitro
|
|
364
349
|
// Do not edit — this file is regenerated on each build.
|
|
365
350
|
|
|
366
|
-
|
|
367
|
-
// Must run before ANY code creates ReadableStream/WritableStream/TransformStream.
|
|
368
|
-
// React's RSC Flight streams, SSR output, .tee(), and all pipeThrough transforms
|
|
369
|
-
// benefit: 3.8x faster reads, 11x faster transforms, 13x faster sequential tee.
|
|
370
|
-
// See: https://github.com/vercel-labs/fast-webstreams
|
|
371
|
-
import { patchGlobalWebStreams } from 'experimental-fast-webstreams'
|
|
372
|
-
patchGlobalWebStreams()
|
|
373
|
-
|
|
374
|
-
${manifestImport}import handler, { runWithEarlyHintsSender${waitUntilImport} } from '${serverEntryRelative}'
|
|
351
|
+
import handler, { runWithEarlyHintsSender${waitUntilImport} } from '${serverEntryRelative}'
|
|
375
352
|
${compressImport}
|
|
376
353
|
// Set TIMBER_RUNTIME for instrumentation.ts conditional SDK initialization.
|
|
377
354
|
// See design/25-production-deployments.md §"TIMBER_RUNTIME".
|
|
@@ -391,245 +368,88 @@ ${handlerCall}
|
|
|
391
368
|
`;
|
|
392
369
|
}
|
|
393
370
|
|
|
394
|
-
|
|
395
|
-
export function generateNitroConfig(
|
|
396
|
-
preset: NitroPreset,
|
|
397
|
-
userConfig?: Record<string, unknown>
|
|
398
|
-
): string {
|
|
399
|
-
const presetConfig = PRESET_CONFIGS[preset];
|
|
400
|
-
|
|
401
|
-
const config: Record<string, unknown> = {
|
|
402
|
-
preset: presetConfig.nitroPreset,
|
|
403
|
-
entry: './entry.ts',
|
|
404
|
-
output: { dir: presetConfig.outputDir },
|
|
405
|
-
// Static asset cache headers — hashed assets are immutable, others get 1h.
|
|
406
|
-
// See design/25-production-deployments.md §"CDN / Edge Cache"
|
|
407
|
-
routeRules: {
|
|
408
|
-
'/assets/**': { headers: { 'Cache-Control': IMMUTABLE_CACHE } },
|
|
409
|
-
},
|
|
410
|
-
...presetConfig.extraConfig,
|
|
411
|
-
...userConfig,
|
|
412
|
-
};
|
|
413
|
-
|
|
414
|
-
const configJson = JSON.stringify(config, null, 2);
|
|
415
|
-
|
|
416
|
-
return `// Generated by @timber-js/app/adapters/nitro
|
|
417
|
-
// Do not edit — this file is regenerated on each build.
|
|
371
|
+
// ─── Build Hint Filtering ────────────────────────────────────────────────────
|
|
418
372
|
|
|
419
|
-
|
|
373
|
+
/**
|
|
374
|
+
* Prefixes of nitro build-output lines that give wrong advice for timber
|
|
375
|
+
* builds. Every nitro bundler path emits these hints via `logger.success` —
|
|
376
|
+
* the rollup path hardcodes `npx nitro preview`; rolldown and vite default
|
|
377
|
+
* to it. That command resolves `.output/nitro.json` relative to cwd, but
|
|
378
|
+
* timber's nitro build lives at `.timber/dist/nitro/.output`, so the
|
|
379
|
+
* suggested command can never work from the project root.
|
|
380
|
+
* Prefix matching degrades gracefully: if upstream rewords the line
|
|
381
|
+
* entirely, it passes through rather than being silently eaten.
|
|
382
|
+
*/
|
|
383
|
+
const NITRO_PREVIEW_HINT_PREFIX = 'You can preview this build using';
|
|
384
|
+
const NITRO_DEPLOY_HINT_PREFIX = 'You can deploy this build using';
|
|
385
|
+
const SUPPRESSED_NITRO_HINT_PREFIXES = [NITRO_PREVIEW_HINT_PREFIX, NITRO_DEPLOY_HINT_PREFIX];
|
|
420
386
|
|
|
421
|
-
|
|
422
|
-
|
|
387
|
+
/** @internal Exported for testing. */
|
|
388
|
+
export function isSuppressedNitroHint(
|
|
389
|
+
message: unknown,
|
|
390
|
+
prefixes: readonly string[] = SUPPRESSED_NITRO_HINT_PREFIXES
|
|
391
|
+
): boolean {
|
|
392
|
+
return typeof message === 'string' && prefixes.some((prefix) => message.startsWith(prefix));
|
|
423
393
|
}
|
|
424
394
|
|
|
425
|
-
// ─── Preview ─────────────────────────────────────────────────────────────────
|
|
426
|
-
|
|
427
|
-
/** Presets that produce a locally-runnable server entry. */
|
|
428
|
-
const LOCALLY_PREVIEWABLE = new Set<NitroPreset>(['node-server', 'bun']);
|
|
429
|
-
|
|
430
395
|
/**
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
*
|
|
434
|
-
*
|
|
396
|
+
* Nitro's rolldown and vite builders render `framework.previewCommand` /
|
|
397
|
+
* `framework.deployCommand` into these hints. A user who explicitly set one
|
|
398
|
+
* via `nitroConfig` has provided valid guidance — only suppress the hints
|
|
399
|
+
* whose command is still nitro's broken default.
|
|
435
400
|
*
|
|
436
401
|
* @internal Exported for testing.
|
|
437
402
|
*/
|
|
438
|
-
export function
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
// Uses Node's built-in HTTP server to serve static assets and route
|
|
447
|
-
// dynamic requests through the RSC handler. No Nitro/h3 dependency.
|
|
448
|
-
|
|
449
|
-
// Patch global Web Streams with fast-webstreams before any imports.
|
|
450
|
-
import { patchGlobalWebStreams } from 'experimental-fast-webstreams';
|
|
451
|
-
patchGlobalWebStreams();
|
|
452
|
-
|
|
453
|
-
import { createServer } from 'node:http';
|
|
454
|
-
import { readFile, stat } from 'node:fs/promises';
|
|
455
|
-
import { join, extname } from 'node:path';
|
|
456
|
-
import { fileURLToPath } from 'node:url';
|
|
457
|
-
import { existsSync } from 'node:fs';
|
|
458
|
-
|
|
459
|
-
// Set runtime before importing the handler.
|
|
460
|
-
process.env.TIMBER_RUNTIME = '${runtimeName}';
|
|
461
|
-
|
|
462
|
-
// Load the build manifest if it exists.
|
|
463
|
-
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
464
|
-
const manifestPath = join(__dirname, '${manifestInitPath}');
|
|
465
|
-
if (existsSync(manifestPath)) {
|
|
466
|
-
await import('${manifestInitPath}');
|
|
403
|
+
export function selectSuppressedHintPrefixes(framework?: {
|
|
404
|
+
previewCommand?: string;
|
|
405
|
+
deployCommand?: string;
|
|
406
|
+
}): string[] {
|
|
407
|
+
return [
|
|
408
|
+
...(framework?.previewCommand ? [] : [NITRO_PREVIEW_HINT_PREFIX]),
|
|
409
|
+
...(framework?.deployCommand ? [] : [NITRO_DEPLOY_HINT_PREFIX]),
|
|
410
|
+
];
|
|
467
411
|
}
|
|
468
412
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
// Import compression helper for self-hosted response compression.
|
|
473
|
-
const { compressResponse } = await import('./_compress.mjs');
|
|
474
|
-
|
|
475
|
-
const MIME_TYPES = {
|
|
476
|
-
'.html': 'text/html',
|
|
477
|
-
'.js': 'application/javascript',
|
|
478
|
-
'.mjs': 'application/javascript',
|
|
479
|
-
'.css': 'text/css',
|
|
480
|
-
'.json': 'application/json',
|
|
481
|
-
'.png': 'image/png',
|
|
482
|
-
'.jpg': 'image/jpeg',
|
|
483
|
-
'.jpeg': 'image/jpeg',
|
|
484
|
-
'.gif': 'image/gif',
|
|
485
|
-
'.svg': 'image/svg+xml',
|
|
486
|
-
'.ico': 'image/x-icon',
|
|
487
|
-
'.woff': 'font/woff',
|
|
488
|
-
'.woff2': 'font/woff2',
|
|
489
|
-
'.ttf': 'font/ttf',
|
|
490
|
-
'.otf': 'font/otf',
|
|
491
|
-
'.webp': 'image/webp',
|
|
492
|
-
'.avif': 'image/avif',
|
|
493
|
-
'.webm': 'video/webm',
|
|
494
|
-
'.mp4': 'video/mp4',
|
|
495
|
-
'.txt': 'text/plain',
|
|
496
|
-
'.xml': 'application/xml',
|
|
497
|
-
'.wasm': 'application/wasm',
|
|
498
|
-
};
|
|
499
|
-
|
|
500
|
-
const publicDir = join(__dirname, '${publicDir}');
|
|
501
|
-
const port = parseInt(process.env.PORT || '3000', 10);
|
|
502
|
-
const host = process.env.HOST || process.env.HOSTNAME || 'localhost';
|
|
503
|
-
|
|
504
|
-
const server = createServer(async (req, res) => {
|
|
505
|
-
const url = new URL(req.url || '/', \`http://\${host}:\${port}\`);
|
|
506
|
-
|
|
507
|
-
// Try serving static files from the public directory first.
|
|
508
|
-
const filePath = join(publicDir, url.pathname);
|
|
509
|
-
// Prevent path traversal.
|
|
510
|
-
if (filePath.startsWith(publicDir)) {
|
|
511
|
-
try {
|
|
512
|
-
const fileStat = await stat(filePath);
|
|
513
|
-
if (fileStat.isFile()) {
|
|
514
|
-
const ext = extname(filePath);
|
|
515
|
-
const contentType = MIME_TYPES[ext] || 'application/octet-stream';
|
|
516
|
-
const body = await readFile(filePath);
|
|
517
|
-
// Hashed assets get immutable cache, others get short cache.
|
|
518
|
-
const cacheControl = url.pathname.startsWith('/assets/')
|
|
519
|
-
? 'public, max-age=31536000, immutable'
|
|
520
|
-
: 'public, max-age=3600, must-revalidate';
|
|
521
|
-
res.writeHead(200, {
|
|
522
|
-
'Content-Type': contentType,
|
|
523
|
-
'Content-Length': body.length,
|
|
524
|
-
'Cache-Control': cacheControl,
|
|
525
|
-
});
|
|
526
|
-
res.end(body);
|
|
527
|
-
return;
|
|
528
|
-
}
|
|
529
|
-
} catch {
|
|
530
|
-
// File not found — fall through to the RSC handler.
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
// Convert Node request to Web Request.
|
|
535
|
-
const headers = new Headers();
|
|
536
|
-
for (const [key, value] of Object.entries(req.headers)) {
|
|
537
|
-
if (value) {
|
|
538
|
-
if (Array.isArray(value)) {
|
|
539
|
-
for (const v of value) headers.append(key, v);
|
|
540
|
-
} else {
|
|
541
|
-
headers.set(key, value);
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
let body = undefined;
|
|
547
|
-
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
548
|
-
body = await new Promise((resolve) => {
|
|
549
|
-
const chunks = [];
|
|
550
|
-
req.on('data', (chunk) => chunks.push(chunk));
|
|
551
|
-
req.on('end', () => resolve(Buffer.concat(chunks)));
|
|
552
|
-
});
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
const webRequest = new Request(url.href, {
|
|
556
|
-
method: req.method,
|
|
557
|
-
headers,
|
|
558
|
-
body,
|
|
559
|
-
duplex: body ? 'half' : undefined,
|
|
560
|
-
});
|
|
561
|
-
|
|
562
|
-
try {
|
|
563
|
-
// Support 103 Early Hints when available.
|
|
564
|
-
const earlyHintsSender = (typeof res.writeEarlyHints === 'function')
|
|
565
|
-
? (links) => { try { res.writeEarlyHints({ link: links }); } catch {} }
|
|
566
|
-
: undefined;
|
|
567
|
-
|
|
568
|
-
const rawResponse = earlyHintsSender && runWithEarlyHintsSender
|
|
569
|
-
? await runWithEarlyHintsSender(earlyHintsSender, () => handler(webRequest))
|
|
570
|
-
: await handler(webRequest);
|
|
571
|
-
|
|
572
|
-
// Compress the response for self-hosted deployments.
|
|
573
|
-
const webResponse = compressResponse(webRequest, rawResponse);
|
|
574
|
-
|
|
575
|
-
// Write the response back to the Node response.
|
|
576
|
-
res.writeHead(webResponse.status, Object.fromEntries(webResponse.headers.entries()));
|
|
577
|
-
|
|
578
|
-
if (webResponse.body) {
|
|
579
|
-
const reader = webResponse.body.getReader();
|
|
580
|
-
const pump = async () => {
|
|
581
|
-
while (true) {
|
|
582
|
-
const { done, value } = await reader.read();
|
|
583
|
-
if (done) { res.end(); return; }
|
|
584
|
-
res.write(value);
|
|
585
|
-
}
|
|
586
|
-
};
|
|
587
|
-
await pump();
|
|
588
|
-
} else {
|
|
589
|
-
res.end();
|
|
590
|
-
}
|
|
591
|
-
} catch (err) {
|
|
592
|
-
console.error('[timber preview] Request error:', err);
|
|
593
|
-
if (!res.headersSent) {
|
|
594
|
-
res.writeHead(500, { 'Content-Type': 'text/plain' });
|
|
595
|
-
}
|
|
596
|
-
res.end('Internal Server Error');
|
|
597
|
-
}
|
|
598
|
-
});
|
|
599
|
-
|
|
600
|
-
server.listen(port, host, () => {
|
|
601
|
-
console.log();
|
|
602
|
-
console.log(' ⚡ timber preview server running at:');
|
|
603
|
-
console.log();
|
|
604
|
-
console.log(\` ➜ http://\${host}:\${port}\`);
|
|
605
|
-
console.log();
|
|
606
|
-
});
|
|
607
|
-
`;
|
|
413
|
+
/** Minimal structural view of the nitro (consola) logger the wrap needs. */
|
|
414
|
+
interface NitroBuildLogger {
|
|
415
|
+
success: (message: unknown, ...args: unknown[]) => void;
|
|
608
416
|
}
|
|
609
417
|
|
|
610
|
-
/**
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
418
|
+
/**
|
|
419
|
+
* Wrap a nitro logger's `success` so hardcoded preview/deploy hints are
|
|
420
|
+
* dropped for this programmatic build only. Returns the original
|
|
421
|
+
* (unfiltered) success fn so timber can print its own hint — which shares
|
|
422
|
+
* the suppressed prefix on purpose, replacing nitro's wording.
|
|
423
|
+
*
|
|
424
|
+
* @internal Exported for testing.
|
|
425
|
+
*/
|
|
426
|
+
export function wrapNitroLoggerForBuild(
|
|
427
|
+
logger: NitroBuildLogger,
|
|
428
|
+
prefixes: readonly string[] = SUPPRESSED_NITRO_HINT_PREFIXES
|
|
429
|
+
): NitroBuildLogger['success'] {
|
|
430
|
+
const originalSuccess = logger.success.bind(logger);
|
|
431
|
+
const wrapped = (message: unknown, ...args: unknown[]) => {
|
|
432
|
+
if (isSuppressedNitroHint(message, prefixes)) return;
|
|
433
|
+
originalSuccess(message, ...args);
|
|
434
|
+
};
|
|
435
|
+
// Preserve consola LogFn properties (e.g. `.raw`) on the replacement.
|
|
436
|
+
logger.success = Object.assign(wrapped, logger.success);
|
|
437
|
+
return originalSuccess;
|
|
615
438
|
}
|
|
616
439
|
|
|
617
|
-
/**
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
args: [entryPath],
|
|
631
|
-
cwd: nitroDir,
|
|
632
|
-
};
|
|
440
|
+
/**
|
|
441
|
+
* Timber's own post-build hint. Locally-runnable presets are previewed via
|
|
442
|
+
* `timber preview`, which invokes this adapter's `preview()` to run the
|
|
443
|
+
* generated `_preview-server.mjs`. Serverless presets get no hint — their
|
|
444
|
+
* output lives under `.timber/dist/nitro/`, so any cwd-relative deploy
|
|
445
|
+
* command would be as wrong as the nitro hint this replaces.
|
|
446
|
+
*
|
|
447
|
+
* @internal Exported for testing.
|
|
448
|
+
*/
|
|
449
|
+
export function getPostBuildHint(preset: NitroPreset): string | null {
|
|
450
|
+
return LOCALLY_PREVIEWABLE.has(preset)
|
|
451
|
+
? 'You can preview this build using `timber preview`'
|
|
452
|
+
: null;
|
|
633
453
|
}
|
|
634
454
|
|
|
635
455
|
/**
|
|
@@ -638,11 +458,17 @@ export function generateNitroPreviewCommand(
|
|
|
638
458
|
* Externalizes the timber RSC/SSR output — those files are pre-built
|
|
639
459
|
* by timber and have internal references that nitro's bundler can't follow.
|
|
640
460
|
*/
|
|
461
|
+
interface NitroBuildResult {
|
|
462
|
+
/** Resolved output.serverDir — where the server bundle + _chunks/ live. */
|
|
463
|
+
serverDir: string;
|
|
464
|
+
}
|
|
465
|
+
|
|
641
466
|
async function runNitroBuild(
|
|
642
467
|
nitroDir: string,
|
|
643
468
|
preset: NitroPreset,
|
|
469
|
+
immutableDirs: readonly string[],
|
|
644
470
|
userConfig?: Record<string, unknown>
|
|
645
|
-
): Promise<
|
|
471
|
+
): Promise<NitroBuildResult> {
|
|
646
472
|
const presetConfig = PRESET_CONFIGS[preset];
|
|
647
473
|
const {
|
|
648
474
|
createNitro,
|
|
@@ -659,9 +485,10 @@ async function runNitroBuild(
|
|
|
659
485
|
// Using `entry` directly would bypass the Nitro server runtime.
|
|
660
486
|
renderer: { handler: join(nitroDir, 'entry.ts') },
|
|
661
487
|
output: { dir: join(nitroDir, presetConfig.outputDir) },
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
488
|
+
// One rule per content-hashed directory the build recorded.
|
|
489
|
+
routeRules: Object.fromEntries(
|
|
490
|
+
immutableDirs.map((dir) => [`/${dir}/**`, { headers: { 'Cache-Control': IMMUTABLE_CACHE } }])
|
|
491
|
+
),
|
|
665
492
|
// Don't bundle the timber RSC/SSR build output — it has its own
|
|
666
493
|
// internal file references that nitro's bundler can't follow.
|
|
667
494
|
// Mark them as external so rollup leaves the imports as-is.
|
|
@@ -672,30 +499,63 @@ async function runNitroBuild(
|
|
|
672
499
|
...userConfig,
|
|
673
500
|
});
|
|
674
501
|
|
|
502
|
+
// Drop nitro's `npx nitro preview` / `npx nitro deploy` hints —
|
|
503
|
+
// they can never work from the project root (see TIM-1375). Hints whose
|
|
504
|
+
// command the user explicitly configured via framework.previewCommand /
|
|
505
|
+
// deployCommand pass through untouched — except on the rollup builder,
|
|
506
|
+
// which ignores framework commands and unconditionally prints the broken
|
|
507
|
+
// defaults (nitro/dist/_build/rollup.mjs), so user commands are treated
|
|
508
|
+
// as absent there: defaults stay suppressed, timber's hint still prints.
|
|
509
|
+
// logSuccess is the unfiltered fn used below to print timber's hint.
|
|
510
|
+
const framework = nitro.options.builder === 'rollup' ? undefined : nitro.options.framework;
|
|
511
|
+
const logSuccess = wrapNitroLoggerForBuild(nitro.logger, selectSuppressedHintPrefixes(framework));
|
|
512
|
+
|
|
513
|
+
// Read the resolved serverDir AFTER config merging — userConfig may
|
|
514
|
+
// override output.dir or output.serverDir. Nitro appends a trailing
|
|
515
|
+
// slash during resolution; strip it for join() compatibility.
|
|
516
|
+
const raw = nitro.options.output.serverDir;
|
|
517
|
+
const serverDir = raw.endsWith('/') ? raw.slice(0, -1) : raw;
|
|
518
|
+
|
|
675
519
|
await prepare(nitro);
|
|
676
520
|
await copyPublicAssets(nitro);
|
|
677
521
|
await nitroBuild(nitro);
|
|
678
522
|
await nitro.close();
|
|
679
|
-
}
|
|
680
523
|
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
if (err) reject(err);
|
|
686
|
-
else resolve();
|
|
687
|
-
});
|
|
688
|
-
child.stdout?.pipe(process.stdout);
|
|
689
|
-
child.stderr?.pipe(process.stderr);
|
|
690
|
-
});
|
|
691
|
-
}
|
|
524
|
+
// A user-configured previewCommand already printed via nitro's own hint —
|
|
525
|
+
// don't print a second, conflicting one.
|
|
526
|
+
const hint = framework?.previewCommand ? null : getPostBuildHint(preset);
|
|
527
|
+
if (hint) logSuccess(hint);
|
|
692
528
|
|
|
529
|
+
return { serverDir };
|
|
530
|
+
}
|
|
693
531
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
694
532
|
|
|
695
533
|
/**
|
|
696
|
-
*
|
|
534
|
+
* Copy prebuilt payloads into cloned Vercel function directories.
|
|
535
|
+
*
|
|
536
|
+
* When users configure `vercel.functionRules`, Nitro's compiled hook clones
|
|
537
|
+
* the base __server.func to per-route .func directories. These clones are
|
|
538
|
+
* created during `runNitroBuild()` — before our post-build prebuilt copy.
|
|
539
|
+
* Each clone resolves `../prebuilt` independently, so they each need a copy.
|
|
540
|
+
*
|
|
697
541
|
* @internal Exported for testing.
|
|
698
542
|
*/
|
|
699
|
-
export function
|
|
700
|
-
|
|
543
|
+
export async function copyPrebuiltToVercelFuncClones(
|
|
544
|
+
functionsDir: string,
|
|
545
|
+
prebuiltSrc: string,
|
|
546
|
+
baseFuncName: string
|
|
547
|
+
): Promise<void> {
|
|
548
|
+
const funcDirs: string[] = [];
|
|
549
|
+
try {
|
|
550
|
+
for await (const match of glob('**/*.func', { cwd: functionsDir })) {
|
|
551
|
+
if (!match.endsWith(baseFuncName)) {
|
|
552
|
+
funcDirs.push(join(functionsDir, match));
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
} catch {
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
await Promise.all(
|
|
559
|
+
funcDirs.map((dir) => cp(prebuiltSrc, join(dir, 'prebuilt'), { recursive: true }))
|
|
560
|
+
);
|
|
701
561
|
}
|