@timber-js/app 0.2.0-alpha.21 → 0.2.0-alpha.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -0
- package/agent-skill.md +346 -0
- package/bin/timber.mjs +15 -1
- package/dist/_chunks/actions-Rjk4htmA.js +1199 -0
- package/dist/_chunks/actions-Rjk4htmA.js.map +1 -0
- package/dist/_chunks/als-registry-DaxkVjt5.js +45 -0
- package/dist/_chunks/als-registry-DaxkVjt5.js.map +1 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
- package/dist/_chunks/base-path-DaQrzbez.js +80 -0
- package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
- package/dist/_chunks/build-manifest-DWppEdLB.js +86 -0
- package/dist/_chunks/build-manifest-DWppEdLB.js.map +1 -0
- package/dist/_chunks/build-output-helper-RV_BRcF1.js +367 -0
- package/dist/_chunks/build-output-helper-RV_BRcF1.js.map +1 -0
- package/dist/_chunks/cache-api-DGdYfNJn.js +1182 -0
- package/dist/_chunks/cache-api-DGdYfNJn.js.map +1 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
- package/dist/_chunks/chains-DGX9zmg9.js +272 -0
- package/dist/_chunks/chains-DGX9zmg9.js.map +1 -0
- package/dist/_chunks/classify-QwG5rxKI.js +147 -0
- package/dist/_chunks/classify-QwG5rxKI.js.map +1 -0
- package/dist/_chunks/cli-check-ajNY3B2e.js +252 -0
- package/dist/_chunks/cli-check-ajNY3B2e.js.map +1 -0
- package/dist/_chunks/cli-context-By7k2xVo.js +70 -0
- package/dist/_chunks/cli-context-By7k2xVo.js.map +1 -0
- package/dist/_chunks/cli-schema-sync-D2eI8jEg.js +299 -0
- package/dist/_chunks/cli-schema-sync-D2eI8jEg.js.map +1 -0
- package/dist/_chunks/client-dep-entries-2HCF09no.js +66 -0
- package/dist/_chunks/client-dep-entries-2HCF09no.js.map +1 -0
- package/dist/_chunks/cloudflare-Byxl8FWP.js +1333 -0
- package/dist/_chunks/cloudflare-Byxl8FWP.js.map +1 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
- package/dist/_chunks/codegen-Bps1sLKJ.js +432 -0
- package/dist/_chunks/codegen-Bps1sLKJ.js.map +1 -0
- package/dist/_chunks/convention-lint-DLmhGsRS.js +590 -0
- package/dist/_chunks/convention-lint-DLmhGsRS.js.map +1 -0
- package/dist/_chunks/dev-server-TFpEwm3H.js +2039 -0
- package/dist/_chunks/dev-server-TFpEwm3H.js.map +1 -0
- package/dist/_chunks/dist-DtrJyBbw.js +386 -0
- package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
- package/dist/_chunks/error-boundary-DsNScGRM.js +1024 -0
- package/dist/_chunks/error-boundary-DsNScGRM.js.map +1 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
- package/dist/_chunks/format-BKclgVbk.js +14 -0
- package/dist/_chunks/format-BKclgVbk.js.map +1 -0
- package/dist/_chunks/fs-identity-BRKuL215.js +207 -0
- package/dist/_chunks/fs-identity-BRKuL215.js.map +1 -0
- package/dist/_chunks/graph-cache-CYiUS2aS.js +303 -0
- package/dist/_chunks/graph-cache-CYiUS2aS.js.map +1 -0
- package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
- package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
- package/dist/_chunks/json-lossy-check-CVuRs2hG.js +66 -0
- package/dist/_chunks/json-lossy-check-CVuRs2hG.js.map +1 -0
- package/dist/_chunks/live-graph-cNuWMYQI.js +151 -0
- package/dist/_chunks/live-graph-cNuWMYQI.js.map +1 -0
- package/dist/_chunks/logger-BP0LN6vP.js +662 -0
- package/dist/_chunks/logger-BP0LN6vP.js.map +1 -0
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DSDjM_hJ.js} +71 -27
- package/dist/_chunks/metadata-routes-DSDjM_hJ.js.map +1 -0
- package/dist/_chunks/navigation-root-BQfo1-kG.js +126 -0
- package/dist/_chunks/navigation-root-BQfo1-kG.js.map +1 -0
- package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
- package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
- package/dist/_chunks/plugin-context-BPBPc3lL.js +345 -0
- package/dist/_chunks/plugin-context-BPBPc3lL.js.map +1 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
- package/dist/_chunks/poison-scan-CfQ3unZR.js +99 -0
- package/dist/_chunks/poison-scan-CfQ3unZR.js.map +1 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
- package/dist/_chunks/render-timeout-DOf_BBcO.js +46 -0
- package/dist/_chunks/render-timeout-DOf_BBcO.js.map +1 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
- package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
- package/dist/_chunks/rsc-payload-path-dffcs4jp.js +54 -0
- package/dist/_chunks/rsc-payload-path-dffcs4jp.js.map +1 -0
- package/dist/_chunks/scan-BoP17W3w.js +140 -0
- package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
- package/dist/_chunks/scanner-DmqdxzbW.js +2056 -0
- package/dist/_chunks/scanner-DmqdxzbW.js.map +1 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
- package/dist/_chunks/segment-context-xtPUGfdq.js +137 -0
- package/dist/_chunks/segment-context-xtPUGfdq.js.map +1 -0
- package/dist/_chunks/segment-keys-D5hu1hz4.js +62 -0
- package/dist/_chunks/segment-keys-D5hu1hz4.js.map +1 -0
- package/dist/_chunks/singleflight-BeVMMKi0.js +55 -0
- package/dist/_chunks/singleflight-BeVMMKi0.js.map +1 -0
- package/dist/_chunks/sizeof-BM1409x2.js +36 -0
- package/dist/_chunks/sizeof-BM1409x2.js.map +1 -0
- package/dist/_chunks/ssr-data-nA3I70_n.js +49 -0
- package/dist/_chunks/ssr-data-nA3I70_n.js.map +1 -0
- package/dist/_chunks/state-BhNGPsdi.js +50 -0
- package/dist/_chunks/state-BhNGPsdi.js.map +1 -0
- package/dist/_chunks/status-page-marker-BRX9Ib-d.js +564 -0
- package/dist/_chunks/status-page-marker-BRX9Ib-d.js.map +1 -0
- package/dist/_chunks/tree-match-6yihorhk.js +169 -0
- package/dist/_chunks/tree-match-6yihorhk.js.map +1 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
- package/dist/_chunks/walkers-Czu2jXFq.js +144 -0
- package/dist/_chunks/walkers-Czu2jXFq.js.map +1 -0
- package/dist/_chunks/write-file-atomic-D1qWqHb4.js +32 -0
- package/dist/_chunks/write-file-atomic-D1qWqHb4.js.map +1 -0
- package/dist/adapters/build-output-helper.d.ts +72 -0
- package/dist/adapters/build-output-helper.d.ts.map +1 -0
- package/dist/adapters/canonicalize-module.d.ts +8 -0
- package/dist/adapters/canonicalize-module.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.d.ts +109 -0
- package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +74 -0
- package/dist/adapters/cloudflare-dev.js.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.js +123 -0
- package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +224 -24
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +2 -188
- package/dist/adapters/compress-module.d.ts +25 -4
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/fs-identity.d.ts +63 -0
- package/dist/adapters/fs-identity.d.ts.map +1 -0
- package/dist/adapters/nitro-presets.d.ts +31 -0
- package/dist/adapters/nitro-presets.d.ts.map +1 -0
- package/dist/adapters/nitro-preview.d.ts +64 -0
- package/dist/adapters/nitro-preview.d.ts.map +1 -0
- package/dist/adapters/nitro.d.ts +54 -37
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +631 -359
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +67 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/adapters/types.d.ts +122 -16
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js +0 -0
- package/dist/analyze/chains.d.ts +124 -0
- package/dist/analyze/chains.d.ts.map +1 -0
- package/dist/analyze/classify.d.ts +153 -0
- package/dist/analyze/classify.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.d.ts +17 -0
- package/dist/analyze/crawl-entry.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.js +314 -0
- package/dist/analyze/crawl-entry.js.map +1 -0
- package/dist/analyze/crawl.d.ts +134 -0
- package/dist/analyze/crawl.d.ts.map +1 -0
- package/dist/analyze/graph-cache.d.ts +104 -0
- package/dist/analyze/graph-cache.d.ts.map +1 -0
- package/dist/analyze/graph-command.d.ts +43 -0
- package/dist/analyze/graph-command.d.ts.map +1 -0
- package/dist/analyze/graph-command.js +472 -0
- package/dist/analyze/graph-command.js.map +1 -0
- package/dist/analyze/live-graph.d.ts +81 -0
- package/dist/analyze/live-graph.d.ts.map +1 -0
- package/dist/analyze/poison-rules.d.ts +72 -0
- package/dist/analyze/poison-rules.d.ts.map +1 -0
- package/dist/analyze/poison-scan.d.ts +48 -0
- package/dist/analyze/poison-scan.d.ts.map +1 -0
- package/dist/analyze/scan.d.ts +73 -0
- package/dist/analyze/scan.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +48 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/fast-hash.d.ts +5 -0
- package/dist/cache/fast-hash.d.ts.map +1 -1
- package/dist/cache/handler-store.d.ts +33 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +32 -9
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +3 -326
- package/dist/cache/invalidation-epoch.d.ts +43 -0
- package/dist/cache/invalidation-epoch.d.ts.map +1 -0
- package/dist/cache/json-lossy-check.d.ts +11 -0
- package/dist/cache/json-lossy-check.d.ts.map +1 -0
- package/dist/cache/redis-handler.d.ts +141 -9
- package/dist/cache/redis-handler.d.ts.map +1 -1
- package/dist/cache/singleflight.d.ts +21 -2
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/stable-stringify.d.ts +9 -0
- package/dist/cache/stable-stringify.d.ts.map +1 -1
- package/dist/cache/store.d.ts +53 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
- package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.js +29 -0
- package/dist/cache/stores/cloudflare-kv.js.map +1 -0
- package/dist/cache/stores/memory.d.ts +42 -0
- package/dist/cache/stores/memory.d.ts.map +1 -0
- package/dist/cache/stores/memory.js +90 -0
- package/dist/cache/stores/memory.js.map +1 -0
- package/dist/cache/stores/redis.d.ts +69 -0
- package/dist/cache/stores/redis.d.ts.map +1 -0
- package/dist/cache/stores/redis.js +35 -0
- package/dist/cache/stores/redis.js.map +1 -0
- package/dist/cache/stores/vercel.d.ts +36 -0
- package/dist/cache/stores/vercel.d.ts.map +1 -0
- package/dist/cache/stores/vercel.js +33 -0
- package/dist/cache/stores/vercel.js.map +1 -0
- package/dist/cache/tag-aware-handler.d.ts +52 -0
- package/dist/cache/tag-aware-handler.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +21 -11
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cdn/cloudflare-purge.d.ts +23 -0
- package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
- package/dist/cdn/cloudflare-purge.js +30 -0
- package/dist/cdn/cloudflare-purge.js.map +1 -0
- package/dist/cdn/fastly-purge.d.ts +25 -0
- package/dist/cdn/fastly-purge.d.ts.map +1 -0
- package/dist/cdn/fastly-purge.js +33 -0
- package/dist/cdn/fastly-purge.js.map +1 -0
- package/dist/cdn/headers.d.ts +97 -0
- package/dist/cdn/headers.d.ts.map +1 -0
- package/dist/cdn/index.d.ts +5 -0
- package/dist/cdn/index.d.ts.map +1 -0
- package/dist/cdn/index.js +94 -0
- package/dist/cdn/index.js.map +1 -0
- package/dist/cdn/purge-store.d.ts +23 -0
- package/dist/cdn/purge-store.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.d.ts +20 -0
- package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.js +35 -0
- package/dist/cdn/workers-cache-purge.js.map +1 -0
- package/dist/cli-check.d.ts +133 -0
- package/dist/cli-check.d.ts.map +1 -0
- package/dist/cli-context.d.ts +54 -0
- package/dist/cli-context.d.ts.map +1 -0
- package/dist/cli-schema-sync.d.ts +59 -0
- package/dist/cli-schema-sync.d.ts.map +1 -0
- package/dist/cli.d.ts +85 -13
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +224 -63
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +42 -2
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/action-queue.d.ts +63 -0
- package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +53 -0
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
- package/dist/client/browser-entry/index.d.ts +30 -0
- package/dist/client/browser-entry/index.d.ts.map +1 -0
- package/dist/client/browser-entry/post-hydration.d.ts +26 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +41 -0
- package/dist/client/browser-entry/router-init.d.ts.map +1 -0
- package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
- package/dist/client/browser-entry/scroll.d.ts +28 -0
- package/dist/client/browser-entry/scroll.d.ts.map +1 -0
- package/dist/client/deny-last-resort.d.ts +29 -0
- package/dist/client/deny-last-resort.d.ts.map +1 -0
- package/dist/client/error-boundary.d.ts +58 -9
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +2 -126
- package/dist/client/error-reconstituter.d.ts +55 -0
- package/dist/client/error-reconstituter.d.ts.map +1 -0
- package/dist/client/form.d.ts +16 -27
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/global-context.d.ts +15 -0
- package/dist/client/global-context.d.ts.map +1 -0
- package/dist/client/history.d.ts +50 -9
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +20 -33
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +330 -1150
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +20 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +792 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link.d.ts +85 -60
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/location-search.d.ts +12 -0
- package/dist/client/location-search.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts +133 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-commit.d.ts +111 -0
- package/dist/client/navigation-commit.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +54 -36
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/navigation-root.d.ts +106 -0
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/navigation-transition.d.ts +192 -0
- package/dist/client/navigation-transition.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts +1 -1
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/params-context.d.ts +81 -0
- package/dist/client/params-context.d.ts.map +1 -0
- package/dist/client/react-root.d.ts +45 -0
- package/dist/client/react-root.d.ts.map +1 -0
- package/dist/client/router-effects.d.ts +137 -0
- package/dist/client/router-effects.d.ts.map +1 -0
- package/dist/client/router-lifecycle.d.ts +98 -0
- package/dist/client/router-lifecycle.d.ts.map +1 -0
- package/dist/client/router-pipeline.d.ts +84 -0
- package/dist/client/router-pipeline.d.ts.map +1 -0
- package/dist/client/router-ref.d.ts +2 -2
- package/dist/client/router-ref.d.ts.map +1 -1
- package/dist/client/router-skew.d.ts +21 -0
- package/dist/client/router-skew.d.ts.map +1 -0
- package/dist/client/router-types.d.ts +334 -0
- package/dist/client/router-types.d.ts.map +1 -0
- package/dist/client/router-url.d.ts +24 -0
- package/dist/client/router-url.d.ts.map +1 -0
- package/dist/client/router.d.ts +1 -97
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +110 -28
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +186 -25
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +68 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/segment-update-context.d.ts +15 -0
- package/dist/client/segment-update-context.d.ts.map +1 -0
- package/dist/client/shallow-url.d.ts +10 -0
- package/dist/client/shallow-url.d.ts.map +1 -0
- package/dist/client/slot-content-cache-context.d.ts +35 -0
- package/dist/client/slot-content-cache-context.d.ts.map +1 -0
- package/dist/client/slot-context.d.ts +31 -0
- package/dist/client/slot-context.d.ts.map +1 -0
- package/dist/client/slot-outlet.d.ts +16 -0
- package/dist/client/slot-outlet.d.ts.map +1 -0
- package/dist/client/slot-provider.d.ts +25 -0
- package/dist/client/slot-provider.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +26 -50
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/stale-client.d.ts +69 -0
- package/dist/client/stale-client.d.ts.map +1 -0
- package/dist/client/state.d.ts +21 -13
- package/dist/client/state.d.ts.map +1 -1
- package/dist/client/status-page-marker.d.ts +25 -0
- package/dist/client/status-page-marker.d.ts.map +1 -0
- package/dist/client/top-loader.d.ts +7 -6
- package/dist/client/top-loader.d.ts.map +1 -1
- package/dist/client/unload-guard.d.ts +5 -0
- package/dist/client/unload-guard.d.ts.map +1 -1
- package/dist/client/use-cookie.d.ts +12 -0
- package/dist/client/use-cookie.d.ts.map +1 -1
- package/dist/client/use-link-status.d.ts +5 -5
- package/dist/client/use-link-status.d.ts.map +1 -1
- package/dist/client/use-pathname.d.ts +13 -11
- package/dist/client/use-pathname.d.ts.map +1 -1
- package/dist/client/use-pending-navigation.d.ts +23 -0
- package/dist/client/use-pending-navigation.d.ts.map +1 -0
- package/dist/client/use-query-states.d.ts +10 -4
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/client/use-router.d.ts +15 -8
- package/dist/client/use-router.d.ts.map +1 -1
- package/dist/client/use-search-params.d.ts +15 -8
- package/dist/client/use-search-params.d.ts.map +1 -1
- package/dist/client/use-segment-params.d.ts +55 -0
- package/dist/client/use-segment-params.d.ts.map +1 -0
- package/dist/codec.d.ts +69 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +76 -0
- package/dist/codec.js.map +1 -0
- package/dist/config-types.d.ts +323 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +68 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/cookies/define-cookie.d.ts +58 -25
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.d.ts +3 -2
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/index.js +256 -36
- package/dist/cookies/index.js.map +1 -1
- package/dist/cookies/json-cookie.d.ts +64 -0
- package/dist/cookies/json-cookie.d.ts.map +1 -0
- package/dist/cookies/validation.d.ts +34 -0
- package/dist/cookies/validation.d.ts.map +1 -0
- package/dist/dev-tools/404-page.d.ts +50 -0
- package/dist/dev-tools/404-page.d.ts.map +1 -0
- package/dist/dev-tools/browser-logs.d.ts +40 -0
- package/dist/dev-tools/browser-logs.d.ts.map +1 -0
- package/dist/dev-tools/dev-page-shell.d.ts +95 -0
- package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
- package/dist/dev-tools/error-page.d.ts +32 -0
- package/dist/dev-tools/error-page.d.ts.map +1 -0
- package/dist/dev-tools/holding-server.d.ts +46 -0
- package/dist/dev-tools/holding-server.d.ts.map +1 -0
- package/dist/dev-tools/hydration-overlay.d.ts +11 -0
- package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
- package/dist/dev-tools/index.d.ts +31 -0
- package/dist/dev-tools/index.d.ts.map +1 -0
- package/dist/dev-tools/instrumentation.d.ts +74 -0
- package/dist/dev-tools/instrumentation.d.ts.map +1 -0
- package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
- package/dist/dev-tools/logger.d.ts.map +1 -0
- package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
- package/dist/dev-tools/logs.d.ts.map +1 -0
- package/dist/{plugins/dev-error-overlay.d.ts → dev-tools/overlay.d.ts} +15 -25
- package/dist/dev-tools/overlay.d.ts.map +1 -0
- package/dist/dev-tools/stack-classifier.d.ts +34 -0
- package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
- package/dist/dev-tools/terminal.d.ts +28 -0
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/fonts/ast-walk.d.ts +68 -0
- package/dist/fonts/ast-walk.d.ts.map +1 -0
- package/dist/fonts/ast.d.ts +112 -8
- package/dist/fonts/ast.d.ts.map +1 -1
- package/dist/fonts/bundle.d.ts +50 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/fallbacks.d.ts +0 -7
- package/dist/fonts/fallbacks.d.ts.map +1 -1
- package/dist/fonts/google.d.ts +5 -3
- package/dist/fonts/google.d.ts.map +1 -1
- package/dist/fonts/local.d.ts +5 -5
- package/dist/fonts/local.d.ts.map +1 -1
- package/dist/fonts/paths.d.ts +43 -0
- package/dist/fonts/paths.d.ts.map +1 -0
- package/dist/fonts/pipeline.d.ts +177 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +82 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +47 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +77 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +35 -181
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8871 -14233
- package/dist/index.js.map +1 -1
- package/dist/params/codec-registry.d.ts +26 -0
- package/dist/params/codec-registry.d.ts.map +1 -0
- package/dist/params/define-schema.d.ts +81 -0
- package/dist/params/define-schema.d.ts.map +1 -0
- package/dist/params/index.d.ts +5 -0
- package/dist/params/index.d.ts.map +1 -0
- package/dist/params/index.js +34 -0
- package/dist/params/index.js.map +1 -0
- package/dist/params/resolve-schema.d.ts +34 -0
- package/dist/params/resolve-schema.d.ts.map +1 -0
- package/dist/plugin-context.d.ts +262 -0
- package/dist/plugin-context.d.ts.map +1 -0
- package/dist/plugins/build-manifest.d.ts +7 -3
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +61 -11
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/cache.d.ts +64 -0
- package/dist/plugins/cache.d.ts.map +1 -0
- package/dist/plugins/callsite-ast.d.ts +117 -0
- package/dist/plugins/callsite-ast.d.ts.map +1 -0
- package/dist/plugins/callsite-jsx.d.ts +35 -0
- package/dist/plugins/callsite-jsx.d.ts.map +1 -0
- package/dist/plugins/chunks.d.ts +11 -4
- package/dist/plugins/chunks.d.ts.map +1 -1
- package/dist/plugins/client-chunks.d.ts +40 -0
- package/dist/plugins/client-chunks.d.ts.map +1 -0
- package/dist/plugins/client-dep-entries.d.ts +44 -0
- package/dist/plugins/client-dep-entries.d.ts.map +1 -0
- package/dist/plugins/cloudflare-wasm.d.ts +21 -0
- package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-discovery.d.ts +123 -0
- package/dist/plugins/dev-discovery.d.ts.map +1 -0
- package/dist/plugins/dev-server.d.ts +24 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +34 -4
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +35 -74
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/graph-endpoint.d.ts +112 -0
- package/dist/plugins/graph-endpoint.d.ts.map +1 -0
- package/dist/plugins/mdx.d.ts +18 -5
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/post-build.d.ts +110 -0
- package/dist/plugins/post-build.d.ts.map +1 -0
- package/dist/plugins/prebuilt-capture.d.ts +67 -0
- package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
- package/dist/plugins/prebuilt.d.ts +98 -0
- package/dist/plugins/prebuilt.d.ts.map +1 -0
- package/dist/plugins/prerender-sugar.d.ts +39 -0
- package/dist/plugins/prerender-sugar.d.ts.map +1 -0
- package/dist/plugins/react-resolve.d.ts +49 -0
- package/dist/plugins/react-resolve.d.ts.map +1 -0
- package/dist/plugins/request-dep/analysis.d.ts +106 -0
- package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
- package/dist/plugins/request-dep/index.d.ts +75 -0
- package/dist/plugins/request-dep/index.d.ts.map +1 -0
- package/dist/plugins/request-dep/origin.d.ts +61 -0
- package/dist/plugins/request-dep/origin.d.ts.map +1 -0
- package/dist/plugins/routing.d.ts +1 -1
- package/dist/plugins/routing.d.ts.map +1 -1
- package/dist/plugins/rsc-assets-manifest.d.ts +33 -0
- package/dist/plugins/rsc-assets-manifest.d.ts.map +1 -0
- package/dist/plugins/server-bundle.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts +29 -5
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +246 -26
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +26 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +61 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen-write.d.ts +42 -0
- package/dist/routing/codegen-write.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +8 -3
- package/dist/routing/codegen.d.ts.map +1 -1
- package/dist/routing/collision-probe.d.ts +104 -0
- package/dist/routing/collision-probe.d.ts.map +1 -0
- package/dist/routing/collision-spaces.d.ts +26 -0
- package/dist/routing/collision-spaces.d.ts.map +1 -0
- package/dist/routing/convention-lint.d.ts +55 -0
- package/dist/routing/convention-lint.d.ts.map +1 -0
- package/dist/routing/export-detect.d.ts +91 -0
- package/dist/routing/export-detect.d.ts.map +1 -0
- package/dist/routing/file-cache.d.ts +8 -0
- package/dist/routing/file-cache.d.ts.map +1 -0
- package/dist/routing/index.d.ts +13 -7
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +5 -2
- package/dist/routing/interception-overlap.d.ts +35 -0
- package/dist/routing/interception-overlap.d.ts.map +1 -0
- package/dist/routing/interception.d.ts +234 -10
- package/dist/routing/interception.d.ts.map +1 -1
- package/dist/routing/link-codegen.d.ts +105 -0
- package/dist/routing/link-codegen.d.ts.map +1 -0
- package/dist/routing/manifest-codegen.d.ts +26 -0
- package/dist/routing/manifest-codegen.d.ts.map +1 -0
- package/dist/routing/scanner.d.ts +14 -10
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/schema-validation.d.ts +35 -0
- package/dist/routing/schema-validation.d.ts.map +1 -0
- package/dist/routing/segment-classify.d.ts +114 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/segment-codegen.d.ts +38 -0
- package/dist/routing/segment-codegen.d.ts.map +1 -0
- package/dist/routing/segment-keys.d.ts +118 -0
- package/dist/routing/segment-keys.d.ts.map +1 -0
- package/dist/routing/slot-placement.d.ts +48 -0
- package/dist/routing/slot-placement.d.ts.map +1 -0
- package/dist/routing/types.d.ts +81 -26
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/routing/walkers.d.ts +57 -0
- package/dist/routing/walkers.d.ts.map +1 -0
- package/dist/rsc-runtime/rsc.d.ts +1 -1
- package/dist/rsc-runtime/rsc.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +14 -0
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/rsc-runtime/transforms.d.ts +13 -0
- package/dist/rsc-runtime/transforms.d.ts.map +1 -0
- package/dist/schema-bridge.d.ts +145 -0
- package/dist/schema-bridge.d.ts.map +1 -0
- package/dist/search-params/define.d.ts +262 -0
- package/dist/search-params/define.d.ts.map +1 -0
- package/dist/search-params/index.d.ts +3 -7
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +179 -360
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/parse-total.d.ts +81 -0
- package/dist/search-params/parse-total.d.ts.map +1 -0
- package/dist/search-params/serialize-equal.d.ts +9 -0
- package/dist/search-params/serialize-equal.d.ts.map +1 -0
- package/dist/search-params/wrappers.d.ts +76 -0
- package/dist/search-params/wrappers.d.ts.map +1 -0
- package/dist/server/access-gate.d.ts +98 -10
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-client.d.ts +44 -9
- package/dist/server/action-client.d.ts.map +1 -1
- package/dist/server/action-encryption.d.ts +76 -0
- package/dist/server/action-encryption.d.ts.map +1 -0
- package/dist/server/action-handler.d.ts +40 -5
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +78 -40
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +166 -16
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/body-limits.d.ts.map +1 -1
- package/dist/server/build-manifest.d.ts +25 -30
- package/dist/server/build-manifest.d.ts.map +1 -1
- package/dist/server/canonicalize.d.ts +10 -0
- package/dist/server/canonicalize.d.ts.map +1 -1
- package/dist/server/chain-url-parts.d.ts +82 -0
- package/dist/server/chain-url-parts.d.ts.map +1 -0
- package/dist/server/children-interception.d.ts +49 -0
- package/dist/server/children-interception.d.ts.map +1 -0
- package/dist/server/coalesce-tick.d.ts +40 -0
- package/dist/server/coalesce-tick.d.ts.map +1 -0
- package/dist/server/compress.d.ts.map +1 -1
- package/dist/server/cookie-context.d.ts +149 -0
- package/dist/server/cookie-context.d.ts.map +1 -0
- package/dist/server/cookie-parsing.d.ts +65 -0
- package/dist/server/cookie-parsing.d.ts.map +1 -0
- package/dist/server/csp-nonce.d.ts +36 -0
- package/dist/server/csp-nonce.d.ts.map +1 -0
- package/dist/server/csrf.d.ts +58 -15
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/debug.d.ts +0 -1
- package/dist/server/debug.d.ts.map +1 -1
- package/dist/server/default-logger.d.ts +23 -0
- package/dist/server/default-logger.d.ts.map +1 -0
- package/dist/server/default-status-page.d.ts +45 -0
- package/dist/server/default-status-page.d.ts.map +1 -0
- package/dist/server/deny-boundary.d.ts +257 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts +21 -15
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/early-hints-sender.d.ts.map +1 -1
- package/dist/server/early-hints.d.ts +14 -12
- package/dist/server/early-hints.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +102 -10
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/error-response-headers.d.ts +3 -0
- package/dist/server/error-response-headers.d.ts.map +1 -0
- package/dist/server/fallback-error.d.ts +19 -7
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/flight-injection-state.d.ts +66 -0
- package/dist/server/flight-injection-state.d.ts.map +1 -0
- package/dist/server/flight-scripts.d.ts +45 -0
- package/dist/server/flight-scripts.d.ts.map +1 -0
- package/dist/server/form-data.d.ts +41 -0
- package/dist/server/form-data.d.ts.map +1 -1
- package/dist/server/form-flash.d.ts +2 -2
- package/dist/server/head-response.d.ts +35 -0
- package/dist/server/head-response.d.ts.map +1 -0
- package/dist/server/html-injector-core.d.ts +257 -0
- package/dist/server/html-injector-core.d.ts.map +1 -0
- package/dist/server/html-injectors.d.ts +84 -42
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +17 -54
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +195 -2922
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts +11 -4
- package/dist/server/instrumentation.d.ts.map +1 -1
- package/dist/server/internal.d.ts +47 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +4645 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/json-status-response.d.ts +34 -0
- package/dist/server/json-status-response.d.ts.map +1 -0
- package/dist/server/logger.d.ts +78 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/metadata-collector.d.ts +73 -0
- package/dist/server/metadata-collector.d.ts.map +1 -0
- package/dist/server/metadata-platform.d.ts +2 -2
- package/dist/server/metadata-render.d.ts +2 -2
- package/dist/server/metadata-render.d.ts.map +1 -1
- package/dist/server/metadata-routes.d.ts +71 -11
- package/dist/server/metadata-routes.d.ts.map +1 -1
- package/dist/server/metadata-social.d.ts +2 -2
- package/dist/server/metadata.d.ts +10 -2
- package/dist/server/metadata.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +20 -5
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +105 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/nuqs-ssr-provider.d.ts +7 -3
- package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
- package/dist/server/param-coercion.d.ts +83 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +193 -0
- package/dist/server/pipeline-helpers.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +70 -9
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-metadata.d.ts +7 -1
- package/dist/server/pipeline-metadata.d.ts.map +1 -1
- package/dist/server/pipeline-outcome.d.ts +59 -0
- package/dist/server/pipeline-outcome.d.ts.map +1 -0
- package/dist/server/pipeline-phases.d.ts +70 -0
- package/dist/server/pipeline-phases.d.ts.map +1 -0
- package/dist/server/pipeline.d.ts +147 -23
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/port-resolution.d.ts +31 -0
- package/dist/server/port-resolution.d.ts.map +1 -0
- package/dist/server/prebuilt/cache-key.d.ts +63 -0
- package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-render.d.ts +25 -0
- package/dist/server/prebuilt/capture-render.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-routes.d.ts +37 -0
- package/dist/server/prebuilt/capture-routes.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-state.d.ts +101 -0
- package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
- package/dist/server/prebuilt/key-discipline.d.ts +52 -0
- package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
- package/dist/server/prebuilt/lifetime.d.ts +38 -0
- package/dist/server/prebuilt/lifetime.d.ts.map +1 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
- package/dist/server/prebuilt/overlay.d.ts +100 -0
- package/dist/server/prebuilt/overlay.d.ts.map +1 -0
- package/dist/server/prebuilt/payload-source.d.ts +79 -0
- package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
- package/dist/server/prebuilt/slots.d.ts +106 -0
- package/dist/server/prebuilt/slots.d.ts.map +1 -0
- package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
- package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
- package/dist/server/prebuilt-builder.d.ts +121 -0
- package/dist/server/prebuilt-builder.d.ts.map +1 -0
- package/dist/server/prebuilt-runtime.d.ts +111 -0
- package/dist/server/prebuilt-runtime.d.ts.map +1 -0
- package/dist/server/primitives.d.ts +101 -90
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/publish-params.d.ts +33 -0
- package/dist/server/publish-params.d.ts.map +1 -0
- package/dist/server/react-cache-bridge.d.ts +59 -0
- package/dist/server/react-cache-bridge.d.ts.map +1 -0
- package/dist/server/react-cache-scope.d.ts +49 -0
- package/dist/server/react-cache-scope.d.ts.map +1 -0
- package/dist/server/render-timeout.d.ts +66 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/render-utils.d.ts +35 -0
- package/dist/server/render-utils.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +128 -103
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-dep.d.ts +15 -0
- package/dist/server/request-dep.d.ts.map +1 -0
- package/dist/server/response-cache-policy.d.ts +3 -0
- package/dist/server/response-cache-policy.d.ts.map +1 -0
- package/dist/server/route-element-builder.d.ts +57 -30
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-element-helpers.d.ts +12 -0
- package/dist/server/route-element-helpers.d.ts.map +1 -0
- package/dist/server/route-handler.d.ts +1 -1
- package/dist/server/route-handler.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +55 -38
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/route-module-loader.d.ts +37 -0
- package/dist/server/route-module-loader.d.ts.map +1 -0
- package/dist/server/rsc-cache-key-guard.d.ts +78 -0
- package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
- package/dist/server/rsc-entry/action-dispatcher.d.ts +67 -0
- package/dist/server/rsc-entry/action-dispatcher.d.ts.map +1 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
- package/dist/server/rsc-entry/api-handler.d.ts +19 -3
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/deny-fallback.d.ts +55 -0
- package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
- package/dist/server/rsc-entry/error-renderer.d.ts +35 -21
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +14 -59
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +30 -6
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +50 -0
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
- package/dist/server/rsc-entry/render-signals.d.ts +65 -0
- package/dist/server/rsc-entry/render-signals.d.ts.map +1 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts +98 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
- package/dist/server/rsc-entry/rsc-payload.d.ts +30 -6
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +12 -30
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +6 -2
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +44 -7
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-error-envelope.d.ts +11 -0
- package/dist/server/rsc-error-envelope.d.ts.map +1 -0
- package/dist/server/safe-load.d.ts +39 -0
- package/dist/server/safe-load.d.ts.map +1 -0
- package/dist/server/sensitive-fields.d.ts +74 -0
- package/dist/server/sensitive-fields.d.ts.map +1 -0
- package/dist/server/signal-identity.d.ts +43 -0
- package/dist/server/signal-identity.d.ts.map +1 -0
- package/dist/server/sitemap-generator.d.ts +130 -0
- package/dist/server/sitemap-generator.d.ts.map +1 -0
- package/dist/server/sitemap-handler.d.ts +22 -0
- package/dist/server/sitemap-handler.d.ts.map +1 -0
- package/dist/server/skippable-prefix.d.ts +29 -0
- package/dist/server/skippable-prefix.d.ts.map +1 -0
- package/dist/server/slot-interception.d.ts +80 -0
- package/dist/server/slot-interception.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +138 -7
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/slot-subtree-contain.d.ts +54 -0
- package/dist/server/slot-subtree-contain.d.ts.map +1 -0
- package/dist/server/ssr-bridge-types.d.ts +198 -0
- package/dist/server/ssr-bridge-types.d.ts.map +1 -0
- package/dist/server/ssr-entry.d.ts +8 -47
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +60 -27
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +93 -0
- package/dist/server/ssr-wrappers.d.ts.map +1 -0
- package/dist/server/state-tree-diff.d.ts +44 -9
- package/dist/server/state-tree-diff.d.ts.map +1 -1
- package/dist/server/static-generator.d.ts +112 -0
- package/dist/server/static-generator.d.ts.map +1 -0
- package/dist/server/static-not-found.d.ts +52 -0
- package/dist/server/static-not-found.d.ts.map +1 -0
- package/dist/server/status-code-resolver.d.ts +26 -15
- package/dist/server/status-code-resolver.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +59 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +57 -26
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-match.d.ts +59 -0
- package/dist/server/tree-match.d.ts.map +1 -0
- package/dist/server/types.d.ts +89 -8
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/element-type.d.ts +50 -0
- package/dist/server/utils/element-type.d.ts.map +1 -0
- package/dist/server/utils/escape-html.d.ts +14 -0
- package/dist/server/utils/escape-html.d.ts.map +1 -0
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/server/workers-cache-bridge.d.ts +26 -0
- package/dist/server/workers-cache-bridge.d.ts.map +1 -0
- package/dist/shared/als-slots.d.ts +42 -0
- package/dist/shared/als-slots.d.ts.map +1 -0
- package/dist/shared/base-path.d.ts +56 -0
- package/dist/shared/base-path.d.ts.map +1 -0
- package/dist/shared/csrf-reject.d.ts +16 -0
- package/dist/shared/csrf-reject.d.ts.map +1 -0
- package/dist/shared/error-digest.d.ts +28 -0
- package/dist/shared/error-digest.d.ts.map +1 -0
- package/dist/shared/href-validation.d.ts +49 -0
- package/dist/shared/href-validation.d.ts.map +1 -0
- package/dist/shared/merge-search-params.d.ts +22 -0
- package/dist/shared/merge-search-params.d.ts.map +1 -0
- package/dist/shared/param-value.d.ts +104 -0
- package/dist/shared/param-value.d.ts.map +1 -0
- package/dist/shared/payload-root.d.ts +110 -0
- package/dist/shared/payload-root.d.ts.map +1 -0
- package/dist/shared/redirect-type.d.ts +17 -0
- package/dist/shared/redirect-type.d.ts.map +1 -0
- package/dist/shared/rsc-cache-key.d.ts +163 -0
- package/dist/shared/rsc-cache-key.d.ts.map +1 -0
- package/dist/shared/rsc-error-envelope.d.ts +16 -0
- package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
- package/dist/shared/rsc-manifest.d.ts +28 -0
- package/dist/shared/rsc-manifest.d.ts.map +1 -0
- package/dist/shared/rsc-media-type.d.ts +52 -0
- package/dist/shared/rsc-media-type.d.ts.map +1 -0
- package/dist/shared/rsc-payload-path.d.ts +48 -0
- package/dist/shared/rsc-payload-path.d.ts.map +1 -0
- package/dist/shared/segment-info.d.ts +66 -0
- package/dist/shared/segment-info.d.ts.map +1 -0
- package/dist/shared/slot-params.d.ts +52 -0
- package/dist/shared/slot-params.d.ts.map +1 -0
- package/dist/shared/static-platform-files.d.ts +71 -0
- package/dist/shared/static-platform-files.d.ts.map +1 -0
- package/dist/shared/status-reason-phrase.d.ts +26 -0
- package/dist/shared/status-reason-phrase.d.ts.map +1 -0
- package/dist/shims/font-google.d.ts +1 -1
- package/dist/shims/font-google.d.ts.map +1 -1
- package/dist/shims/font-google.js +42 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +26 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +20 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/headers.d.ts +53 -1
- package/dist/shims/headers.d.ts.map +1 -1
- package/dist/shims/image.d.ts +120 -120
- package/dist/shims/image.d.ts.map +1 -1
- package/dist/shims/navigation-client.d.ts +25 -12
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation-rsc.d.ts +21 -0
- package/dist/shims/navigation-rsc.d.ts.map +1 -0
- package/dist/shims/navigation.d.ts +10 -5
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/state-machine.d.ts +80 -0
- package/dist/utils/state-machine.d.ts.map +1 -0
- package/dist/utils/write-file-atomic.d.ts +17 -0
- package/dist/utils/write-file-atomic.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +239 -0
- package/docs/api/31-api-client.mdx +170 -0
- package/docs/api/32-api-cache.mdx +339 -0
- package/docs/api/33-api-search-params.mdx +176 -0
- package/docs/api/34-api-config.mdx +359 -0
- package/docs/api/35-api-typescript.mdx +91 -0
- package/docs/api/36-cli.mdx +202 -0
- package/docs/learn/00-introduction.mdx +109 -0
- package/docs/learn/01-quick-start.mdx +94 -0
- package/docs/learn/02-pages-and-layouts.mdx +147 -0
- package/docs/learn/03-fetching-data.mdx +227 -0
- package/docs/learn/04-access-control.mdx +115 -0
- package/docs/learn/05-the-flush-point.mdx +175 -0
- package/docs/learn/06-typed-params.mdx +275 -0
- package/docs/learn/07-typed-routes.mdx +108 -0
- package/docs/learn/08-forms-and-actions.mdx +146 -0
- package/docs/learn/09-streaming.mdx +140 -0
- package/docs/learn/10-caching.mdx +270 -0
- package/docs/learn/11-middleware.mdx +164 -0
- package/docs/learn/12-error-handling.mdx +192 -0
- package/docs/learn/13-deploying.mdx +287 -0
- package/llms.txt +55 -0
- package/package.json +120 -29
- package/src/adapters/build-output-helper.ts +353 -0
- package/src/adapters/canonicalize-module.ts +29 -0
- package/src/adapters/cloudflare-dev.ts +183 -0
- package/src/adapters/cloudflare-kv-cache.ts +207 -0
- package/src/adapters/cloudflare.ts +809 -150
- package/src/adapters/compress-module.ts +110 -86
- package/src/adapters/fs-identity.ts +155 -0
- package/src/adapters/nitro-presets.ts +124 -0
- package/src/adapters/nitro-preview.ts +476 -0
- package/src/adapters/nitro.ts +317 -457
- package/src/adapters/raw-imports.d.ts +5 -0
- package/src/adapters/shared.ts +283 -0
- package/src/adapters/types.ts +127 -17
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/analyze/chains.ts +411 -0
- package/src/analyze/classify.ts +259 -0
- package/src/analyze/crawl-entry.ts +68 -0
- package/src/analyze/crawl.ts +500 -0
- package/src/analyze/graph-cache.ts +331 -0
- package/src/analyze/graph-command.ts +762 -0
- package/src/analyze/live-graph.ts +232 -0
- package/src/analyze/poison-rules.ts +165 -0
- package/src/analyze/poison-scan.ts +159 -0
- package/src/analyze/scan.ts +149 -0
- package/src/cache/cache-api.ts +107 -0
- package/src/cache/fast-hash.ts +5 -0
- package/src/cache/handler-store.ts +76 -0
- package/src/cache/index.ts +115 -22
- package/src/cache/invalidation-epoch.ts +93 -0
- package/src/cache/json-lossy-check.ts +69 -0
- package/src/cache/redis-handler.ts +198 -20
- package/src/cache/singleflight.ts +72 -6
- package/src/cache/sizeof.ts +35 -0
- package/src/cache/stable-stringify.ts +65 -2
- package/src/cache/store.ts +71 -0
- package/src/cache/stores/cloudflare-kv.ts +52 -0
- package/src/cache/stores/memory.ts +125 -0
- package/src/cache/stores/redis.ts +97 -0
- package/src/cache/stores/vercel.ts +59 -0
- package/src/cache/tag-aware-handler.ts +254 -0
- package/src/cache/timber-cache.ts +165 -40
- package/src/cdn/cloudflare-purge.ts +50 -0
- package/src/cdn/fastly-purge.ts +63 -0
- package/src/cdn/headers.ts +153 -0
- package/src/cdn/index.ts +23 -0
- package/src/cdn/purge-store.ts +34 -0
- package/src/cdn/workers-cache-purge.ts +34 -0
- package/src/cli-check.ts +417 -0
- package/src/cli-context.ts +119 -0
- package/src/cli-schema-sync.ts +401 -0
- package/src/cli.ts +330 -78
- package/src/client/browser-dev.ts +192 -5
- package/src/client/browser-entry/action-dispatch.ts +237 -0
- package/src/client/browser-entry/action-queue.ts +152 -0
- package/src/client/browser-entry/hmr.ts +70 -0
- package/src/client/browser-entry/hydrate.ts +143 -0
- package/src/client/browser-entry/index.ts +120 -0
- package/src/client/browser-entry/post-hydration.ts +99 -0
- package/src/client/browser-entry/router-init.ts +406 -0
- package/src/client/browser-entry/rsc-stream.ts +145 -0
- package/src/client/browser-entry/scroll.ts +50 -0
- package/src/client/deny-last-resort.tsx +54 -0
- package/src/client/error-boundary.tsx +279 -61
- package/src/client/error-reconstituter.tsx +84 -0
- package/src/client/form.tsx +36 -32
- package/src/client/global-context.ts +31 -0
- package/src/client/history.ts +74 -11
- package/src/client/index.ts +89 -53
- package/src/client/internal.ts +54 -0
- package/src/client/link.tsx +468 -151
- package/src/client/location-search.ts +15 -0
- package/src/client/navigation-api.ts +380 -0
- package/src/client/navigation-commit.ts +318 -0
- package/src/client/navigation-context.ts +67 -134
- package/src/client/navigation-root.tsx +236 -0
- package/src/client/navigation-transition.ts +337 -0
- package/src/client/nuqs-adapter.tsx +21 -9
- package/src/client/params-context.ts +187 -0
- package/src/client/react-root.ts +82 -0
- package/src/client/router-effects.ts +235 -0
- package/src/client/router-lifecycle.ts +354 -0
- package/src/client/router-pipeline.ts +458 -0
- package/src/client/router-ref.ts +3 -3
- package/src/client/router-skew.ts +30 -0
- package/src/client/router-types.ts +370 -0
- package/src/client/router-url.ts +32 -0
- package/src/client/router.ts +491 -424
- package/src/client/rsc-fetch.ts +510 -109
- package/src/client/segment-cache.ts +362 -41
- package/src/client/segment-context.ts +7 -4
- package/src/client/segment-outlet.tsx +96 -0
- package/src/client/segment-update-context.ts +23 -0
- package/src/client/shallow-url.ts +22 -0
- package/src/client/slot-content-cache-context.ts +43 -0
- package/src/client/slot-context.ts +50 -0
- package/src/client/slot-outlet.tsx +22 -0
- package/src/client/slot-provider.tsx +32 -0
- package/src/client/ssr-data.ts +27 -67
- package/src/client/stale-client.ts +191 -0
- package/src/client/state.ts +31 -24
- package/src/client/status-page-marker.tsx +32 -0
- package/src/client/top-loader.tsx +13 -10
- package/src/client/unload-guard.ts +35 -3
- package/src/client/use-cookie.ts +70 -18
- package/src/client/use-link-status.ts +7 -7
- package/src/client/use-pathname.ts +22 -31
- package/src/client/use-pending-navigation.ts +40 -0
- package/src/client/use-query-states.ts +206 -36
- package/src/client/use-router.ts +31 -9
- package/src/client/use-search-params.ts +38 -49
- package/src/client/use-segment-params.ts +69 -0
- package/src/client/use-selected-layout-segment.ts +2 -2
- package/src/codec.ts +149 -0
- package/src/config-types.ts +323 -0
- package/src/config-validation.ts +464 -0
- package/src/cookies/define-cookie.ts +222 -53
- package/src/cookies/index.ts +13 -2
- package/src/cookies/json-cookie.ts +105 -0
- package/src/cookies/validation.ts +192 -0
- package/src/dev-tools/404-page.ts +286 -0
- package/src/dev-tools/browser-logs.ts +55 -0
- package/src/dev-tools/dev-page-shell.ts +278 -0
- package/src/dev-tools/error-page.ts +331 -0
- package/src/dev-tools/holding-server.ts +185 -0
- package/src/dev-tools/hydration-overlay.ts +158 -0
- package/src/dev-tools/index.ts +79 -0
- package/src/dev-tools/instrumentation.ts +261 -0
- package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
- package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
- package/src/{plugins/dev-error-overlay.ts → dev-tools/overlay.ts} +25 -80
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/dev-tools/terminal.ts +182 -0
- package/src/fonts/ast-walk.ts +235 -0
- package/src/fonts/ast.ts +479 -128
- package/src/fonts/bundle.ts +138 -0
- package/src/fonts/css.ts +1 -1
- package/src/fonts/dev-middleware.ts +85 -0
- package/src/fonts/fallbacks.ts +0 -23
- package/src/fonts/google.ts +101 -19
- package/src/fonts/local.ts +12 -11
- package/src/fonts/paths.ts +58 -0
- package/src/fonts/pipeline.ts +348 -0
- package/src/fonts/transform.ts +311 -0
- package/src/fonts/types.ts +52 -1
- package/src/fonts/virtual-modules.ts +179 -0
- package/src/index.ts +513 -380
- package/src/params/codec-registry.ts +34 -0
- package/src/params/define-schema.ts +115 -0
- package/src/params/index.ts +17 -0
- package/src/params/resolve-schema.ts +84 -0
- package/src/plugin-context.ts +502 -0
- package/src/plugins/build-manifest.ts +204 -36
- package/src/plugins/build-report.ts +299 -87
- package/src/plugins/cache.ts +243 -0
- package/src/plugins/callsite-ast.ts +472 -0
- package/src/plugins/callsite-jsx.ts +243 -0
- package/src/plugins/chunks.ts +74 -5
- package/src/plugins/client-chunks.ts +185 -0
- package/src/plugins/client-dep-entries.ts +78 -0
- package/src/plugins/cloudflare-wasm.ts +141 -0
- package/src/plugins/content.ts +31 -2
- package/src/plugins/dev-discovery.ts +218 -0
- package/src/plugins/dev-server.ts +360 -97
- package/src/plugins/entries.ts +149 -16
- package/src/plugins/fonts.ts +260 -657
- package/src/plugins/graph-endpoint.ts +532 -0
- package/src/plugins/mdx.ts +108 -35
- package/src/plugins/post-build.ts +327 -0
- package/src/plugins/prebuilt-capture.ts +213 -0
- package/src/plugins/prebuilt-options-analysis.ts +175 -0
- package/src/plugins/prebuilt.ts +670 -0
- package/src/plugins/prerender-sugar.ts +316 -0
- package/src/plugins/react-resolve.ts +149 -0
- package/src/plugins/request-dep/analysis.ts +447 -0
- package/src/plugins/request-dep/index.ts +376 -0
- package/src/plugins/request-dep/origin.ts +310 -0
- package/src/plugins/routing.ts +273 -277
- package/src/plugins/rsc-assets-manifest.ts +251 -0
- package/src/plugins/server-bundle.ts +99 -14
- package/src/plugins/shims.ts +260 -97
- package/src/plugins/static-build.ts +681 -71
- package/src/react-canary.d.ts +2 -0
- package/src/routing/codegen-shared.ts +39 -0
- package/src/routing/codegen-types.ts +62 -0
- package/src/routing/codegen-write.ts +163 -0
- package/src/routing/codegen.ts +349 -232
- package/src/routing/collision-probe.ts +438 -0
- package/src/routing/collision-spaces.ts +281 -0
- package/src/routing/convention-lint.ts +651 -0
- package/src/routing/export-detect.ts +536 -0
- package/src/routing/file-cache.ts +23 -0
- package/src/routing/index.ts +16 -7
- package/src/routing/interception-overlap.ts +141 -0
- package/src/routing/interception.ts +1044 -67
- package/src/routing/link-codegen.ts +280 -0
- package/src/routing/manifest-codegen.ts +232 -0
- package/src/routing/scanner.ts +417 -223
- package/src/routing/schema-validation.ts +155 -0
- package/src/routing/segment-classify.ts +280 -0
- package/src/routing/segment-codegen.ts +99 -0
- package/src/routing/segment-keys.ts +186 -0
- package/src/routing/slot-placement.ts +97 -0
- package/src/routing/types.ts +82 -26
- package/src/routing/walkers.ts +98 -0
- package/src/rsc-runtime/rsc.ts +9 -0
- package/src/rsc-runtime/ssr.ts +51 -0
- package/src/rsc-runtime/transforms.ts +13 -0
- package/src/rsc-runtime/vendor-types.d.ts +27 -0
- package/src/schema-bridge.ts +382 -0
- package/src/search-params/define.ts +677 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/parse-total.ts +91 -0
- package/src/search-params/serialize-equal.ts +14 -0
- package/src/search-params/wrappers.ts +150 -0
- package/src/server/access-gate.tsx +195 -56
- package/src/server/action-client.ts +126 -33
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +457 -111
- package/src/server/actions.ts +172 -85
- package/src/server/als-registry.ts +224 -25
- package/src/server/body-limits.ts +10 -2
- package/src/server/build-manifest.ts +33 -57
- package/src/server/canonicalize.ts +6 -3
- package/src/server/chain-url-parts.ts +163 -0
- package/src/server/children-interception.ts +116 -0
- package/src/server/coalesce-tick.ts +75 -0
- package/src/server/compress.ts +43 -8
- package/src/server/cookie-context.ts +454 -0
- package/src/server/cookie-parsing.ts +163 -0
- package/src/server/csp-nonce.ts +58 -0
- package/src/server/csrf.ts +228 -35
- package/src/server/debug.ts +0 -1
- package/src/server/default-logger.ts +100 -0
- package/src/server/default-status-page.ts +88 -0
- package/src/server/deny-boundary.ts +527 -0
- package/src/server/deny-renderer.ts +201 -179
- package/src/server/early-hints-sender.ts +4 -3
- package/src/server/early-hints.ts +39 -29
- package/src/server/error-boundary-wrapper.ts +160 -44
- package/src/server/error-response-headers.ts +18 -0
- package/src/server/fallback-error.ts +88 -104
- package/src/server/flight-injection-state.ts +113 -0
- package/src/server/flight-scripts.ts +67 -0
- package/src/server/form-data.ts +124 -12
- package/src/server/form-flash.ts +3 -3
- package/src/server/head-response.ts +54 -0
- package/src/server/html-injector-core.ts +512 -0
- package/src/server/html-injectors.ts +270 -255
- package/src/server/index.ts +36 -192
- package/src/server/instrumentation.ts +11 -4
- package/src/server/internal.ts +168 -0
- package/src/server/json-status-response.ts +105 -0
- package/src/server/logger.ts +126 -38
- package/src/server/metadata-collector.ts +177 -0
- package/src/server/metadata-platform.ts +2 -2
- package/src/server/metadata-render.ts +30 -8
- package/src/server/metadata-routes.ts +220 -24
- package/src/server/metadata-social.ts +2 -2
- package/src/server/metadata.ts +23 -2
- package/src/server/middleware-runner.ts +32 -5
- package/src/server/node-stream-transforms.ts +323 -0
- package/src/server/nuqs-ssr-provider.tsx +8 -7
- package/src/server/param-coercion.ts +201 -0
- package/src/server/pipeline-helpers.ts +485 -0
- package/src/server/pipeline-interception.ts +241 -32
- package/src/server/pipeline-metadata.ts +15 -1
- package/src/server/pipeline-outcome.ts +290 -0
- package/src/server/pipeline-phases.ts +496 -0
- package/src/server/pipeline.ts +385 -427
- package/src/server/port-resolution.ts +53 -0
- package/src/server/prebuilt/cache-key.ts +299 -0
- package/src/server/prebuilt/capture-render.ts +118 -0
- package/src/server/prebuilt/capture-routes.ts +104 -0
- package/src/server/prebuilt/capture-state.ts +196 -0
- package/src/server/prebuilt/key-discipline.ts +122 -0
- package/src/server/prebuilt/lifetime.ts +151 -0
- package/src/server/prebuilt/manifest-tag-index.ts +46 -0
- package/src/server/prebuilt/overlay.ts +256 -0
- package/src/server/prebuilt/payload-source.ts +202 -0
- package/src/server/prebuilt/slots.ts +202 -0
- package/src/server/prebuilt/synthetic-store.ts +125 -0
- package/src/server/prebuilt-builder.ts +514 -0
- package/src/server/prebuilt-runtime.ts +813 -0
- package/src/server/primitives.ts +153 -171
- package/src/server/publish-params.ts +42 -0
- package/src/server/react-cache-bridge.ts +124 -0
- package/src/server/react-cache-scope.ts +104 -0
- package/src/server/render-timeout.ts +128 -0
- package/src/server/render-utils.ts +45 -0
- package/src/server/request-context.ts +269 -332
- package/src/server/request-dep.ts +37 -0
- package/src/server/response-cache-policy.ts +45 -0
- package/src/server/route-element-builder.ts +514 -355
- package/src/server/route-element-helpers.ts +37 -0
- package/src/server/route-handler.ts +67 -27
- package/src/server/route-matcher.ts +238 -267
- package/src/server/route-module-loader.ts +161 -0
- package/src/server/rsc-cache-key-guard.ts +122 -0
- package/src/server/rsc-entry/action-dispatcher.ts +142 -0
- package/src/server/rsc-entry/action-middleware-runner.ts +130 -0
- package/src/server/rsc-entry/api-handler.ts +49 -81
- package/src/server/rsc-entry/deny-fallback.ts +151 -0
- package/src/server/rsc-entry/error-renderer.ts +301 -113
- package/src/server/rsc-entry/helpers.ts +90 -115
- package/src/server/rsc-entry/index.ts +370 -350
- package/src/server/rsc-entry/render-route.ts +229 -0
- package/src/server/rsc-entry/render-signals.ts +108 -0
- package/src/server/rsc-entry/revalidate-renderer.ts +349 -0
- package/src/server/rsc-entry/rsc-payload.ts +192 -72
- package/src/server/rsc-entry/rsc-stream.ts +128 -131
- package/src/server/rsc-entry/ssr-bridge.ts +19 -6
- package/src/server/rsc-entry/ssr-renderer.ts +300 -137
- package/src/server/rsc-error-envelope.ts +18 -0
- package/src/server/rsc-prop-warnings.ts +1 -1
- package/src/server/safe-load.ts +53 -0
- package/src/server/sensitive-fields.ts +230 -0
- package/src/server/server-only-guard-noop.js +3 -0
- package/src/server/server-timing.ts +1 -1
- package/src/server/signal-identity.ts +112 -0
- package/src/server/sitemap-generator.ts +337 -0
- package/src/server/sitemap-handler.ts +157 -0
- package/src/server/skippable-prefix.ts +172 -0
- package/src/server/slot-interception.ts +168 -0
- package/src/server/slot-resolver.ts +707 -300
- package/src/server/slot-subtree-contain.ts +273 -0
- package/src/server/ssr-bridge-types.ts +201 -0
- package/src/server/ssr-entry.ts +225 -104
- package/src/server/ssr-render.ts +354 -91
- package/src/server/ssr-wrappers.tsx +162 -0
- package/src/server/state-tree-diff.ts +85 -30
- package/src/server/static-generator.ts +680 -0
- package/src/server/static-not-found.ts +134 -0
- package/src/server/status-code-resolver.ts +107 -148
- package/src/server/stream-utils.ts +343 -0
- package/src/server/tracing.ts +163 -68
- package/src/server/tree-match.ts +494 -0
- package/src/server/types.ts +96 -11
- package/src/server/utils/element-type.ts +88 -0
- package/src/server/utils/escape-html.ts +20 -0
- package/src/server/version-skew.ts +104 -0
- package/src/server/waituntil-bridge.ts +1 -1
- package/src/server/workers-cache-bridge.ts +33 -0
- package/src/shared/als-slots.ts +74 -0
- package/src/shared/base-path.ts +80 -0
- package/src/shared/csrf-reject.ts +15 -0
- package/src/shared/error-digest.ts +46 -0
- package/src/shared/href-validation.ts +159 -0
- package/src/shared/merge-search-params.ts +55 -0
- package/src/shared/param-value.ts +281 -0
- package/src/shared/payload-root.ts +153 -0
- package/src/shared/redirect-type.ts +17 -0
- package/src/shared/rsc-cache-key.ts +269 -0
- package/src/shared/rsc-error-envelope.ts +16 -0
- package/src/shared/rsc-manifest.ts +29 -0
- package/src/shared/rsc-media-type.ts +59 -0
- package/src/shared/rsc-payload-path.ts +52 -0
- package/src/shared/segment-info.ts +67 -0
- package/src/shared/slot-params.ts +109 -0
- package/src/shared/static-platform-files.ts +75 -0
- package/src/shared/status-reason-phrase.ts +61 -0
- package/src/shims/font-google.ts +1 -1
- package/src/shims/font-local.ts +34 -0
- package/src/shims/headers.ts +122 -1
- package/src/shims/navigation-client.ts +36 -32
- package/src/shims/navigation-rsc.ts +47 -0
- package/src/shims/navigation.ts +10 -7
- package/src/utils/state-machine.ts +111 -0
- package/src/utils/write-file-atomic.ts +32 -0
- package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
- package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
- package/dist/_chunks/debug-B3Gypr3D.js +0 -108
- package/dist/_chunks/debug-B3Gypr3D.js.map +0 -1
- package/dist/_chunks/format-RyoGQL74.js +0 -164
- package/dist/_chunks/format-RyoGQL74.js.map +0 -1
- package/dist/_chunks/interception-BOoWmLUA.js +0 -676
- package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
- package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
- package/dist/_chunks/request-context-BQUC8PHn.js +0 -330
- package/dist/_chunks/request-context-BQUC8PHn.js.map +0 -1
- package/dist/_chunks/ssr-data-MjmprTmO.js +0 -88
- package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
- package/dist/_chunks/tracing-CemImE6h.js +0 -187
- package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
- package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
- package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
- package/dist/_chunks/use-query-states-D5KaffOK.js +0 -109
- package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
- package/dist/adapters/cloudflare.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/error-boundary.js.map +0 -1
- package/dist/client/head.d.ts +0 -16
- package/dist/client/head.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/segment-merger.d.ts +0 -119
- package/dist/client/segment-merger.d.ts.map +0 -1
- package/dist/client/stale-reload.d.ts +0 -44
- package/dist/client/stale-reload.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts +0 -74
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/types.d.ts +0 -14
- package/dist/client/types.d.ts.map +0 -1
- package/dist/client/use-navigation-pending.d.ts +0 -26
- package/dist/client/use-navigation-pending.d.ts.map +0 -1
- package/dist/client/use-params.d.ts +0 -92
- package/dist/client/use-params.d.ts.map +0 -1
- package/dist/content/index.d.ts +0 -11
- package/dist/content/index.d.ts.map +0 -1
- package/dist/content/index.js +0 -2
- package/dist/plugins/adapter-build.d.ts +0 -18
- package/dist/plugins/adapter-build.d.ts.map +0 -1
- package/dist/plugins/cache-transform.d.ts +0 -36
- package/dist/plugins/cache-transform.d.ts.map +0 -1
- package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
- package/dist/plugins/dev-logs.d.ts.map +0 -1
- package/dist/plugins/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.d.ts.map +0 -1
- package/dist/plugins/server-action-exports.d.ts +0 -26
- package/dist/plugins/server-action-exports.d.ts.map +0 -1
- package/dist/routing/status-file-lint.d.ts +0 -33
- package/dist/routing/status-file-lint.d.ts.map +0 -1
- package/dist/search-params/analyze.d.ts +0 -54
- package/dist/search-params/analyze.d.ts.map +0 -1
- package/dist/search-params/builtin-codecs.d.ts +0 -105
- package/dist/search-params/builtin-codecs.d.ts.map +0 -1
- package/dist/search-params/codecs.d.ts +0 -53
- package/dist/search-params/codecs.d.ts.map +0 -1
- package/dist/search-params/create.d.ts +0 -106
- package/dist/search-params/create.d.ts.map +0 -1
- package/dist/search-params/registry.d.ts +0 -20
- package/dist/search-params/registry.d.ts.map +0 -1
- package/dist/server/asset-headers.d.ts +0 -42
- package/dist/server/asset-headers.d.ts.map +0 -1
- package/dist/server/client-module-map.d.ts +0 -47
- package/dist/server/client-module-map.d.ts.map +0 -1
- package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
- package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
- package/dist/server/dev-logger.d.ts.map +0 -1
- package/dist/server/dev-span-processor.d.ts +0 -29
- package/dist/server/dev-span-processor.d.ts.map +0 -1
- package/dist/server/dev-warnings.d.ts +0 -129
- package/dist/server/dev-warnings.d.ts.map +0 -1
- package/dist/server/flush.d.ts +0 -74
- package/dist/server/flush.d.ts.map +0 -1
- package/dist/server/manifest-status-resolver.d.ts +0 -58
- package/dist/server/manifest-status-resolver.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/tree-builder.d.ts +0 -126
- package/dist/server/tree-builder.d.ts.map +0 -1
- package/dist/utils/directive-parser.d.ts +0 -70
- package/dist/utils/directive-parser.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -103
- package/src/client/browser-entry.ts +0 -678
- package/src/client/head.ts +0 -61
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/segment-merger.ts +0 -339
- package/src/client/stale-reload.ts +0 -87
- package/src/client/transition-root.tsx +0 -166
- package/src/client/types.ts +0 -21
- package/src/client/use-navigation-pending.ts +0 -38
- package/src/client/use-params.ts +0 -141
- package/src/content/index.ts +0 -13
- package/src/plugins/adapter-build.ts +0 -118
- package/src/plugins/cache-transform.ts +0 -199
- package/src/plugins/dynamic-transform.ts +0 -161
- package/src/plugins/server-action-exports.ts +0 -220
- package/src/routing/status-file-lint.ts +0 -112
- package/src/search-params/analyze.ts +0 -192
- package/src/search-params/builtin-codecs.ts +0 -228
- package/src/search-params/codecs.ts +0 -153
- package/src/search-params/create.ts +0 -321
- package/src/search-params/registry.ts +0 -31
- package/src/server/asset-headers.ts +0 -81
- package/src/server/client-module-map.ts +0 -58
- package/src/server/dev-fetch-instrumentation.ts +0 -96
- package/src/server/dev-span-processor.ts +0 -78
- package/src/server/dev-warnings.ts +0 -283
- package/src/server/flush.ts +0 -182
- package/src/server/manifest-status-resolver.ts +0 -215
- package/src/server/prerender.ts +0 -139
- package/src/server/tree-builder.ts +0 -382
- package/src/shims/server-only-noop.js +0 -6
- package/src/utils/directive-parser.ts +0 -529
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../src/analyze/chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;CACjC;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;CAClE;AAED,qDAAqD;AACrD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,YAAY,CAAC;IACxB,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wDAAwD;IACxD,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,UAAU,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAsMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CA0D7F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAuB/E"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* classify — environment-graph classification for project modules.
|
|
3
|
+
*
|
|
4
|
+
* The one classification module every frontend shares (design/47): the
|
|
5
|
+
* `timber graph` CLI, the dev-server endpoint, the VS Code extension,
|
|
6
|
+
* and the cold crawl must never disagree about a file's environment.
|
|
7
|
+
* Classification intersects RSC/SSR module-graph membership with
|
|
8
|
+
* first-directive detection to produce the decided taxonomy:
|
|
9
|
+
*
|
|
10
|
+
* - `server` — RSC graph only
|
|
11
|
+
* - `client-boundary` — has `'use client'`
|
|
12
|
+
* - `client-internal` — reachable only behind a boundary, no directive
|
|
13
|
+
* - `shared` — instantiated in both environments; INFO, never a
|
|
14
|
+
* warning — shared-by-design is a legitimate pattern
|
|
15
|
+
* - `server-action` — has `'use server'`
|
|
16
|
+
* - `unreferenced` — in no graph and no provisional signal; files with
|
|
17
|
+
* a directive or filename convention get that
|
|
18
|
+
* provisional kind instead, marked `pending`
|
|
19
|
+
*
|
|
20
|
+
* The browser (`client`) Vite graph stays empty until a real browser
|
|
21
|
+
* requests modules, so membership is RSC × SSR — the SSR graph is a
|
|
22
|
+
* faithful proxy for the client tree (design/47 §8, with the frontier
|
|
23
|
+
* caveat below).
|
|
24
|
+
*
|
|
25
|
+
* Design docs: 47-module-environment-tooling.md (taxonomy, §8),
|
|
26
|
+
* 43-analyze-cli.md (directive detection rules).
|
|
27
|
+
*/
|
|
28
|
+
export type ModuleKind = 'server' | 'client-boundary' | 'client-internal' | 'shared' | 'server-action' | 'unreferenced';
|
|
29
|
+
export type Directive = 'use client' | 'use server' | null;
|
|
30
|
+
/**
|
|
31
|
+
* What a frontend observed about one project module. Graph membership
|
|
32
|
+
* comes from the live dev-server graphs or the cold crawl; the directive
|
|
33
|
+
* comes from the module's original source (never the transformed output,
|
|
34
|
+
* where the RSC plugin has already stripped or proxied it).
|
|
35
|
+
*/
|
|
36
|
+
export interface ModuleObservation {
|
|
37
|
+
/** Absolute path of the source file. */
|
|
38
|
+
file: string;
|
|
39
|
+
/** Present in the RSC environment's module graph. */
|
|
40
|
+
inRsc: boolean;
|
|
41
|
+
/** Present in the SSR environment's module graph. */
|
|
42
|
+
inSsr: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Present in the browser (`client`) environment's module graph. Only a
|
|
45
|
+
* live dev server with a real connected browser can confirm this — the
|
|
46
|
+
* client graph stays empty otherwise (design/47 §8) — so the cold
|
|
47
|
+
* crawl always observes false. Defaults to false.
|
|
48
|
+
*/
|
|
49
|
+
inClient?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* False when the SSR graph has a node for this file but Vite never
|
|
52
|
+
* transformed it — the §8 signature of a module behind an unexecuted
|
|
53
|
+
* dynamic import (`transformResult == null`). Its own membership is
|
|
54
|
+
* trustworthy; its subtree is not. Defaults to true.
|
|
55
|
+
*/
|
|
56
|
+
ssrTransformed?: boolean;
|
|
57
|
+
/** First directive of the original source, or null. */
|
|
58
|
+
directive: Directive;
|
|
59
|
+
}
|
|
60
|
+
export interface ModuleClassification {
|
|
61
|
+
file: string;
|
|
62
|
+
kind: ModuleKind;
|
|
63
|
+
/**
|
|
64
|
+
* Raw per-environment graph membership, in doc 43's classification
|
|
65
|
+
* vocabulary (`{ client, ssr, rsc }`). `kind` is the interpreted
|
|
66
|
+
* answer; this is the evidence. `client` is confirmable only by a
|
|
67
|
+
* live browser graph — static scans always report false.
|
|
68
|
+
*/
|
|
69
|
+
envs: {
|
|
70
|
+
rsc: boolean;
|
|
71
|
+
ssr: boolean;
|
|
72
|
+
client: boolean;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* True when no graph has confirmed this module — the kind is
|
|
76
|
+
* provisional, derived from directive + filename convention, and
|
|
77
|
+
* frontends must visibly mark it "pending" (design/47 §2).
|
|
78
|
+
*/
|
|
79
|
+
pending: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* §8 frontier: the module is reachable (it ships to the browser) but
|
|
82
|
+
* was never transformed, so modules behind it may be missing from the
|
|
83
|
+
* graphs entirely. Consumers should transform-on-demand or surface
|
|
84
|
+
* "reachable, subtree unknown".
|
|
85
|
+
*/
|
|
86
|
+
subtreeUnknown: boolean;
|
|
87
|
+
}
|
|
88
|
+
/** File extensions eligible for directive detection. */
|
|
89
|
+
export declare const PARSEABLE_EXTENSIONS: RegExp;
|
|
90
|
+
/**
|
|
91
|
+
* Parse language for a source file, from its extension. Never force
|
|
92
|
+
* `tsx` onto plain `.ts`: JSX-ambiguous TypeScript such as
|
|
93
|
+
* `const identity = <T>(value: T) => value` is valid TS but rejected
|
|
94
|
+
* by a TSX parse, and the resulting parse failure would silently drop
|
|
95
|
+
* the file's directive and poison signals. Plain JS parses as `jsx`
|
|
96
|
+
* (JSX-in-.js is common in Vite projects and JS has no generic-arrow
|
|
97
|
+
* ambiguity for the x-syntax to break).
|
|
98
|
+
*/
|
|
99
|
+
export declare function langForFile(file: string): 'ts' | 'tsx' | 'jsx';
|
|
100
|
+
/**
|
|
101
|
+
* Detect the first directive of a module's original source.
|
|
102
|
+
*
|
|
103
|
+
* Never string-match or regex directives (design/43): `hasDirective`
|
|
104
|
+
* from @vitejs/plugin-rsc checks for the `directive` property on
|
|
105
|
+
* ExpressionStatements — the same check the RSC plugin runs to decide
|
|
106
|
+
* boundaries, so classification agrees with what the framework actually
|
|
107
|
+
* does with the file. The directive must be in prologue position (before
|
|
108
|
+
* any import or statement) per the ECMAScript spec. Non-JS sources
|
|
109
|
+
* (CSS, MDX, assets) and sources that fail to parse return null — no
|
|
110
|
+
* directive is a safe default; classification then falls back to graph
|
|
111
|
+
* membership.
|
|
112
|
+
*/
|
|
113
|
+
export declare function detectDirective(code: string, file: string): Directive;
|
|
114
|
+
/** Optional context for classification. */
|
|
115
|
+
export interface ClassifyContext {
|
|
116
|
+
/**
|
|
117
|
+
* Absolute path of the app directory. When provided, convention-based
|
|
118
|
+
* provisional classification only applies to files inside it — a
|
|
119
|
+
* `lib/page.tsx` is not a route file, and the scanner would never
|
|
120
|
+
* recognize it there.
|
|
121
|
+
*/
|
|
122
|
+
appDir?: string;
|
|
123
|
+
/**
|
|
124
|
+
* Configured pageExtensions, when the caller has resolved the app
|
|
125
|
+
* config. Omitted → scanner defaults.
|
|
126
|
+
*/
|
|
127
|
+
pageExtensions?: readonly string[];
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Whether a file is a route-convention source the framework itself
|
|
131
|
+
* imports (page/layout/route/… plus metadata routes). Conventions are
|
|
132
|
+
* derived from the routing scanner and the metadata route table — never
|
|
133
|
+
* a local duplicate list (drift lesson). Each family carries the
|
|
134
|
+
* scanner's own extension rules.
|
|
135
|
+
*
|
|
136
|
+
* Shared by the provisional classifier below and by chains.ts, whose
|
|
137
|
+
* RSC-side walks terminate at the first route-convention file
|
|
138
|
+
* (design/47 §7) — the two must never disagree about what counts.
|
|
139
|
+
*
|
|
140
|
+
* `pageExtensions` mirrors the scanner's parameter: callers that have
|
|
141
|
+
* resolved the app config pass the configured set (a `page.mdx` app);
|
|
142
|
+
* callers without config access fall back to the defaults and tolerate
|
|
143
|
+
* the mismatch.
|
|
144
|
+
*/
|
|
145
|
+
export declare function isConventionSourceFile(file: string, pageExtensions?: readonly string[]): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Classify one module from its observation. Pure — all frontends call
|
|
148
|
+
* this with membership data from their own graph source.
|
|
149
|
+
*/
|
|
150
|
+
export declare function classifyModule(obs: ModuleObservation, ctx?: ClassifyContext): ModuleClassification;
|
|
151
|
+
/** Classify a batch of observations, sorted by file for stable output. */
|
|
152
|
+
export declare function classifyModules(observations: Iterable<ModuleObservation>, ctx?: ClassifyContext): ModuleClassification[];
|
|
153
|
+
//# sourceMappingURL=classify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/analyze/classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAcH,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,iBAAiB,GACjB,iBAAiB,GACjB,QAAQ,GACR,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,KAAK,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uDAAuD;IACvD,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB;;;;;OAKG;IACH,IAAI,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IACtD;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,QAAyC,CAAC;AAE3E;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAI9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAerE;AAED,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAQhG;AAoBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,iBAAiB,EACtB,GAAG,CAAC,EAAE,eAAe,GACpB,oBAAoB,CA2BtB;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAC7B,YAAY,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACzC,GAAG,CAAC,EAAE,eAAe,GACpB,oBAAoB,EAAE,CAIxB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* crawl-entry — child-process entry point for the cold crawl.
|
|
3
|
+
*
|
|
4
|
+
* The crawl's memory footprint is transient but large (~1.3 GB RSS on
|
|
5
|
+
* plugin-heavy apps — design/47 §6), so consumers spawn this module as a
|
|
6
|
+
* short-lived child process instead of crawling in-process:
|
|
7
|
+
*
|
|
8
|
+
* node --import tsx/esm crawl-entry.ts --root <dir> [--config <file>]
|
|
9
|
+
* [--out <file>] [--timeout <ms>]
|
|
10
|
+
*
|
|
11
|
+
* With `--out`, the JSON report is written to that file. Otherwise it is
|
|
12
|
+
* printed to stdout after a marker line — plugins in the booted app may
|
|
13
|
+
* write their own stdout noise, so consumers parse everything after the
|
|
14
|
+
* marker, not the whole stream.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=crawl-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawl-entry.d.ts","sourceRoot":"","sources":["../../src/analyze/crawl-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { i as scanProjectSourceFiles, n as isScannableSourceFile, t as buildSourceExtensions } from "../_chunks/scan-BoP17W3w.js";
|
|
2
|
+
import { c as resolveAppDir, i as isTimberPluginApi } from "../_chunks/plugin-context-BPBPc3lL.js";
|
|
3
|
+
import { i as detectDirective, r as classifyModules } from "../_chunks/classify-QwG5rxKI.js";
|
|
4
|
+
import { n as stitchImportChains } from "../_chunks/chains-DGX9zmg9.js";
|
|
5
|
+
import { n as importSignals, r as poisoningsFor, t as collectImportSpecifiers } from "../_chunks/poison-scan-CfQ3unZR.js";
|
|
6
|
+
import { normalizePath } from "vite";
|
|
7
|
+
import { join, resolve } from "node:path";
|
|
8
|
+
import { readFile, realpath, writeFile } from "node:fs/promises";
|
|
9
|
+
//#region src/analyze/crawl.ts
|
|
10
|
+
/**
|
|
11
|
+
* crawl — programmatic middleware-mode crawl (the cold path).
|
|
12
|
+
*
|
|
13
|
+
* Boots `createServer({ middlewareMode: true })` — no HTTP port, no route
|
|
14
|
+
* rendering — and BFS-walks `env.transformRequest(url)` → importedModules
|
|
15
|
+
* edges from `virtual:timber-rsc-entry`, then from every discovered
|
|
16
|
+
* `'use client'` boundary through the SSR environment. This reuses Vite's
|
|
17
|
+
* actual resolution (aliases, tsconfig paths, react-server export
|
|
18
|
+
* conditions, virtual modules), so it cannot drift from what dev or the
|
|
19
|
+
* build does; hand-rolled resolution was evaluated and rejected
|
|
20
|
+
* (design/47 §"Verified Prototype Findings").
|
|
21
|
+
*
|
|
22
|
+
* Cost model (design/47 §6): 2.5 s on small apps to ~10 s on dep-heavy
|
|
23
|
+
* plugin stacks, with a transient ~1.3 GB RSS — callers MUST run this in
|
|
24
|
+
* a short-lived child process (see crawl-entry.ts) and cache the
|
|
25
|
+
* classification output, not the Vite transforms. The crawl always
|
|
26
|
+
* covers the full project: one crawl per project state, never per
|
|
27
|
+
* question — marginal per-file cost is ~zero once booted.
|
|
28
|
+
*
|
|
29
|
+
* `TIMBER_ANALYZE=1` is set before the server boots so platform dev
|
|
30
|
+
* plugins (wrangler bindings — a measured ~6.8 s remote-bindings
|
|
31
|
+
* handshake on website) skip work the crawl never needs: classification
|
|
32
|
+
* wants import edges, not live Cloudflare connections.
|
|
33
|
+
*
|
|
34
|
+
* Design docs: 47-module-environment-tooling.md §6, §8.
|
|
35
|
+
*/
|
|
36
|
+
var RSC_ENTRY_URL = "virtual:timber-rsc-entry";
|
|
37
|
+
/**
|
|
38
|
+
* Marker preceding the JSON report on crawl-entry's stdout. Lives here
|
|
39
|
+
* (not in crawl-entry.ts) so consumers can import it without executing
|
|
40
|
+
* the child entry's main().
|
|
41
|
+
*/
|
|
42
|
+
var CRAWL_RESULT_MARKER = "__TIMBER_CRAWL_RESULT__";
|
|
43
|
+
/** Marker error for deadline expiry — structurally distinguishable
|
|
44
|
+
* from a deterministic transform failure (consumers must not cache a
|
|
45
|
+
* deadline-truncated report; a transform failure recurs on retry and
|
|
46
|
+
* caches fine). */
|
|
47
|
+
var CrawlDeadlineError = class extends Error {};
|
|
48
|
+
/** Race a promise against the crawl deadline. */
|
|
49
|
+
function withDeadline(promise, remainingMs, label) {
|
|
50
|
+
return new Promise((resolvePromise, rejectPromise) => {
|
|
51
|
+
const timer = setTimeout(() => rejectPromise(new CrawlDeadlineError(`crawl deadline exceeded while transforming ${label}`)), Math.max(remainingMs, 1));
|
|
52
|
+
promise.then((value) => {
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
resolvePromise(value);
|
|
55
|
+
}, (error) => {
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
rejectPromise(error);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Whether a graph node's file belongs in the report. `root` must be
|
|
63
|
+
* slash-normalized; module-node paths already are (Vite normalizes
|
|
64
|
+
* them, even on Windows — comparing against a backslashed root would
|
|
65
|
+
* reject every physical module there and misreport the whole app as
|
|
66
|
+
* pending). The rule set is the scan's own (isScannableSourceFile), so
|
|
67
|
+
* report membership, disk-scan coverage, and the cache fingerprint are
|
|
68
|
+
* one set — a graph-reachable file the fingerprint never tracked would
|
|
69
|
+
* let its edits serve a stale cache (codex review, PR #1056).
|
|
70
|
+
*/
|
|
71
|
+
function isProjectFile(file, root, extensions) {
|
|
72
|
+
if (!file) return false;
|
|
73
|
+
return isScannableSourceFile(normalizePath(file), root, extensions);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* BFS one environment from the given seed URLs, transforming every
|
|
77
|
+
* discovered module unconditionally. Transforming (rather than reading
|
|
78
|
+
* live graphs) is what closes the §8 blind spot: modules behind
|
|
79
|
+
* unexecuted dynamic imports are transformed here like any other edge.
|
|
80
|
+
*
|
|
81
|
+
* Exported for tests (deadline behavior is exercised with a fake env).
|
|
82
|
+
*/
|
|
83
|
+
async function crawlEnvironment(env, envName, seeds, root, deadlineAt, errors, extensions) {
|
|
84
|
+
const queue = [...seeds];
|
|
85
|
+
const enqueued = new Set(queue);
|
|
86
|
+
const projectFiles = /* @__PURE__ */ new Set();
|
|
87
|
+
const failedFiles = /* @__PURE__ */ new Set();
|
|
88
|
+
let visited = 0;
|
|
89
|
+
let deadlineHit = false;
|
|
90
|
+
for (let cursor = 0; cursor < queue.length; cursor++) {
|
|
91
|
+
const url = queue[cursor];
|
|
92
|
+
const remaining = deadlineAt - Date.now();
|
|
93
|
+
if (remaining <= 0) {
|
|
94
|
+
errors.push({
|
|
95
|
+
environment: envName,
|
|
96
|
+
id: url,
|
|
97
|
+
message: "crawl deadline exceeded"
|
|
98
|
+
});
|
|
99
|
+
deadlineHit = true;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
let node;
|
|
103
|
+
try {
|
|
104
|
+
await withDeadline(env.transformRequest(url), remaining, url);
|
|
105
|
+
node = await env.moduleGraph.getModuleByUrl(url);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
if (error instanceof CrawlDeadlineError) deadlineHit = true;
|
|
108
|
+
errors.push({
|
|
109
|
+
environment: envName,
|
|
110
|
+
id: url,
|
|
111
|
+
message: error instanceof Error ? error.message : String(error)
|
|
112
|
+
});
|
|
113
|
+
node = await env.moduleGraph.getModuleByUrl(url).catch(() => void 0);
|
|
114
|
+
if (node && isProjectFile(node.file, root, extensions)) {
|
|
115
|
+
projectFiles.add(node.file);
|
|
116
|
+
failedFiles.add(node.file);
|
|
117
|
+
}
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (!node) continue;
|
|
121
|
+
visited++;
|
|
122
|
+
if (isProjectFile(node.file, root, extensions)) projectFiles.add(node.file);
|
|
123
|
+
for (const child of node.importedModules) {
|
|
124
|
+
const childUrl = child.url ?? child.id;
|
|
125
|
+
if (!childUrl || enqueued.has(childUrl)) continue;
|
|
126
|
+
enqueued.add(childUrl);
|
|
127
|
+
queue.push(childUrl);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
projectFiles,
|
|
132
|
+
failedFiles,
|
|
133
|
+
visited,
|
|
134
|
+
deadlineHit
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/** Root-relative Vite URL for an absolute project file path.
|
|
138
|
+
* Both arguments must be slash-normalized (the crawl normalizes at
|
|
139
|
+
* the boundary, so callers always satisfy this). */
|
|
140
|
+
function fileToUrl(file, root) {
|
|
141
|
+
return file.slice(root.length);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Read a file's first directive and poison signals from its original
|
|
145
|
+
* source on disk, in one read. A failure is recorded, not swallowed —
|
|
146
|
+
* a lost 'use client' here would silently drop the whole client
|
|
147
|
+
* subtree from the SSR crawl.
|
|
148
|
+
*/
|
|
149
|
+
async function sourceFactsOf(file, errors) {
|
|
150
|
+
try {
|
|
151
|
+
const code = await readFile(file, "utf8");
|
|
152
|
+
return {
|
|
153
|
+
directive: detectDirective(code, file),
|
|
154
|
+
signals: importSignals(collectImportSpecifiers(code, file))
|
|
155
|
+
};
|
|
156
|
+
} catch (error) {
|
|
157
|
+
errors.push({
|
|
158
|
+
environment: "scan",
|
|
159
|
+
id: file,
|
|
160
|
+
message: `directive read failed: ${error instanceof Error ? error.message : String(error)}`
|
|
161
|
+
});
|
|
162
|
+
return {
|
|
163
|
+
directive: null,
|
|
164
|
+
signals: []
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Crawl a project cold and classify every project file.
|
|
170
|
+
*
|
|
171
|
+
* Boots a middleware-mode Vite server with the app's own config (all
|
|
172
|
+
* timber plugins, real resolution), crawls the RSC graph from the entry,
|
|
173
|
+
* detects directives from original sources, crawls the SSR graph from
|
|
174
|
+
* every `'use client'` boundary, and intersects the memberships.
|
|
175
|
+
*/
|
|
176
|
+
async function crawlProject(options) {
|
|
177
|
+
const startedAt = Date.now();
|
|
178
|
+
const deadlineAt = startedAt + (options.timeoutMs ?? 12e4);
|
|
179
|
+
process.env.TIMBER_ANALYZE = "1";
|
|
180
|
+
const { createServer } = await import("vite");
|
|
181
|
+
const server = await createServer({
|
|
182
|
+
root: options.root,
|
|
183
|
+
configFile: options.configFile,
|
|
184
|
+
server: {
|
|
185
|
+
middlewareMode: true,
|
|
186
|
+
watch: null
|
|
187
|
+
},
|
|
188
|
+
logLevel: "error"
|
|
189
|
+
});
|
|
190
|
+
try {
|
|
191
|
+
const root = normalizePath(server.config.resolve.preserveSymlinks ? server.config.root : await realpath(server.config.root));
|
|
192
|
+
const rscEnv = server.environments.rsc;
|
|
193
|
+
const ssrEnv = server.environments.ssr;
|
|
194
|
+
if (!rscEnv?.transformRequest || !ssrEnv?.transformRequest) throw new Error("[timber] crawl requires the rsc and ssr Vite environments");
|
|
195
|
+
const errors = [];
|
|
196
|
+
const rootSyncPlugin = server.config.plugins.find((p) => p.name === "timber-root-sync");
|
|
197
|
+
let appDir;
|
|
198
|
+
let pageExtensions;
|
|
199
|
+
if (rootSyncPlugin && isTimberPluginApi(rootSyncPlugin.api)) {
|
|
200
|
+
const pluginCtx = rootSyncPlugin.api.getContext();
|
|
201
|
+
appDir = pluginCtx.appDir;
|
|
202
|
+
pageExtensions = pluginCtx.config.pageExtensions;
|
|
203
|
+
} else try {
|
|
204
|
+
appDir = resolveAppDir(root);
|
|
205
|
+
} catch {
|
|
206
|
+
appDir = join(root, "app");
|
|
207
|
+
}
|
|
208
|
+
appDir = normalizePath(appDir);
|
|
209
|
+
const extensions = buildSourceExtensions(pageExtensions);
|
|
210
|
+
const rsc = await crawlEnvironment(rscEnv, "rsc", [RSC_ENTRY_URL], root, deadlineAt, errors, extensions);
|
|
211
|
+
const diskFiles = [];
|
|
212
|
+
await scanProjectSourceFiles(root, diskFiles, (failure) => errors.push({
|
|
213
|
+
environment: "scan",
|
|
214
|
+
id: failure.dir,
|
|
215
|
+
message: failure.message
|
|
216
|
+
}), 0, extensions);
|
|
217
|
+
const allFiles = /* @__PURE__ */ new Set([...rsc.projectFiles, ...diskFiles.map(normalizePath)]);
|
|
218
|
+
const facts = /* @__PURE__ */ new Map();
|
|
219
|
+
for (const file of allFiles) facts.set(file, await sourceFactsOf(file, errors));
|
|
220
|
+
const ssr = await crawlEnvironment(ssrEnv, "ssr", [...rsc.projectFiles].filter((file) => facts.get(file)?.directive === "use client").map((file) => fileToUrl(file, root)), root, deadlineAt, errors, extensions);
|
|
221
|
+
for (const file of ssr.projectFiles) if (!facts.has(file)) {
|
|
222
|
+
facts.set(file, await sourceFactsOf(file, errors));
|
|
223
|
+
allFiles.add(file);
|
|
224
|
+
}
|
|
225
|
+
const classifications = classifyModules([...allFiles].map((file) => ({
|
|
226
|
+
file,
|
|
227
|
+
inRsc: rsc.projectFiles.has(file),
|
|
228
|
+
inSsr: ssr.projectFiles.has(file),
|
|
229
|
+
ssrTransformed: ssr.projectFiles.has(file) ? !ssr.failedFiles.has(file) : void 0,
|
|
230
|
+
directive: facts.get(file)?.directive ?? null
|
|
231
|
+
})), {
|
|
232
|
+
appDir,
|
|
233
|
+
pageExtensions
|
|
234
|
+
});
|
|
235
|
+
const chainCtx = {
|
|
236
|
+
rsc: server.environments.rsc.moduleGraph,
|
|
237
|
+
ssr: server.environments.ssr.moduleGraph,
|
|
238
|
+
appDir,
|
|
239
|
+
pageExtensions,
|
|
240
|
+
getDirective: (file) => facts.get(file)?.directive ?? null
|
|
241
|
+
};
|
|
242
|
+
const modules = classifications.map((classification) => ({
|
|
243
|
+
...classification,
|
|
244
|
+
boundary: facts.get(classification.file)?.directive === "use client",
|
|
245
|
+
chains: stitchImportChains(classification.file, chainCtx),
|
|
246
|
+
poisonings: poisoningsFor(classification.kind, classification.pending, facts.get(classification.file)?.signals ?? [])
|
|
247
|
+
}));
|
|
248
|
+
return {
|
|
249
|
+
root,
|
|
250
|
+
incomplete: rsc.deadlineHit || ssr.deadlineHit,
|
|
251
|
+
modules,
|
|
252
|
+
errors,
|
|
253
|
+
stats: {
|
|
254
|
+
rscGraphModules: rsc.visited,
|
|
255
|
+
ssrGraphModules: ssr.visited,
|
|
256
|
+
projectFiles: allFiles.size,
|
|
257
|
+
durationMs: Date.now() - startedAt
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
} finally {
|
|
261
|
+
await Promise.race([server.close().catch(() => {}), new Promise((resolveTimer) => setTimeout(resolveTimer, 5e3))]);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
//#endregion
|
|
265
|
+
//#region src/analyze/crawl-entry.ts
|
|
266
|
+
/**
|
|
267
|
+
* crawl-entry — child-process entry point for the cold crawl.
|
|
268
|
+
*
|
|
269
|
+
* The crawl's memory footprint is transient but large (~1.3 GB RSS on
|
|
270
|
+
* plugin-heavy apps — design/47 §6), so consumers spawn this module as a
|
|
271
|
+
* short-lived child process instead of crawling in-process:
|
|
272
|
+
*
|
|
273
|
+
* node --import tsx/esm crawl-entry.ts --root <dir> [--config <file>]
|
|
274
|
+
* [--out <file>] [--timeout <ms>]
|
|
275
|
+
*
|
|
276
|
+
* With `--out`, the JSON report is written to that file. Otherwise it is
|
|
277
|
+
* printed to stdout after a marker line — plugins in the booted app may
|
|
278
|
+
* write their own stdout noise, so consumers parse everything after the
|
|
279
|
+
* marker, not the whole stream.
|
|
280
|
+
*/
|
|
281
|
+
function readFlag(argv, name) {
|
|
282
|
+
const index = argv.indexOf(name);
|
|
283
|
+
return index !== -1 ? argv[index + 1] : void 0;
|
|
284
|
+
}
|
|
285
|
+
async function main() {
|
|
286
|
+
const argv = process.argv.slice(2);
|
|
287
|
+
const rootArg = readFlag(argv, "--root");
|
|
288
|
+
if (!rootArg) {
|
|
289
|
+
process.stderr.write("usage: crawl-entry --root <dir> [--config <file>] [--out <file>]\n");
|
|
290
|
+
process.exitCode = 2;
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const timeoutArg = readFlag(argv, "--timeout");
|
|
294
|
+
const report = await crawlProject({
|
|
295
|
+
root: resolve(rootArg),
|
|
296
|
+
configFile: readFlag(argv, "--config"),
|
|
297
|
+
timeoutMs: timeoutArg ? Number(timeoutArg) : void 0
|
|
298
|
+
});
|
|
299
|
+
const json = JSON.stringify(report);
|
|
300
|
+
const outFile = readFlag(argv, "--out");
|
|
301
|
+
if (outFile) await writeFile(resolve(outFile), json);
|
|
302
|
+
else await new Promise((resolveWrite, rejectWrite) => {
|
|
303
|
+
process.stdout.write(`\n${CRAWL_RESULT_MARKER}\n${json}\n`, (error) => error ? rejectWrite(error) : resolveWrite());
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
main().then(() => {
|
|
307
|
+
process.exit(process.exitCode ?? 0);
|
|
308
|
+
}, (error) => {
|
|
309
|
+
process.stderr.write(`[timber] crawl failed: ${error?.stack ?? String(error)}\n`);
|
|
310
|
+
process.exit(1);
|
|
311
|
+
});
|
|
312
|
+
//#endregion
|
|
313
|
+
|
|
314
|
+
//# sourceMappingURL=crawl-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawl-entry.js","names":[],"sources":["../../src/analyze/crawl.ts","../../src/analyze/crawl-entry.ts"],"sourcesContent":["/**\n * crawl — programmatic middleware-mode crawl (the cold path).\n *\n * Boots `createServer({ middlewareMode: true })` — no HTTP port, no route\n * rendering — and BFS-walks `env.transformRequest(url)` → importedModules\n * edges from `virtual:timber-rsc-entry`, then from every discovered\n * `'use client'` boundary through the SSR environment. This reuses Vite's\n * actual resolution (aliases, tsconfig paths, react-server export\n * conditions, virtual modules), so it cannot drift from what dev or the\n * build does; hand-rolled resolution was evaluated and rejected\n * (design/47 §\"Verified Prototype Findings\").\n *\n * Cost model (design/47 §6): 2.5 s on small apps to ~10 s on dep-heavy\n * plugin stacks, with a transient ~1.3 GB RSS — callers MUST run this in\n * a short-lived child process (see crawl-entry.ts) and cache the\n * classification output, not the Vite transforms. The crawl always\n * covers the full project: one crawl per project state, never per\n * question — marginal per-file cost is ~zero once booted.\n *\n * `TIMBER_ANALYZE=1` is set before the server boots so platform dev\n * plugins (wrangler bindings — a measured ~6.8 s remote-bindings\n * handshake on website) skip work the crawl never needs: classification\n * wants import edges, not live Cloudflare connections.\n *\n * Design docs: 47-module-environment-tooling.md §6, §8.\n */\n\nimport { readFile, realpath } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { ViteDevServer } from 'vite';\nimport { normalizePath } from 'vite';\nimport {\n classifyModules,\n detectDirective,\n type Directive,\n type ModuleClassification,\n} from './classify.ts';\nimport { buildSourceExtensions, scanProjectSourceFiles, isScannableSourceFile } from './scan.ts';\nimport { stitchImportChains, type ChainGraph, type ImportChain } from './chains.ts';\nimport {\n collectImportSpecifiers,\n importSignals,\n poisoningsFor,\n type Poisoning,\n} from './poison-scan.ts';\nimport { isTimberPluginApi, resolveAppDir } from '../plugin-context.ts';\n\nconst RSC_ENTRY_URL = 'virtual:timber-rsc-entry';\n\n/**\n * Marker preceding the JSON report on crawl-entry's stdout. Lives here\n * (not in crawl-entry.ts) so consumers can import it without executing\n * the child entry's main().\n */\nexport const CRAWL_RESULT_MARKER = '__TIMBER_CRAWL_RESULT__';\n\nexport interface CrawlOptions {\n /** Project root (the app directory containing vite.config). */\n root: string;\n /** Explicit Vite config file; discovered from root when omitted. */\n configFile?: string;\n /** Overall crawl deadline. Default 120s. */\n timeoutMs?: number;\n}\n\nexport interface CrawlError {\n /** 'scan' covers disk-scan and directive-read failures. */\n environment: 'rsc' | 'ssr' | 'scan';\n id: string;\n message: string;\n}\n\n/**\n * One project file's full graph answer — the classification plus the\n * remaining JSON-contract fields (`boundary`, `chains`, `poisonings`)\n * that need the open graphs / original sources to compute. This is the\n * per-module unit `timber graph` caches and serves.\n */\nexport interface GraphModuleReport extends ModuleClassification {\n /** True when the file itself carries `'use client'`. */\n boundary: boolean;\n /** Boundary-aware import chains (design/47 §7); [] when in no graph. */\n chains: ImportChain[];\n /** Report-only poisoning conflicts (design/47 §3); [] when clean. */\n poisonings: Poisoning[];\n}\n\nexport interface CrawlReport {\n root: string;\n /**\n * True when the crawl deadline expired mid-walk — the report is\n * truncated, not wrong, and the condition is transient (a slow\n * machine, a cold dep-optimizer). Consumers must not cache an\n * incomplete report: with unchanged files it would be served forever,\n * never retrying after the transient cause cleared. Deterministic\n * per-module transform failures do NOT set this — they recur on\n * retry, so caching them is correct.\n */\n incomplete: boolean;\n /** Classification of every project file, sorted by path. */\n modules: GraphModuleReport[];\n /**\n * Transform failures encountered during the BFS. These are classified,\n * not swallowed — CSS/asset URLs and non-transformable modules land\n * here (44 on website in the §6 measurement) and the crawl continues.\n */\n errors: CrawlError[];\n stats: {\n rscGraphModules: number;\n ssrGraphModules: number;\n projectFiles: number;\n durationMs: number;\n };\n}\n\n/** Marker error for deadline expiry — structurally distinguishable\n * from a deterministic transform failure (consumers must not cache a\n * deadline-truncated report; a transform failure recurs on retry and\n * caches fine). */\nclass CrawlDeadlineError extends Error {}\n\n/** Race a promise against the crawl deadline. */\nfunction withDeadline<T>(promise: Promise<T>, remainingMs: number, label: string): Promise<T> {\n return new Promise<T>((resolvePromise, rejectPromise) => {\n const timer = setTimeout(\n () =>\n rejectPromise(\n new CrawlDeadlineError(`crawl deadline exceeded while transforming ${label}`)\n ),\n Math.max(remainingMs, 1)\n );\n promise.then(\n (value) => {\n clearTimeout(timer);\n resolvePromise(value);\n },\n (error) => {\n clearTimeout(timer);\n rejectPromise(error);\n }\n );\n });\n}\n\n/** Duck-typed view of the Vite dev environment surface the crawl uses. */\nexport interface CrawlEnvironment {\n transformRequest(url: string): Promise<unknown>;\n moduleGraph: {\n getModuleByUrl(url: string): Promise<CrawlModuleNode | undefined>;\n };\n}\n\ninterface CrawlModuleNode {\n id: string | null;\n url: string;\n file: string | null;\n importedModules: Set<CrawlModuleNode>;\n transformResult: unknown;\n}\n\ninterface EnvCrawlResult {\n /** Absolute paths of project files reached in this environment. */\n projectFiles: Set<string>;\n /** Project files whose own transform failed (membership unconfirmed subtree). */\n failedFiles: Set<string>;\n /** Total graph modules visited (project + deps + virtual). */\n visited: number;\n /** The deadline expired mid-walk — the result is truncated. */\n deadlineHit: boolean;\n}\n\n/**\n * Whether a graph node's file belongs in the report. `root` must be\n * slash-normalized; module-node paths already are (Vite normalizes\n * them, even on Windows — comparing against a backslashed root would\n * reject every physical module there and misreport the whole app as\n * pending). The rule set is the scan's own (isScannableSourceFile), so\n * report membership, disk-scan coverage, and the cache fingerprint are\n * one set — a graph-reachable file the fingerprint never tracked would\n * let its edits serve a stale cache (codex review, PR #1056).\n */\nfunction isProjectFile(file: string | null, root: string, extensions?: RegExp): file is string {\n if (!file) return false;\n return isScannableSourceFile(normalizePath(file), root, extensions);\n}\n\n/**\n * BFS one environment from the given seed URLs, transforming every\n * discovered module unconditionally. Transforming (rather than reading\n * live graphs) is what closes the §8 blind spot: modules behind\n * unexecuted dynamic imports are transformed here like any other edge.\n *\n * Exported for tests (deadline behavior is exercised with a fake env).\n */\nexport async function crawlEnvironment(\n env: CrawlEnvironment,\n envName: 'rsc' | 'ssr',\n seeds: string[],\n root: string,\n deadlineAt: number,\n errors: CrawlError[],\n extensions?: RegExp\n): Promise<EnvCrawlResult> {\n const queue = [...seeds];\n const enqueued = new Set(queue);\n const projectFiles = new Set<string>();\n const failedFiles = new Set<string>();\n let visited = 0;\n let deadlineHit = false;\n\n // Index-cursor BFS — the queue only grows, so this walks each entry once.\n for (let cursor = 0; cursor < queue.length; cursor++) {\n const url = queue[cursor];\n const remaining = deadlineAt - Date.now();\n if (remaining <= 0) {\n errors.push({ environment: envName, id: url, message: 'crawl deadline exceeded' });\n deadlineHit = true;\n break;\n }\n\n let node: CrawlModuleNode | undefined;\n try {\n await withDeadline(env.transformRequest(url), remaining, url);\n node = await env.moduleGraph.getModuleByUrl(url);\n } catch (error) {\n if (error instanceof CrawlDeadlineError) deadlineHit = true;\n errors.push({\n environment: envName,\n id: url,\n message: error instanceof Error ? error.message : String(error),\n });\n // The URL may still have a graph node with a file — it IS a graph\n // member (reachable), its transform just failed. Record membership\n // AND the failure so classification reports it as reachable with\n // subtreeUnknown, not as pending/unreferenced.\n node = await env.moduleGraph.getModuleByUrl(url).catch(() => undefined);\n if (node && isProjectFile(node.file, root, extensions)) {\n projectFiles.add(node.file);\n failedFiles.add(node.file);\n }\n continue;\n }\n\n if (!node) continue;\n visited++;\n if (isProjectFile(node.file, root, extensions)) projectFiles.add(node.file);\n\n for (const child of node.importedModules) {\n const childUrl = child.url ?? child.id;\n if (!childUrl || enqueued.has(childUrl)) continue;\n enqueued.add(childUrl);\n queue.push(childUrl);\n }\n }\n\n return { projectFiles, failedFiles, visited, deadlineHit };\n}\n\n/** Root-relative Vite URL for an absolute project file path.\n * Both arguments must be slash-normalized (the crawl normalizes at\n * the boundary, so callers always satisfy this). */\nfunction fileToUrl(file: string, root: string): string {\n return file.slice(root.length);\n}\n\n/** What one read of a module's original source yields. */\ninterface SourceFacts {\n directive: Directive;\n /** Import-specifier exclusivity signals (poison-scan). */\n signals: Poisoning[];\n}\n\n/**\n * Read a file's first directive and poison signals from its original\n * source on disk, in one read. A failure is recorded, not swallowed —\n * a lost 'use client' here would silently drop the whole client\n * subtree from the SSR crawl.\n */\nasync function sourceFactsOf(file: string, errors: CrawlError[]): Promise<SourceFacts> {\n try {\n const code = await readFile(file, 'utf8');\n return {\n directive: detectDirective(code, file),\n signals: importSignals(collectImportSpecifiers(code, file)),\n };\n } catch (error) {\n errors.push({\n environment: 'scan',\n id: file,\n message: `directive read failed: ${error instanceof Error ? error.message : String(error)}`,\n });\n return { directive: null, signals: [] };\n }\n}\n\n/**\n * Crawl a project cold and classify every project file.\n *\n * Boots a middleware-mode Vite server with the app's own config (all\n * timber plugins, real resolution), crawls the RSC graph from the entry,\n * detects directives from original sources, crawls the SSR graph from\n * every `'use client'` boundary, and intersects the memberships.\n */\nexport async function crawlProject(options: CrawlOptions): Promise<CrawlReport> {\n const startedAt = Date.now();\n const deadlineAt = startedAt + (options.timeoutMs ?? 120_000);\n // Signal platform dev plugins (wrangler bindings) to skip boot work the\n // crawl never uses. Must be set before createServer runs plugin hooks.\n process.env.TIMBER_ANALYZE = '1';\n\n const { createServer } = await import('vite');\n const server: ViteDevServer = await createServer({\n root: options.root,\n configFile: options.configFile,\n server: { middlewareMode: true, watch: null },\n logLevel: 'error',\n });\n\n try {\n // The root must live in the same path space as the graph nodes.\n // By default Vite resolves through symlinks, so nodes carry\n // realpaths and a symlinked root (pnpm workspaces, ~ links) would\n // string-mismatch every file and misclassify the whole project as\n // unreferenced (design/43 open question 3). Under\n // resolve.preserveSymlinks the graphs keep the SYMLINK paths, and\n // realpathing would create exactly the mismatch it normally\n // prevents — honor the resolved setting. Slash-normalize either\n // way: module-node paths are slash-normalized even on Windows.\n const root = normalizePath(\n server.config.resolve.preserveSymlinks\n ? server.config.root\n : await realpath(server.config.root)\n );\n // Structural assignment, no cast: CrawlEnvironment/CrawlModuleNode\n // are supertypes of Vite's DevEnvironment/EnvironmentModuleNode for\n // the members the BFS reads, so an upstream shape change fails here\n // at compile time instead of inside the walk.\n const rscEnv: CrawlEnvironment | undefined = server.environments.rsc;\n const ssrEnv: CrawlEnvironment | undefined = server.environments.ssr;\n if (!rscEnv?.transformRequest || !ssrEnv?.transformRequest) {\n throw new Error('[timber] crawl requires the rsc and ssr Vite environments');\n }\n\n const errors: CrawlError[] = [];\n\n // appDir and pageExtensions come from the booted server's own\n // resolved timber config (the root-sync plugin api — the single\n // supported way to read it; cf. cli-check.ts). Resolved before\n // Phase 1 so the scan extension set is available to isProjectFile\n // and scanProjectSourceFiles — custom pageExtensions must be\n // admitted throughout, or graph membership disagrees with the\n // disk scan and fingerprint (TIM-1392).\n const rootSyncPlugin = server.config.plugins.find((p) => p.name === 'timber-root-sync');\n let appDir: string;\n let pageExtensions: readonly string[] | undefined;\n if (rootSyncPlugin && isTimberPluginApi(rootSyncPlugin.api)) {\n const pluginCtx = rootSyncPlugin.api.getContext();\n appDir = pluginCtx.appDir;\n pageExtensions = pluginCtx.config.pageExtensions;\n } else {\n try {\n appDir = resolveAppDir(root);\n } catch {\n // No app directory at all — provisional convention hints just\n // never fire; graph-membership classification is unaffected.\n appDir = join(root, 'app');\n }\n }\n // Normalize once at the boundary: appDir comes from node:path\n // join() (backslashes on Windows) but all downstream comparisons\n // — classify, chains, isRouteRoot — expect slash-normalized paths.\n appDir = normalizePath(appDir);\n const extensions = buildSourceExtensions(pageExtensions);\n\n // Phase 1 — RSC graph from the entry.\n const rsc = await crawlEnvironment(\n rscEnv,\n 'rsc',\n [RSC_ENTRY_URL],\n root,\n deadlineAt,\n errors,\n extensions\n );\n\n // Phase 2 — directives + poison signals for everything discovered so\n // far plus files on disk that no graph reached (the provisional/\n // pending set). The disk walk is the same one the graph cache\n // fingerprints (scan.ts) so cache validity covers exactly this set.\n const diskFiles: string[] = [];\n await scanProjectSourceFiles(\n root,\n diskFiles,\n (failure) => errors.push({ environment: 'scan', id: failure.dir, message: failure.message }),\n 0,\n extensions\n );\n // One path space throughout: graph paths are already slash-\n // normalized, disk-walk paths are node-joined (backslashed on\n // Windows) — mixing them in one Set would duplicate every file.\n const allFiles = new Set([...rsc.projectFiles, ...diskFiles.map(normalizePath)]);\n const facts = new Map<string, SourceFacts>();\n for (const file of allFiles) {\n facts.set(file, await sourceFactsOf(file, errors));\n }\n\n // Phase 3 — SSR graph from every RSC-REACHABLE 'use client'\n // boundary. SSR renders exactly the tree the browser hydrates, so\n // this yields the client tree (boundaries plus everything they\n // transitively import). Disk-only boundaries are deliberately NOT\n // seeded: an unreferenced 'use client' file must keep its\n // provisional pending classification, not get promoted to a\n // confirmed boundary (and drag its imports in as client-internal)\n // by the act of analyzing it.\n const boundarySeeds = [...rsc.projectFiles]\n .filter((file) => facts.get(file)?.directive === 'use client')\n .map((file) => fileToUrl(file, root));\n const ssr = await crawlEnvironment(\n ssrEnv,\n 'ssr',\n boundarySeeds,\n root,\n deadlineAt,\n errors,\n extensions\n );\n\n // SSR-only discoveries (client-internal files) need facts too.\n for (const file of ssr.projectFiles) {\n if (!facts.has(file)) {\n facts.set(file, await sourceFactsOf(file, errors));\n allFiles.add(file);\n }\n }\n\n const classifications = classifyModules(\n [...allFiles].map((file) => ({\n file,\n inRsc: rsc.projectFiles.has(file),\n inSsr: ssr.projectFiles.has(file),\n // The crawl transforms unconditionally, so the untransformed\n // frontier only arises where the transform itself failed.\n ssrTransformed: ssr.projectFiles.has(file) ? !ssr.failedFiles.has(file) : undefined,\n directive: facts.get(file)?.directive ?? null,\n })),\n { appDir, pageExtensions }\n );\n\n // Phase 4 — chains, from the live graphs of the still-open server.\n // ChainGraph is a structural supertype of Vite's module graphs\n // (TIM-1382), so the assignment is cast-free and an upstream shape\n // change fails at compile time.\n const rscChainGraph: ChainGraph = server.environments.rsc.moduleGraph;\n const ssrChainGraph: ChainGraph = server.environments.ssr.moduleGraph;\n const chainCtx = {\n rsc: rscChainGraph,\n ssr: ssrChainGraph,\n appDir,\n pageExtensions,\n // facts keys are already slash-normalized (allFiles is built from\n // graph membership + diskFiles.map(normalizePath)), so no\n // per-lookup normalization is needed.\n getDirective: (file: string) => facts.get(file)?.directive ?? null,\n };\n\n const modules: GraphModuleReport[] = classifications.map((classification) => ({\n ...classification,\n boundary: facts.get(classification.file)?.directive === 'use client',\n chains: stitchImportChains(classification.file, chainCtx),\n poisonings: poisoningsFor(\n classification.kind,\n classification.pending,\n facts.get(classification.file)?.signals ?? []\n ),\n }));\n\n return {\n root,\n incomplete: rsc.deadlineHit || ssr.deadlineHit,\n modules,\n errors,\n stats: {\n rscGraphModules: rsc.visited,\n ssrGraphModules: ssr.visited,\n projectFiles: allFiles.size,\n durationMs: Date.now() - startedAt,\n },\n };\n } finally {\n // Bound the cleanup: after a deadline expiry the very transforms\n // that hung are what server.close() waits on — an unbounded await\n // here would hang the child past its own --timeout and the report\n // would never be emitted. The child's process.exit reaps whatever\n // close left behind.\n await Promise.race([\n server.close().catch(() => {}),\n new Promise<void>((resolveTimer) => setTimeout(resolveTimer, 5_000)),\n ]);\n }\n}\n","/**\n * crawl-entry — child-process entry point for the cold crawl.\n *\n * The crawl's memory footprint is transient but large (~1.3 GB RSS on\n * plugin-heavy apps — design/47 §6), so consumers spawn this module as a\n * short-lived child process instead of crawling in-process:\n *\n * node --import tsx/esm crawl-entry.ts --root <dir> [--config <file>]\n * [--out <file>] [--timeout <ms>]\n *\n * With `--out`, the JSON report is written to that file. Otherwise it is\n * printed to stdout after a marker line — plugins in the booted app may\n * write their own stdout noise, so consumers parse everything after the\n * marker, not the whole stream.\n */\n\nimport { writeFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { crawlProject, CRAWL_RESULT_MARKER } from './crawl.ts';\n\nfunction readFlag(argv: string[], name: string): string | undefined {\n const index = argv.indexOf(name);\n return index !== -1 ? argv[index + 1] : undefined;\n}\n\nasync function main(): Promise<void> {\n const argv = process.argv.slice(2);\n const rootArg = readFlag(argv, '--root');\n if (!rootArg) {\n process.stderr.write('usage: crawl-entry --root <dir> [--config <file>] [--out <file>]\\n');\n process.exitCode = 2;\n return;\n }\n\n const timeoutArg = readFlag(argv, '--timeout');\n const report = await crawlProject({\n root: resolve(rootArg),\n configFile: readFlag(argv, '--config'),\n timeoutMs: timeoutArg ? Number(timeoutArg) : undefined,\n });\n\n const json = JSON.stringify(report);\n const outFile = readFlag(argv, '--out');\n if (outFile) {\n await writeFile(resolve(outFile), json);\n } else {\n // Await the flush: stdout to a pipe is async, and process.exit()\n // below does NOT flush pending pipe writes — a large report would\n // be truncated right after the marker.\n await new Promise<void>((resolveWrite, rejectWrite) => {\n process.stdout.write(`\\n${CRAWL_RESULT_MARKER}\\n${json}\\n`, (error) =>\n error ? rejectWrite(error) : resolveWrite()\n );\n });\n }\n}\n\nmain().then(\n () => {\n // The booted app's plugins may hold handles (watchers, sockets) past\n // server.close(); the crawl is a read-only child, so exit explicitly.\n process.exit(process.exitCode ?? 0);\n },\n (error) => {\n process.stderr.write(`[timber] crawl failed: ${error?.stack ?? String(error)}\\n`);\n process.exit(1);\n }\n);\n"],"mappings":"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"}
|