@timber-js/app 0.2.0-alpha.21 → 0.2.0-alpha.210
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-BoO51joc.js +413 -0
- package/dist/_chunks/chains-BoO51joc.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/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-v97rQH4b.js +2039 -0
- package/dist/_chunks/dev-server-v97rQH4b.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-9cSnn_h9.js +150 -0
- package/dist/_chunks/live-graph-9cSnn_h9.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-vGV7Re0B.js +101 -0
- package/dist/_chunks/poison-scan-vGV7Re0B.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 +151 -0
- package/dist/analyze/classify.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.d.ts +17 -0
- package/dist/analyze/crawl-entry.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.js +313 -0
- package/dist/analyze/crawl-entry.js.map +1 -0
- package/dist/analyze/crawl.d.ts +134 -0
- package/dist/analyze/crawl.d.ts.map +1 -0
- package/dist/analyze/graph-cache.d.ts +104 -0
- package/dist/analyze/graph-cache.d.ts.map +1 -0
- package/dist/analyze/graph-command.d.ts +43 -0
- package/dist/analyze/graph-command.d.ts.map +1 -0
- package/dist/analyze/graph-command.js +472 -0
- package/dist/analyze/graph-command.js.map +1 -0
- package/dist/analyze/live-graph.d.ts +81 -0
- package/dist/analyze/live-graph.d.ts.map +1 -0
- package/dist/analyze/poison-rules.d.ts +72 -0
- package/dist/analyze/poison-rules.d.ts.map +1 -0
- package/dist/analyze/poison-scan.d.ts +48 -0
- package/dist/analyze/poison-scan.d.ts.map +1 -0
- package/dist/analyze/scan.d.ts +73 -0
- package/dist/analyze/scan.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +48 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/fast-hash.d.ts +5 -0
- package/dist/cache/fast-hash.d.ts.map +1 -1
- package/dist/cache/handler-store.d.ts +33 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +32 -9
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +3 -326
- package/dist/cache/invalidation-epoch.d.ts +43 -0
- package/dist/cache/invalidation-epoch.d.ts.map +1 -0
- package/dist/cache/json-lossy-check.d.ts +11 -0
- package/dist/cache/json-lossy-check.d.ts.map +1 -0
- package/dist/cache/redis-handler.d.ts +141 -9
- package/dist/cache/redis-handler.d.ts.map +1 -1
- package/dist/cache/singleflight.d.ts +21 -2
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/stable-stringify.d.ts +9 -0
- package/dist/cache/stable-stringify.d.ts.map +1 -1
- package/dist/cache/store.d.ts +53 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
- package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.js +29 -0
- package/dist/cache/stores/cloudflare-kv.js.map +1 -0
- package/dist/cache/stores/memory.d.ts +42 -0
- package/dist/cache/stores/memory.d.ts.map +1 -0
- package/dist/cache/stores/memory.js +90 -0
- package/dist/cache/stores/memory.js.map +1 -0
- package/dist/cache/stores/redis.d.ts +69 -0
- package/dist/cache/stores/redis.d.ts.map +1 -0
- package/dist/cache/stores/redis.js +35 -0
- package/dist/cache/stores/redis.js.map +1 -0
- package/dist/cache/stores/vercel.d.ts +36 -0
- package/dist/cache/stores/vercel.d.ts.map +1 -0
- package/dist/cache/stores/vercel.js +33 -0
- package/dist/cache/stores/vercel.js.map +1 -0
- package/dist/cache/tag-aware-handler.d.ts +52 -0
- package/dist/cache/tag-aware-handler.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +21 -11
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cdn/cloudflare-purge.d.ts +23 -0
- package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
- package/dist/cdn/cloudflare-purge.js +30 -0
- package/dist/cdn/cloudflare-purge.js.map +1 -0
- package/dist/cdn/fastly-purge.d.ts +25 -0
- package/dist/cdn/fastly-purge.d.ts.map +1 -0
- package/dist/cdn/fastly-purge.js +33 -0
- package/dist/cdn/fastly-purge.js.map +1 -0
- package/dist/cdn/headers.d.ts +97 -0
- package/dist/cdn/headers.d.ts.map +1 -0
- package/dist/cdn/index.d.ts +5 -0
- package/dist/cdn/index.d.ts.map +1 -0
- package/dist/cdn/index.js +94 -0
- package/dist/cdn/index.js.map +1 -0
- package/dist/cdn/purge-store.d.ts +23 -0
- package/dist/cdn/purge-store.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.d.ts +20 -0
- package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.js +35 -0
- package/dist/cdn/workers-cache-purge.js.map +1 -0
- package/dist/cli-check.d.ts +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 +8844 -14244
- 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/cloudflare-wasm.d.ts +21 -0
- package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-discovery.d.ts +123 -0
- package/dist/plugins/dev-discovery.d.ts.map +1 -0
- package/dist/plugins/dev-server.d.ts +24 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +28 -4
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +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 +162 -0
- package/src/analyze/scan.ts +149 -0
- package/src/cache/cache-api.ts +107 -0
- package/src/cache/fast-hash.ts +5 -0
- package/src/cache/handler-store.ts +76 -0
- package/src/cache/index.ts +115 -22
- package/src/cache/invalidation-epoch.ts +93 -0
- package/src/cache/json-lossy-check.ts +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 +494 -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/cloudflare-wasm.ts +141 -0
- package/src/plugins/content.ts +5 -1
- package/src/plugins/dev-discovery.ts +218 -0
- package/src/plugins/dev-server.ts +360 -97
- package/src/plugins/entries.ts +142 -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/index.ts
CHANGED
|
@@ -1,371 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @timber-js/app — Root entry point (public API).
|
|
3
|
+
*
|
|
4
|
+
* User-facing exports: timber(), defineConfig(), TimberUserConfig, Routes.
|
|
5
|
+
*
|
|
6
|
+
* Internal helpers (PluginContext, resolveAppDir, loadTimberConfigFile,
|
|
7
|
+
* warnConfigConflicts, resolveClientJavascript) live in plugin-context.ts
|
|
8
|
+
* and are NOT re-exported here. Sub-plugins import them via relative paths.
|
|
9
|
+
*
|
|
10
|
+
* Design doc: 18-build-system.md §"Plugin Architecture"
|
|
11
|
+
*/
|
|
12
|
+
|
|
1
13
|
import type { Plugin, PluginOption } from 'vite';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
14
|
+
import type { ReactCompilerOptions } from '@vitejs/plugin-react';
|
|
15
|
+
import { createLogger } from 'vite';
|
|
16
|
+
import { join, relative, resolve } from 'node:path';
|
|
5
17
|
import { createRequire } from 'node:module';
|
|
6
18
|
import react from '@vitejs/plugin-react';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import { timberServerBundle } from './plugins/server-bundle';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
19
|
+
import { timberContent } from './plugins/content.ts';
|
|
20
|
+
import { timberDevServer } from './plugins/dev-server.ts';
|
|
21
|
+
import { timberEntries } from './plugins/entries.ts';
|
|
22
|
+
import { timberMdx } from './plugins/mdx.ts';
|
|
23
|
+
import { timberRouting } from './plugins/routing.ts';
|
|
24
|
+
import { timberShims } from './plugins/shims.ts';
|
|
25
|
+
import { timberFonts } from './plugins/fonts.ts';
|
|
26
|
+
import { timberStaticBuild } from './plugins/static-build.ts';
|
|
27
|
+
import { timberBuildManifest } from './plugins/build-manifest.ts';
|
|
28
|
+
import { timberDevLogs, originalConsole, wrapLoggerWithOriginalConsole } from './dev-tools/logs.ts';
|
|
29
|
+
import { resolveForwardConsole } from './dev-tools/browser-logs.ts';
|
|
30
|
+
import { timberReactProd } from './plugins/react-prod.ts';
|
|
31
|
+
import { timberReactResolve } from './plugins/react-resolve.ts';
|
|
32
|
+
import { timberChunks } from './plugins/chunks.ts';
|
|
33
|
+
import { clientChunkGroup } from './plugins/client-chunks.ts';
|
|
34
|
+
import { timberServerBundle } from './plugins/server-bundle.ts';
|
|
35
|
+
import { timberCacheTransform } from './plugins/cache.ts';
|
|
36
|
+
import { timberRequestDep } from './plugins/request-dep/index.ts';
|
|
37
|
+
import { timberPrebuilt } from './plugins/prebuilt.ts';
|
|
38
|
+
import { timberPrerenderSugar } from './plugins/prerender-sugar.ts';
|
|
39
|
+
import { timberCloudflareWasm } from './plugins/cloudflare-wasm.ts';
|
|
40
|
+
import { timberPostBuild } from './plugins/post-build.ts';
|
|
41
|
+
import { timberBuildReport } from './plugins/build-report.ts';
|
|
42
|
+
import { createNoopTimer } from './utils/startup-timer.ts';
|
|
43
|
+
import {
|
|
44
|
+
validateConfig,
|
|
45
|
+
reportConfigErrors,
|
|
46
|
+
checkPeerDependencies,
|
|
47
|
+
formatMissingPeers,
|
|
48
|
+
} from './config-validation.ts';
|
|
49
|
+
import {
|
|
50
|
+
resolveEncryptionKeyExpression,
|
|
51
|
+
shouldEnableEncryption,
|
|
52
|
+
} from './server/action-encryption.ts';
|
|
53
|
+
import { createHoldingServer } from './dev-tools/holding-server.ts';
|
|
54
|
+
import { resolveStartPort } from './server/port-resolution.ts';
|
|
55
|
+
import type { TimberUserConfig } from './config-types.ts';
|
|
56
|
+
import type { PluginContext, TimberPluginApi } from './plugin-context.ts';
|
|
57
|
+
import {
|
|
58
|
+
createPluginContext,
|
|
59
|
+
loadTimberConfigFile,
|
|
60
|
+
mergeFileConfig,
|
|
61
|
+
resolveAppDir,
|
|
62
|
+
resolveClientJavascript,
|
|
63
|
+
resolveBuildDir,
|
|
64
|
+
} from './plugin-context.ts';
|
|
40
65
|
|
|
41
|
-
|
|
42
|
-
export interface ResolvedClientJavascript {
|
|
43
|
-
disabled: boolean;
|
|
44
|
-
enableHMRInDev: boolean;
|
|
45
|
-
}
|
|
66
|
+
// ── Public API ────────────────────────────────────────────────────────────
|
|
46
67
|
|
|
47
|
-
export
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
* Can also be enabled at runtime via the `TIMBER_DEBUG` environment variable.
|
|
57
|
-
*
|
|
58
|
-
* Default: `false`.
|
|
59
|
-
*/
|
|
60
|
-
debug?: boolean;
|
|
61
|
-
/**
|
|
62
|
-
* Control client-side JavaScript output.
|
|
63
|
-
*
|
|
64
|
-
* Boolean shorthand:
|
|
65
|
-
* `clientJavascript: false` disables all client JS (equivalent to `{ disabled: true }`).
|
|
66
|
-
* `clientJavascript: true` enables client JS (the default).
|
|
67
|
-
*
|
|
68
|
-
* Object form:
|
|
69
|
-
* `clientJavascript: { disabled: true, enableHMRInDev: true }` disables client JS
|
|
70
|
-
* in production but preserves Vite HMR in dev mode.
|
|
71
|
-
*
|
|
72
|
-
* When `disabled` is true, `enableHMRInDev` defaults to `true`.
|
|
73
|
-
* Server-side JS still runs — this only affects what is sent to the browser.
|
|
74
|
-
*/
|
|
75
|
-
clientJavascript?: boolean | ClientJavascriptConfig;
|
|
76
|
-
adapter?: unknown;
|
|
77
|
-
cacheHandler?: unknown;
|
|
78
|
-
allowedOrigins?: string[];
|
|
79
|
-
csrf?: boolean;
|
|
80
|
-
limits?: {
|
|
81
|
-
actionBodySize?: string;
|
|
82
|
-
uploadBodySize?: string;
|
|
83
|
-
maxFields?: number;
|
|
84
|
-
};
|
|
85
|
-
pageExtensions?: string[];
|
|
86
|
-
/**
|
|
87
|
-
* Slow request threshold in milliseconds. Requests exceeding this emit
|
|
88
|
-
* a warning via the logger. Set to 0 to disable. Default: 3000.
|
|
89
|
-
*
|
|
90
|
-
* See design/17-logging.md §"slowRequestMs".
|
|
91
|
-
*/
|
|
92
|
-
slowRequestMs?: number;
|
|
93
|
-
/** Dev-mode options. These have no effect in production builds. */
|
|
94
|
-
dev?: {
|
|
95
|
-
/** Threshold in ms to highlight slow phases in dev logging output. Default: 200. */
|
|
96
|
-
slowPhaseMs?: number;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* Cookie signing configuration. See design/29-cookies.md §"Signed Cookies".
|
|
100
|
-
*
|
|
101
|
-
* Provide `secret` for a single key, or `secrets` (array) for key rotation.
|
|
102
|
-
* When `secrets` is used, index 0 is the signing key; all are tried for verification.
|
|
103
|
-
*/
|
|
104
|
-
cookies?: {
|
|
105
|
-
/** Single signing secret. Shorthand for `secrets: [secret]`. */
|
|
106
|
-
secret?: string;
|
|
107
|
-
/** Array of signing secrets for key rotation. Index 0 signs; all verify. */
|
|
108
|
-
secrets?: string[];
|
|
109
|
-
};
|
|
110
|
-
/**
|
|
111
|
-
* Control Server-Timing header output.
|
|
112
|
-
*
|
|
113
|
-
* - `'detailed'` — per-phase breakdown (proxy, middleware, render). Useful
|
|
114
|
-
* for APM / network monitoring. Exposes phase names to clients.
|
|
115
|
-
* - `'total'` — single `total;dur=N` entry. Safe to expose, gives
|
|
116
|
-
* browser DevTools useful timing without internal details.
|
|
117
|
-
* - `false` — no Server-Timing header at all.
|
|
118
|
-
*
|
|
119
|
-
* Default: `'detailed'` in dev, `'total'` in production.
|
|
120
|
-
*
|
|
121
|
-
* This is separate from `debug` / `TIMBER_DEBUG` — it's an intentional
|
|
122
|
-
* decision to expose timing data to clients, not a side effect of debug
|
|
123
|
-
* logging.
|
|
124
|
-
*/
|
|
125
|
-
serverTiming?: 'detailed' | 'total' | false;
|
|
126
|
-
/**
|
|
127
|
-
* Override the app directory location. By default, timber auto-detects
|
|
128
|
-
* `app/` at the project root, falling back to `src/app/`.
|
|
129
|
-
*
|
|
130
|
-
* Set this to a relative path from the project root (e.g. `'src/app'`)
|
|
131
|
-
* to use a custom location.
|
|
132
|
-
*/
|
|
133
|
-
appDir?: string;
|
|
134
|
-
/** MDX compilation options passed to @mdx-js/rollup. See design/20-content-collections.md. */
|
|
135
|
-
mdx?: {
|
|
136
|
-
remarkPlugins?: unknown[];
|
|
137
|
-
rehypePlugins?: unknown[];
|
|
138
|
-
recmaPlugins?: unknown[];
|
|
139
|
-
remarkRehypeOptions?: Record<string, unknown>;
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* Built-in top-loader progress bar for client navigations.
|
|
143
|
-
* Shows an animated bar at the top of the viewport during RSC navigations.
|
|
144
|
-
* Enabled by default — set `enabled: false` to opt out.
|
|
145
|
-
*
|
|
146
|
-
* Users who want a fully custom progress indicator should disable this
|
|
147
|
-
* and use `useNavigationPending()` directly.
|
|
148
|
-
*
|
|
149
|
-
* See LOCAL-336 for design decisions.
|
|
150
|
-
*/
|
|
151
|
-
topLoader?: {
|
|
152
|
-
/** Whether the top-loader is enabled. Default: true. */
|
|
153
|
-
enabled?: boolean;
|
|
154
|
-
/** Bar color. Default: '#2299DD'. */
|
|
155
|
-
color?: string;
|
|
156
|
-
/** Bar height in pixels. Default: 3. */
|
|
157
|
-
height?: number;
|
|
158
|
-
/** Show subtle glow/shadow effect. Default: true. */
|
|
159
|
-
shadow?: boolean;
|
|
160
|
-
/** Delay in ms before showing the bar (avoids flash on fast navs). Default: 0. */
|
|
161
|
-
delay?: number;
|
|
162
|
-
/** CSS z-index. Default: 1600. */
|
|
163
|
-
zIndex?: number;
|
|
164
|
-
};
|
|
165
|
-
}
|
|
68
|
+
export type { TimberUserConfig } from './config-types.ts';
|
|
69
|
+
|
|
70
|
+
// Metadata route handler types — re-exported so user-authored metadata
|
|
71
|
+
// route files (sitemap.ts, robots.ts, manifest.ts, icon.tsx, etc.) can
|
|
72
|
+
// import them from the package root without reaching into ./server.
|
|
73
|
+
// The canonical location for these types is '@timber-js/app/server'; this
|
|
74
|
+
// root re-export is a convenience for typed metadata route handlers.
|
|
75
|
+
// See design/16-metadata.md §"Metadata Routes".
|
|
76
|
+
export type { Metadata, MetadataRoute, MetadataHandler, MetadataResult } from './server/types.ts';
|
|
166
77
|
|
|
167
78
|
/**
|
|
168
|
-
*
|
|
79
|
+
* Route map interface — augmented by the generated timber-routes.d.ts.
|
|
80
|
+
*
|
|
81
|
+
* Each key is a route path pattern. Values have:
|
|
82
|
+
* segmentParams: shape of URL segment params (e.g. { id: string })
|
|
83
|
+
*
|
|
84
|
+
* There is no `searchParams` member: since TIM-1343 the framework does not
|
|
85
|
+
* scan for search-param definitions, so it has nothing to type them with. A
|
|
86
|
+
* definition carries its own type to call sites through an ordinary import.
|
|
87
|
+
*
|
|
88
|
+
* This interface is empty by default and populated via codegen.
|
|
89
|
+
* See design/09-typescript.md §"Typed Routes".
|
|
169
90
|
*/
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (typeof config.clientJavascript === 'boolean') {
|
|
173
|
-
// `clientJavascript: false` → disabled
|
|
174
|
-
// `clientJavascript: true` → enabled (default)
|
|
175
|
-
return {
|
|
176
|
-
disabled: !config.clientJavascript,
|
|
177
|
-
enableHMRInDev: !config.clientJavascript, // default true when disabled
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
// Object form
|
|
181
|
-
return {
|
|
182
|
-
disabled: config.clientJavascript.disabled,
|
|
183
|
-
enableHMRInDev: config.clientJavascript.enableHMRInDev ?? config.clientJavascript.disabled,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// Default: client JS enabled
|
|
188
|
-
return { disabled: false, enableHMRInDev: false };
|
|
189
|
-
}
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type, typescript/no-empty-interface
|
|
92
|
+
export interface Routes {}
|
|
190
93
|
|
|
191
94
|
/**
|
|
192
|
-
*
|
|
95
|
+
* Type-safe helper for timber.config.ts files.
|
|
96
|
+
*
|
|
97
|
+
* A pass-through identity function that provides autocomplete and
|
|
98
|
+
* type checking for timber configuration. No runtime validation —
|
|
99
|
+
* purely a DX convenience (same pattern as Vite's defineConfig).
|
|
193
100
|
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* // timber.config.ts
|
|
104
|
+
* import { defineConfig } from '@timber-js/app';
|
|
105
|
+
*
|
|
106
|
+
* export default defineConfig({
|
|
107
|
+
* output: 'server',
|
|
108
|
+
* pageExtensions: ['tsx', 'ts', 'mdx'],
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
197
111
|
*/
|
|
198
|
-
export
|
|
199
|
-
config
|
|
200
|
-
/** Resolved client JavaScript configuration */
|
|
201
|
-
clientJavascript: ResolvedClientJavascript;
|
|
202
|
-
/** The scanned route tree (populated by timber-routing, consumed by timber-entries) */
|
|
203
|
-
routeTree: RouteTree | null;
|
|
204
|
-
/** Absolute path to the app/ directory */
|
|
205
|
-
appDir: string;
|
|
206
|
-
/** Absolute path to the project root */
|
|
207
|
-
root: string;
|
|
208
|
-
/** Whether the dev server is running (set by timber-root-sync in configResolved) */
|
|
209
|
-
dev: boolean;
|
|
210
|
-
/** CSS build manifest (populated by adapter after client build, null in dev) */
|
|
211
|
-
buildManifest: BuildManifest | null;
|
|
212
|
-
/** Startup timer for profiling cold start phases (active in dev, no-op in prod) */
|
|
213
|
-
timer: StartupTimer;
|
|
112
|
+
export function defineConfig(config: TimberUserConfig): TimberUserConfig {
|
|
113
|
+
return config;
|
|
214
114
|
}
|
|
215
115
|
|
|
116
|
+
// ── Private helpers ───────────────────────────────────────────────────────
|
|
117
|
+
|
|
216
118
|
/**
|
|
217
|
-
*
|
|
218
|
-
* 1. Explicit `configAppDir` from timber.config.ts
|
|
219
|
-
* 2. `<root>/app`
|
|
220
|
-
* 3. `<root>/src/app`
|
|
119
|
+
* Build the options object for @vitejs/plugin-rsc.
|
|
221
120
|
*
|
|
222
|
-
*
|
|
121
|
+
* Uses a getter for `enableActionEncryption` so the RSC plugin reads
|
|
122
|
+
* the value lazily — after ctx.dev is set in configResolved. This lets
|
|
123
|
+
* `actionEncryption.disableInDev` work correctly even though the RSC
|
|
124
|
+
* plugin is created before Vite resolves the command.
|
|
223
125
|
*/
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
126
|
+
function createRscOptions(
|
|
127
|
+
ctx: PluginContext,
|
|
128
|
+
encryptionKeyExpr: string | undefined
|
|
129
|
+
): Record<string, unknown> {
|
|
130
|
+
const options: Record<string, unknown> = {
|
|
131
|
+
serverHandler: false,
|
|
132
|
+
customClientEntry: true,
|
|
133
|
+
entries: {
|
|
134
|
+
rsc: 'virtual:timber-rsc-entry',
|
|
135
|
+
ssr: 'virtual:timber-ssr-entry',
|
|
136
|
+
client: 'virtual:timber-browser-entry',
|
|
137
|
+
},
|
|
138
|
+
// Group client references by layout boundary to balance route-scoped code
|
|
139
|
+
// splitting with HTTP request count. A constant group name ('client-refs')
|
|
140
|
+
// would collapse all routes into one chunk — any page downloads every
|
|
141
|
+
// client component. Per-serverChunk grouping creates many sub-500B files.
|
|
142
|
+
// Layout-boundary grouping is the middle ground: components under the same
|
|
143
|
+
// layout segment share a chunk. See design/27-chunking-strategy.md, TIM-440, TIM-499.
|
|
144
|
+
clientChunks: (meta: { id: string; normalizedId: string; serverChunk: string }) =>
|
|
145
|
+
clientChunkGroup(meta, ctx.appDir, ctx.root, ctx.sharedModuleFacades),
|
|
146
|
+
};
|
|
232
147
|
|
|
233
|
-
|
|
234
|
-
|
|
148
|
+
// Bound args encryption — AES-256-GCM authenticated encryption for
|
|
149
|
+
// closure variables in 'use server' functions. Always on in production,
|
|
150
|
+
// configurable in dev. See design/08-forms-and-actions.md §"Bound Args Encryption".
|
|
151
|
+
//
|
|
152
|
+
// Uses a getter so the RSC plugin reads the value lazily in its transform
|
|
153
|
+
// hooks, after ctx.dev is set in configResolved. This lets disableInDev
|
|
154
|
+
// work correctly — ctx.dev is false at construction time but true during
|
|
155
|
+
// dev server transforms.
|
|
156
|
+
Object.defineProperty(options, 'enableActionEncryption', {
|
|
157
|
+
get() {
|
|
158
|
+
return shouldEnableEncryption(ctx.dev, ctx.config.actionEncryption);
|
|
159
|
+
},
|
|
160
|
+
enumerable: true,
|
|
161
|
+
});
|
|
235
162
|
|
|
236
|
-
|
|
237
|
-
|
|
163
|
+
// When TIMBER_ACTIONS_ENCRYPTION_KEY is set, pass it as a runtime expression
|
|
164
|
+
// so the RSC plugin uses it instead of auto-generating a per-build key.
|
|
165
|
+
if (encryptionKeyExpr) {
|
|
166
|
+
options.defineEncryptionKey = encryptionKeyExpr;
|
|
167
|
+
}
|
|
238
168
|
|
|
239
|
-
|
|
240
|
-
`[timber] Could not find app directory. Expected "app/" or "src/app/" in ${root}. ` +
|
|
241
|
-
`You can set appDir in timber.config.ts to specify a custom location.`
|
|
242
|
-
);
|
|
169
|
+
return options;
|
|
243
170
|
}
|
|
244
171
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
// Timer starts as active — swapped to noop in configResolved for production builds
|
|
249
|
-
return {
|
|
250
|
-
config: resolvedConfig,
|
|
251
|
-
clientJavascript: resolveClientJavascript(resolvedConfig),
|
|
252
|
-
routeTree: null,
|
|
253
|
-
appDir: join(projectRoot, 'app'),
|
|
254
|
-
root: projectRoot,
|
|
255
|
-
dev: false,
|
|
256
|
-
buildManifest: null,
|
|
257
|
-
timer: createStartupTimer(),
|
|
258
|
-
};
|
|
259
|
-
}
|
|
172
|
+
// NOTE: 'use cache' directive transform removed — future feature pending design doc.
|
|
173
|
+
// The timber.cache() API (createCache) remains available for explicit caching.
|
|
174
|
+
// See design/06-caching.md.
|
|
260
175
|
|
|
261
|
-
|
|
262
|
-
* Load timber.config.ts (or .js, .mjs) from the project root.
|
|
263
|
-
* Returns the config object or null if no config file is found.
|
|
264
|
-
*/
|
|
265
|
-
async function loadTimberConfigFile(root: string): Promise<TimberUserConfig | null> {
|
|
266
|
-
const configNames = ['timber.config.ts', 'timber.config.js', 'timber.config.mjs'];
|
|
267
|
-
|
|
268
|
-
for (const name of configNames) {
|
|
269
|
-
const configPath = join(root, name);
|
|
270
|
-
if (existsSync(configPath)) {
|
|
271
|
-
const mod = await import(pathToFileURL(configPath).href);
|
|
272
|
-
return (mod.default ?? mod) as TimberUserConfig;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return null;
|
|
276
|
-
}
|
|
176
|
+
// ── Main plugin factory ──────────────────────────────────────────────────
|
|
277
177
|
|
|
278
178
|
/**
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
*
|
|
179
|
+
* Create the timber Vite plugin array.
|
|
180
|
+
*
|
|
181
|
+
* Loads timber.config.ts and all dependencies synchronously before
|
|
182
|
+
* constructing the plugin array. This ensures ALL plugins — including
|
|
183
|
+
* the RSC plugin and React Compiler — see the fully merged config
|
|
184
|
+
* (inline + file-based). No async, no deferred config, no stale reads.
|
|
282
185
|
*
|
|
283
|
-
*
|
|
186
|
+
* Requires Node >= 22.12 for synchronous require() of ESM modules
|
|
187
|
+
* (@vitejs/plugin-rsc is ESM-only).
|
|
188
|
+
*
|
|
189
|
+
* Previous versions used async loading and deferred config merging,
|
|
190
|
+
* causing file-based config for reactCompiler, actionEncryption, and
|
|
191
|
+
* output mode to be silently ignored. See TIM-451.
|
|
284
192
|
*/
|
|
285
|
-
export function warnConfigConflicts(
|
|
286
|
-
inline: TimberUserConfig,
|
|
287
|
-
fileConfig: TimberUserConfig
|
|
288
|
-
): string[] {
|
|
289
|
-
const conflicts: string[] = [];
|
|
290
|
-
for (const key of Object.keys(fileConfig) as (keyof TimberUserConfig)[]) {
|
|
291
|
-
if (key === 'output') continue;
|
|
292
|
-
if (key in inline && inline[key] !== undefined) {
|
|
293
|
-
conflicts.push(key);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
if (conflicts.length > 0) {
|
|
297
|
-
console.warn(
|
|
298
|
-
`[timber] Config conflict: ${conflicts.map((k) => `"${k}"`).join(', ')} set in both ` +
|
|
299
|
-
`vite.config.ts (inline) and timber.config.ts. ` +
|
|
300
|
-
`Move all config to timber.config.ts to avoid confusion. ` +
|
|
301
|
-
`The inline value from vite.config.ts will be used.`
|
|
302
|
-
);
|
|
303
|
-
}
|
|
304
|
-
return conflicts;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
193
|
/**
|
|
308
|
-
*
|
|
309
|
-
*
|
|
194
|
+
* Wrap plugin-react's `vite:react-compiler` configResolved so it always
|
|
195
|
+
* sees `isProduction: true` during builds. The compiler plugin uses
|
|
196
|
+
* `!config.isProduction` to decide whether to emit jsxDEV calls, but
|
|
197
|
+
* Vite derives isProduction from process.env.NODE_ENV — which may be
|
|
198
|
+
* "development" in the shell. Rather than mutating the env, we pass a
|
|
199
|
+
* prototype-based view with the single property overridden.
|
|
310
200
|
*/
|
|
311
|
-
function
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
function timberCache(_ctx: PluginContext): Plugin {
|
|
331
|
-
return cacheTransformPlugin();
|
|
201
|
+
function patchReactCompilerForProdJsx(plugins: PluginOption[]): PluginOption[] {
|
|
202
|
+
for (const p of plugins) {
|
|
203
|
+
if (p && typeof p === 'object' && 'name' in p && p.name === 'vite:react-compiler') {
|
|
204
|
+
const orig = (p as Plugin).configResolved;
|
|
205
|
+
if (typeof orig === 'function') {
|
|
206
|
+
(p as Plugin).configResolved = function (config) {
|
|
207
|
+
const view =
|
|
208
|
+
config.command === 'build' && !config.isProduction
|
|
209
|
+
? Object.create(config, { isProduction: { value: true } })
|
|
210
|
+
: config;
|
|
211
|
+
return orig.call(this, view);
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return plugins;
|
|
332
217
|
}
|
|
333
218
|
|
|
334
219
|
export function timber(config?: TimberUserConfig): PluginOption[] {
|
|
335
220
|
const ctx = createPluginContext(config);
|
|
336
|
-
|
|
337
|
-
//
|
|
338
|
-
//
|
|
221
|
+
|
|
222
|
+
// Resolve dependencies from the consumer's project (process.cwd()),
|
|
223
|
+
// not from timber's own node_modules. This is critical for pnpm link:
|
|
224
|
+
// when linked, timber's node_modules has a separate vite instance, and
|
|
225
|
+
// the RSC plugin must use the same vite instance as the dev server.
|
|
226
|
+
const consumerRequire = createRequire(join(process.cwd(), 'package.json'));
|
|
227
|
+
|
|
228
|
+
// ── Step 1: Load @vitejs/plugin-rsc ─────────────────────────────────
|
|
229
|
+
// Synchronous require() works for ESM modules on Node 22.12+.
|
|
230
|
+
ctx.timer.start('rsc-plugin-import');
|
|
231
|
+
const rscMod = consumerRequire('@vitejs/plugin-rsc');
|
|
232
|
+
const vitePluginRsc = rscMod.default ?? rscMod;
|
|
233
|
+
ctx.timer.end('rsc-plugin-import');
|
|
234
|
+
|
|
235
|
+
// ── Step 2: Compute config-dependent options ────────────────────────
|
|
236
|
+
// encryptionKeyExpr is env-based and doesn't depend on file config.
|
|
237
|
+
const encryptionKeyExpr = resolveEncryptionKeyExpression();
|
|
238
|
+
|
|
239
|
+
// ── Step 3: Pre-load file config for plugin resolution ──────────────
|
|
240
|
+
// Load timber.config.ts eagerly from process.cwd() so we can resolve
|
|
241
|
+
// plugins (like React Compiler) and add them to the top-level array.
|
|
242
|
+
// Vite's config() hook return type is Omit<UserConfig, 'plugins'> —
|
|
243
|
+
// plugins returned from config() are silently ignored. See TIM-632.
|
|
244
|
+
//
|
|
245
|
+
// The config() hook still loads from the correct Vite root (which may
|
|
246
|
+
// differ from cwd in monorepo setups — see TIM-498), but only for
|
|
247
|
+
// non-plugin config merging.
|
|
248
|
+
const earlyFileConfig = loadTimberConfigFile(process.cwd());
|
|
249
|
+
|
|
250
|
+
// ── Step 4: Build rootSync plugin ───────────────────────────────────
|
|
251
|
+
|
|
252
|
+
// rootSync loads timber.config.ts from Vite's resolved root and merges
|
|
253
|
+
// it into ctx.config. Plugin resolution is handled eagerly above — the
|
|
254
|
+
// config() hook must NOT return a `plugins` field (Vite ignores it).
|
|
339
255
|
const rootSync: Plugin = {
|
|
340
256
|
name: 'timber-root-sync',
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
257
|
+
|
|
258
|
+
// The plugin context, published for out-of-band callers that need the
|
|
259
|
+
// *resolved* configuration rather than a second reading of the files it
|
|
260
|
+
// came from. `timber check` is the one today: it runs Vite's
|
|
261
|
+
// `resolveConfig()` and reads root, appDir, and pageExtensions from here,
|
|
262
|
+
// so it scans exactly the tree `timber build` builds — including config
|
|
263
|
+
// passed inline as `timber({ ... })`, which lives only in this closure and
|
|
264
|
+
// is invisible to anything that re-reads `timber.config.ts`. See
|
|
265
|
+
// `cli-check.ts` and design/11-platform.md §`timber check`.
|
|
266
|
+
//
|
|
267
|
+
// Valid from `configResolved` onward; `appDir` and `root` are unset before
|
|
268
|
+
// that, which is why the reader runs a full `resolveConfig()` rather than
|
|
269
|
+
// just loading the config file.
|
|
270
|
+
api: { getContext: () => ctx } satisfies TimberPluginApi,
|
|
271
|
+
|
|
272
|
+
async config(userConfig, { command, isPreview }) {
|
|
273
|
+
// ── Load timber.config.ts from the correct root ───────────────
|
|
274
|
+
// Vite's `config` hook fires before `configResolved`. The user's
|
|
275
|
+
// `root` option (if set) tells us where the project lives.
|
|
276
|
+
// `resolve()` mirrors Vite's own root resolution logic.
|
|
277
|
+
const viteRoot = resolve(userConfig.root ?? process.cwd());
|
|
346
278
|
ctx.timer.start('config-load');
|
|
347
|
-
const fileConfig =
|
|
279
|
+
const fileConfig = loadTimberConfigFile(viteRoot);
|
|
348
280
|
if (fileConfig) {
|
|
349
|
-
mergeFileConfig(ctx, fileConfig);
|
|
281
|
+
ctx.config = mergeFileConfig(ctx.config, fileConfig);
|
|
350
282
|
ctx.clientJavascript = resolveClientJavascript(ctx.config);
|
|
351
283
|
}
|
|
284
|
+
// Apply defaults AFTER merge so file-based config isn't overridden
|
|
285
|
+
// by defaults that were baked into the inline config object.
|
|
286
|
+
ctx.config.output ??= 'server';
|
|
352
287
|
ctx.timer.end('config-load');
|
|
353
288
|
|
|
354
|
-
//
|
|
289
|
+
// ── Resolve build output directory ─────────────────────────
|
|
290
|
+
// Priority: timber.config.ts `buildDir` > Vite `build.outDir` > .timber/dist
|
|
291
|
+
// Set Vite's build.outDir so the RSC plugin and all environment
|
|
292
|
+
// builds write to the correct location. ctx.buildDir is read back
|
|
293
|
+
// from Vite in configResolved, so there is one answer to where the
|
|
294
|
+
// build went.
|
|
295
|
+
const resolvedRoot = resolve(userConfig.root ?? process.cwd());
|
|
296
|
+
const buildDir = resolveBuildDir(resolvedRoot, ctx.config.buildDir, userConfig.build?.outDir);
|
|
297
|
+
|
|
298
|
+
// Warn if the Vite root differs from cwd and the re-loaded config
|
|
299
|
+
// has reactCompiler but the early cwd-based load missed it. In this
|
|
300
|
+
// edge case the user must move reactCompiler to inline config.
|
|
301
|
+
if (viteRoot !== process.cwd()) {
|
|
302
|
+
const hasCompilerInReloaded = !config?.reactCompiler && ctx.config.reactCompiler;
|
|
303
|
+
const hadCompilerInEarly = !config?.reactCompiler && earlyFileConfig?.reactCompiler;
|
|
304
|
+
if (hasCompilerInReloaded && !hadCompilerInEarly) {
|
|
305
|
+
console.warn(
|
|
306
|
+
'[timber] reactCompiler is set in timber.config.ts but could not be ' +
|
|
307
|
+
'registered because the config file is in a non-cwd root directory. ' +
|
|
308
|
+
'Move reactCompiler to the inline timber() config in vite.config.ts, or ' +
|
|
309
|
+
'run vite from the project root directory.'
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Force production JSX for builds.
|
|
315
|
+
//
|
|
316
|
+
// Vite derives `config.isProduction` from `process.env.NODE_ENV`.
|
|
317
|
+
// If the shell has NODE_ENV=development, isProduction stays false
|
|
318
|
+
// and Vite's built-in OXC transform emits jsxDEV calls (the
|
|
319
|
+
// production jsx-runtime doesn't export jsxDEV). The oxc.jsx
|
|
320
|
+
// override below fixes Vite's native path; plugin-react's compiler
|
|
321
|
+
// plugin is handled by patchReactCompilerForProdJsx above.
|
|
322
|
+
// ── Resolve dev/preview port (TIM-842) ───────────────────────
|
|
323
|
+
// Default port is 3000. Vite handles conflicts and honors server.strictPort.
|
|
324
|
+
//
|
|
325
|
+
// For dev (`command === 'serve' && !isPreview`) we start the
|
|
326
|
+
// holding server on the requested port when available.
|
|
355
327
|
//
|
|
356
|
-
//
|
|
357
|
-
//
|
|
358
|
-
//
|
|
359
|
-
//
|
|
360
|
-
//
|
|
361
|
-
//
|
|
362
|
-
//
|
|
328
|
+
// For `vite preview` (`command === 'serve' && isPreview`) we
|
|
329
|
+
// resolve the config/env port but delegate the actual bind +
|
|
330
|
+
// auto-bump to Vite's own preview server. Starting the holding
|
|
331
|
+
// server in preview mode would self-conflict because the dev
|
|
332
|
+
// plugin's `configureServer` handoff does not run for preview;
|
|
333
|
+
// the holding server would keep the port occupied while Vite's
|
|
334
|
+
// preview tried to bind the same port.
|
|
363
335
|
//
|
|
364
|
-
//
|
|
365
|
-
|
|
366
|
-
|
|
336
|
+
// See design/21-dev-server.md §"Default Port and Auto-Bump".
|
|
337
|
+
let resolvedDevPort: number | null = null;
|
|
338
|
+
let resolvedDevPortExplicit = false;
|
|
339
|
+
// Middleware-mode embeddings (the analyze crawl, custom servers)
|
|
340
|
+
// never bind a port, and the dev-server plugin's listen() handoff
|
|
341
|
+
// that closes the holding server never runs — starting it would
|
|
342
|
+
// occupy the default port for the embedding's lifetime.
|
|
343
|
+
const isMiddlewareMode = Boolean(userConfig.server?.middlewareMode);
|
|
344
|
+
// Resolve the host Vite will bind so the holding server probes the
|
|
345
|
+
// same address. Vite defaults to 'localhost' when server.host is
|
|
346
|
+
// unset; binding wildcard (no host) would mask conflicts on
|
|
347
|
+
// localhost due to SO_REUSEADDR address-family differences. TIM-1419.
|
|
348
|
+
const resolvedHost =
|
|
349
|
+
typeof userConfig.server?.host === 'string'
|
|
350
|
+
? userConfig.server.host
|
|
351
|
+
: userConfig.server?.host === true
|
|
352
|
+
? undefined
|
|
353
|
+
: 'localhost';
|
|
354
|
+
if (command === 'serve' && !isPreview && !isMiddlewareMode) {
|
|
355
|
+
const start = resolveStartPort({
|
|
356
|
+
configPort: userConfig.server?.port,
|
|
357
|
+
envPort: process.env.PORT,
|
|
358
|
+
});
|
|
359
|
+
// Vite owns port selection and remembers its bound port on restart.
|
|
360
|
+
// Never forward a probed/bumped port: replacement config runs while
|
|
361
|
+
// the old listener still owns the port. The holding page is optional.
|
|
362
|
+
resolvedDevPort = start.port;
|
|
363
|
+
resolvedDevPortExplicit = userConfig.server?.strictPort ?? false;
|
|
364
|
+
if (start.port !== 0) {
|
|
365
|
+
ctx.holdingServer = createHoldingServer();
|
|
366
|
+
await ctx.holdingServer.listen(start.port, resolvedHost).catch(() => {
|
|
367
|
+
ctx.holdingServer = null;
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
} else if (command === 'serve' && isPreview) {
|
|
371
|
+
// Preview mode: resolve the starting port from config/env/
|
|
372
|
+
// default but do NOT probe. Vite's preview server handles the
|
|
373
|
+
// bind itself, with `preview.strictPort` controlling whether
|
|
374
|
+
// an in-use port auto-bumps (implicit) or errors (explicit).
|
|
375
|
+
const previewConfigPort =
|
|
376
|
+
typeof userConfig.preview?.port === 'number'
|
|
377
|
+
? userConfig.preview.port
|
|
378
|
+
: typeof userConfig.server?.port === 'number'
|
|
379
|
+
? userConfig.server.port
|
|
380
|
+
: undefined;
|
|
381
|
+
const start = resolveStartPort({
|
|
382
|
+
configPort: previewConfigPort,
|
|
383
|
+
envPort: process.env.PORT,
|
|
384
|
+
});
|
|
385
|
+
resolvedDevPort = start.port;
|
|
386
|
+
resolvedDevPortExplicit = start.explicit;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// Derive relative buildOutDir from the absolute buildDir (set above)
|
|
390
|
+
// so Vite's config receives a root-relative path.
|
|
391
|
+
const buildOutDir = relative(resolvedRoot, buildDir);
|
|
392
|
+
|
|
393
|
+
// Set per-environment build.outDir so Vite's RSC plugin writes
|
|
394
|
+
// each environment to the correct subdirectory under our buildDir.
|
|
395
|
+
// Without this, the RSC plugin defaults to dist/<envName> instead
|
|
396
|
+
// of <buildOutDir>/<envName>.
|
|
397
|
+
const envOutDirs: Record<string, { build: { outDir: string } }> = {};
|
|
398
|
+
for (const envName of ['rsc', 'ssr', 'client']) {
|
|
399
|
+
envOutDirs[envName] = { build: { outDir: join(buildOutDir, envName) } };
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
// Exclude @timber-js/app packages from the dep optimizer.
|
|
403
|
+
// The shims plugin intercepts @timber-js/app/* imports per-environment
|
|
404
|
+
// (e.g. replacing @timber-js/app/server with a stub in the client env).
|
|
405
|
+
// The dep optimizer runs before per-environment resolution, so it would
|
|
406
|
+
// pre-bundle @timber-js/app/cookies with the real server code inlined,
|
|
407
|
+
// pulling AsyncLocalStorage into the browser bundle.
|
|
408
|
+
const timberOptimizeDepsExclude = [
|
|
409
|
+
'@timber-js/app',
|
|
410
|
+
'@timber-js/app/server',
|
|
411
|
+
'@timber-js/app/client',
|
|
412
|
+
'@timber-js/app/cookies',
|
|
413
|
+
'@timber-js/app/cache',
|
|
414
|
+
'@timber-js/app/search-params',
|
|
415
|
+
'@timber-js/app/params',
|
|
416
|
+
'@timber-js/app/codec',
|
|
417
|
+
];
|
|
418
|
+
|
|
367
419
|
if (command === 'build') {
|
|
368
420
|
return {
|
|
421
|
+
build: { outDir: buildOutDir },
|
|
422
|
+
environments: envOutDirs,
|
|
423
|
+
optimizeDeps: { exclude: timberOptimizeDepsExclude },
|
|
369
424
|
oxc: {
|
|
370
425
|
jsx: {
|
|
371
426
|
development: false,
|
|
@@ -373,11 +428,83 @@ export function timber(config?: TimberUserConfig): PluginOption[] {
|
|
|
373
428
|
},
|
|
374
429
|
};
|
|
375
430
|
}
|
|
431
|
+
|
|
432
|
+
// Dev/preview mode: set outDir so dev-time references are
|
|
433
|
+
// consistent, and surface the resolved port to Vite.
|
|
434
|
+
//
|
|
435
|
+
// Dev auto-bumps unless the user sets server.strictPort.
|
|
436
|
+
// Always forward the requested port so Vite can recognize unchanged
|
|
437
|
+
// config and reuse its actual bound port across restarts (TIM-1456).
|
|
438
|
+
//
|
|
439
|
+
// For `vite preview`, we set `preview.strictPort` based on
|
|
440
|
+
// whether the user explicitly set the port. Implicit (default)
|
|
441
|
+
// preview uses strictPort: false so Vite's preview server can
|
|
442
|
+
// auto-bump from 3000. Explicit preview uses strictPort: true
|
|
443
|
+
// so conflicts fail loudly, matching the dev behavior and the
|
|
444
|
+
// TIM-842 spec.
|
|
445
|
+
const serverConfig: {
|
|
446
|
+
port?: number;
|
|
447
|
+
strictPort?: boolean;
|
|
448
|
+
forwardConsole?: boolean | { unhandledErrors?: boolean; logLevels?: string[] };
|
|
449
|
+
} = {};
|
|
450
|
+
const previewConfig: { port?: number; strictPort?: boolean } = {};
|
|
451
|
+
if (resolvedDevPort != null) {
|
|
452
|
+
if (!isPreview) {
|
|
453
|
+
serverConfig.port = resolvedDevPort;
|
|
454
|
+
serverConfig.strictPort = resolvedDevPortExplicit;
|
|
455
|
+
}
|
|
456
|
+
previewConfig.port = resolvedDevPort;
|
|
457
|
+
previewConfig.strictPort = resolvedDevPortExplicit;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// Enable Vite 8's built-in browser→terminal console forwarding.
|
|
461
|
+
// Vite defaults this OFF for non-agent dev; timber enables it based
|
|
462
|
+
// on the devBrowserLogs config (default: 'warn'). See TIM-1152.
|
|
463
|
+
serverConfig.forwardConsole = resolveForwardConsole(ctx.config.devBrowserLogs);
|
|
464
|
+
|
|
465
|
+
// Provide a customLogger whose output routes through the pre-patched
|
|
466
|
+
// console methods so Vite's forwardConsole output never re-enters our
|
|
467
|
+
// server→browser patch. If the user supplied their own customLogger,
|
|
468
|
+
// wrap it so its console calls also bypass patching.
|
|
469
|
+
const customLogger = userConfig.customLogger
|
|
470
|
+
? wrapLoggerWithOriginalConsole(userConfig.customLogger)
|
|
471
|
+
: createLogger(userConfig.logLevel ?? 'info', {
|
|
472
|
+
allowClearScreen: userConfig.clearScreen ?? true,
|
|
473
|
+
console: originalConsole as Console,
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
return {
|
|
477
|
+
build: { outDir: buildOutDir },
|
|
478
|
+
environments: envOutDirs,
|
|
479
|
+
optimizeDeps: { exclude: timberOptimizeDepsExclude },
|
|
480
|
+
customLogger,
|
|
481
|
+
server: serverConfig,
|
|
482
|
+
preview: previewConfig,
|
|
483
|
+
};
|
|
376
484
|
},
|
|
377
485
|
configResolved(resolved) {
|
|
378
486
|
ctx.root = resolved.root;
|
|
379
487
|
ctx.appDir = resolveAppDir(resolved.root, ctx.config.appDir);
|
|
380
488
|
ctx.dev = resolved.command === 'serve';
|
|
489
|
+
// Vite's resolved base — the deployment path prefix. Captured once
|
|
490
|
+
// here so every sub-plugin that emits a URL (assets, fonts, RSC
|
|
491
|
+
// payloads) reads the same value. See TIM-1261.
|
|
492
|
+
ctx.base = resolved.base;
|
|
493
|
+
|
|
494
|
+
// timber.config.* files are NOT registered as configFileDependencies.
|
|
495
|
+
// Vite's in-process restart cannot bust Node's require cache for ESM
|
|
496
|
+
// modules loaded via require(), so the restarted server would serve
|
|
497
|
+
// stale config. Instead, timber-dev-server watches these files and
|
|
498
|
+
// calls process.exit(RESTART_EXIT_CODE) so the CLI supervisor
|
|
499
|
+
// respawns a fresh process. See TIM-1444.
|
|
500
|
+
// The watcher.add() call in dev-server.ts ensures the files are
|
|
501
|
+
// watched even if created after server start.
|
|
502
|
+
|
|
503
|
+
// The build directory is what Vite resolved build.outDir to — the
|
|
504
|
+
// config hook's value after every other plugin and the user config had
|
|
505
|
+
// their say. Vite keeps outDir as-is (may be relative), so resolve
|
|
506
|
+
// against root.
|
|
507
|
+
ctx.buildDir = resolve(resolved.root, resolved.build.outDir);
|
|
381
508
|
// In production builds, swap to a no-op timer to avoid overhead
|
|
382
509
|
if (!ctx.dev) {
|
|
383
510
|
ctx.timer = createNoopTimer();
|
|
@@ -385,19 +512,33 @@ export function timber(config?: TimberUserConfig): PluginOption[] {
|
|
|
385
512
|
// Start the overall dev server setup timer — ends in timber-dev-server
|
|
386
513
|
ctx.timer.start('dev-server-setup');
|
|
387
514
|
}
|
|
515
|
+
|
|
516
|
+
// Validate config and check peer dependencies at startup. Most errors
|
|
517
|
+
// are logged and don't block startup; fatal ones (a security setting
|
|
518
|
+
// that would not mean what it says) stop it. See reportConfigErrors.
|
|
519
|
+
reportConfigErrors(validateConfig(ctx.config));
|
|
520
|
+
|
|
521
|
+
const peerResults = checkPeerDependencies(ctx.root);
|
|
522
|
+
const peerWarning = formatMissingPeers(peerResults);
|
|
523
|
+
if (peerWarning) {
|
|
524
|
+
process.stderr.write(`${peerWarning}\n\n`);
|
|
525
|
+
}
|
|
388
526
|
},
|
|
389
527
|
};
|
|
528
|
+
|
|
529
|
+
// ── Step 5: Resolve React Compiler config ───────────────────────────
|
|
530
|
+
// Inline config takes precedence. File config (from the early cwd-based
|
|
531
|
+
// load) is used when inline config doesn't set reactCompiler.
|
|
532
|
+
// Default: true — oxc-transform-react is a direct dependency.
|
|
533
|
+
const effectiveReactCompiler = config?.reactCompiler ?? earlyFileConfig?.reactCompiler ?? true;
|
|
534
|
+
|
|
535
|
+
// ── Step 6: Assemble plugin array ─────────────────────────────────────
|
|
390
536
|
// @vitejs/plugin-rsc handles:
|
|
391
537
|
// - RSC/SSR/client environment setup
|
|
392
538
|
// - "use client" directive → client reference proxy transformation
|
|
393
539
|
// - "use server" directive → server reference transformation
|
|
394
540
|
// - Client reference tracking and module map generation
|
|
395
541
|
//
|
|
396
|
-
// Loaded via dynamic import() because @vitejs/plugin-rsc is ESM-only.
|
|
397
|
-
// Vite's config loader uses esbuild to transpile to CJS, which breaks
|
|
398
|
-
// static imports of ESM-only packages. The dynamic import() is preserved
|
|
399
|
-
// by esbuild and runs natively in ESM at runtime.
|
|
400
|
-
//
|
|
401
542
|
// serverHandler: false — timber has its own dev server (timber-dev-server)
|
|
402
543
|
// entries — tells the RSC plugin about timber's virtual entry modules so
|
|
403
544
|
// it correctly wires up the browser entry (needed for React Fast Refresh
|
|
@@ -410,75 +551,48 @@ export function timber(config?: TimberUserConfig): PluginOption[] {
|
|
|
410
551
|
// We do NOT set customBuildApp — the RSC plugin's orchestration is correct
|
|
411
552
|
// and handles bundle ordering, asset manifest generation, and environment
|
|
412
553
|
// imports manifest. See @vitejs/plugin-rsc's buildApp implementation.
|
|
413
|
-
//
|
|
414
|
-
//
|
|
415
|
-
//
|
|
416
|
-
//
|
|
417
|
-
|
|
418
|
-
const
|
|
419
|
-
ctx
|
|
420
|
-
const
|
|
421
|
-
({ default: vitePluginRsc }) => {
|
|
422
|
-
ctx.timer.end('rsc-plugin-import');
|
|
423
|
-
return vitePluginRsc({
|
|
424
|
-
serverHandler: false,
|
|
425
|
-
customClientEntry: true,
|
|
426
|
-
entries: {
|
|
427
|
-
rsc: 'virtual:timber-rsc-entry',
|
|
428
|
-
ssr: 'virtual:timber-ssr-entry',
|
|
429
|
-
client: 'virtual:timber-browser-entry',
|
|
430
|
-
},
|
|
431
|
-
// Group all client reference wrappers into a single chunk instead of
|
|
432
|
-
// creating one tiny file per "use client" module. Without this, each
|
|
433
|
-
// server chunk's client references become a separate entry point,
|
|
434
|
-
// producing many sub-500B wrapper files (e.g., 30-byte re-exports).
|
|
435
|
-
// A single group eliminates 10+ unnecessary HTTP requests.
|
|
436
|
-
// See design/27-chunking-strategy.md and TIM-440.
|
|
437
|
-
clientChunks: () => 'client-refs',
|
|
438
|
-
});
|
|
439
|
-
}
|
|
440
|
-
);
|
|
441
|
-
|
|
554
|
+
//
|
|
555
|
+
// Everything after it runs in timber-post-build, in the order that plugin
|
|
556
|
+
// states. The plugins that own a post-build step expose it as their `api`
|
|
557
|
+
// and are handed to it here, so no step's order depends on where a plugin
|
|
558
|
+
// sits in this array. See design/18-build-system.md §"Post-Build Phase".
|
|
559
|
+
const fonts = timberFonts(ctx);
|
|
560
|
+
const prebuilt = timberPrebuilt(ctx);
|
|
561
|
+
const buildReport = timberBuildReport(ctx);
|
|
442
562
|
return [
|
|
443
563
|
rootSync,
|
|
564
|
+
timberReactResolve(),
|
|
444
565
|
timberReactProd(),
|
|
445
566
|
// @vitejs/plugin-react provides React Fast Refresh (state-preserving HMR)
|
|
446
567
|
// for client components via Babel transform. Placed before @vitejs/plugin-rsc
|
|
447
568
|
// following Vinext's convention — the RSC plugin's virtual browser entry
|
|
448
569
|
// coordinates with plugin-react via __vite_plugin_react_preamble_installed__.
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
570
|
+
...patchReactCompilerForProdJsx(
|
|
571
|
+
react({
|
|
572
|
+
compiler: (effectiveReactCompiler || false) as boolean | ReactCompilerOptions,
|
|
573
|
+
})
|
|
574
|
+
),
|
|
575
|
+
vitePluginRsc(createRscOptions(ctx, encryptionKeyExpr)),
|
|
452
576
|
timberShims(ctx),
|
|
453
577
|
timberRouting(ctx),
|
|
454
578
|
timberEntries(ctx),
|
|
455
579
|
timberBuildManifest(ctx),
|
|
456
|
-
|
|
457
|
-
timberStaticBuild(ctx),
|
|
458
|
-
timberDynamicTransform(ctx),
|
|
459
|
-
timberFonts(ctx),
|
|
580
|
+
fonts,
|
|
460
581
|
timberMdx(ctx),
|
|
582
|
+
timberRequestDep(ctx),
|
|
583
|
+
timberCacheTransform(ctx),
|
|
584
|
+
timberPrerenderSugar(ctx), // export const prerender → cache.component() desugaring
|
|
585
|
+
prebuilt, // cache.component() → __prebuilt() callsite rewrite
|
|
586
|
+
timberStaticBuild(ctx), // Static mode: validate dynamic API usage
|
|
461
587
|
timberContent(ctx),
|
|
462
588
|
timberServerBundle(), // Bundle all deps in server environments for prod
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
589
|
+
timberCloudflareWasm(ctx), // Externalize WASM for Cloudflare Workers
|
|
590
|
+
timberChunks(ctx),
|
|
591
|
+
buildReport, // Route table with bundle sizes, printed by timber-post-build
|
|
592
|
+
timberPostBuild(ctx, { fonts: fonts.api, prebuilt: prebuilt.api, report: buildReport.api }),
|
|
466
593
|
timberDevLogs(ctx), // Dev-only: forward server console.* to browser console
|
|
467
594
|
timberDevServer(ctx), // Must be last — configureServer post-hook runs after all watchers
|
|
468
595
|
];
|
|
469
596
|
}
|
|
470
597
|
|
|
471
|
-
/**
|
|
472
|
-
* Route map interface — augmented by the generated timber-routes.d.ts.
|
|
473
|
-
*
|
|
474
|
-
* Each key is a route path pattern. Values have:
|
|
475
|
-
* params: shape of URL params (e.g. { id: string })
|
|
476
|
-
* searchParams: parsed type from search-params.ts, or {} if none
|
|
477
|
-
*
|
|
478
|
-
* This interface is empty by default and populated via codegen.
|
|
479
|
-
* See design/09-typescript.md §"Typed Routes".
|
|
480
|
-
*/
|
|
481
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
482
|
-
export interface Routes {}
|
|
483
|
-
|
|
484
598
|
export default timber;
|