@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,792 @@
|
|
|
1
|
+
import { t as SingleflightTimeoutError } from "../_chunks/singleflight-BeVMMKi0.js";
|
|
2
|
+
import { a as routerUrlKey, c as prefetchScopeOf, i as parseRouterUrl, n as createNavigationCommitter, o as PrefetchCache, r as isPartialNavigation, s as SegmentCache } from "../_chunks/status-page-marker-BRX9Ib-d.js";
|
|
3
|
+
import { c as cachedSearchParams, s as cachedSearch, t as _setCachedSearch } from "../_chunks/state-BhNGPsdi.js";
|
|
4
|
+
import { a as setGlobalRouter, i as getRouterOrNull, r as getRouter } from "../_chunks/navigation-root-BQfo1-kG.js";
|
|
5
|
+
import { n as registerSsrDataProvider, t as getSsrData } from "../_chunks/ssr-data-nA3I70_n.js";
|
|
6
|
+
import { i as useNavigationContext, n as useSegmentContext, r as NavigationProvider, t as SegmentProvider } from "../_chunks/segment-context-xtPUGfdq.js";
|
|
7
|
+
import { a as createSpaExits, c as NonRscResponse, d as readPublishedParams, i as createScrollEffects, l as fetchRscPayload, n as TimberErrorBoundary, o as recordSkew, r as createNavigationRecovery, s as isClientStale, u as readPayloadTree } from "../_chunks/error-boundary-DsNScGRM.js";
|
|
8
|
+
import { t as bindUseQueryStates } from "../_chunks/use-query-states-I3JMng6J.js";
|
|
9
|
+
//#region src/client/history.ts
|
|
10
|
+
/**
|
|
11
|
+
* Session-lived history stack keyed by URL. Enables instant back/forward
|
|
12
|
+
* navigation without a server roundtrip.
|
|
13
|
+
*
|
|
14
|
+
* On forward navigation, the new page's payload is pushed onto the stack.
|
|
15
|
+
* On popstate, the cached payload is replayed instantly.
|
|
16
|
+
*
|
|
17
|
+
* Entries are keyed by pathname + search in the browser's own spelling
|
|
18
|
+
* (`routerUrlKey`), whatever spelling a caller passes: an entry stored by
|
|
19
|
+
* `navigate('/café')` is found by a traversal that reads `/caf%C3%A9` off
|
|
20
|
+
* the address bar, and `/a?` is `/a` (TIM-1541). Used with the History API
|
|
21
|
+
* fallback and the Navigation API.
|
|
22
|
+
*
|
|
23
|
+
* Scroll positions are stored in history.state or Navigation API entry
|
|
24
|
+
* state, not in this stack — see design/19-client-navigation.md §Scroll Restoration.
|
|
25
|
+
*
|
|
26
|
+
* Entries have no expiry, but only the 50 most recently used URLs are kept
|
|
27
|
+
* by default. Traversing to an evicted entry fetches a fresh payload.
|
|
28
|
+
*/
|
|
29
|
+
var HistoryStack = class {
|
|
30
|
+
entries = /* @__PURE__ */ new Map();
|
|
31
|
+
maxEntries;
|
|
32
|
+
constructor({ maxEntries = 50 } = {}) {
|
|
33
|
+
if (!Number.isInteger(maxEntries) || maxEntries < 1) throw new RangeError("HistoryStack maxEntries must be a positive integer");
|
|
34
|
+
this.maxEntries = maxEntries;
|
|
35
|
+
}
|
|
36
|
+
push(url, entry) {
|
|
37
|
+
url = routerUrlKey(url);
|
|
38
|
+
this.entries.delete(url);
|
|
39
|
+
this.entries.set(url, entry);
|
|
40
|
+
if (this.entries.size > this.maxEntries) {
|
|
41
|
+
const oldest = this.entries.keys().next();
|
|
42
|
+
if (!oldest.done) this.entries.delete(oldest.value);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
get(url) {
|
|
46
|
+
url = routerUrlKey(url);
|
|
47
|
+
const entry = this.entries.get(url);
|
|
48
|
+
if (entry) {
|
|
49
|
+
this.entries.delete(url);
|
|
50
|
+
this.entries.set(url, entry);
|
|
51
|
+
}
|
|
52
|
+
return entry;
|
|
53
|
+
}
|
|
54
|
+
/** Presence checks (such as hover prefetch probes) do not promote entries. */
|
|
55
|
+
has(url) {
|
|
56
|
+
return this.entries.has(routerUrlKey(url));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Evict every entry (TIM-1476). Called after a server action that
|
|
60
|
+
* revalidated data — history entries are equally stale since they replay
|
|
61
|
+
* on back/forward without a server check. Clearing forces a fresh fetch on
|
|
62
|
+
* the next traversal.
|
|
63
|
+
*
|
|
64
|
+
* The current page's entry goes too. Nothing reads it for anything but a
|
|
65
|
+
* replay: the segment metadata a revalidation needs is the committer's
|
|
66
|
+
* record of the current page, not this stack's (TIM-1541).
|
|
67
|
+
*/
|
|
68
|
+
clear() {
|
|
69
|
+
this.entries.clear();
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region src/client/navigation-transition.ts
|
|
74
|
+
/**
|
|
75
|
+
* Create a fresh RenderOwner. Exported so tests that call
|
|
76
|
+
* `navigateTransition` directly can construct one without a router.
|
|
77
|
+
*/
|
|
78
|
+
function createRenderOwner(kind) {
|
|
79
|
+
let resolveDisplaced;
|
|
80
|
+
const displaced = new Promise((r) => {
|
|
81
|
+
resolveDisplaced = r;
|
|
82
|
+
});
|
|
83
|
+
const owner = {
|
|
84
|
+
kind,
|
|
85
|
+
fetchAbort: new AbortController(),
|
|
86
|
+
handedOff: false,
|
|
87
|
+
outcome: null,
|
|
88
|
+
displaced,
|
|
89
|
+
settle(outcome) {
|
|
90
|
+
if (owner.outcome === null) owner.outcome = outcome;
|
|
91
|
+
else if (outcome === "superseded" && owner.outcome === "committed") owner.outcome = "superseded";
|
|
92
|
+
if (outcome !== "committed") resolveDisplaced();
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
return owner;
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
//#region src/client/router-lifecycle.ts
|
|
99
|
+
/**
|
|
100
|
+
* Navigation Lifecycle — who owns the router, and when a fetch may be cut.
|
|
101
|
+
*
|
|
102
|
+
* One navigation at a time owns the router. This module holds that ownership
|
|
103
|
+
* as a single `RenderOwner` slot, the rule for taking it (`createNavOwner`
|
|
104
|
+
* supersedes), the wrapper every navigation runs inside (`runNavigation`),
|
|
105
|
+
* and the pending store that `TopLoader` and `usePendingNavigation()`
|
|
106
|
+
* subscribe to.
|
|
107
|
+
*
|
|
108
|
+
* TIM-1481: replaced the transition counter, the `handedOffNavAborts` set,
|
|
109
|
+
* and the `AbortController`-as-owner pattern with `RenderOwner`. Supersession
|
|
110
|
+
* is "take the slot": settle the previous owner and abort its fetch unless
|
|
111
|
+
* handed off.
|
|
112
|
+
*
|
|
113
|
+
* See design/19-client-navigation.md §"How Pending State Works".
|
|
114
|
+
*/
|
|
115
|
+
/**
|
|
116
|
+
* Check if an error is an abort error (connection closed / fetch aborted).
|
|
117
|
+
* Browsers throw DOMException with name 'AbortError' when a fetch is aborted.
|
|
118
|
+
*/
|
|
119
|
+
function isAbortError(error) {
|
|
120
|
+
if (error instanceof DOMException && error.name === "AbortError") return true;
|
|
121
|
+
if (error instanceof Error && error.name === "AbortError") return true;
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
function createNavigationLifecycle(deps) {
|
|
125
|
+
let current = null;
|
|
126
|
+
let pendingCommit = null;
|
|
127
|
+
let routerPhase = { phase: "idle" };
|
|
128
|
+
const pendingListeners = /* @__PURE__ */ new Set();
|
|
129
|
+
let navigationSeq = 0;
|
|
130
|
+
let idleTask = null;
|
|
131
|
+
/**
|
|
132
|
+
* Whether a handed-off tree has not yet committed. Derived from the slot:
|
|
133
|
+
* true when `current` is handed off but not yet settled.
|
|
134
|
+
*/
|
|
135
|
+
function hasUncommittedNav() {
|
|
136
|
+
return pendingCommit !== null || current !== null && current.handedOff && current.outcome === null;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Cancel a navigation's RSC fetch — unless its tree is the one on screen.
|
|
140
|
+
*
|
|
141
|
+
* THE only place a navigation controller is aborted. Every path that gives
|
|
142
|
+
* up on a navigation calls this, so the "is this tree displayed?" question
|
|
143
|
+
* is asked once rather than at each site. A new abort path is a call to
|
|
144
|
+
* this, not a copy of `controller.abort()`.
|
|
145
|
+
*
|
|
146
|
+
* See design/19-client-navigation.md §"A navigation that reached React
|
|
147
|
+
* keeps its stream".
|
|
148
|
+
*/
|
|
149
|
+
function abortUnlessHandedOff(owner) {
|
|
150
|
+
if (owner.handedOff) return;
|
|
151
|
+
owner.fetchAbort.abort();
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Create a new RenderOwner for a navigation, superseding any previous
|
|
155
|
+
* in-flight navigation. Optionally links to an external signal (e.g.,
|
|
156
|
+
* from the Navigation API's NavigateEvent.signal).
|
|
157
|
+
*
|
|
158
|
+
* Superseding is one operation with three parts:
|
|
159
|
+
* 1. Abort the previous navigation's fetch — UNLESS its tree is the one on
|
|
160
|
+
* screen, in which case tearing the stream down would error the page the
|
|
161
|
+
* user is currently looking at. See `RenderOwner.handedOff`.
|
|
162
|
+
* 2. Settle the previous owner as 'superseded' so its transition detects
|
|
163
|
+
* it lost and never hands a stale tree to React. This replaces both
|
|
164
|
+
* `supersedeNavigationTransitions()` and the transition counter bump.
|
|
165
|
+
* 3. Resolve its Navigation API deferred — the superseded navigation's
|
|
166
|
+
* finally block is staleness-guarded (see TIM-1034) and no longer
|
|
167
|
+
* cleans up after itself, so the browser's native loading state for
|
|
168
|
+
* the dead navigation is cleared here.
|
|
169
|
+
*/
|
|
170
|
+
function createNavOwner(kind, externalSignal) {
|
|
171
|
+
if (current) {
|
|
172
|
+
abortUnlessHandedOff(current);
|
|
173
|
+
current.settle("superseded");
|
|
174
|
+
deps.completeRouterNavigation?.();
|
|
175
|
+
}
|
|
176
|
+
if (pendingCommit) {
|
|
177
|
+
pendingCommit.settle("superseded");
|
|
178
|
+
pendingCommit = null;
|
|
179
|
+
}
|
|
180
|
+
navigationSeq += 1;
|
|
181
|
+
const owner = createRenderOwner(kind);
|
|
182
|
+
current = owner;
|
|
183
|
+
if (externalSignal) {
|
|
184
|
+
if (externalSignal.aborted) abortUnlessHandedOff(owner);
|
|
185
|
+
else externalSignal.addEventListener("abort", () => abortUnlessHandedOff(owner), { once: true });
|
|
186
|
+
}
|
|
187
|
+
return owner;
|
|
188
|
+
}
|
|
189
|
+
function setPending(value, url) {
|
|
190
|
+
const next = value && url ? {
|
|
191
|
+
phase: "navigating",
|
|
192
|
+
targetUrl: url
|
|
193
|
+
} : { phase: "idle" };
|
|
194
|
+
if (routerPhase.phase === next.phase && (routerPhase.phase === "idle" || routerPhase.phase === "navigating" && next.phase === "navigating" && routerPhase.targetUrl === next.targetUrl)) return;
|
|
195
|
+
routerPhase = next;
|
|
196
|
+
for (const listener of pendingListeners) listener(value);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Wrap a navigation in the standard abort/pending/cleanup lifecycle.
|
|
200
|
+
* Consolidates the createNavOwner + setPending + staleness-guarded
|
|
201
|
+
* finally that was duplicated across navigate, refresh, and both
|
|
202
|
+
* handlePopState paths. AbortErrors are swallowed (not application
|
|
203
|
+
* errors); all other errors propagate to the caller.
|
|
204
|
+
*/
|
|
205
|
+
async function runNavigation(url, fn, externalSignal) {
|
|
206
|
+
const owner = createNavOwner("navigation", externalSignal);
|
|
207
|
+
setPending(true, url);
|
|
208
|
+
try {
|
|
209
|
+
await fn(owner);
|
|
210
|
+
} catch (error) {
|
|
211
|
+
if (isAbortError(error)) return;
|
|
212
|
+
throw error;
|
|
213
|
+
} finally {
|
|
214
|
+
if (current === owner) {
|
|
215
|
+
current = null;
|
|
216
|
+
setPending(false);
|
|
217
|
+
deps.completeRouterNavigation?.();
|
|
218
|
+
flushIdleTask();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
function flushIdleTask() {
|
|
223
|
+
if (routerPhase.phase !== "idle" || hasUncommittedNav() || !idleTask) return;
|
|
224
|
+
const task = idleTask;
|
|
225
|
+
idleTask = null;
|
|
226
|
+
task();
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
currentOwner: () => current,
|
|
230
|
+
createNavOwner,
|
|
231
|
+
runNavigation,
|
|
232
|
+
markHandedOff(owner) {
|
|
233
|
+
if (current !== owner) return;
|
|
234
|
+
owner.handedOff = true;
|
|
235
|
+
pendingCommit = owner;
|
|
236
|
+
},
|
|
237
|
+
forgetOlderHandoffs(owner) {
|
|
238
|
+
owner.settle("committed");
|
|
239
|
+
if (pendingCommit === owner) pendingCommit = null;
|
|
240
|
+
flushIdleTask();
|
|
241
|
+
},
|
|
242
|
+
placeRevalidationOwner(owner) {
|
|
243
|
+
current = owner;
|
|
244
|
+
},
|
|
245
|
+
isPending: () => routerPhase.phase === "navigating",
|
|
246
|
+
getPendingUrl: () => routerPhase.phase === "navigating" ? routerPhase.targetUrl : null,
|
|
247
|
+
onPendingChange(listener) {
|
|
248
|
+
pendingListeners.add(listener);
|
|
249
|
+
return () => pendingListeners.delete(listener);
|
|
250
|
+
},
|
|
251
|
+
epoch() {
|
|
252
|
+
return {
|
|
253
|
+
seq: navigationSeq,
|
|
254
|
+
idle: routerPhase.phase === "idle" && !hasUncommittedNav()
|
|
255
|
+
};
|
|
256
|
+
},
|
|
257
|
+
isEpochCurrent(e) {
|
|
258
|
+
return e.idle && routerPhase.phase === "idle" && !hasUncommittedNav() && navigationSeq === e.seq;
|
|
259
|
+
},
|
|
260
|
+
runWhenIdle(task) {
|
|
261
|
+
if (routerPhase.phase === "idle" && !hasUncommittedNav()) {
|
|
262
|
+
task();
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
idleTask = task;
|
|
266
|
+
},
|
|
267
|
+
settleHandoffs() {
|
|
268
|
+
if (pendingCommit) {
|
|
269
|
+
pendingCommit.settle("superseded");
|
|
270
|
+
pendingCommit = null;
|
|
271
|
+
}
|
|
272
|
+
if (current !== null && current.handedOff && current.outcome === null) current.settle("superseded");
|
|
273
|
+
flushIdleTask();
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
//#endregion
|
|
278
|
+
//#region src/client/router-pipeline.ts
|
|
279
|
+
/**
|
|
280
|
+
* Navigation Pipeline — URL in, tree in React's hands.
|
|
281
|
+
*
|
|
282
|
+
* Everything between "the user asked for this URL" and "React is holding the
|
|
283
|
+
* destination's tree": consult the prefetch cache or fetch, prepare the commit
|
|
284
|
+
* that makes the page current, and hand the result over inside a transition.
|
|
285
|
+
*
|
|
286
|
+
* `router.ts` keeps the *operations* — `navigate`, `refresh`, `handlePopState`,
|
|
287
|
+
* `prefetch`, `applyActionResult` — and each of them is a call into here. The
|
|
288
|
+
* split is the same one `router-effects.ts` and `router-lifecycle.ts` made
|
|
289
|
+
* (design/18-build-system.md §"No file >500 lines").
|
|
290
|
+
*
|
|
291
|
+
* See design/19-client-navigation.md §"Partial Rendering" and §"Prefetching".
|
|
292
|
+
*/
|
|
293
|
+
/**
|
|
294
|
+
* Race a promise against an abort signal. The promise continues regardless —
|
|
295
|
+
* only the *await* gives up. Used so a click superseded by a newer navigation
|
|
296
|
+
* stops waiting for a shared prefetch flight without aborting the flight
|
|
297
|
+
* itself (TIM-1438).
|
|
298
|
+
*/
|
|
299
|
+
function raceAbort(promise, signal) {
|
|
300
|
+
if (!signal) return promise;
|
|
301
|
+
if (signal.aborted) return Promise.reject(signal.reason);
|
|
302
|
+
return Promise.race([promise, new Promise((_, reject) => {
|
|
303
|
+
signal.addEventListener("abort", () => reject(signal.reason), { once: true });
|
|
304
|
+
})]);
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Normalize a departing URL to the pathname the server is told about.
|
|
308
|
+
*
|
|
309
|
+
* This is the value sent as `X-Timber-URL` *and* the source half of the
|
|
310
|
+
* prefetch cache key — one function so a prefetch and the click that consumes
|
|
311
|
+
* it can never disagree about what "where we came from" means (TIM-1265). The
|
|
312
|
+
* query is dropped deliberately: it would land in the `_rsc` digest, which is
|
|
313
|
+
* logged (TIM-1268), and nothing downstream reads it — slot-skip resolution
|
|
314
|
+
* and interception scope both compare pathnames.
|
|
315
|
+
*
|
|
316
|
+
* Absolute inputs parse against the base and ignore it, so one call handles
|
|
317
|
+
* both `location.href` and a bare pathname.
|
|
318
|
+
*/
|
|
319
|
+
function departingPathname(raw) {
|
|
320
|
+
return parseRouterUrl(raw).pathname;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* The prefetch cache key for a destination.
|
|
324
|
+
*
|
|
325
|
+
* Both halves of the cache are keyed through here — the hover that writes an
|
|
326
|
+
* entry (`router.ts`'s `prefetch()`) and the click that consumes it
|
|
327
|
+
* (`performNavigationFetch` below) — so the two cannot disagree about what
|
|
328
|
+
* identifies a payload. That is the whole point of the key: `from` scopes it
|
|
329
|
+
* to the page the link was on (TIM-1265) and `scope` to the tree that was
|
|
330
|
+
* mounted (TIM-1282), and an entry written under one reading of either would
|
|
331
|
+
* simply never be found under the other, silently costing every prefetch.
|
|
332
|
+
*
|
|
333
|
+
* `departingPathname` is applied here rather than by callers for the same
|
|
334
|
+
* reason: it is also what goes out as `X-Timber-URL`, so the key and the
|
|
335
|
+
* request describe the same departure point.
|
|
336
|
+
*/
|
|
337
|
+
function prefetchKeyFor(url, departingUrl, stateTree) {
|
|
338
|
+
return {
|
|
339
|
+
url,
|
|
340
|
+
from: departingPathname(departingUrl),
|
|
341
|
+
scope: prefetchScopeOf(stateTree)
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Build a segment updates map for partial navigation. Identifies the
|
|
346
|
+
* first non-skipped segment and maps it to the payload content.
|
|
347
|
+
*/
|
|
348
|
+
function buildSegmentUpdates(result, payload) {
|
|
349
|
+
const skipped = new Set(result.skippedSegments);
|
|
350
|
+
const segmentInfo = result.segmentInfo;
|
|
351
|
+
const updates = /* @__PURE__ */ new Map();
|
|
352
|
+
if (segmentInfo) {
|
|
353
|
+
for (const info of segmentInfo) if (!skipped.has(info.segmentId ?? info.path)) {
|
|
354
|
+
updates.set(info.segmentId ?? info.path, payload);
|
|
355
|
+
break;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return updates;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Inspect a decode rejection for version skew before handing the promise on,
|
|
362
|
+
* without changing what the consumer sees.
|
|
363
|
+
*
|
|
364
|
+
* The decode rejects independently of the fetch, and not every consumer
|
|
365
|
+
* awaits it — NavigationRoot drops it outright when the transition has been
|
|
366
|
+
* superseded. A stale client reference arriving that way is still evidence
|
|
367
|
+
* the bundle is superseded, so record it here where every consumer is fed
|
|
368
|
+
* from, rather than at each place that might drop it (TIM-1275).
|
|
369
|
+
*/
|
|
370
|
+
function observeSkew(decodePromise) {
|
|
371
|
+
decodePromise?.catch((error) => void recordSkew(error));
|
|
372
|
+
return decodePromise;
|
|
373
|
+
}
|
|
374
|
+
function createNavigationPipeline({ deps, prefetchCache, currentStateTree, prepareNavigation, isSegmentReuseSuppressed, restoreSegmentReuse, markHandedOff, forgetOlderHandoffs }) {
|
|
375
|
+
/**
|
|
376
|
+
* Hand a payload to React via navigateTransition. The perform callback should fetch data, prepare the commit, and return the
|
|
377
|
+
* FetchResult plus the NavigationState and the commit thunk.
|
|
378
|
+
*
|
|
379
|
+
* The thunk is handed *through* to NavigationRoot rather than called here:
|
|
380
|
+
* state management (segment cache, history stack, address bar) has to happen on
|
|
381
|
+
* the far side of the supersession check, which only NavigationRoot can
|
|
382
|
+
* make (TIM-1301).
|
|
383
|
+
*/
|
|
384
|
+
async function renderViaTransition(url, owner, types, perform, onCommit) {
|
|
385
|
+
const handOff = () => markHandedOff(owner);
|
|
386
|
+
const commitAndForget = (commit) => () => {
|
|
387
|
+
forgetOlderHandoffs(owner);
|
|
388
|
+
commit();
|
|
389
|
+
};
|
|
390
|
+
await deps.navigateTransition(url, owner, types, async (wrapPayload) => {
|
|
391
|
+
const result = await perform();
|
|
392
|
+
const params = await result.params;
|
|
393
|
+
const payload = await result.payload;
|
|
394
|
+
if (isPartialNavigation(result.skippedSegments)) {
|
|
395
|
+
const segmentUpdates = buildSegmentUpdates(result, payload);
|
|
396
|
+
const element = wrapPayload(deps._getCurrentPayload?.() ?? payload, result.navState, params, segmentUpdates);
|
|
397
|
+
handOff();
|
|
398
|
+
return {
|
|
399
|
+
element,
|
|
400
|
+
decodePromise: observeSkew(result.decodePromise),
|
|
401
|
+
commit: commitAndForget(result.commit)
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
const element = wrapPayload(payload, result.navState, params);
|
|
405
|
+
handOff();
|
|
406
|
+
return {
|
|
407
|
+
element,
|
|
408
|
+
decodePromise: observeSkew(result.decodePromise),
|
|
409
|
+
commit: commitAndForget(result.commit)
|
|
410
|
+
};
|
|
411
|
+
}, onCommit);
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Fetch (or take from the prefetch cache) a navigation's payload and
|
|
415
|
+
* prepare — without publishing — the commit that makes it current.
|
|
416
|
+
*/
|
|
417
|
+
async function performNavigationFetch(url, options) {
|
|
418
|
+
const stateTree = currentStateTree();
|
|
419
|
+
let reuseSuppressedAtFetch = isSegmentReuseSuppressed();
|
|
420
|
+
const cacheKey = prefetchKeyFor(url, options.departingUrl ?? deps.getCurrentUrl(), stateTree);
|
|
421
|
+
const currentUrl = cacheKey.from;
|
|
422
|
+
if (prefetchCache.isNegative(cacheKey)) {
|
|
423
|
+
prefetchCache.consume(cacheKey);
|
|
424
|
+
throw new NonRscResponse(url);
|
|
425
|
+
}
|
|
426
|
+
const prefetched = prefetchCache.consume(cacheKey);
|
|
427
|
+
let result = prefetched ? {
|
|
428
|
+
payload: prefetched.payload,
|
|
429
|
+
params: prefetched.params ?? readPublishedParams(void 0),
|
|
430
|
+
decodePromise: prefetched.decodePromise ?? null,
|
|
431
|
+
segmentInfo: prefetched.segmentInfo ?? null,
|
|
432
|
+
skippedSegments: prefetched.skippedSegments ?? null
|
|
433
|
+
} : void 0;
|
|
434
|
+
if (result === void 0) {
|
|
435
|
+
const inflight = prefetchCache.joinInflight(cacheKey);
|
|
436
|
+
if (inflight) {
|
|
437
|
+
const genBefore = prefetchCache.getEvictionGen();
|
|
438
|
+
try {
|
|
439
|
+
const outcome = await raceAbort(inflight, options.signal);
|
|
440
|
+
if (prefetchCache.getEvictionGen() !== genBefore || outcome.startGen !== genBefore) {} else if (outcome.kind === "non-route") throw new NonRscResponse(url);
|
|
441
|
+
else {
|
|
442
|
+
prefetchCache.consume(cacheKey);
|
|
443
|
+
result = {
|
|
444
|
+
payload: outcome.result.payload,
|
|
445
|
+
params: outcome.result.params ?? readPublishedParams(void 0),
|
|
446
|
+
decodePromise: outcome.result.decodePromise ?? null,
|
|
447
|
+
segmentInfo: outcome.result.segmentInfo ?? null,
|
|
448
|
+
skippedSegments: outcome.result.skippedSegments ?? null
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
} catch (error) {
|
|
452
|
+
if (error instanceof DOMException && error.name === "AbortError") throw error;
|
|
453
|
+
if (options.signal?.aborted) throw options.signal.reason;
|
|
454
|
+
if (error instanceof SingleflightTimeoutError || error instanceof TypeError) {} else throw error;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
if (result === void 0) {
|
|
459
|
+
reuseSuppressedAtFetch = isSegmentReuseSuppressed();
|
|
460
|
+
const freshStateTree = currentStateTree();
|
|
461
|
+
result = await fetchRscPayload(url, deps, freshStateTree, currentUrl, options.signal);
|
|
462
|
+
}
|
|
463
|
+
const commitHistoryUrl = () => {
|
|
464
|
+
if (options.skipHistory) return;
|
|
465
|
+
const commitUrl = options.commitUrl ?? url;
|
|
466
|
+
deps.setRouterNavigating?.(true);
|
|
467
|
+
if (options.replace) deps.replaceState({
|
|
468
|
+
timber: true,
|
|
469
|
+
scrollY: 0
|
|
470
|
+
}, "", commitUrl);
|
|
471
|
+
else deps.pushState({
|
|
472
|
+
timber: true,
|
|
473
|
+
scrollY: 0
|
|
474
|
+
}, "", commitUrl);
|
|
475
|
+
deps.setRouterNavigating?.(false);
|
|
476
|
+
};
|
|
477
|
+
const params = await result.params;
|
|
478
|
+
const { navState, commit } = prepareNavigation(url, {
|
|
479
|
+
payload: result.payload,
|
|
480
|
+
params,
|
|
481
|
+
segmentInfo: result.segmentInfo,
|
|
482
|
+
skippedSegments: result.skippedSegments
|
|
483
|
+
});
|
|
484
|
+
if (reuseSuppressedAtFetch) restoreSegmentReuse();
|
|
485
|
+
return {
|
|
486
|
+
...result,
|
|
487
|
+
params,
|
|
488
|
+
navState,
|
|
489
|
+
commit: () => {
|
|
490
|
+
commitHistoryUrl();
|
|
491
|
+
commit();
|
|
492
|
+
window.dispatchEvent(new Event("timber:navigation-end"));
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
return {
|
|
497
|
+
performNavigationFetch,
|
|
498
|
+
renderViaTransition
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
//#endregion
|
|
502
|
+
//#region src/client/router.ts
|
|
503
|
+
/**
|
|
504
|
+
* Create a router instance. In production, called once at app hydration
|
|
505
|
+
* with real browser APIs. In tests, called with mock dependencies.
|
|
506
|
+
*/
|
|
507
|
+
function createRouter(deps) {
|
|
508
|
+
const segmentCache = new SegmentCache();
|
|
509
|
+
const prefetchCache = new PrefetchCache();
|
|
510
|
+
const historyStack = new HistoryStack();
|
|
511
|
+
const { prepareNavigation, currentStateTree, committedSegmentInfo, isSegmentReuseSuppressed, restoreSegmentReuse } = createNavigationCommitter({
|
|
512
|
+
segmentCache,
|
|
513
|
+
historyStack,
|
|
514
|
+
clientSegmentCache: () => deps.clientSegmentCache
|
|
515
|
+
});
|
|
516
|
+
const lifecycle = createNavigationLifecycle(deps);
|
|
517
|
+
const { currentOwner, createNavOwner, runNavigation, markHandedOff, forgetOlderHandoffs, isPending, getPendingUrl, onPendingChange } = lifecycle;
|
|
518
|
+
const { performNavigationFetch, renderViaTransition } = createNavigationPipeline({
|
|
519
|
+
deps,
|
|
520
|
+
prefetchCache,
|
|
521
|
+
currentStateTree,
|
|
522
|
+
prepareNavigation,
|
|
523
|
+
isSegmentReuseSuppressed,
|
|
524
|
+
restoreSegmentReuse,
|
|
525
|
+
markHandedOff,
|
|
526
|
+
forgetOlderHandoffs
|
|
527
|
+
});
|
|
528
|
+
const { restoreScrollAfterPaint, scrollToHashAfterPaint } = createScrollEffects(deps);
|
|
529
|
+
const { leaveSpaIfOwned, leaveSpaSuperseding } = createSpaExits({
|
|
530
|
+
currentOwner,
|
|
531
|
+
supersede: () => void createNavOwner("navigation")
|
|
532
|
+
});
|
|
533
|
+
const recoverFromNavigationError = createNavigationRecovery({
|
|
534
|
+
currentOwner,
|
|
535
|
+
leaveSpaIfOwned,
|
|
536
|
+
navigate: (url, types) => navigate(url, {
|
|
537
|
+
replace: true,
|
|
538
|
+
_renderTypes: types
|
|
539
|
+
})
|
|
540
|
+
});
|
|
541
|
+
async function navigate(url, options = {}) {
|
|
542
|
+
const scroll = options.scroll !== false;
|
|
543
|
+
const replace = options.replace === true;
|
|
544
|
+
const externalSignal = options._signal;
|
|
545
|
+
const skipHistory = options._skipHistory === true;
|
|
546
|
+
const types = options._renderTypes ?? ["navigation-forward", ...options.transitionTypes ?? []];
|
|
547
|
+
const hashIndex = url.indexOf("#");
|
|
548
|
+
const hash = hashIndex === -1 ? "" : url.slice(hashIndex);
|
|
549
|
+
const fetchUrl = hashIndex === -1 ? url : url.slice(0, hashIndex);
|
|
550
|
+
const departingUrl = options._departingUrl ?? deps.getCurrentUrl();
|
|
551
|
+
const currentScrollY = deps.getScrollY();
|
|
552
|
+
if (deps.saveNavigationEntryScroll) deps.saveNavigationEntryScroll(currentScrollY);
|
|
553
|
+
else deps.replaceState({
|
|
554
|
+
timber: true,
|
|
555
|
+
scrollY: currentScrollY
|
|
556
|
+
}, "", deps.getCurrentUrl());
|
|
557
|
+
if (isClientStale()) await leaveSpaSuperseding(url, departingUrl);
|
|
558
|
+
let effectiveSkipHistory = skipHistory;
|
|
559
|
+
await runNavigation(url, async (owner) => {
|
|
560
|
+
if (!effectiveSkipHistory && deps.navigationNavigate) {
|
|
561
|
+
deps.setRouterNavigating?.(true);
|
|
562
|
+
deps.navigationNavigate(url, replace);
|
|
563
|
+
deps.setRouterNavigating?.(false);
|
|
564
|
+
effectiveSkipHistory = true;
|
|
565
|
+
}
|
|
566
|
+
try {
|
|
567
|
+
await renderViaTransition(fetchUrl, owner, types, () => performNavigationFetch(fetchUrl, {
|
|
568
|
+
replace,
|
|
569
|
+
commitUrl: url,
|
|
570
|
+
signal: owner.fetchAbort.signal,
|
|
571
|
+
skipHistory: effectiveSkipHistory,
|
|
572
|
+
departingUrl
|
|
573
|
+
}), options.onCommit);
|
|
574
|
+
if (scroll && hash) scrollToHashAfterPaint(hash);
|
|
575
|
+
else restoreScrollAfterPaint(scroll ? 0 : currentScrollY);
|
|
576
|
+
} catch (error) {
|
|
577
|
+
if (await recoverFromNavigationError(error, owner, url, departingUrl, types)) return;
|
|
578
|
+
throw error;
|
|
579
|
+
}
|
|
580
|
+
}, externalSignal);
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Fetch a URL's RSC payload, commit it, and render — the pipeline shared by
|
|
584
|
+
* refresh() and an uncached back/forward traversal. Both can be the path
|
|
585
|
+
* that discovers a version skew, and both recover the same way (TIM-1275).
|
|
586
|
+
*
|
|
587
|
+
* Not `performNavigationFetch`: neither caller consults the prefetch cache
|
|
588
|
+
* (there is no link to have hovered) and neither moves the address bar (the
|
|
589
|
+
* browser is already where it is going), so the fetch is a plain one.
|
|
590
|
+
*/
|
|
591
|
+
async function fetchCommitAndRender(url, type, opts = {}) {
|
|
592
|
+
await runNavigation(url, async (owner) => {
|
|
593
|
+
try {
|
|
594
|
+
await renderViaTransition(url, owner, [type], async () => {
|
|
595
|
+
const result = await fetchRscPayload(url, deps, opts.stateTree, void 0, owner.fetchAbort.signal);
|
|
596
|
+
const params = await result.params;
|
|
597
|
+
const { navState, commit } = prepareNavigation(url, {
|
|
598
|
+
payload: result.payload,
|
|
599
|
+
params,
|
|
600
|
+
segmentInfo: result.segmentInfo,
|
|
601
|
+
skippedSegments: result.skippedSegments
|
|
602
|
+
});
|
|
603
|
+
return {
|
|
604
|
+
...result,
|
|
605
|
+
params,
|
|
606
|
+
navState,
|
|
607
|
+
commit
|
|
608
|
+
};
|
|
609
|
+
}, opts.onCommit);
|
|
610
|
+
} catch (error) {
|
|
611
|
+
if (await recoverFromNavigationError(error, owner, url, url, [type])) return;
|
|
612
|
+
throw error;
|
|
613
|
+
}
|
|
614
|
+
if (opts.scrollY !== void 0) restoreScrollAfterPaint(opts.scrollY);
|
|
615
|
+
}, opts.externalSignal);
|
|
616
|
+
}
|
|
617
|
+
async function refresh(options = {}) {
|
|
618
|
+
const currentUrl = deps.getCurrentUrl();
|
|
619
|
+
if (isClientStale()) await leaveSpaSuperseding(currentUrl, currentUrl);
|
|
620
|
+
await fetchCommitAndRender(currentUrl, options.transitionType ?? "refresh", { onCommit: options.onCommit });
|
|
621
|
+
}
|
|
622
|
+
async function handlePopState(url, scrollY = 0, externalSignal, direction = "navigation-traverse") {
|
|
623
|
+
if (isClientStale()) await leaveSpaSuperseding(url, url);
|
|
624
|
+
const entry = historyStack.get(url);
|
|
625
|
+
if (entry && entry.payload !== null) await runNavigation(url, async (owner) => {
|
|
626
|
+
await renderViaTransition(url, owner, [direction], async () => {
|
|
627
|
+
const { navState, commit } = prepareNavigation(url, {
|
|
628
|
+
payload: entry.payload,
|
|
629
|
+
params: entry.params,
|
|
630
|
+
segmentInfo: entry.segmentInfo,
|
|
631
|
+
clearSegmentCacheOnEmpty: true
|
|
632
|
+
});
|
|
633
|
+
return {
|
|
634
|
+
payload: entry.payload,
|
|
635
|
+
params: entry.params,
|
|
636
|
+
navState,
|
|
637
|
+
commit,
|
|
638
|
+
decodePromise: null,
|
|
639
|
+
segmentInfo: entry.segmentInfo ?? null,
|
|
640
|
+
skippedSegments: null
|
|
641
|
+
};
|
|
642
|
+
});
|
|
643
|
+
restoreScrollAfterPaint(scrollY);
|
|
644
|
+
}, externalSignal);
|
|
645
|
+
else await fetchCommitAndRender(url, direction, {
|
|
646
|
+
stateTree: currentStateTree(),
|
|
647
|
+
scrollY,
|
|
648
|
+
externalSignal
|
|
649
|
+
});
|
|
650
|
+
}
|
|
651
|
+
/**
|
|
652
|
+
* Prefetch an RSC payload for a URL and store it in the prefetch cache.
|
|
653
|
+
* Called on hover of <Link prefetch> elements.
|
|
654
|
+
*
|
|
655
|
+
* Concurrent hovers and a click during the round-trip coalesce via the
|
|
656
|
+
* singleflight inside PrefetchCache (TIM-1438).
|
|
657
|
+
*/
|
|
658
|
+
function prefetch(url) {
|
|
659
|
+
if (isClientStale()) return;
|
|
660
|
+
const hashIndex = url.indexOf("#");
|
|
661
|
+
const fetchUrl = hashIndex === -1 ? url : url.slice(0, hashIndex);
|
|
662
|
+
const stateTree = currentStateTree();
|
|
663
|
+
const cacheKey = prefetchKeyFor(fetchUrl, deps.getCurrentUrl(), stateTree);
|
|
664
|
+
const from = cacheKey.from;
|
|
665
|
+
if (prefetchCache.has(cacheKey)) return;
|
|
666
|
+
prefetchCache.fetchOrCoalesce(cacheKey, (signal) => fetchRscPayload(fetchUrl, deps, stateTree, from, signal), (err) => err instanceof NonRscResponse).then((outcome) => {
|
|
667
|
+
if (outcome.kind === "ready") outcome.result.decodePromise?.catch((error) => void recordSkew(error));
|
|
668
|
+
}, (error) => {
|
|
669
|
+
recordSkew(error);
|
|
670
|
+
});
|
|
671
|
+
}
|
|
672
|
+
return {
|
|
673
|
+
navigate,
|
|
674
|
+
refresh,
|
|
675
|
+
handlePopState,
|
|
676
|
+
isPending,
|
|
677
|
+
getPendingUrl,
|
|
678
|
+
onPendingChange,
|
|
679
|
+
prefetch,
|
|
680
|
+
epoch: () => lifecycle.epoch(),
|
|
681
|
+
isEpochCurrent: (epoch) => lifecycle.isEpochCurrent(epoch),
|
|
682
|
+
async applyActionResult(epoch, tree) {
|
|
683
|
+
if (!lifecycle.isEpochCurrent(epoch)) return false;
|
|
684
|
+
if (tree === void 0) {
|
|
685
|
+
let outcomeResolve;
|
|
686
|
+
const outcomePromise = new Promise((r) => outcomeResolve = r);
|
|
687
|
+
const [, outcome] = await Promise.all([refresh({
|
|
688
|
+
transitionType: "revalidate",
|
|
689
|
+
onCommit: outcomeResolve
|
|
690
|
+
}).catch(() => {}), outcomePromise]);
|
|
691
|
+
return outcome === "committed";
|
|
692
|
+
}
|
|
693
|
+
const currentUrl = deps.getCurrentUrl();
|
|
694
|
+
const payloadTree = readPayloadTree(tree);
|
|
695
|
+
const params = readPublishedParams(tree);
|
|
696
|
+
const segmentInfo = committedSegmentInfo();
|
|
697
|
+
let outcomeResolve;
|
|
698
|
+
const outcomePromise = new Promise((r) => outcomeResolve = r);
|
|
699
|
+
const owner = createRenderOwner("revalidation");
|
|
700
|
+
lifecycle.placeRevalidationOwner(owner);
|
|
701
|
+
const [, outcome] = await Promise.all([renderViaTransition(currentUrl, owner, ["revalidate"], async () => {
|
|
702
|
+
const { navState, commit } = prepareNavigation(currentUrl, {
|
|
703
|
+
payload: payloadTree,
|
|
704
|
+
params,
|
|
705
|
+
segmentInfo
|
|
706
|
+
});
|
|
707
|
+
return {
|
|
708
|
+
payload: payloadTree,
|
|
709
|
+
params,
|
|
710
|
+
navState,
|
|
711
|
+
commit,
|
|
712
|
+
decodePromise: null,
|
|
713
|
+
segmentInfo,
|
|
714
|
+
skippedSegments: null
|
|
715
|
+
};
|
|
716
|
+
}, outcomeResolve).catch(() => {}), outcomePromise]);
|
|
717
|
+
return outcome === "committed";
|
|
718
|
+
},
|
|
719
|
+
runWhenIdle: (task) => lifecycle.runWhenIdle(task),
|
|
720
|
+
settleHandoffs: () => lifecycle.settleHandoffs(),
|
|
721
|
+
suppressSegmentReuse() {
|
|
722
|
+
segmentCache.invalidateReuse();
|
|
723
|
+
},
|
|
724
|
+
evictStaleCaches() {
|
|
725
|
+
prefetchCache.clearReady();
|
|
726
|
+
historyStack.clear();
|
|
727
|
+
},
|
|
728
|
+
hydrate(page) {
|
|
729
|
+
const { navState, commit } = prepareNavigation(deps.getCurrentUrl(), {
|
|
730
|
+
payload: page.payload,
|
|
731
|
+
params: page.params,
|
|
732
|
+
segmentInfo: page.segmentInfo
|
|
733
|
+
});
|
|
734
|
+
commit();
|
|
735
|
+
return navState;
|
|
736
|
+
},
|
|
737
|
+
segmentCache,
|
|
738
|
+
prefetchCache
|
|
739
|
+
};
|
|
740
|
+
}
|
|
741
|
+
//#endregion
|
|
742
|
+
//#region src/client/use-search-params.ts
|
|
743
|
+
/**
|
|
744
|
+
* useSearchParams() — client-side hook for reading URL search params.
|
|
745
|
+
*
|
|
746
|
+
* Returns a read-only URLSearchParams instance reflecting the current
|
|
747
|
+
* URL's query string. Updates when client-side navigation changes the URL.
|
|
748
|
+
*
|
|
749
|
+
* One unconditional read of NavigationContext, on every side (TIM-1425):
|
|
750
|
+
*
|
|
751
|
+
* - In the browser, the provider is updated atomically with the RSC tree
|
|
752
|
+
* during full navigations, AND by syncShallowSearch() for shallow URL
|
|
753
|
+
* updates (nuqs shallow: true, replaceUrl, or any external
|
|
754
|
+
* pushState/replaceState that changes the query string). See router-init.ts.
|
|
755
|
+
* - During SSR, the wrapper chain mounts the same provider carrying the
|
|
756
|
+
* request's RAW query string (TIM-1424), so repeated keys
|
|
757
|
+
* (`?tag=a&tag=b`) survive — the collapsed record the ALS context holds
|
|
758
|
+
* cannot represent them.
|
|
759
|
+
* - In the RSC environment, this module is never evaluated — the shims plugin
|
|
760
|
+
* resolves next/navigation to navigation-rsc.ts (TIM-1420).
|
|
761
|
+
*
|
|
762
|
+
* Unlike Next.js's ReadonlyURLSearchParams, this returns a standard
|
|
763
|
+
* URLSearchParams. Mutation methods (set, delete, append) work on the
|
|
764
|
+
* local copy but do NOT affect the URL — use the router or nuqs for that.
|
|
765
|
+
*
|
|
766
|
+
* Compatible with Next.js's `useSearchParams()` from `next/navigation`.
|
|
767
|
+
*/
|
|
768
|
+
function getSearchParams(search) {
|
|
769
|
+
if (search !== cachedSearch) {
|
|
770
|
+
const params = new URLSearchParams(search);
|
|
771
|
+
_setCachedSearch(search, params);
|
|
772
|
+
return params;
|
|
773
|
+
}
|
|
774
|
+
return cachedSearchParams;
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* Read the current URL search params.
|
|
778
|
+
*
|
|
779
|
+
* Throws when no NavigationProvider is above the caller.
|
|
780
|
+
*
|
|
781
|
+
* Compatible with Next.js's `useSearchParams()` from `next/navigation`.
|
|
782
|
+
*/
|
|
783
|
+
function useSearchParams() {
|
|
784
|
+
const nav = useNavigationContext();
|
|
785
|
+
if (nav === null) throw new Error("[timber] useSearchParams() was called outside the timber app tree (no NavigationProvider found). In tests, render the component inside the timber providers.");
|
|
786
|
+
if (typeof window === "undefined" || getSsrData()) return new URLSearchParams(nav.search);
|
|
787
|
+
return getSearchParams(nav.search);
|
|
788
|
+
}
|
|
789
|
+
//#endregion
|
|
790
|
+
export { HistoryStack, NavigationProvider, PrefetchCache, SegmentCache, SegmentProvider, TimberErrorBoundary, bindUseQueryStates, createRouter, getRouter, getRouterOrNull, getSsrData, registerSsrDataProvider, setGlobalRouter, useSearchParams, useSegmentContext };
|
|
791
|
+
|
|
792
|
+
//# sourceMappingURL=internal.js.map
|