@timber-js/app 0.2.0-alpha.2 → 0.2.0-alpha.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +8 -0
- package/agent-skill.md +346 -0
- package/dist/_chunks/actions-d1hCqnU3.js +345 -0
- package/dist/_chunks/actions-d1hCqnU3.js.map +1 -0
- package/dist/_chunks/als-registry-C6kcfprT.js +41 -0
- package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
- package/dist/_chunks/base-path-DaQrzbez.js +80 -0
- package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
- package/dist/_chunks/build-manifest-DTmSGLRz.js +135 -0
- package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
- package/dist/_chunks/build-output-helper-9dqCv1pZ.js +370 -0
- package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
- package/dist/_chunks/cache-api-ByagcC-J.js +1149 -0
- package/dist/_chunks/cache-api-ByagcC-J.js.map +1 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
- package/dist/_chunks/chains-Bpb0W4ax.js +412 -0
- package/dist/_chunks/chains-Bpb0W4ax.js.map +1 -0
- package/dist/_chunks/cli-check-D6VolrDV.js +293 -0
- package/dist/_chunks/cli-check-D6VolrDV.js.map +1 -0
- package/dist/_chunks/cli-schema-sync-D6rO-VcS.js +299 -0
- package/dist/_chunks/cli-schema-sync-D6rO-VcS.js.map +1 -0
- package/dist/_chunks/cloudflare-BFb__LYG.js +1290 -0
- package/dist/_chunks/cloudflare-BFb__LYG.js.map +1 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
- package/dist/_chunks/convention-lint-fRkwVwEH.js +893 -0
- package/dist/_chunks/convention-lint-fRkwVwEH.js.map +1 -0
- package/dist/_chunks/dist-DtrJyBbw.js +386 -0
- package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
- package/dist/_chunks/error-boundary-BfPHZjm0.js +1050 -0
- package/dist/_chunks/error-boundary-BfPHZjm0.js.map +1 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
- package/dist/_chunks/file-cache-Dw6BJPG7.js +458 -0
- package/dist/_chunks/file-cache-Dw6BJPG7.js.map +1 -0
- package/dist/_chunks/format-BKclgVbk.js +14 -0
- package/dist/_chunks/format-BKclgVbk.js.map +1 -0
- package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
- package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
- package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
- package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
- package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
- package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
- package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
- package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
- package/dist/_chunks/live-graph-D_2D32Ad.js +150 -0
- package/dist/_chunks/live-graph-D_2D32Ad.js.map +1 -0
- package/dist/_chunks/logger-uLBuGKDI.js +1484 -0
- package/dist/_chunks/logger-uLBuGKDI.js.map +1 -0
- package/dist/_chunks/navigation-context-D0TU0Jog.js +135 -0
- package/dist/_chunks/navigation-context-D0TU0Jog.js.map +1 -0
- package/dist/_chunks/navigation-root-mHSK9psY.js +126 -0
- package/dist/_chunks/navigation-root-mHSK9psY.js.map +1 -0
- package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
- package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
- package/dist/_chunks/plugin-context-8idfR3UZ.js +321 -0
- package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
- package/dist/_chunks/poison-scan-Bm9Yyqk9.js +101 -0
- package/dist/_chunks/poison-scan-Bm9Yyqk9.js.map +1 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
- package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
- package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
- package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
- package/dist/_chunks/scan-BoP17W3w.js +140 -0
- package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
- package/dist/_chunks/scanner-AiazgH_f.js +1771 -0
- package/dist/_chunks/scanner-AiazgH_f.js.map +1 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
- package/dist/_chunks/segment-context-D9_89u34.js +34 -0
- package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
- package/dist/_chunks/segment-keys-lqtdookO.js +256 -0
- package/dist/_chunks/segment-keys-lqtdookO.js.map +1 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
- package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
- package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
- package/dist/_chunks/{ssr-data-DLnbYpj1.js → ssr-data-D6T6Y3ef.js} +3 -31
- package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +1 -0
- package/dist/_chunks/state-FippDgxN.js +52 -0
- package/dist/_chunks/state-FippDgxN.js.map +1 -0
- package/dist/_chunks/status-page-marker-DwQBrLBz.js +496 -0
- package/dist/_chunks/status-page-marker-DwQBrLBz.js.map +1 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
- package/dist/_chunks/walkers-B6XUtmqK.js +144 -0
- package/dist/_chunks/walkers-B6XUtmqK.js.map +1 -0
- package/dist/adapters/build-output-helper.d.ts +72 -0
- package/dist/adapters/build-output-helper.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.d.ts +109 -0
- package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +74 -0
- package/dist/adapters/cloudflare-dev.js.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.js +123 -0
- package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +200 -22
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +2 -188
- package/dist/adapters/compress-module.d.ts +17 -4
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/fs-identity.d.ts +64 -0
- package/dist/adapters/fs-identity.d.ts.map +1 -0
- package/dist/adapters/nitro-presets.d.ts +37 -0
- package/dist/adapters/nitro-presets.d.ts.map +1 -0
- package/dist/adapters/nitro-preview.d.ts +32 -0
- package/dist/adapters/nitro-preview.d.ts.map +1 -0
- package/dist/adapters/nitro.d.ts +82 -37
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +457 -288
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +62 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/adapters/types.d.ts +28 -6
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/analyze/chains.d.ts +124 -0
- package/dist/analyze/chains.d.ts.map +1 -0
- package/dist/analyze/classify.d.ts +150 -0
- package/dist/analyze/classify.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.d.ts +17 -0
- package/dist/analyze/crawl-entry.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.js +313 -0
- package/dist/analyze/crawl-entry.js.map +1 -0
- package/dist/analyze/crawl.d.ts +134 -0
- package/dist/analyze/crawl.d.ts.map +1 -0
- package/dist/analyze/graph-cache.d.ts +104 -0
- package/dist/analyze/graph-cache.d.ts.map +1 -0
- package/dist/analyze/graph-command.d.ts +43 -0
- package/dist/analyze/graph-command.d.ts.map +1 -0
- package/dist/analyze/graph-command.js +472 -0
- package/dist/analyze/graph-command.js.map +1 -0
- package/dist/analyze/live-graph.d.ts +81 -0
- package/dist/analyze/live-graph.d.ts.map +1 -0
- package/dist/analyze/poison-rules.d.ts +72 -0
- package/dist/analyze/poison-rules.d.ts.map +1 -0
- package/dist/analyze/poison-scan.d.ts +48 -0
- package/dist/analyze/poison-scan.d.ts.map +1 -0
- package/dist/analyze/scan.d.ts +73 -0
- package/dist/analyze/scan.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +48 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/fast-hash.d.ts +27 -0
- package/dist/cache/fast-hash.d.ts.map +1 -0
- package/dist/cache/handler-store.d.ts +33 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +32 -9
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +3 -284
- package/dist/cache/invalidation-epoch.d.ts +43 -0
- package/dist/cache/invalidation-epoch.d.ts.map +1 -0
- package/dist/cache/json-lossy-check.d.ts +11 -0
- package/dist/cache/json-lossy-check.d.ts.map +1 -0
- package/dist/cache/redis-handler.d.ts +141 -9
- package/dist/cache/redis-handler.d.ts.map +1 -1
- package/dist/cache/singleflight.d.ts +21 -2
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/stable-stringify.d.ts +9 -0
- package/dist/cache/stable-stringify.d.ts.map +1 -1
- package/dist/cache/store.d.ts +53 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
- package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.js +29 -0
- package/dist/cache/stores/cloudflare-kv.js.map +1 -0
- package/dist/cache/stores/memory.d.ts +42 -0
- package/dist/cache/stores/memory.d.ts.map +1 -0
- package/dist/cache/stores/memory.js +90 -0
- package/dist/cache/stores/memory.js.map +1 -0
- package/dist/cache/stores/redis.d.ts +69 -0
- package/dist/cache/stores/redis.d.ts.map +1 -0
- package/dist/cache/stores/redis.js +35 -0
- package/dist/cache/stores/redis.js.map +1 -0
- package/dist/cache/stores/vercel.d.ts +36 -0
- package/dist/cache/stores/vercel.d.ts.map +1 -0
- package/dist/cache/stores/vercel.js +33 -0
- package/dist/cache/stores/vercel.js.map +1 -0
- package/dist/cache/tag-aware-handler.d.ts +52 -0
- package/dist/cache/tag-aware-handler.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +21 -11
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cdn/cloudflare-purge.d.ts +23 -0
- package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
- package/dist/cdn/cloudflare-purge.js +30 -0
- package/dist/cdn/cloudflare-purge.js.map +1 -0
- package/dist/cdn/fastly-purge.d.ts +25 -0
- package/dist/cdn/fastly-purge.d.ts.map +1 -0
- package/dist/cdn/fastly-purge.js +33 -0
- package/dist/cdn/fastly-purge.js.map +1 -0
- package/dist/cdn/headers.d.ts +97 -0
- package/dist/cdn/headers.d.ts.map +1 -0
- package/dist/cdn/index.d.ts +5 -0
- package/dist/cdn/index.d.ts.map +1 -0
- package/dist/cdn/index.js +94 -0
- package/dist/cdn/index.js.map +1 -0
- package/dist/cdn/purge-store.d.ts +23 -0
- package/dist/cdn/purge-store.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.d.ts +20 -0
- package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.js +35 -0
- package/dist/cdn/workers-cache-purge.js.map +1 -0
- package/dist/cli-check.d.ts +163 -0
- package/dist/cli-check.d.ts.map +1 -0
- package/dist/cli-schema-sync.d.ts +59 -0
- package/dist/cli-schema-sync.d.ts.map +1 -0
- package/dist/cli.d.ts +75 -8
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +175 -47
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +37 -1
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/action-queue.d.ts +44 -0
- package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +63 -0
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
- package/dist/client/browser-entry/index.d.ts +30 -0
- package/dist/client/browser-entry/index.d.ts.map +1 -0
- package/dist/client/browser-entry/post-hydration.d.ts +29 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +46 -0
- package/dist/client/browser-entry/router-init.d.ts.map +1 -0
- package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
- package/dist/client/browser-entry/scroll.d.ts +28 -0
- package/dist/client/browser-entry/scroll.d.ts.map +1 -0
- package/dist/client/deny-last-resort.d.ts +29 -0
- package/dist/client/deny-last-resort.d.ts.map +1 -0
- package/dist/client/error-boundary.d.ts +66 -6
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +2 -126
- package/dist/client/error-reconstituter.d.ts +61 -0
- package/dist/client/error-reconstituter.d.ts.map +1 -0
- package/dist/client/form.d.ts +16 -27
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/global-context.d.ts +15 -0
- package/dist/client/global-context.d.ts.map +1 -0
- package/dist/client/history.d.ts +50 -9
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +20 -33
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +323 -1148
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +20 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +818 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link.d.ts +63 -60
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/location-search.d.ts +12 -0
- package/dist/client/location-search.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts +121 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-commit.d.ts +98 -0
- package/dist/client/navigation-commit.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +51 -31
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/navigation-root.d.ts +98 -0
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/navigation-transition.d.ts +187 -0
- package/dist/client/navigation-transition.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts +1 -1
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/params-context.d.ts +81 -0
- package/dist/client/params-context.d.ts.map +1 -0
- package/dist/client/react-root.d.ts +44 -0
- package/dist/client/react-root.d.ts.map +1 -0
- package/dist/client/router-effects.d.ts +130 -0
- package/dist/client/router-effects.d.ts.map +1 -0
- package/dist/client/router-lifecycle.d.ts +98 -0
- package/dist/client/router-lifecycle.d.ts.map +1 -0
- package/dist/client/router-pipeline.d.ts +87 -0
- package/dist/client/router-pipeline.d.ts.map +1 -0
- package/dist/client/router-ref.d.ts +2 -2
- package/dist/client/router-ref.d.ts.map +1 -1
- package/dist/client/router-skew.d.ts +21 -0
- package/dist/client/router-skew.d.ts.map +1 -0
- package/dist/client/router-types.d.ts +272 -0
- package/dist/client/router-types.d.ts.map +1 -0
- package/dist/client/router.d.ts +1 -97
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +104 -26
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +161 -25
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-context.d.ts +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +68 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/segment-update-context.d.ts +15 -0
- package/dist/client/segment-update-context.d.ts.map +1 -0
- package/dist/client/shallow-url.d.ts +10 -0
- package/dist/client/shallow-url.d.ts.map +1 -0
- package/dist/client/slot-content-cache-context.d.ts +35 -0
- package/dist/client/slot-content-cache-context.d.ts.map +1 -0
- package/dist/client/slot-context.d.ts +31 -0
- package/dist/client/slot-context.d.ts.map +1 -0
- package/dist/client/slot-outlet.d.ts +16 -0
- package/dist/client/slot-outlet.d.ts.map +1 -0
- package/dist/client/slot-provider.d.ts +25 -0
- package/dist/client/slot-provider.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +29 -7
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/stale-client.d.ts +69 -0
- package/dist/client/stale-client.d.ts.map +1 -0
- package/dist/client/state.d.ts +19 -8
- package/dist/client/state.d.ts.map +1 -1
- package/dist/client/status-page-marker.d.ts +25 -0
- package/dist/client/status-page-marker.d.ts.map +1 -0
- package/dist/client/top-loader.d.ts +7 -6
- package/dist/client/top-loader.d.ts.map +1 -1
- package/dist/client/unload-guard.d.ts +5 -0
- package/dist/client/unload-guard.d.ts.map +1 -1
- package/dist/client/use-cookie.d.ts +12 -0
- package/dist/client/use-cookie.d.ts.map +1 -1
- package/dist/client/use-link-status.d.ts +5 -5
- package/dist/client/use-link-status.d.ts.map +1 -1
- package/dist/client/use-pathname.d.ts +13 -11
- package/dist/client/use-pathname.d.ts.map +1 -1
- package/dist/client/use-pending-navigation.d.ts +23 -0
- package/dist/client/use-pending-navigation.d.ts.map +1 -0
- package/dist/client/use-query-states.d.ts +10 -4
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/client/use-router.d.ts +2 -2
- package/dist/client/use-router.d.ts.map +1 -1
- package/dist/client/use-search-params.d.ts +15 -8
- package/dist/client/use-search-params.d.ts.map +1 -1
- package/dist/client/use-segment-params.d.ts +55 -0
- package/dist/client/use-segment-params.d.ts.map +1 -0
- package/dist/codec.d.ts +69 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +76 -0
- package/dist/codec.js.map +1 -0
- package/dist/config-types.d.ts +322 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +51 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/cookies/define-cookie.d.ts +58 -25
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.d.ts +3 -2
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/index.js +256 -36
- package/dist/cookies/index.js.map +1 -1
- package/dist/cookies/json-cookie.d.ts +64 -0
- package/dist/cookies/json-cookie.d.ts.map +1 -0
- package/dist/cookies/validation.d.ts +34 -0
- package/dist/cookies/validation.d.ts.map +1 -0
- package/dist/dev-tools/404-page.d.ts +50 -0
- package/dist/dev-tools/404-page.d.ts.map +1 -0
- package/dist/dev-tools/browser-logs.d.ts +40 -0
- package/dist/dev-tools/browser-logs.d.ts.map +1 -0
- package/dist/dev-tools/dev-page-shell.d.ts +78 -0
- package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
- package/dist/dev-tools/error-page.d.ts +32 -0
- package/dist/dev-tools/error-page.d.ts.map +1 -0
- package/dist/dev-tools/holding-server.d.ts +46 -0
- package/dist/dev-tools/holding-server.d.ts.map +1 -0
- package/dist/dev-tools/hydration-overlay.d.ts +11 -0
- package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
- package/dist/dev-tools/index.d.ts +31 -0
- package/dist/dev-tools/index.d.ts.map +1 -0
- package/dist/dev-tools/instrumentation.d.ts +59 -0
- package/dist/dev-tools/instrumentation.d.ts.map +1 -0
- package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
- package/dist/dev-tools/logger.d.ts.map +1 -0
- package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
- package/dist/dev-tools/logs.d.ts.map +1 -0
- package/dist/dev-tools/overlay.d.ts +91 -0
- package/dist/dev-tools/overlay.d.ts.map +1 -0
- package/dist/dev-tools/stack-classifier.d.ts +34 -0
- package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
- package/dist/dev-tools/terminal.d.ts +28 -0
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/fonts/ast-walk.d.ts +68 -0
- package/dist/fonts/ast-walk.d.ts.map +1 -0
- package/dist/fonts/ast.d.ts +112 -8
- package/dist/fonts/ast.d.ts.map +1 -1
- package/dist/fonts/bundle.d.ts +50 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +2 -1
- package/dist/fonts/css.d.ts.map +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/fallbacks.d.ts +0 -7
- package/dist/fonts/fallbacks.d.ts.map +1 -1
- package/dist/fonts/google.d.ts +5 -3
- package/dist/fonts/google.d.ts.map +1 -1
- package/dist/fonts/local.d.ts +6 -4
- package/dist/fonts/local.d.ts.map +1 -1
- package/dist/fonts/paths.d.ts +43 -0
- package/dist/fonts/paths.d.ts.map +1 -0
- package/dist/fonts/pipeline.d.ts +177 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +82 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +47 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +77 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +35 -153
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10488 -13975
- package/dist/index.js.map +1 -1
- package/dist/params/codec-registry.d.ts +26 -0
- package/dist/params/codec-registry.d.ts.map +1 -0
- package/dist/params/define-schema.d.ts +81 -0
- package/dist/params/define-schema.d.ts.map +1 -0
- package/dist/params/index.d.ts +5 -0
- package/dist/params/index.d.ts.map +1 -0
- package/dist/params/index.js +34 -0
- package/dist/params/index.js.map +1 -0
- package/dist/params/resolve-schema.d.ts +34 -0
- package/dist/params/resolve-schema.d.ts.map +1 -0
- package/dist/plugin-context.d.ts +276 -0
- package/dist/plugin-context.d.ts.map +1 -0
- package/dist/plugins/adapter-build.d.ts +21 -1
- package/dist/plugins/adapter-build.d.ts.map +1 -1
- package/dist/plugins/build-manifest.d.ts +7 -3
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +54 -7
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/cache.d.ts +64 -0
- package/dist/plugins/cache.d.ts.map +1 -0
- package/dist/plugins/callsite-ast.d.ts +117 -0
- package/dist/plugins/callsite-ast.d.ts.map +1 -0
- package/dist/plugins/callsite-jsx.d.ts +35 -0
- package/dist/plugins/callsite-jsx.d.ts.map +1 -0
- package/dist/plugins/chunks.d.ts +11 -4
- package/dist/plugins/chunks.d.ts.map +1 -1
- package/dist/plugins/client-chunks.d.ts +40 -0
- package/dist/plugins/client-chunks.d.ts.map +1 -0
- package/dist/plugins/cloudflare-wasm.d.ts +21 -0
- package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-discovery.d.ts +123 -0
- package/dist/plugins/dev-discovery.d.ts.map +1 -0
- package/dist/plugins/dev-server.d.ts +17 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +32 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +16 -65
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/graph-endpoint.d.ts +112 -0
- package/dist/plugins/graph-endpoint.d.ts.map +1 -0
- package/dist/plugins/mdx.d.ts +24 -5
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/prebuilt-capture.d.ts +60 -0
- package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
- package/dist/plugins/prebuilt.d.ts +82 -0
- package/dist/plugins/prebuilt.d.ts.map +1 -0
- package/dist/plugins/prerender-sugar.d.ts +39 -0
- package/dist/plugins/prerender-sugar.d.ts.map +1 -0
- package/dist/plugins/request-dep/analysis.d.ts +106 -0
- package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
- package/dist/plugins/request-dep/index.d.ts +75 -0
- package/dist/plugins/request-dep/index.d.ts.map +1 -0
- package/dist/plugins/request-dep/origin.d.ts +61 -0
- package/dist/plugins/request-dep/origin.d.ts.map +1 -0
- package/dist/plugins/routing.d.ts +1 -1
- package/dist/plugins/routing.d.ts.map +1 -1
- package/dist/plugins/server-bundle.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts +29 -5
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +218 -21
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +26 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +61 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen-write.d.ts +51 -0
- package/dist/routing/codegen-write.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +8 -3
- package/dist/routing/codegen.d.ts.map +1 -1
- package/dist/routing/collision-probe.d.ts +104 -0
- package/dist/routing/collision-probe.d.ts.map +1 -0
- package/dist/routing/collision-spaces.d.ts +26 -0
- package/dist/routing/collision-spaces.d.ts.map +1 -0
- package/dist/routing/convention-lint.d.ts +55 -0
- package/dist/routing/convention-lint.d.ts.map +1 -0
- package/dist/routing/export-detect.d.ts +72 -0
- package/dist/routing/export-detect.d.ts.map +1 -0
- package/dist/routing/file-cache.d.ts +8 -0
- package/dist/routing/file-cache.d.ts.map +1 -0
- package/dist/routing/index.d.ts +13 -7
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +5 -2
- package/dist/routing/interception-overlap.d.ts +35 -0
- package/dist/routing/interception-overlap.d.ts.map +1 -0
- package/dist/routing/interception.d.ts +234 -10
- package/dist/routing/interception.d.ts.map +1 -1
- package/dist/routing/link-codegen.d.ts +105 -0
- package/dist/routing/link-codegen.d.ts.map +1 -0
- package/dist/routing/manifest-codegen.d.ts +26 -0
- package/dist/routing/manifest-codegen.d.ts.map +1 -0
- package/dist/routing/scanner.d.ts +14 -10
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/schema-validation.d.ts +35 -0
- package/dist/routing/schema-validation.d.ts.map +1 -0
- package/dist/routing/segment-classify.d.ts +114 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/segment-codegen.d.ts +38 -0
- package/dist/routing/segment-codegen.d.ts.map +1 -0
- package/dist/routing/segment-keys.d.ts +118 -0
- package/dist/routing/segment-keys.d.ts.map +1 -0
- package/dist/routing/slot-placement.d.ts +48 -0
- package/dist/routing/slot-placement.d.ts.map +1 -0
- package/dist/routing/types.d.ts +74 -26
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/routing/walkers.d.ts +57 -0
- package/dist/routing/walkers.d.ts.map +1 -0
- package/dist/rsc-runtime/rsc.d.ts +1 -1
- package/dist/rsc-runtime/rsc.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +14 -0
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/rsc-runtime/transforms.d.ts +13 -0
- package/dist/rsc-runtime/transforms.d.ts.map +1 -0
- package/dist/schema-bridge.d.ts +145 -0
- package/dist/schema-bridge.d.ts.map +1 -0
- package/dist/search-params/define.d.ts +262 -0
- package/dist/search-params/define.d.ts.map +1 -0
- package/dist/search-params/index.d.ts +3 -7
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +179 -360
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/parse-total.d.ts +81 -0
- package/dist/search-params/parse-total.d.ts.map +1 -0
- package/dist/search-params/serialize-equal.d.ts +9 -0
- package/dist/search-params/serialize-equal.d.ts.map +1 -0
- package/dist/search-params/wrappers.d.ts +76 -0
- package/dist/search-params/wrappers.d.ts.map +1 -0
- package/dist/server/access-gate.d.ts +98 -10
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-client.d.ts +42 -7
- package/dist/server/action-client.d.ts.map +1 -1
- package/dist/server/action-encryption.d.ts +76 -0
- package/dist/server/action-encryption.d.ts.map +1 -0
- package/dist/server/action-handler.d.ts +39 -5
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +29 -35
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +117 -13
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/asset-headers.d.ts +8 -18
- package/dist/server/asset-headers.d.ts.map +1 -1
- package/dist/server/body-limits.d.ts.map +1 -1
- package/dist/server/build-manifest.d.ts +25 -30
- package/dist/server/build-manifest.d.ts.map +1 -1
- package/dist/server/canonicalize.d.ts +10 -0
- package/dist/server/canonicalize.d.ts.map +1 -1
- package/dist/server/chain-url-parts.d.ts +82 -0
- package/dist/server/chain-url-parts.d.ts.map +1 -0
- package/dist/server/children-interception.d.ts +49 -0
- package/dist/server/children-interception.d.ts.map +1 -0
- package/dist/server/coalesce-tick.d.ts +40 -0
- package/dist/server/coalesce-tick.d.ts.map +1 -0
- package/dist/server/compress.d.ts.map +1 -1
- package/dist/server/cookie-context.d.ts +170 -0
- package/dist/server/cookie-context.d.ts.map +1 -0
- package/dist/server/cookie-parsing.d.ts +65 -0
- package/dist/server/cookie-parsing.d.ts.map +1 -0
- package/dist/server/csp-nonce.d.ts +45 -0
- package/dist/server/csp-nonce.d.ts.map +1 -0
- package/dist/server/csrf.d.ts +3 -2
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/debug.d.ts +82 -0
- package/dist/server/debug.d.ts.map +1 -0
- package/dist/server/default-logger.d.ts +22 -0
- package/dist/server/default-logger.d.ts.map +1 -0
- package/dist/server/default-status-page.d.ts +45 -0
- package/dist/server/default-status-page.d.ts.map +1 -0
- package/dist/server/deny-boundary.d.ts +253 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts +20 -9
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/dev-source-map.d.ts +22 -0
- package/dist/server/dev-source-map.d.ts.map +1 -0
- package/dist/server/early-hints-sender.d.ts.map +1 -1
- package/dist/server/early-hints.d.ts +14 -12
- package/dist/server/early-hints.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +101 -10
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/error-response-headers.d.ts +3 -0
- package/dist/server/error-response-headers.d.ts.map +1 -0
- package/dist/server/fallback-error.d.ts +12 -7
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/flight-injection-state.d.ts +66 -0
- package/dist/server/flight-injection-state.d.ts.map +1 -0
- package/dist/server/flight-scripts.d.ts +45 -0
- package/dist/server/flight-scripts.d.ts.map +1 -0
- package/dist/server/form-data.d.ts +41 -0
- package/dist/server/form-data.d.ts.map +1 -1
- package/dist/server/form-flash.d.ts +1 -1
- package/dist/server/head-response.d.ts +35 -0
- package/dist/server/head-response.d.ts.map +1 -0
- package/dist/server/html-injector-core.d.ts +257 -0
- package/dist/server/html-injector-core.d.ts.map +1 -0
- package/dist/server/html-injectors.d.ts +84 -42
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +18 -54
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +212 -2930
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts +1 -1
- package/dist/server/internal.d.ts +50 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +4034 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/logger.d.ts +39 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/metadata-collector.d.ts +71 -0
- package/dist/server/metadata-collector.d.ts.map +1 -0
- package/dist/server/metadata-platform.d.ts +2 -2
- package/dist/server/metadata-render.d.ts +2 -2
- package/dist/server/metadata-render.d.ts.map +1 -1
- package/dist/server/metadata-routes.d.ts +60 -11
- package/dist/server/metadata-routes.d.ts.map +1 -1
- package/dist/server/metadata-social.d.ts +2 -2
- package/dist/server/metadata.d.ts +10 -2
- package/dist/server/metadata.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +20 -5
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +105 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/nuqs-ssr-provider.d.ts +7 -3
- package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
- package/dist/server/param-coercion.d.ts +78 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +77 -0
- package/dist/server/pipeline-helpers.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +59 -9
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-metadata.d.ts +7 -1
- package/dist/server/pipeline-metadata.d.ts.map +1 -1
- package/dist/server/pipeline-outcome.d.ts +49 -0
- package/dist/server/pipeline-outcome.d.ts.map +1 -0
- package/dist/server/pipeline-phases.d.ts +70 -0
- package/dist/server/pipeline-phases.d.ts.map +1 -0
- package/dist/server/pipeline.d.ts +160 -24
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/port-resolution.d.ts +31 -0
- package/dist/server/port-resolution.d.ts.map +1 -0
- package/dist/server/prebuilt/cache-key.d.ts +63 -0
- package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-state.d.ts +57 -0
- package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
- package/dist/server/prebuilt/key-discipline.d.ts +52 -0
- package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
- package/dist/server/prebuilt/overlay.d.ts +100 -0
- package/dist/server/prebuilt/overlay.d.ts.map +1 -0
- package/dist/server/prebuilt/payload-source.d.ts +79 -0
- package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
- package/dist/server/prebuilt/slots.d.ts +99 -0
- package/dist/server/prebuilt/slots.d.ts.map +1 -0
- package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
- package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
- package/dist/server/prebuilt-builder.d.ts +121 -0
- package/dist/server/prebuilt-builder.d.ts.map +1 -0
- package/dist/server/prebuilt-runtime.d.ts +111 -0
- package/dist/server/prebuilt-runtime.d.ts.map +1 -0
- package/dist/server/primitives.d.ts +129 -45
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/publish-params.d.ts +33 -0
- package/dist/server/publish-params.d.ts.map +1 -0
- package/dist/server/render-timeout.d.ts +51 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/render-utils.d.ts +26 -0
- package/dist/server/render-utils.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +111 -107
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-dep.d.ts +15 -0
- package/dist/server/request-dep.d.ts.map +1 -0
- package/dist/server/response-cache-policy.d.ts +3 -0
- package/dist/server/response-cache-policy.d.ts.map +1 -0
- package/dist/server/route-element-builder.d.ts +57 -30
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-element-helpers.d.ts +12 -0
- package/dist/server/route-element-helpers.d.ts.map +1 -0
- package/dist/server/route-handler.d.ts +1 -1
- package/dist/server/route-handler.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +40 -38
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/route-module-loader.d.ts +37 -0
- package/dist/server/route-module-loader.d.ts.map +1 -0
- package/dist/server/rsc-cache-key-guard.d.ts +78 -0
- package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
- package/dist/server/rsc-entry/api-handler.d.ts +12 -3
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
- package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
- package/dist/server/rsc-entry/error-renderer.d.ts +38 -13
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +59 -42
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +40 -6
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +51 -0
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
- package/dist/server/rsc-entry/rsc-payload.d.ts +26 -6
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +39 -3
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +37 -5
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
- package/dist/server/rsc-error-envelope.d.ts +11 -0
- package/dist/server/rsc-error-envelope.d.ts.map +1 -0
- package/dist/server/rsc-prop-warnings.d.ts.map +1 -1
- package/dist/server/safe-load.d.ts +46 -0
- package/dist/server/safe-load.d.ts.map +1 -0
- package/dist/server/sensitive-fields.d.ts +74 -0
- package/dist/server/sensitive-fields.d.ts.map +1 -0
- package/dist/server/sitemap-generator.d.ts +130 -0
- package/dist/server/sitemap-generator.d.ts.map +1 -0
- package/dist/server/sitemap-handler.d.ts +22 -0
- package/dist/server/sitemap-handler.d.ts.map +1 -0
- package/dist/server/skippable-prefix.d.ts +29 -0
- package/dist/server/skippable-prefix.d.ts.map +1 -0
- package/dist/server/slot-interception.d.ts +80 -0
- package/dist/server/slot-interception.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +137 -7
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/slot-subtree-contain.d.ts +54 -0
- package/dist/server/slot-subtree-contain.d.ts.map +1 -0
- package/dist/server/ssr-bridge-types.d.ts +160 -0
- package/dist/server/ssr-bridge-types.d.ts.map +1 -0
- package/dist/server/ssr-entry.d.ts +1 -43
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +69 -22
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +93 -0
- package/dist/server/ssr-wrappers.d.ts.map +1 -0
- package/dist/server/state-tree-diff.d.ts +44 -9
- package/dist/server/state-tree-diff.d.ts.map +1 -1
- package/dist/server/static-generator.d.ts +112 -0
- package/dist/server/static-generator.d.ts.map +1 -0
- package/dist/server/static-not-found.d.ts +52 -0
- package/dist/server/static-not-found.d.ts.map +1 -0
- package/dist/server/status-code-resolver.d.ts +26 -15
- package/dist/server/status-code-resolver.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +47 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +56 -11
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-match.d.ts +49 -0
- package/dist/server/tree-match.d.ts.map +1 -0
- package/dist/server/types.d.ts +88 -7
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/element-type.d.ts +50 -0
- package/dist/server/utils/element-type.d.ts.map +1 -0
- package/dist/server/utils/escape-html.d.ts +14 -0
- package/dist/server/utils/escape-html.d.ts.map +1 -0
- package/dist/server/utils/mdx-file.d.ts +17 -0
- package/dist/server/utils/mdx-file.d.ts.map +1 -0
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/server/waituntil-bridge.d.ts.map +1 -1
- package/dist/server/workers-cache-bridge.d.ts +26 -0
- package/dist/server/workers-cache-bridge.d.ts.map +1 -0
- package/dist/shared/als-slots.d.ts +42 -0
- package/dist/shared/als-slots.d.ts.map +1 -0
- package/dist/shared/base-path.d.ts +56 -0
- package/dist/shared/base-path.d.ts.map +1 -0
- package/dist/shared/href-validation.d.ts +49 -0
- package/dist/shared/href-validation.d.ts.map +1 -0
- package/dist/shared/merge-search-params.d.ts +22 -0
- package/dist/shared/merge-search-params.d.ts.map +1 -0
- package/dist/shared/param-value.d.ts +104 -0
- package/dist/shared/param-value.d.ts.map +1 -0
- package/dist/shared/payload-root.d.ts +109 -0
- package/dist/shared/payload-root.d.ts.map +1 -0
- package/dist/shared/redirect-type.d.ts +17 -0
- package/dist/shared/redirect-type.d.ts.map +1 -0
- package/dist/shared/rsc-cache-key.d.ts +163 -0
- package/dist/shared/rsc-cache-key.d.ts.map +1 -0
- package/dist/shared/rsc-error-envelope.d.ts +16 -0
- package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
- package/dist/shared/rsc-manifest.d.ts +28 -0
- package/dist/shared/rsc-manifest.d.ts.map +1 -0
- package/dist/shared/rsc-media-type.d.ts +52 -0
- package/dist/shared/rsc-media-type.d.ts.map +1 -0
- package/dist/shared/rsc-payload-path.d.ts +42 -0
- package/dist/shared/rsc-payload-path.d.ts.map +1 -0
- package/dist/shared/segment-info.d.ts +66 -0
- package/dist/shared/segment-info.d.ts.map +1 -0
- package/dist/shared/slot-params.d.ts +52 -0
- package/dist/shared/slot-params.d.ts.map +1 -0
- package/dist/shared/static-platform-files.d.ts +71 -0
- package/dist/shared/static-platform-files.d.ts.map +1 -0
- package/dist/shared/status-reason-phrase.d.ts +26 -0
- package/dist/shared/status-reason-phrase.d.ts.map +1 -0
- package/dist/shims/font-google.d.ts +1 -1
- package/dist/shims/font-google.d.ts.map +1 -1
- package/dist/shims/font-google.js +42 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +26 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +20 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/headers.d.ts +53 -1
- package/dist/shims/headers.d.ts.map +1 -1
- package/dist/shims/image.d.ts +120 -120
- package/dist/shims/image.d.ts.map +1 -1
- package/dist/shims/navigation-client.d.ts +25 -12
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation-rsc.d.ts +21 -0
- package/dist/shims/navigation-rsc.d.ts.map +1 -0
- package/dist/shims/navigation.d.ts +10 -5
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/state-machine.d.ts +80 -0
- package/dist/utils/state-machine.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +236 -0
- package/docs/api/31-api-client.mdx +167 -0
- package/docs/api/32-api-cache.mdx +311 -0
- package/docs/api/33-api-search-params.mdx +176 -0
- package/docs/api/34-api-config.mdx +329 -0
- package/docs/api/35-api-typescript.mdx +91 -0
- package/docs/api/36-cli.mdx +192 -0
- package/docs/learn/00-introduction.mdx +109 -0
- package/docs/learn/01-quick-start.mdx +94 -0
- package/docs/learn/02-pages-and-layouts.mdx +147 -0
- package/docs/learn/03-fetching-data.mdx +211 -0
- package/docs/learn/04-access-control.mdx +115 -0
- package/docs/learn/05-the-flush-point.mdx +175 -0
- package/docs/learn/06-typed-params.mdx +275 -0
- package/docs/learn/07-typed-routes.mdx +108 -0
- package/docs/learn/08-forms-and-actions.mdx +146 -0
- package/docs/learn/09-streaming.mdx +140 -0
- package/docs/learn/10-caching.mdx +252 -0
- package/docs/learn/11-middleware.mdx +158 -0
- package/docs/learn/12-error-handling.mdx +188 -0
- package/docs/learn/13-deploying.mdx +287 -0
- package/llms.txt +55 -0
- package/package.json +117 -29
- package/src/adapters/build-output-helper.ts +351 -0
- package/src/adapters/cloudflare-dev.ts +183 -0
- package/src/adapters/cloudflare-kv-cache.ts +207 -0
- package/src/adapters/cloudflare.ts +747 -130
- package/src/adapters/compress-module.ts +101 -88
- package/src/adapters/fs-identity.ts +156 -0
- package/src/adapters/nitro-presets.ts +139 -0
- package/src/adapters/nitro-preview.ts +340 -0
- package/src/adapters/nitro.ts +279 -418
- package/src/adapters/raw-imports.d.ts +5 -0
- package/src/adapters/shared.ts +274 -0
- package/src/adapters/types.ts +28 -7
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/analyze/chains.ts +411 -0
- package/src/analyze/classify.ts +258 -0
- package/src/analyze/crawl-entry.ts +68 -0
- package/src/analyze/crawl.ts +500 -0
- package/src/analyze/graph-cache.ts +332 -0
- package/src/analyze/graph-command.ts +762 -0
- package/src/analyze/live-graph.ts +232 -0
- package/src/analyze/poison-rules.ts +165 -0
- package/src/analyze/poison-scan.ts +162 -0
- package/src/analyze/scan.ts +149 -0
- package/src/cache/cache-api.ts +107 -0
- package/src/cache/fast-hash.ts +39 -0
- package/src/cache/handler-store.ts +76 -0
- package/src/cache/index.ts +115 -22
- package/src/cache/invalidation-epoch.ts +93 -0
- package/src/cache/json-lossy-check.ts +75 -0
- package/src/cache/redis-handler.ts +198 -20
- package/src/cache/singleflight.ts +69 -6
- package/src/cache/sizeof.ts +33 -0
- package/src/cache/stable-stringify.ts +65 -2
- package/src/cache/store.ts +71 -0
- package/src/cache/stores/cloudflare-kv.ts +52 -0
- package/src/cache/stores/memory.ts +125 -0
- package/src/cache/stores/redis.ts +97 -0
- package/src/cache/stores/vercel.ts +59 -0
- package/src/cache/tag-aware-handler.ts +237 -0
- package/src/cache/timber-cache.ts +180 -48
- package/src/cdn/cloudflare-purge.ts +50 -0
- package/src/cdn/fastly-purge.ts +63 -0
- package/src/cdn/headers.ts +153 -0
- package/src/cdn/index.ts +23 -0
- package/src/cdn/purge-store.ts +34 -0
- package/src/cdn/workers-cache-purge.ts +34 -0
- package/src/cli-check.ts +507 -0
- package/src/cli-schema-sync.ts +401 -0
- package/src/cli.ts +262 -55
- package/src/client/browser-dev.ts +157 -2
- package/src/client/browser-entry/action-dispatch.ts +197 -0
- package/src/client/browser-entry/action-queue.ts +90 -0
- package/src/client/browser-entry/hmr.ts +70 -0
- package/src/client/browser-entry/hydrate.ts +148 -0
- package/src/client/browser-entry/index.ts +131 -0
- package/src/client/browser-entry/post-hydration.ts +123 -0
- package/src/client/browser-entry/router-init.ts +418 -0
- package/src/client/browser-entry/rsc-stream.ts +166 -0
- package/src/client/browser-entry/scroll.ts +50 -0
- package/src/client/deny-last-resort.tsx +54 -0
- package/src/client/error-boundary.tsx +316 -40
- package/src/client/error-reconstituter.tsx +79 -0
- package/src/client/form.tsx +36 -32
- package/src/client/global-context.ts +31 -0
- package/src/client/history.ts +81 -10
- package/src/client/index.ts +89 -53
- package/src/client/internal.ts +59 -0
- package/src/client/link.tsx +452 -159
- package/src/client/location-search.ts +15 -0
- package/src/client/navigation-api.ts +347 -0
- package/src/client/navigation-commit.ts +295 -0
- package/src/client/navigation-context.ts +67 -98
- package/src/client/navigation-root.tsx +224 -0
- package/src/client/navigation-transition.ts +327 -0
- package/src/client/nuqs-adapter.tsx +21 -9
- package/src/client/params-context.ts +187 -0
- package/src/client/react-root.ts +72 -0
- package/src/client/router-effects.ts +228 -0
- package/src/client/router-lifecycle.ts +354 -0
- package/src/client/router-pipeline.ts +490 -0
- package/src/client/router-ref.ts +3 -3
- package/src/client/router-skew.ts +30 -0
- package/src/client/router-types.ts +294 -0
- package/src/client/router.ts +436 -424
- package/src/client/rsc-fetch.ts +512 -73
- package/src/client/segment-cache.ts +327 -40
- package/src/client/segment-context.ts +13 -5
- package/src/client/segment-outlet.tsx +96 -0
- package/src/client/segment-update-context.ts +23 -0
- package/src/client/shallow-url.ts +22 -0
- package/src/client/slot-content-cache-context.ts +43 -0
- package/src/client/slot-context.ts +50 -0
- package/src/client/slot-outlet.tsx +22 -0
- package/src/client/slot-provider.tsx +32 -0
- package/src/client/ssr-data.ts +30 -9
- package/src/client/stale-client.ts +191 -0
- package/src/client/state.ts +29 -15
- package/src/client/status-page-marker.tsx +32 -0
- package/src/client/top-loader.tsx +36 -29
- package/src/client/unload-guard.ts +35 -3
- package/src/client/use-cookie.ts +70 -18
- package/src/client/use-link-status.ts +7 -7
- package/src/client/use-pathname.ts +22 -31
- package/src/client/use-pending-navigation.ts +40 -0
- package/src/client/use-query-states.ts +206 -36
- package/src/client/use-router.ts +6 -3
- package/src/client/use-search-params.ts +38 -49
- package/src/client/use-segment-params.ts +69 -0
- package/src/client/use-selected-layout-segment.ts +2 -2
- package/src/codec.ts +149 -0
- package/src/config-types.ts +322 -0
- package/src/config-validation.ts +347 -0
- package/src/cookies/define-cookie.ts +222 -53
- package/src/cookies/index.ts +13 -2
- package/src/cookies/json-cookie.ts +105 -0
- package/src/cookies/validation.ts +192 -0
- package/src/dev-tools/404-page.ts +286 -0
- package/src/dev-tools/browser-logs.ts +55 -0
- package/src/dev-tools/dev-page-shell.ts +260 -0
- package/src/dev-tools/error-page.ts +331 -0
- package/src/dev-tools/holding-server.ts +185 -0
- package/src/dev-tools/hydration-overlay.ts +158 -0
- package/src/dev-tools/index.ts +83 -0
- package/src/dev-tools/instrumentation.ts +213 -0
- package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
- package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
- package/src/dev-tools/overlay.ts +469 -0
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/dev-tools/terminal.ts +182 -0
- package/src/fonts/ast-walk.ts +235 -0
- package/src/fonts/ast.ts +479 -128
- package/src/fonts/bundle.ts +138 -0
- package/src/fonts/css.ts +3 -2
- package/src/fonts/dev-middleware.ts +85 -0
- package/src/fonts/fallbacks.ts +0 -23
- package/src/fonts/google.ts +101 -19
- package/src/fonts/local.ts +13 -8
- package/src/fonts/paths.ts +58 -0
- package/src/fonts/pipeline.ts +348 -0
- package/src/fonts/transform.ts +311 -0
- package/src/fonts/types.ts +52 -1
- package/src/fonts/virtual-modules.ts +179 -0
- package/src/index.ts +486 -344
- package/src/params/codec-registry.ts +34 -0
- package/src/params/define-schema.ts +115 -0
- package/src/params/index.ts +17 -0
- package/src/params/resolve-schema.ts +84 -0
- package/src/plugin-context.ts +503 -0
- package/src/plugins/adapter-build.ts +229 -7
- package/src/plugins/build-manifest.ts +201 -26
- package/src/plugins/build-report.ts +275 -43
- package/src/plugins/cache.ts +243 -0
- package/src/plugins/callsite-ast.ts +472 -0
- package/src/plugins/callsite-jsx.ts +243 -0
- package/src/plugins/chunks.ts +74 -5
- package/src/plugins/client-chunks.ts +185 -0
- package/src/plugins/cloudflare-wasm.ts +141 -0
- package/src/plugins/content.ts +5 -1
- package/src/plugins/dev-discovery.ts +218 -0
- package/src/plugins/dev-server.ts +369 -96
- package/src/plugins/entries.ts +148 -18
- package/src/plugins/fonts.ts +251 -524
- package/src/plugins/graph-endpoint.ts +532 -0
- package/src/plugins/mdx.ts +116 -40
- package/src/plugins/prebuilt-capture.ts +217 -0
- package/src/plugins/prebuilt-options-analysis.ts +175 -0
- package/src/plugins/prebuilt.ts +655 -0
- package/src/plugins/prerender-sugar.ts +320 -0
- package/src/plugins/request-dep/analysis.ts +447 -0
- package/src/plugins/request-dep/index.ts +376 -0
- package/src/plugins/request-dep/origin.ts +310 -0
- package/src/plugins/routing.ts +273 -277
- package/src/plugins/server-bundle.ts +103 -14
- package/src/plugins/shims.ts +259 -97
- package/src/plugins/static-build.ts +708 -66
- package/src/react-canary.d.ts +2 -0
- package/src/routing/codegen-shared.ts +39 -0
- package/src/routing/codegen-types.ts +62 -0
- package/src/routing/codegen-write.ts +141 -0
- package/src/routing/codegen.ts +349 -232
- package/src/routing/collision-probe.ts +438 -0
- package/src/routing/collision-spaces.ts +281 -0
- package/src/routing/convention-lint.ts +623 -0
- package/src/routing/export-detect.ts +448 -0
- package/src/routing/file-cache.ts +23 -0
- package/src/routing/index.ts +16 -7
- package/src/routing/interception-overlap.ts +141 -0
- package/src/routing/interception.ts +1044 -67
- package/src/routing/link-codegen.ts +280 -0
- package/src/routing/manifest-codegen.ts +226 -0
- package/src/routing/scanner.ts +393 -219
- package/src/routing/schema-validation.ts +155 -0
- package/src/routing/segment-classify.ts +280 -0
- package/src/routing/segment-codegen.ts +98 -0
- package/src/routing/segment-keys.ts +186 -0
- package/src/routing/slot-placement.ts +97 -0
- package/src/routing/types.ts +75 -26
- package/src/routing/walkers.ts +98 -0
- package/src/rsc-runtime/rsc.ts +9 -0
- package/src/rsc-runtime/ssr.ts +51 -0
- package/src/rsc-runtime/transforms.ts +13 -0
- package/src/rsc-runtime/vendor-types.d.ts +19 -0
- package/src/schema-bridge.ts +380 -0
- package/src/search-params/define.ts +677 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/parse-total.ts +91 -0
- package/src/search-params/serialize-equal.ts +14 -0
- package/src/search-params/wrappers.ts +150 -0
- package/src/server/access-gate.tsx +196 -57
- package/src/server/action-client.ts +136 -35
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +256 -56
- package/src/server/actions.ts +112 -68
- package/src/server/als-registry.ts +160 -21
- package/src/server/asset-headers.ts +15 -37
- package/src/server/body-limits.ts +10 -2
- package/src/server/build-manifest.ts +33 -57
- package/src/server/canonicalize.ts +6 -3
- package/src/server/chain-url-parts.ts +163 -0
- package/src/server/children-interception.ts +115 -0
- package/src/server/coalesce-tick.ts +75 -0
- package/src/server/compress.ts +43 -8
- package/src/server/cookie-context.ts +484 -0
- package/src/server/cookie-parsing.ts +163 -0
- package/src/server/csp-nonce.ts +70 -0
- package/src/server/csrf.ts +39 -6
- package/src/server/debug.ts +137 -0
- package/src/server/default-logger.ts +99 -0
- package/src/server/default-status-page.ts +88 -0
- package/src/server/deny-boundary.ts +533 -0
- package/src/server/deny-renderer.ts +214 -112
- package/src/server/dev-source-map.ts +31 -0
- package/src/server/early-hints-sender.ts +4 -3
- package/src/server/early-hints.ts +39 -29
- package/src/server/error-boundary-wrapper.ts +181 -44
- package/src/server/error-response-headers.ts +18 -0
- package/src/server/fallback-error.ts +79 -102
- package/src/server/flight-injection-state.ts +113 -0
- package/src/server/flight-scripts.ts +67 -0
- package/src/server/form-data.ts +124 -12
- package/src/server/form-flash.ts +2 -2
- package/src/server/head-response.ts +54 -0
- package/src/server/html-injector-core.ts +512 -0
- package/src/server/html-injectors.ts +272 -235
- package/src/server/index.ts +40 -192
- package/src/server/instrumentation.ts +1 -1
- package/src/server/internal.ts +173 -0
- package/src/server/logger.ts +73 -36
- package/src/server/metadata-collector.ts +174 -0
- package/src/server/metadata-platform.ts +2 -2
- package/src/server/metadata-render.ts +30 -8
- package/src/server/metadata-routes.ts +205 -24
- package/src/server/metadata-social.ts +2 -2
- package/src/server/metadata.ts +23 -2
- package/src/server/middleware-runner.ts +32 -5
- package/src/server/node-stream-transforms.ts +323 -0
- package/src/server/nuqs-ssr-provider.tsx +8 -7
- package/src/server/param-coercion.ts +198 -0
- package/src/server/pipeline-helpers.ts +159 -0
- package/src/server/pipeline-interception.ts +109 -33
- package/src/server/pipeline-metadata.ts +15 -1
- package/src/server/pipeline-outcome.ts +218 -0
- package/src/server/pipeline-phases.ts +606 -0
- package/src/server/pipeline.ts +343 -389
- package/src/server/port-resolution.ts +53 -0
- package/src/server/prebuilt/cache-key.ts +299 -0
- package/src/server/prebuilt/capture-state.ts +89 -0
- package/src/server/prebuilt/key-discipline.ts +122 -0
- package/src/server/prebuilt/manifest-tag-index.ts +46 -0
- package/src/server/prebuilt/overlay.ts +256 -0
- package/src/server/prebuilt/payload-source.ts +202 -0
- package/src/server/prebuilt/slots.ts +190 -0
- package/src/server/prebuilt/synthetic-store.ts +122 -0
- package/src/server/prebuilt-builder.ts +804 -0
- package/src/server/prebuilt-runtime.ts +817 -0
- package/src/server/primitives.ts +246 -97
- package/src/server/publish-params.ts +42 -0
- package/src/server/render-timeout.ts +108 -0
- package/src/server/render-utils.ts +35 -0
- package/src/server/request-context.ts +244 -333
- package/src/server/request-dep.ts +37 -0
- package/src/server/response-cache-policy.ts +45 -0
- package/src/server/route-element-builder.ts +508 -360
- package/src/server/route-element-helpers.ts +37 -0
- package/src/server/route-handler.ts +40 -13
- package/src/server/route-matcher.ts +165 -272
- package/src/server/route-module-loader.ts +161 -0
- package/src/server/rsc-cache-key-guard.ts +122 -0
- package/src/server/rsc-entry/action-middleware-runner.ts +174 -0
- package/src/server/rsc-entry/api-handler.ts +78 -34
- package/src/server/rsc-entry/deny-fallback.ts +93 -0
- package/src/server/rsc-entry/error-renderer.ts +373 -95
- package/src/server/rsc-entry/helpers.ts +226 -95
- package/src/server/rsc-entry/index.ts +405 -323
- package/src/server/rsc-entry/render-route.ts +304 -0
- package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
- package/src/server/rsc-entry/rsc-payload.ts +239 -50
- package/src/server/rsc-entry/rsc-stream.ts +160 -30
- package/src/server/rsc-entry/ssr-bridge.ts +18 -5
- package/src/server/rsc-entry/ssr-renderer.ts +315 -57
- package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
- package/src/server/rsc-error-envelope.ts +18 -0
- package/src/server/rsc-prop-warnings.ts +3 -1
- package/src/server/safe-load.ts +60 -0
- package/src/server/sensitive-fields.ts +230 -0
- package/src/server/server-only-guard-noop.js +3 -0
- package/src/server/server-timing.ts +1 -1
- package/src/server/sitemap-generator.ts +337 -0
- package/src/server/sitemap-handler.ts +157 -0
- package/src/server/skippable-prefix.ts +172 -0
- package/src/server/slot-interception.ts +168 -0
- package/src/server/slot-resolver.ts +707 -300
- package/src/server/slot-subtree-contain.ts +255 -0
- package/src/server/ssr-bridge-types.ts +165 -0
- package/src/server/ssr-entry.ts +230 -85
- package/src/server/ssr-render.ts +357 -85
- package/src/server/ssr-wrappers.tsx +162 -0
- package/src/server/state-tree-diff.ts +85 -30
- package/src/server/static-generator.ts +715 -0
- package/src/server/static-not-found.ts +134 -0
- package/src/server/status-code-resolver.ts +107 -148
- package/src/server/stream-utils.ts +292 -0
- package/src/server/tracing.ts +151 -16
- package/src/server/tree-match.ts +262 -0
- package/src/server/types.ts +95 -10
- package/src/server/utils/element-type.ts +88 -0
- package/src/server/utils/escape-html.ts +20 -0
- package/src/server/utils/mdx-file.ts +22 -0
- package/src/server/version-skew.ts +104 -0
- package/src/server/waituntil-bridge.ts +5 -2
- package/src/server/workers-cache-bridge.ts +33 -0
- package/src/shared/als-slots.ts +74 -0
- package/src/shared/base-path.ts +80 -0
- package/src/shared/href-validation.ts +159 -0
- package/src/shared/merge-search-params.ts +55 -0
- package/src/shared/param-value.ts +281 -0
- package/src/shared/payload-root.ts +152 -0
- package/src/shared/redirect-type.ts +17 -0
- package/src/shared/rsc-cache-key.ts +269 -0
- package/src/shared/rsc-error-envelope.ts +16 -0
- package/src/shared/rsc-manifest.ts +29 -0
- package/src/shared/rsc-media-type.ts +59 -0
- package/src/shared/rsc-payload-path.ts +45 -0
- package/src/shared/segment-info.ts +67 -0
- package/src/shared/slot-params.ts +109 -0
- package/src/shared/static-platform-files.ts +75 -0
- package/src/shared/status-reason-phrase.ts +61 -0
- package/src/shims/font-google.ts +1 -1
- package/src/shims/font-local.ts +34 -0
- package/src/shims/headers.ts +122 -1
- package/src/shims/navigation-client.ts +36 -32
- package/src/shims/navigation-rsc.ts +47 -0
- package/src/shims/navigation.ts +10 -7
- package/src/utils/state-machine.ts +111 -0
- package/dist/_chunks/als-registry-k-AtAQ9R.js +0 -41
- package/dist/_chunks/als-registry-k-AtAQ9R.js.map +0 -1
- package/dist/_chunks/format-DNt20Kt8.js +0 -163
- package/dist/_chunks/format-DNt20Kt8.js.map +0 -1
- package/dist/_chunks/interception-DGDIjDbR.js +0 -676
- package/dist/_chunks/interception-DGDIjDbR.js.map +0 -1
- package/dist/_chunks/metadata-routes-CQCnF4VK.js +0 -153
- package/dist/_chunks/metadata-routes-CQCnF4VK.js.map +0 -1
- package/dist/_chunks/request-context-CRj2Zh1E.js +0 -329
- package/dist/_chunks/request-context-CRj2Zh1E.js.map +0 -1
- package/dist/_chunks/ssr-data-DLnbYpj1.js.map +0 -1
- package/dist/_chunks/tracing-DF0G3FB7.js +0 -173
- package/dist/_chunks/tracing-DF0G3FB7.js.map +0 -1
- package/dist/_chunks/use-cookie-dDbpCTx-.js +0 -91
- package/dist/_chunks/use-cookie-dDbpCTx-.js.map +0 -1
- package/dist/_chunks/use-query-states-DAhgj8Gx.js +0 -109
- package/dist/_chunks/use-query-states-DAhgj8Gx.js.map +0 -1
- package/dist/adapters/cloudflare.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/error-boundary.js.map +0 -1
- package/dist/client/head.d.ts +0 -16
- package/dist/client/head.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/segment-merger.d.ts +0 -119
- package/dist/client/segment-merger.d.ts.map +0 -1
- package/dist/client/stale-reload.d.ts +0 -44
- package/dist/client/stale-reload.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts +0 -74
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/use-navigation-pending.d.ts +0 -26
- package/dist/client/use-navigation-pending.d.ts.map +0 -1
- package/dist/client/use-params.d.ts +0 -92
- package/dist/client/use-params.d.ts.map +0 -1
- package/dist/content/index.d.ts +0 -11
- package/dist/content/index.d.ts.map +0 -1
- package/dist/content/index.js +0 -2
- package/dist/plugins/cache-transform.d.ts +0 -36
- package/dist/plugins/cache-transform.d.ts.map +0 -1
- package/dist/plugins/dev-error-overlay.d.ts +0 -60
- package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
- package/dist/plugins/dev-logs.d.ts.map +0 -1
- package/dist/plugins/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.d.ts.map +0 -1
- package/dist/plugins/server-action-exports.d.ts +0 -26
- package/dist/plugins/server-action-exports.d.ts.map +0 -1
- package/dist/routing/status-file-lint.d.ts +0 -33
- package/dist/routing/status-file-lint.d.ts.map +0 -1
- package/dist/search-params/analyze.d.ts +0 -54
- package/dist/search-params/analyze.d.ts.map +0 -1
- package/dist/search-params/builtin-codecs.d.ts +0 -105
- package/dist/search-params/builtin-codecs.d.ts.map +0 -1
- package/dist/search-params/codecs.d.ts +0 -53
- package/dist/search-params/codecs.d.ts.map +0 -1
- package/dist/search-params/create.d.ts +0 -106
- package/dist/search-params/create.d.ts.map +0 -1
- package/dist/search-params/registry.d.ts +0 -20
- package/dist/search-params/registry.d.ts.map +0 -1
- package/dist/server/client-module-map.d.ts +0 -47
- package/dist/server/client-module-map.d.ts.map +0 -1
- package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
- package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
- package/dist/server/dev-logger.d.ts.map +0 -1
- package/dist/server/dev-span-processor.d.ts +0 -29
- package/dist/server/dev-span-processor.d.ts.map +0 -1
- package/dist/server/dev-warnings.d.ts +0 -129
- package/dist/server/dev-warnings.d.ts.map +0 -1
- package/dist/server/flush.d.ts +0 -74
- package/dist/server/flush.d.ts.map +0 -1
- package/dist/server/manifest-status-resolver.d.ts +0 -58
- package/dist/server/manifest-status-resolver.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/tree-builder.d.ts +0 -126
- package/dist/server/tree-builder.d.ts.map +0 -1
- package/dist/utils/directive-parser.d.ts +0 -70
- package/dist/utils/directive-parser.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -99
- package/src/client/browser-entry.ts +0 -674
- package/src/client/head.ts +0 -61
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/segment-merger.ts +0 -345
- package/src/client/stale-reload.ts +0 -89
- package/src/client/transition-root.tsx +0 -160
- package/src/client/use-navigation-pending.ts +0 -38
- package/src/client/use-params.ts +0 -141
- package/src/content/index.ts +0 -13
- package/src/plugins/cache-transform.ts +0 -199
- package/src/plugins/dev-error-overlay.ts +0 -230
- package/src/plugins/dynamic-transform.ts +0 -161
- package/src/plugins/server-action-exports.ts +0 -220
- package/src/routing/status-file-lint.ts +0 -112
- package/src/search-params/analyze.ts +0 -192
- package/src/search-params/builtin-codecs.ts +0 -228
- package/src/search-params/codecs.ts +0 -153
- package/src/search-params/create.ts +0 -321
- package/src/search-params/registry.ts +0 -31
- package/src/server/client-module-map.ts +0 -58
- package/src/server/dev-fetch-instrumentation.ts +0 -96
- package/src/server/dev-span-processor.ts +0 -78
- package/src/server/dev-warnings.ts +0 -282
- package/src/server/flush.ts +0 -182
- package/src/server/manifest-status-resolver.ts +0 -215
- package/src/server/prerender.ts +0 -139
- package/src/server/tree-builder.ts +0 -382
- package/src/shims/server-only-noop.js +0 -6
- package/src/utils/directive-parser.ts +0 -529
|
@@ -0,0 +1,677 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* defineSearchParams — factory for SearchParamsDefinition<T>.
|
|
3
|
+
*
|
|
4
|
+
* Creates a typed, composable definition for a route's search parameters.
|
|
5
|
+
* Accepts both SearchParamCodec values and Standard Schema objects (Zod,
|
|
6
|
+
* Valibot, ArkType) with auto-detection. Supports URL key aliasing via
|
|
7
|
+
* withUrlKey(), default-omission serialization, and composition via
|
|
8
|
+
* .extend() / .pick().
|
|
9
|
+
*
|
|
10
|
+
* Design doc: design/23-search-params.md §"defineSearchParams — The Factory"
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { useQueryStates as clientUseQueryStates } from '../client/use-query-states.ts';
|
|
14
|
+
import { fromSchema, isStandardSchema, isCodec } from '../schema-bridge.ts';
|
|
15
|
+
import type { StandardSchemaV1 } from '../schema-bridge.ts';
|
|
16
|
+
import type { Codec } from '../codec.ts';
|
|
17
|
+
// Server-only reference for .get() — avoids pulling server ALS into client
|
|
18
|
+
// bundles. In client environments, .get() throws before reaching this code
|
|
19
|
+
// path. The slot lives in its own leaf module so that `request-context.ts`
|
|
20
|
+
// can register the getter without importing this file, which would drag
|
|
21
|
+
// `nuqs` into every server entry (TIM-1298). See shared/als-slots.ts.
|
|
22
|
+
import { getSearchParamsFromAls } from '../shared/als-slots.ts';
|
|
23
|
+
import { parseTotal } from './parse-total.ts';
|
|
24
|
+
import { serializedEqual } from './serialize-equal.ts';
|
|
25
|
+
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// Types
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A codec that converts between URL string values and typed values.
|
|
32
|
+
*
|
|
33
|
+
* `parse` receives the RAW url value: `string | string[] | undefined`.
|
|
34
|
+
* A codec must be TOTAL over that domain — return a default rather than
|
|
35
|
+
* throwing on an absent or repeated param.
|
|
36
|
+
*
|
|
37
|
+
* A codec whose own `parse` covers only a PRESENT, SINGLE-VALUED param
|
|
38
|
+
* may publish `parseServerSide` instead, and timber calls that. nuqs
|
|
39
|
+
* parsers do exactly this, which is how they become total here: absent →
|
|
40
|
+
* `null` (or their `withDefault` value), repeated → the first value, and
|
|
41
|
+
* a throw from the inner parse → `null`. See
|
|
42
|
+
* design/23-search-params.md §'nuqs parsers, made total',
|
|
43
|
+
* `parse-total.ts`, and tests/nuqs-codec-boundary.test.ts (TIM-1350).
|
|
44
|
+
*
|
|
45
|
+
* Standard Schema objects (Zod, Valibot, ArkType) are auto-detected
|
|
46
|
+
* by defineSearchParams and wrapped via fromSchema; those ARE total
|
|
47
|
+
* through `parse` and are called that way.
|
|
48
|
+
*/
|
|
49
|
+
export interface SearchParamCodec<T> extends Omit<Codec<T>, 'serialize'> {
|
|
50
|
+
/**
|
|
51
|
+
* Typed value → URL string(s). Return `null` to omit/clear.
|
|
52
|
+
*
|
|
53
|
+
* A codec MAY return `string[]` to emit repeated keys (`?tag=a&tag=b`).
|
|
54
|
+
* `buildSearchParams` appends one `key=value` entry per array element;
|
|
55
|
+
* the nuqs bridge forwards the array to nuqs, which does the same.
|
|
56
|
+
* Codecs that always produce a single value return a plain string.
|
|
57
|
+
*
|
|
58
|
+
* Wider than `Codec<T>.serialize` (`string | null`) because search params
|
|
59
|
+
* have a repeated-key concept that cookies and segment params do not.
|
|
60
|
+
*/
|
|
61
|
+
serialize(value: T): string | string[] | null;
|
|
62
|
+
/** Optional URL key alias, set by withUrlKey(). */
|
|
63
|
+
urlKey?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Optional TOTAL entry point over `string | string[] | undefined`,
|
|
66
|
+
* preferred over `parse` wherever timber invokes a codec. Declared here
|
|
67
|
+
* so the protocol is typed rather than duck-checked at each wrapper:
|
|
68
|
+
* anything that reconstructs a codec has to carry it, and a wrapper
|
|
69
|
+
* cannot carry a property the interface does not admit.
|
|
70
|
+
*
|
|
71
|
+
* It returns `T`, not `T | null`. This is the entry point timber calls,
|
|
72
|
+
* so whatever it returns IS the field's type — admitting a `null` the
|
|
73
|
+
* field type did not carry would let `SearchParamCodec<string>` produce
|
|
74
|
+
* `null` for an absent param under a non-nullable annotation. A codec
|
|
75
|
+
* whose absent-case answer is `null` declares that in `T`, exactly as a
|
|
76
|
+
* bare nuqs parser does: `parseAsString` is a `SearchParamCodec<string |
|
|
77
|
+
* null>` here, never a `SearchParamCodec<string>`.
|
|
78
|
+
*
|
|
79
|
+
* nuqs parser builders satisfy this. See parse-total.ts.
|
|
80
|
+
*/
|
|
81
|
+
parseServerSide?(value: string | string[] | undefined): T;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** A codec with a URL key alias attached via withUrlKey(). */
|
|
85
|
+
export interface SearchParamCodecWithUrlKey<T> extends SearchParamCodec<T> {
|
|
86
|
+
urlKey: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Infer the output type of a codec. */
|
|
90
|
+
export type InferCodec<C> = C extends SearchParamCodec<infer T> ? T : never;
|
|
91
|
+
|
|
92
|
+
/** Map of property names to codecs. */
|
|
93
|
+
export type CodecMap<T extends Record<string, unknown>> = {
|
|
94
|
+
[K in keyof T]: SearchParamCodec<T[K]>;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/** Options for useQueryStates setter. */
|
|
98
|
+
export interface SetParamsOptions {
|
|
99
|
+
/** Update URL without server roundtrip (default: false). */
|
|
100
|
+
shallow?: boolean;
|
|
101
|
+
/** Scroll to top after update (default: true). */
|
|
102
|
+
scroll?: boolean;
|
|
103
|
+
/** 'push' (default) or 'replace' for history state. */
|
|
104
|
+
history?: 'push' | 'replace';
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/** Setter function returned by useQueryStates. */
|
|
108
|
+
export type SetParams<T> = (values: Partial<T>, options?: SetParamsOptions) => void;
|
|
109
|
+
|
|
110
|
+
/** Options for useQueryStates hook. */
|
|
111
|
+
export interface QueryStatesOptions {
|
|
112
|
+
/** Update URL without server roundtrip (default: false). */
|
|
113
|
+
shallow?: boolean;
|
|
114
|
+
/** Scroll to top after update (default: true). */
|
|
115
|
+
scroll?: boolean;
|
|
116
|
+
/** 'push' (default) or 'replace' for history state. */
|
|
117
|
+
history?: 'push' | 'replace';
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* A fully typed, composable search params definition.
|
|
122
|
+
*
|
|
123
|
+
* Returned by defineSearchParams(). Carries a phantom _type property
|
|
124
|
+
* for build-time type extraction.
|
|
125
|
+
*/
|
|
126
|
+
export interface SearchParamsDefinition<T extends Record<string, unknown>> {
|
|
127
|
+
/** Parse raw URL search params into typed values. */
|
|
128
|
+
parse(raw: URLSearchParams | Record<string, string | string[] | undefined>): T;
|
|
129
|
+
/** Parse a Promise of URLSearchParams (e.g., from the ALS `searchParams()` API). */
|
|
130
|
+
parse(raw: Promise<URLSearchParams | Record<string, string | string[] | undefined>>): Promise<T>;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Get typed search params from the current request context (ALS-backed).
|
|
134
|
+
*
|
|
135
|
+
* Server-only, sync. Reads getSearchParams() from ALS and parses through codecs.
|
|
136
|
+
* Throws on client.
|
|
137
|
+
*
|
|
138
|
+
* ```tsx
|
|
139
|
+
* // app/products/page.tsx
|
|
140
|
+
* import { searchParams } from './search-params'
|
|
141
|
+
* export default function Page() {
|
|
142
|
+
* const { page, category } = searchParams.get()
|
|
143
|
+
* }
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
get(): T;
|
|
147
|
+
|
|
148
|
+
/** Client hook — reads current URL params and returns typed values + setter. */
|
|
149
|
+
useQueryStates(options?: QueryStatesOptions): [T, SetParams<T>];
|
|
150
|
+
|
|
151
|
+
/** Extend with additional codecs or Standard Schema objects. */
|
|
152
|
+
extend<U extends Record<string, SearchParamField>>(
|
|
153
|
+
codecs: U
|
|
154
|
+
): SearchParamsDefinition<T & { [K in keyof U]: InferField<U[K]> }>;
|
|
155
|
+
|
|
156
|
+
/** Pick a subset of keys. Preserves codecs and aliases. */
|
|
157
|
+
pick<K extends keyof T & string>(...keys: K[]): SearchParamsDefinition<Pick<T, K>>;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Serialize values to a query string (no leading '?'), omitting defaults
|
|
161
|
+
* and applying `withUrlKey` aliases. This is the value to pass to
|
|
162
|
+
* `<Link searchParams={...}>`.
|
|
163
|
+
*
|
|
164
|
+
* Returns a **string**, not a `URLSearchParams`. A `<Link>` prop crosses
|
|
165
|
+
* the RSC Flight boundary, and `URLSearchParams` is iterable — React
|
|
166
|
+
* serializes it as an entries array, which arrives as `[['pg','2'], …]`
|
|
167
|
+
* and renders as `?0=pg&0=2`. A string survives intact.
|
|
168
|
+
*/
|
|
169
|
+
buildSearchParams(values: Partial<T>): string;
|
|
170
|
+
|
|
171
|
+
/** Build a full path with query string, omitting defaults. */
|
|
172
|
+
href(pathname: string, values: Partial<T>): string;
|
|
173
|
+
|
|
174
|
+
/** Read-only codec map for spreading into .extend(). */
|
|
175
|
+
codecs: { [K in keyof T]: SearchParamCodec<T[K]> };
|
|
176
|
+
|
|
177
|
+
/** Read-only URL key alias map. Maps property names to URL query parameter keys. */
|
|
178
|
+
readonly urlKeys: Readonly<Record<string, string>>;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Phantom property for build-time type extraction.
|
|
182
|
+
* Never set at runtime — exists only in the type system.
|
|
183
|
+
*/
|
|
184
|
+
readonly _type?: T;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// StandardSchemaV1 is imported from schema-bridge.ts — single source of truth.
|
|
188
|
+
// Re-export for consumers that import it from this module.
|
|
189
|
+
export type { StandardSchemaV1 } from '../schema-bridge.ts';
|
|
190
|
+
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
// Type-level helpers
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Extract a Standard Schema's declared *input* type from its optional
|
|
197
|
+
* `~standard.types` property (part of the Standard Schema spec; Zod, Valibot,
|
|
198
|
+
* and ArkType all declare it at the type level). Falls back to `never` when
|
|
199
|
+
* the schema doesn't declare types (e.g. hand-written schemas): with no
|
|
200
|
+
* metadata we can't know whether the schema handles `undefined`, so InferField
|
|
201
|
+
* widens conservatively rather than risk a type lie.
|
|
202
|
+
*/
|
|
203
|
+
type InferSchemaInput<V> = V extends { '~standard': { types?: infer TS } }
|
|
204
|
+
? [NonNullable<TS>] extends [{ input: infer I }]
|
|
205
|
+
? I
|
|
206
|
+
: never
|
|
207
|
+
: never;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Infer the output type from either a SearchParamCodec or a StandardSchemaV1.
|
|
211
|
+
*
|
|
212
|
+
* A codec publishing `parseServerSide` is read through THAT signature, not
|
|
213
|
+
* through `parse` — it is the entry point timber actually calls, and it is
|
|
214
|
+
* the one that tells the truth about absent input. A bare `parseAsString`
|
|
215
|
+
* declares `parse(value: string): string` but answers `null` for a missing
|
|
216
|
+
* param, so the field is `string | null`; `parseAsInteger.withDefault(1)`
|
|
217
|
+
* narrows its own `parseServerSide` to `NonNullable<number>` and the field
|
|
218
|
+
* stays `number`. Reading `parse` instead produced a non-nullable type for
|
|
219
|
+
* a nullable field (TIM-1350).
|
|
220
|
+
*
|
|
221
|
+
* The match is structural, not nuqs-specific: any codec declaring that
|
|
222
|
+
* signature opts into being read through it, which is exactly the contract
|
|
223
|
+
* `parseTotal` applies at runtime. The two must stay in step — a type
|
|
224
|
+
* inferred from `parse` while the runtime calls `parseServerSide` is the
|
|
225
|
+
* lie this branch exists to remove.
|
|
226
|
+
*
|
|
227
|
+
* Schemas whose input type rejects `undefined` (e.g. bare `z.string()`, whose
|
|
228
|
+
* input is `string`) are implicitly optional: the URL might not contain the
|
|
229
|
+
* param, and fromSchema returns `undefined` when the schema rejects absent
|
|
230
|
+
* input and has no default. The output type widens to `T | undefined` so the
|
|
231
|
+
* type doesn't lie. Schemas that accept `undefined` input (`.optional()`,
|
|
232
|
+
* `.default()`) keep their declared output type.
|
|
233
|
+
*
|
|
234
|
+
* Limitation: `z.coerce.*` schemas declare input `unknown`, which accepts
|
|
235
|
+
* `undefined` at the type level — so a coerce schema without `.default()`
|
|
236
|
+
* keeps its narrow output type even though absent input yields `undefined`
|
|
237
|
+
* at runtime. Add `.default()` to coerce schemas for accurate types.
|
|
238
|
+
*/
|
|
239
|
+
export type InferField<V> = V extends {
|
|
240
|
+
parseServerSide(value: string | string[] | undefined): infer R;
|
|
241
|
+
}
|
|
242
|
+
? R
|
|
243
|
+
: V extends SearchParamCodec<infer T>
|
|
244
|
+
? T
|
|
245
|
+
: V extends StandardSchemaV1<infer T>
|
|
246
|
+
? undefined extends InferSchemaInput<V>
|
|
247
|
+
? T
|
|
248
|
+
: T | undefined
|
|
249
|
+
: never;
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* A codec whose total entry point is `parseServerSide`, even when `parse`
|
|
253
|
+
* has a narrower signature. nuqs multi parsers (`parseAsNativeArrayOf`) have
|
|
254
|
+
* `parse(value: readonly string[])` — too narrow for `SearchParamCodec`'s
|
|
255
|
+
* `parse(string | string[] | undefined)` — but their `parseServerSide`
|
|
256
|
+
* covers the full domain. Timber never calls `parse` directly on these;
|
|
257
|
+
* `parseTotal` always reaches `parseServerSide` first (TIM-1355).
|
|
258
|
+
*/
|
|
259
|
+
export interface TotalSearchParamCodec<T> {
|
|
260
|
+
parseServerSide(value: string | string[] | undefined): T;
|
|
261
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
262
|
+
parse(...args: any[]): any;
|
|
263
|
+
serialize(value: T): string | string[] | null;
|
|
264
|
+
urlKey?: string;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/** Acceptable field value for defineSearchParams: a codec, a total codec, or a Standard Schema. */
|
|
268
|
+
export type SearchParamField<T = unknown> =
|
|
269
|
+
| SearchParamCodec<T>
|
|
270
|
+
| TotalSearchParamCodec<T>
|
|
271
|
+
| StandardSchemaV1<T>;
|
|
272
|
+
|
|
273
|
+
// ---------------------------------------------------------------------------
|
|
274
|
+
// Internal helpers
|
|
275
|
+
// ---------------------------------------------------------------------------
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Convert URLSearchParams or a plain record to a normalized record
|
|
279
|
+
* where repeated keys produce arrays.
|
|
280
|
+
*/
|
|
281
|
+
function normalizeRaw(
|
|
282
|
+
raw: URLSearchParams | Record<string, string | string[] | undefined>
|
|
283
|
+
): Record<string, string | string[] | undefined> {
|
|
284
|
+
if (raw instanceof URLSearchParams) {
|
|
285
|
+
const result: Record<string, string | string[] | undefined> = Object.create(null);
|
|
286
|
+
for (const key of new Set(raw.keys())) {
|
|
287
|
+
const values = raw.getAll(key);
|
|
288
|
+
result[key] = values.length === 1 ? values[0] : values;
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
return raw;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Compute the serialized default value for a codec. Used for
|
|
297
|
+
* default-omission: when serialize(value) === serialize(parse(undefined)),
|
|
298
|
+
* the field is omitted from the URL.
|
|
299
|
+
*
|
|
300
|
+
* Goes through `parseTotal` for the same reason request-time parsing does:
|
|
301
|
+
* a nuqs parser's own `parse` throws on absent input, and this is the
|
|
302
|
+
* absent case by construction.
|
|
303
|
+
*
|
|
304
|
+
* **A codec with no value for an absent param has no default to omit**,
|
|
305
|
+
* and `null` is returned rather than `serialize(null)`. Serializing it
|
|
306
|
+
* makes the "no value" case collide with a real one: `parseAsInteger`
|
|
307
|
+
* serializes `null` as the string `'null'`, so `buildSearchParams({ q:
|
|
308
|
+
* 'null' })` would silently drop a legitimate value (before TIM-1350 the
|
|
309
|
+
* absent parse was `undefined` and the swallowed input was the string
|
|
310
|
+
* `'undefined'` — same defect, a less likely input). Nothing is lost:
|
|
311
|
+
* `buildSearchParams` already skips a field whose `serialize` returns
|
|
312
|
+
* `null`, so a codec that encodes "no value" as an omission behaves
|
|
313
|
+
* identically, and one that encodes it as a real query value now writes
|
|
314
|
+
* it instead of dropping it.
|
|
315
|
+
*
|
|
316
|
+
* Codecs are documented to return a default rather than throw, but a
|
|
317
|
+
* hand-written codec that throws on absent input must not turn definition
|
|
318
|
+
* into a crash — treat its default as null (nothing to omit). `serialize`
|
|
319
|
+
* is inside the try for the same reason.
|
|
320
|
+
*
|
|
321
|
+
* Typed `SearchParamCodec<unknown>` rather than generic on purpose: the
|
|
322
|
+
* absent-input value is whatever the codec's total entry point returns,
|
|
323
|
+
* which for a nuqs parser is `T | null` while its `serialize` declares
|
|
324
|
+
* `T`. Widening to `unknown` states that honestly instead of casting.
|
|
325
|
+
*/
|
|
326
|
+
function getDefaultSerialized(codec: SearchParamCodec<unknown>): string | string[] | null {
|
|
327
|
+
try {
|
|
328
|
+
const absent = parseTotal(codec, undefined);
|
|
329
|
+
return absent === null || absent === undefined ? null : codec.serialize(absent);
|
|
330
|
+
} catch {
|
|
331
|
+
return null;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// isStandardSchema and isCodec are imported from schema-bridge.ts.
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Resolve a field value to a SearchParamCodec. Auto-detects Standard Schema
|
|
339
|
+
* objects and wraps them with fromSchema. Reads .urlKey from codecs.
|
|
340
|
+
*
|
|
341
|
+
* The returned codec is typed as `SearchParamCodec<unknown>` because the
|
|
342
|
+
* codec map uses that type. At runtime, the value may be a `Codec<T>` from
|
|
343
|
+
* `fromSchema` (whose serialize returns `string | null`) or a nuqs parser
|
|
344
|
+
* (whose serialize returns `string | string[] | null`). Both are safe
|
|
345
|
+
* because `buildSearchParams` handles the union.
|
|
346
|
+
*/
|
|
347
|
+
function resolveField(
|
|
348
|
+
fieldName: string,
|
|
349
|
+
value: SearchParamField
|
|
350
|
+
): { codec: SearchParamCodec<unknown>; urlKey?: string } {
|
|
351
|
+
// Check for codec first (codecs may also have '~standard' if they're nuqs parsers)
|
|
352
|
+
if (isCodec(value)) {
|
|
353
|
+
const urlKey = (value as SearchParamCodec<unknown>).urlKey;
|
|
354
|
+
return { codec: value as SearchParamCodec<unknown>, urlKey };
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Auto-detect Standard Schema. Schemas that reject undefined input and
|
|
358
|
+
// have no default are implicitly optional: fromSchema returns undefined
|
|
359
|
+
// for absent params, and InferField widens the output type to
|
|
360
|
+
// T | undefined. design/23-search-params.md §"Implicit Optionality"
|
|
361
|
+
if (isStandardSchema(value)) {
|
|
362
|
+
return { codec: fromSchema(value) as SearchParamCodec<unknown> };
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
throw new Error(
|
|
366
|
+
`[timber] defineSearchParams: field '${fieldName}' is not a valid codec or Standard Schema. ` +
|
|
367
|
+
`Expected an object with { parse, serialize } methods, or a Standard Schema object ` +
|
|
368
|
+
`(Zod, Valibot, ArkType).`
|
|
369
|
+
);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// ---------------------------------------------------------------------------
|
|
373
|
+
// Factory
|
|
374
|
+
// ---------------------------------------------------------------------------
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Create a SearchParamsDefinition from a map of codecs and/or Standard Schema
|
|
378
|
+
* objects. Accepts both SearchParamCodec values and raw Zod/Valibot/ArkType
|
|
379
|
+
* schemas with auto-detection.
|
|
380
|
+
*
|
|
381
|
+
* ```ts
|
|
382
|
+
* import { defineSearchParams, withDefault, withUrlKey } from '@timber-js/app/search-params'
|
|
383
|
+
* import { parseAsString, parseAsStringEnum } from 'nuqs'
|
|
384
|
+
* import { z } from 'zod/v4'
|
|
385
|
+
*
|
|
386
|
+
* export const searchParams = defineSearchParams({
|
|
387
|
+
* page: z.coerce.number().int().min(1).default(1), // Standard Schema — auto-wrapped
|
|
388
|
+
* q: withUrlKey(parseAsString, 'search'), // nuqs codec with URL alias
|
|
389
|
+
* sort: withDefault(parseAsStringEnum(['price', 'name']), 'price'),
|
|
390
|
+
* })
|
|
391
|
+
* ```
|
|
392
|
+
*/
|
|
393
|
+
/**
|
|
394
|
+
* Overload: accept a Standard Schema object schema (e.g., z.object({...})).
|
|
395
|
+
*
|
|
396
|
+
* The schema must have a `.shape` property whose values are themselves
|
|
397
|
+
* Standard Schema objects. Each shape property becomes a field codec
|
|
398
|
+
* via fromSchema().
|
|
399
|
+
*
|
|
400
|
+
* ```ts
|
|
401
|
+
* const searchParams = defineSearchParams(
|
|
402
|
+
* z.object({ page: z.coerce.number().default(1), q: z.string().optional() })
|
|
403
|
+
* )
|
|
404
|
+
* ```
|
|
405
|
+
*/
|
|
406
|
+
export function defineSearchParams<
|
|
407
|
+
S extends StandardSchemaV1<Record<string, unknown>> & {
|
|
408
|
+
shape: Record<string, StandardSchemaV1<unknown>>;
|
|
409
|
+
},
|
|
410
|
+
>(
|
|
411
|
+
schema: S
|
|
412
|
+
): SearchParamsDefinition<{ [K in keyof S['shape'] & string]: InferField<S['shape'][K]> }>;
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Overload: accept a map of codecs and/or Standard Schema objects.
|
|
416
|
+
*/
|
|
417
|
+
export function defineSearchParams<C extends Record<string, SearchParamField>>(
|
|
418
|
+
codecs: C
|
|
419
|
+
): SearchParamsDefinition<{ [K in keyof C]: InferField<C[K]> }>;
|
|
420
|
+
|
|
421
|
+
export function defineSearchParams(
|
|
422
|
+
codecsOrSchema:
|
|
423
|
+
| Record<string, SearchParamField>
|
|
424
|
+
| (StandardSchemaV1<unknown> & { shape: Record<string, StandardSchemaV1<unknown>> })
|
|
425
|
+
): SearchParamsDefinition<Record<string, unknown>> {
|
|
426
|
+
// Detect Standard Schema object with .shape (e.g., z.object(...))
|
|
427
|
+
if (isStandardSchema(codecsOrSchema) && hasShape(codecsOrSchema)) {
|
|
428
|
+
const fieldCodecs: Record<string, SearchParamField> = {};
|
|
429
|
+
for (const [key, fieldSchema] of Object.entries(codecsOrSchema.shape)) {
|
|
430
|
+
if (isStandardSchema(fieldSchema)) {
|
|
431
|
+
fieldCodecs[key] = fieldSchema;
|
|
432
|
+
} else {
|
|
433
|
+
throw new Error(
|
|
434
|
+
`[timber] defineSearchParams: field '${key}' in schema.shape is not a Standard Schema. ` +
|
|
435
|
+
`All shape properties must be Standard Schema objects (Zod, Valibot, ArkType).`
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
return defineSearchParamsFromMap(fieldCodecs);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
return defineSearchParamsFromMap(codecsOrSchema as Record<string, SearchParamField>);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/** Check if a schema has a .shape property with object-type values. */
|
|
446
|
+
function hasShape(schema: unknown): schema is { shape: Record<string, unknown> } {
|
|
447
|
+
return (
|
|
448
|
+
typeof schema === 'object' &&
|
|
449
|
+
schema !== null &&
|
|
450
|
+
'shape' in schema &&
|
|
451
|
+
typeof (schema as { shape: unknown }).shape === 'object' &&
|
|
452
|
+
(schema as { shape: unknown }).shape !== null
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
function defineSearchParamsFromMap(
|
|
457
|
+
codecs: Record<string, SearchParamField>
|
|
458
|
+
): SearchParamsDefinition<Record<string, unknown>> {
|
|
459
|
+
const resolvedCodecs: Record<string, SearchParamCodec<unknown>> = {};
|
|
460
|
+
const urlKeys: Record<string, string> = {};
|
|
461
|
+
|
|
462
|
+
for (const [key, value] of Object.entries(codecs)) {
|
|
463
|
+
const resolved = resolveField(key, value as SearchParamField);
|
|
464
|
+
resolvedCodecs[key] = resolved.codec;
|
|
465
|
+
if (resolved.urlKey) {
|
|
466
|
+
urlKeys[key] = resolved.urlKey;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
return buildDefinition(resolvedCodecs as unknown as CodecMap<Record<string, unknown>>, urlKeys);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
// ---------------------------------------------------------------------------
|
|
474
|
+
// Internal: build the definition object
|
|
475
|
+
// ---------------------------------------------------------------------------
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Internal: build a SearchParamsDefinition from a typed codec map and url keys.
|
|
479
|
+
*/
|
|
480
|
+
function buildDefinition<T extends Record<string, unknown>>(
|
|
481
|
+
codecMap: CodecMap<T>,
|
|
482
|
+
urlKeys: Record<string, string>
|
|
483
|
+
): SearchParamsDefinition<T> {
|
|
484
|
+
// Pre-compute default serialized values for omission check
|
|
485
|
+
const defaultSerialized: Record<string, string | string[] | null> = {};
|
|
486
|
+
for (const key of Object.keys(codecMap)) {
|
|
487
|
+
defaultSerialized[key] = getDefaultSerialized(codecMap[key as keyof T]);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
function getUrlKey(prop: string): string {
|
|
491
|
+
return urlKeys[prop] ?? prop;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// ---- parse ----
|
|
495
|
+
function parseSync(raw: URLSearchParams | Record<string, string | string[] | undefined>): T {
|
|
496
|
+
const normalized = normalizeRaw(raw);
|
|
497
|
+
const result: Record<string, unknown> = {};
|
|
498
|
+
|
|
499
|
+
for (const prop of Object.keys(codecMap)) {
|
|
500
|
+
const urlKey = getUrlKey(prop);
|
|
501
|
+
const rawValue = normalized[urlKey];
|
|
502
|
+
result[prop] = parseTotal(codecMap[prop as keyof T] as SearchParamCodec<unknown>, rawValue);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
return result as T;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
// Overloaded parse: sync when given raw params, async when given a Promise.
|
|
509
|
+
// This enables the ergonomic pattern: await def.parse(searchParams())
|
|
510
|
+
function parse(raw: URLSearchParams | Record<string, string | string[] | undefined>): T;
|
|
511
|
+
function parse(
|
|
512
|
+
raw: Promise<URLSearchParams | Record<string, string | string[] | undefined>>
|
|
513
|
+
): Promise<T>;
|
|
514
|
+
function parse(
|
|
515
|
+
raw:
|
|
516
|
+
| URLSearchParams
|
|
517
|
+
| Record<string, string | string[] | undefined>
|
|
518
|
+
| Promise<URLSearchParams | Record<string, string | string[] | undefined>>
|
|
519
|
+
): T | Promise<T> {
|
|
520
|
+
if (raw instanceof Promise) {
|
|
521
|
+
return raw.then(parseSync);
|
|
522
|
+
}
|
|
523
|
+
return parseSync(raw);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
// ---- buildSearchParams ----
|
|
527
|
+
//
|
|
528
|
+
// Returns a query string. It used to have a URLSearchParams-returning
|
|
529
|
+
// sibling (`toSearchParams`) that `<Link>` consumed; that shape cannot
|
|
530
|
+
// cross the RSC Flight boundary (see the interface docstring), and having
|
|
531
|
+
// two methods produce the same query two ways was a drift waiting to
|
|
532
|
+
// happen. One method now.
|
|
533
|
+
function buildSearchParams(values: Partial<T>): string {
|
|
534
|
+
const parts: string[] = [];
|
|
535
|
+
|
|
536
|
+
for (const prop of Object.keys(codecMap)) {
|
|
537
|
+
if (!(prop in values)) continue;
|
|
538
|
+
const codec = codecMap[prop as keyof T] as SearchParamCodec<unknown>;
|
|
539
|
+
|
|
540
|
+
// TIM-1354: serialize may not be total over null — nuqs parsers like
|
|
541
|
+
// parseAsIsoDate throw TypeError on null (null.toISOString()). Catch
|
|
542
|
+
// TypeError and omit, matching what setParams does on the client.
|
|
543
|
+
// Only TypeError — a deliberate throw (redirect(), notFound()) from a
|
|
544
|
+
// codec's serialize must propagate, not be silently swallowed.
|
|
545
|
+
let serialized: string | string[] | null;
|
|
546
|
+
try {
|
|
547
|
+
serialized = codec.serialize(values[prop as keyof T] as unknown);
|
|
548
|
+
} catch (error) {
|
|
549
|
+
if (error instanceof TypeError) continue;
|
|
550
|
+
throw error;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
if (serialized === null) continue;
|
|
554
|
+
// Omit if serialized value matches the default
|
|
555
|
+
if (serializedEqual(serialized, defaultSerialized[prop])) continue;
|
|
556
|
+
|
|
557
|
+
// TIM-1353: string[] → repeated keys (?tag=a&tag=b)
|
|
558
|
+
const urlKey = encodeURIComponent(getUrlKey(prop));
|
|
559
|
+
if (Array.isArray(serialized)) {
|
|
560
|
+
for (const entry of serialized) {
|
|
561
|
+
parts.push(`${urlKey}=${encodeURIComponent(entry)}`);
|
|
562
|
+
}
|
|
563
|
+
} else {
|
|
564
|
+
parts.push(`${urlKey}=${encodeURIComponent(serialized)}`);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
return parts.join('&');
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// ---- href ----
|
|
572
|
+
function href(pathname: string, values: Partial<T>): string {
|
|
573
|
+
const qs = buildSearchParams(values);
|
|
574
|
+
return qs ? `${pathname}?${qs}` : pathname;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// ---- extend ----
|
|
578
|
+
function extend<U extends Record<string, SearchParamField>>(
|
|
579
|
+
newCodecs: U
|
|
580
|
+
): SearchParamsDefinition<T & { [K in keyof U]: InferField<U[K]> }> {
|
|
581
|
+
type Combined = T & { [K in keyof U]: InferField<U[K]> };
|
|
582
|
+
|
|
583
|
+
// Resolve any Standard Schema objects in the extension
|
|
584
|
+
const resolvedNewCodecs: Record<string, SearchParamCodec<unknown>> = {};
|
|
585
|
+
const newUrlKeys: Record<string, string> = {};
|
|
586
|
+
for (const [key, value] of Object.entries(newCodecs)) {
|
|
587
|
+
const resolved = resolveField(key, value as SearchParamField);
|
|
588
|
+
resolvedNewCodecs[key] = resolved.codec;
|
|
589
|
+
if (resolved.urlKey) {
|
|
590
|
+
newUrlKeys[key] = resolved.urlKey;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
const combinedCodecs = {
|
|
595
|
+
...codecMap,
|
|
596
|
+
...resolvedNewCodecs,
|
|
597
|
+
} as unknown as CodecMap<Combined>;
|
|
598
|
+
|
|
599
|
+
// Merge URL keys: base keys + new codec urlKeys from withUrlKey
|
|
600
|
+
const combinedUrlKeys: Record<string, string> = { ...urlKeys, ...newUrlKeys };
|
|
601
|
+
|
|
602
|
+
return buildDefinition<Combined>(combinedCodecs, combinedUrlKeys);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
// ---- pick ----
|
|
606
|
+
function pick<K extends keyof T & string>(...keys: K[]): SearchParamsDefinition<Pick<T, K>> {
|
|
607
|
+
const pickedCodecs: Record<string, SearchParamCodec<unknown>> = {};
|
|
608
|
+
const pickedUrlKeys: Record<string, string> = {};
|
|
609
|
+
|
|
610
|
+
for (const key of keys) {
|
|
611
|
+
// Explicit guard — TypeScript prevents this, but JS callers and
|
|
612
|
+
// casts reach here, and "Cannot read properties of undefined
|
|
613
|
+
// (reading 'serialize')" is no help (TIM-1066).
|
|
614
|
+
if (!(key in codecMap)) {
|
|
615
|
+
throw new Error(
|
|
616
|
+
`[timber] pick('${key}'): unknown key. ` +
|
|
617
|
+
`Available keys: ${Object.keys(codecMap)
|
|
618
|
+
.map((k) => `'${k}'`)
|
|
619
|
+
.join(', ')}.`
|
|
620
|
+
);
|
|
621
|
+
}
|
|
622
|
+
pickedCodecs[key] = codecMap[key] as SearchParamCodec<unknown>;
|
|
623
|
+
if (key in urlKeys) {
|
|
624
|
+
pickedUrlKeys[key] = urlKeys[key];
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
return buildDefinition<Pick<T, K>>(
|
|
629
|
+
pickedCodecs as unknown as CodecMap<Pick<T, K>>,
|
|
630
|
+
pickedUrlKeys
|
|
631
|
+
);
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
// ---- useQueryStates ----
|
|
635
|
+
// Delegates to the 'use client' implementation from use-query-states.ts.
|
|
636
|
+
//
|
|
637
|
+
// In the RSC environment: use-query-states.ts is transformed by the RSC
|
|
638
|
+
// plugin into a client reference proxy. Calling it throws — correct,
|
|
639
|
+
// because hooks can't run during server component rendering.
|
|
640
|
+
// In SSR: use-query-states.ts is the real nuqs-backed function. Hooks
|
|
641
|
+
// work during SSR's renderToReadableStream, so this works correctly.
|
|
642
|
+
// On the client: same as SSR — the real function is available.
|
|
643
|
+
function useQueryStates(options?: QueryStatesOptions): [T, SetParams<T>] {
|
|
644
|
+
return clientUseQueryStates(codecMap, options, Object.freeze({ ...urlKeys })) as [
|
|
645
|
+
T,
|
|
646
|
+
SetParams<T>,
|
|
647
|
+
];
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
// ---- get ----
|
|
651
|
+
// ALS-backed: reads getSearchParams() from the current request context
|
|
652
|
+
// and parses through codecs. Server-only, sync.
|
|
653
|
+
function get(): T {
|
|
654
|
+
if (typeof window !== 'undefined') {
|
|
655
|
+
throw new Error(
|
|
656
|
+
'[timber] searchParams.get() is server-only. ' +
|
|
657
|
+
'Use searchParams.useQueryStates() on the client.'
|
|
658
|
+
);
|
|
659
|
+
}
|
|
660
|
+
const raw = getSearchParamsFromAls();
|
|
661
|
+
return parseSync(raw);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
const definition: SearchParamsDefinition<T> = {
|
|
665
|
+
parse,
|
|
666
|
+
get,
|
|
667
|
+
useQueryStates,
|
|
668
|
+
extend,
|
|
669
|
+
pick,
|
|
670
|
+
href,
|
|
671
|
+
buildSearchParams,
|
|
672
|
+
codecs: codecMap,
|
|
673
|
+
urlKeys: Object.freeze({ ...urlKeys }),
|
|
674
|
+
};
|
|
675
|
+
|
|
676
|
+
return definition;
|
|
677
|
+
}
|