@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 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,UAAU;IAGzB,gEAAgE;IAChE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEzC,wEAAwE;IACxE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,qCAAqC;IACrC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAKhC;;;;OAIG;IACH,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5F;;;OAGG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAI3C;;;OAGG;IACH,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE,uCAAuC;IACvC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,yCAAyC;IACzC,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1C,mCAAmC;IACnC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAIlC,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;CACvD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Workers KV CacheStore — eventually-consistent, no set operations.
|
|
3
|
+
*
|
|
4
|
+
* The TagAwareCacheHandler uses the lazy (version-stamp) strategy for this
|
|
5
|
+
* store: tag invalidation bumps a version counter (O(1) write), and reads
|
|
6
|
+
* validate stored tag versions against current. No enumeration, no
|
|
7
|
+
* read-modify-write races, correct under eventual consistency.
|
|
8
|
+
*
|
|
9
|
+
* Consistency: KV propagates writes in ~60s. A tag version bump propagates
|
|
10
|
+
* like any other write — during the window, some reads may still validate
|
|
11
|
+
* against the old version and serve stale data. This is acceptable for KV's
|
|
12
|
+
* consistency model (use short TTLs for security-critical invalidation).
|
|
13
|
+
*/
|
|
14
|
+
import type { CacheStore } from '../store.ts';
|
|
15
|
+
export interface CloudflareKVNamespace {
|
|
16
|
+
get(key: string, options?: {
|
|
17
|
+
type?: string;
|
|
18
|
+
}): Promise<string | null>;
|
|
19
|
+
put(key: string, value: string, options?: {
|
|
20
|
+
expirationTtl?: number;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
delete(key: string): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export declare class CloudflareKVStore implements CacheStore {
|
|
25
|
+
private kv;
|
|
26
|
+
readonly consistency: 'eventual';
|
|
27
|
+
/**
|
|
28
|
+
* @param kv - Either a KVNamespace instance or a factory function that
|
|
29
|
+
* resolves it from the current request context (for Workers where bindings
|
|
30
|
+
* are per-request).
|
|
31
|
+
*/
|
|
32
|
+
constructor(kv: CloudflareKVNamespace | (() => CloudflareKVNamespace));
|
|
33
|
+
private getKV;
|
|
34
|
+
get(key: string): Promise<string | null>;
|
|
35
|
+
set(key: string, value: string, ttlSeconds: number): Promise<void>;
|
|
36
|
+
del(key: string): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=cloudflare-kv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-kv.d.ts","sourceRoot":"","sources":["../../../src/cache/stores/cloudflare-kv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,EAAE,CAAwD;IAClE,QAAQ,CAAC,WAAW,EAAG,UAAU,CAAU;IAE3C;;;;OAIG;IACH,YAAY,EAAE,EAAE,qBAAqB,GAAG,CAAC,MAAM,qBAAqB,CAAC,EAEpE;IAED,OAAO,CAAC,KAAK;IAIP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7C;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/cache/stores/cloudflare-kv.ts
|
|
2
|
+
var CloudflareKVStore = class {
|
|
3
|
+
kv;
|
|
4
|
+
consistency = "eventual";
|
|
5
|
+
/**
|
|
6
|
+
* @param kv - Either a KVNamespace instance or a factory function that
|
|
7
|
+
* resolves it from the current request context (for Workers where bindings
|
|
8
|
+
* are per-request).
|
|
9
|
+
*/
|
|
10
|
+
constructor(kv) {
|
|
11
|
+
this.kv = kv;
|
|
12
|
+
}
|
|
13
|
+
getKV() {
|
|
14
|
+
return typeof this.kv === "function" ? this.kv() : this.kv;
|
|
15
|
+
}
|
|
16
|
+
async get(key) {
|
|
17
|
+
return this.getKV().get(key);
|
|
18
|
+
}
|
|
19
|
+
async set(key, value, ttlSeconds) {
|
|
20
|
+
await this.getKV().put(key, value, { expirationTtl: Math.max(ttlSeconds, 60) });
|
|
21
|
+
}
|
|
22
|
+
async del(key) {
|
|
23
|
+
await this.getKV().delete(key);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
//#endregion
|
|
27
|
+
export { CloudflareKVStore };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=cloudflare-kv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-kv.js","names":[],"sources":["../../../src/cache/stores/cloudflare-kv.ts"],"sourcesContent":["/**\n * Cloudflare Workers KV CacheStore — eventually-consistent, no set operations.\n *\n * The TagAwareCacheHandler uses the lazy (version-stamp) strategy for this\n * store: tag invalidation bumps a version counter (O(1) write), and reads\n * validate stored tag versions against current. No enumeration, no\n * read-modify-write races, correct under eventual consistency.\n *\n * Consistency: KV propagates writes in ~60s. A tag version bump propagates\n * like any other write — during the window, some reads may still validate\n * against the old version and serve stale data. This is acceptable for KV's\n * consistency model (use short TTLs for security-critical invalidation).\n */\n\nimport type { CacheStore } from '../store.ts';\n\nexport interface CloudflareKVNamespace {\n get(key: string, options?: { type?: string }): Promise<string | null>;\n put(key: string, value: string, options?: { expirationTtl?: number }): Promise<void>;\n delete(key: string): Promise<void>;\n}\n\nexport class CloudflareKVStore implements CacheStore {\n private kv: CloudflareKVNamespace | (() => CloudflareKVNamespace);\n readonly consistency = 'eventual' as const;\n\n /**\n * @param kv - Either a KVNamespace instance or a factory function that\n * resolves it from the current request context (for Workers where bindings\n * are per-request).\n */\n constructor(kv: CloudflareKVNamespace | (() => CloudflareKVNamespace)) {\n this.kv = kv;\n }\n\n private getKV(): CloudflareKVNamespace {\n return typeof this.kv === 'function' ? this.kv() : this.kv;\n }\n\n async get(key: string): Promise<string | null> {\n return this.getKV().get(key);\n }\n\n async set(key: string, value: string, ttlSeconds: number): Promise<void> {\n // KV expirationTtl minimum is 60s\n await this.getKV().put(key, value, { expirationTtl: Math.max(ttlSeconds, 60) });\n }\n\n async del(key: string): Promise<void> {\n await this.getKV().delete(key);\n }\n}\n"],"mappings":";AAsBA,IAAa,oBAAb,MAAqD;CACnD;CACA,cAAuB;;;;;;CAOvB,YAAY,IAA2D;EACrE,KAAK,KAAK;CACZ;CAEA,QAAuC;EACrC,OAAO,OAAO,KAAK,OAAO,aAAa,KAAK,GAAG,IAAI,KAAK;CAC1D;CAEA,MAAM,IAAI,KAAqC;EAC7C,OAAO,KAAK,MAAM,CAAC,CAAC,IAAI,GAAG;CAC7B;CAEA,MAAM,IAAI,KAAa,OAAe,YAAmC;EAEvE,MAAM,KAAK,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,eAAe,KAAK,IAAI,YAAY,EAAE,EAAE,CAAC;CAChF;CAEA,MAAM,IAAI,KAA4B;EACpC,MAAM,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG;CAC/B;AACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory CacheStore — local consistency only.
|
|
3
|
+
*
|
|
4
|
+
* LRU eviction by entry count and optional byte budget. The TagAwareCacheHandler
|
|
5
|
+
* uses the Set-based strategy here (we implement sadd/smembers/srem/sdel with
|
|
6
|
+
* plain Maps — atomic within a single process).
|
|
7
|
+
*
|
|
8
|
+
* Tag sets may accumulate stale memberships when data entries expire via TTL or
|
|
9
|
+
* LRU eviction (the store layer cannot know which sets reference a given key).
|
|
10
|
+
* This is harmless: TagAwareCacheHandler's eager invalidation path reads each
|
|
11
|
+
* member before deleting and prunes stale entries. The cost is proportional to
|
|
12
|
+
* set size on invalidation, not to memory — stale memberships are just strings.
|
|
13
|
+
*/
|
|
14
|
+
import type { CacheStore } from '../store.ts';
|
|
15
|
+
export interface MemoryStoreOptions {
|
|
16
|
+
maxEntries?: number;
|
|
17
|
+
maxBytes?: number;
|
|
18
|
+
maxEntryBytes?: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class MemoryCacheStore implements CacheStore {
|
|
21
|
+
private store;
|
|
22
|
+
private sets;
|
|
23
|
+
private maxEntries;
|
|
24
|
+
private maxBytes;
|
|
25
|
+
private maxEntryBytes;
|
|
26
|
+
private currentBytes;
|
|
27
|
+
private readonly trackBytes;
|
|
28
|
+
readonly consistency: 'local';
|
|
29
|
+
constructor(opts?: MemoryStoreOptions);
|
|
30
|
+
get(key: string): Promise<string | null>;
|
|
31
|
+
set(key: string, value: string, ttlSeconds: number): Promise<void>;
|
|
32
|
+
del(key: string): Promise<void>;
|
|
33
|
+
sadd(key: string, members: string[], _ttlSeconds: number): Promise<void>;
|
|
34
|
+
srem(key: string, members: string[]): Promise<void>;
|
|
35
|
+
smembers(key: string): Promise<string[]>;
|
|
36
|
+
sdel(key: string): Promise<void>;
|
|
37
|
+
get size(): number;
|
|
38
|
+
get bytes(): number;
|
|
39
|
+
private removeEntry;
|
|
40
|
+
private evictOldest;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cache/stores/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,KAAK,CAA6E;IAC1F,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,QAAQ,CAAC,WAAW,EAAG,OAAO,CAAU;IAExC,YAAY,IAAI,CAAC,EAAE,kBAAkB,EAKpC;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW7C;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvE;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpC;IAIK,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7E;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxD;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG7C;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { t as estimateByteSize } from "../../_chunks/sizeof-lXffQ1Vr.js";
|
|
2
|
+
//#region src/cache/stores/memory.ts
|
|
3
|
+
var MemoryCacheStore = class {
|
|
4
|
+
store = /* @__PURE__ */ new Map();
|
|
5
|
+
sets = /* @__PURE__ */ new Map();
|
|
6
|
+
maxEntries;
|
|
7
|
+
maxBytes;
|
|
8
|
+
maxEntryBytes;
|
|
9
|
+
currentBytes = 0;
|
|
10
|
+
trackBytes;
|
|
11
|
+
consistency = "local";
|
|
12
|
+
constructor(opts) {
|
|
13
|
+
this.maxEntries = Math.max(opts?.maxEntries ?? 1e3, 1);
|
|
14
|
+
this.maxBytes = opts?.maxBytes;
|
|
15
|
+
this.maxEntryBytes = opts?.maxEntryBytes;
|
|
16
|
+
this.trackBytes = this.maxBytes !== void 0 || this.maxEntryBytes !== void 0;
|
|
17
|
+
}
|
|
18
|
+
async get(key) {
|
|
19
|
+
const entry = this.store.get(key);
|
|
20
|
+
if (!entry) return null;
|
|
21
|
+
if (Date.now() > entry.expiresAt) {
|
|
22
|
+
this.removeEntry(key);
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
this.store.delete(key);
|
|
26
|
+
this.store.set(key, entry);
|
|
27
|
+
return entry.value;
|
|
28
|
+
}
|
|
29
|
+
async set(key, value, ttlSeconds) {
|
|
30
|
+
const byteSize = this.trackBytes ? estimateByteSize(value) : 0;
|
|
31
|
+
if (this.maxEntryBytes !== void 0 && byteSize > this.maxEntryBytes) return;
|
|
32
|
+
if (this.store.has(key)) this.removeEntry(key);
|
|
33
|
+
while (this.store.size >= this.maxEntries) this.evictOldest();
|
|
34
|
+
if (this.maxBytes !== void 0) {
|
|
35
|
+
while (this.currentBytes + byteSize > this.maxBytes && this.store.size > 0) this.evictOldest();
|
|
36
|
+
if (this.currentBytes + byteSize > this.maxBytes) return;
|
|
37
|
+
}
|
|
38
|
+
this.store.set(key, {
|
|
39
|
+
value,
|
|
40
|
+
expiresAt: Date.now() + ttlSeconds * 1e3,
|
|
41
|
+
byteSize
|
|
42
|
+
});
|
|
43
|
+
this.currentBytes += byteSize;
|
|
44
|
+
}
|
|
45
|
+
async del(key) {
|
|
46
|
+
this.removeEntry(key);
|
|
47
|
+
}
|
|
48
|
+
async sadd(key, members, _ttlSeconds) {
|
|
49
|
+
let set = this.sets.get(key);
|
|
50
|
+
if (!set) {
|
|
51
|
+
set = /* @__PURE__ */ new Set();
|
|
52
|
+
this.sets.set(key, set);
|
|
53
|
+
}
|
|
54
|
+
for (const m of members) set.add(m);
|
|
55
|
+
}
|
|
56
|
+
async srem(key, members) {
|
|
57
|
+
const set = this.sets.get(key);
|
|
58
|
+
if (!set) return;
|
|
59
|
+
for (const m of members) set.delete(m);
|
|
60
|
+
if (set.size === 0) this.sets.delete(key);
|
|
61
|
+
}
|
|
62
|
+
async smembers(key) {
|
|
63
|
+
const set = this.sets.get(key);
|
|
64
|
+
return set ? [...set] : [];
|
|
65
|
+
}
|
|
66
|
+
async sdel(key) {
|
|
67
|
+
this.sets.delete(key);
|
|
68
|
+
}
|
|
69
|
+
get size() {
|
|
70
|
+
return this.store.size;
|
|
71
|
+
}
|
|
72
|
+
get bytes() {
|
|
73
|
+
return this.currentBytes;
|
|
74
|
+
}
|
|
75
|
+
removeEntry(key) {
|
|
76
|
+
const entry = this.store.get(key);
|
|
77
|
+
if (entry) {
|
|
78
|
+
this.currentBytes -= entry.byteSize;
|
|
79
|
+
this.store.delete(key);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
evictOldest() {
|
|
83
|
+
const oldest = this.store.keys().next().value;
|
|
84
|
+
if (oldest !== void 0) this.removeEntry(oldest);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
//#endregion
|
|
88
|
+
export { MemoryCacheStore };
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","names":[],"sources":["../../../src/cache/stores/memory.ts"],"sourcesContent":["/**\n * In-memory CacheStore — local consistency only.\n *\n * LRU eviction by entry count and optional byte budget. The TagAwareCacheHandler\n * uses the Set-based strategy here (we implement sadd/smembers/srem/sdel with\n * plain Maps — atomic within a single process).\n *\n * Tag sets may accumulate stale memberships when data entries expire via TTL or\n * LRU eviction (the store layer cannot know which sets reference a given key).\n * This is harmless: TagAwareCacheHandler's eager invalidation path reads each\n * member before deleting and prunes stale entries. The cost is proportional to\n * set size on invalidation, not to memory — stale memberships are just strings.\n */\n\nimport type { CacheStore } from '../store.ts';\nimport { estimateByteSize } from '../sizeof.ts';\n\nexport interface MemoryStoreOptions {\n maxEntries?: number;\n maxBytes?: number;\n maxEntryBytes?: number;\n}\n\nexport class MemoryCacheStore implements CacheStore {\n private store = new Map<string, { value: string; expiresAt: number; byteSize: number }>();\n private sets = new Map<string, Set<string>>();\n private maxEntries: number;\n private maxBytes: number | undefined;\n private maxEntryBytes: number | undefined;\n private currentBytes = 0;\n private readonly trackBytes: boolean;\n readonly consistency = 'local' as const;\n\n constructor(opts?: MemoryStoreOptions) {\n this.maxEntries = Math.max(opts?.maxEntries ?? 1000, 1);\n this.maxBytes = opts?.maxBytes;\n this.maxEntryBytes = opts?.maxEntryBytes;\n this.trackBytes = this.maxBytes !== undefined || this.maxEntryBytes !== undefined;\n }\n\n async get(key: string): Promise<string | null> {\n const entry = this.store.get(key);\n if (!entry) return null;\n if (Date.now() > entry.expiresAt) {\n this.removeEntry(key);\n return null;\n }\n // LRU: move to end\n this.store.delete(key);\n this.store.set(key, entry);\n return entry.value;\n }\n\n async set(key: string, value: string, ttlSeconds: number): Promise<void> {\n const byteSize = this.trackBytes ? estimateByteSize(value) : 0;\n\n if (this.maxEntryBytes !== undefined && byteSize > this.maxEntryBytes) return;\n\n if (this.store.has(key)) this.removeEntry(key);\n\n while (this.store.size >= this.maxEntries) this.evictOldest();\n\n if (this.maxBytes !== undefined) {\n while (this.currentBytes + byteSize > this.maxBytes && this.store.size > 0) {\n this.evictOldest();\n }\n if (this.currentBytes + byteSize > this.maxBytes) return;\n }\n\n this.store.set(key, { value, expiresAt: Date.now() + ttlSeconds * 1000, byteSize });\n this.currentBytes += byteSize;\n }\n\n async del(key: string): Promise<void> {\n this.removeEntry(key);\n }\n\n // Set operations — trivial in-process implementations.\n\n async sadd(key: string, members: string[], _ttlSeconds: number): Promise<void> {\n let set = this.sets.get(key);\n if (!set) {\n set = new Set();\n this.sets.set(key, set);\n }\n for (const m of members) set.add(m);\n }\n\n async srem(key: string, members: string[]): Promise<void> {\n const set = this.sets.get(key);\n if (!set) return;\n for (const m of members) set.delete(m);\n if (set.size === 0) this.sets.delete(key);\n }\n\n async smembers(key: string): Promise<string[]> {\n const set = this.sets.get(key);\n return set ? [...set] : [];\n }\n\n async sdel(key: string): Promise<void> {\n this.sets.delete(key);\n }\n\n get size(): number {\n return this.store.size;\n }\n\n get bytes(): number {\n return this.currentBytes;\n }\n\n private removeEntry(key: string): void {\n const entry = this.store.get(key);\n if (entry) {\n this.currentBytes -= entry.byteSize;\n this.store.delete(key);\n }\n }\n\n private evictOldest(): void {\n const oldest = this.store.keys().next().value;\n if (oldest !== undefined) this.removeEntry(oldest);\n }\n}\n"],"mappings":";;AAuBA,IAAa,mBAAb,MAAoD;CAClD,wBAAgB,IAAI,IAAoE;CACxF,uBAAe,IAAI,IAAyB;CAC5C;CACA;CACA;CACA,eAAuB;CACvB;CACA,cAAuB;CAEvB,YAAY,MAA2B;EACrC,KAAK,aAAa,KAAK,IAAI,MAAM,cAAc,KAAM,CAAC;EACtD,KAAK,WAAW,MAAM;EACtB,KAAK,gBAAgB,MAAM;EAC3B,KAAK,aAAa,KAAK,aAAa,KAAA,KAAa,KAAK,kBAAkB,KAAA;CAC1E;CAEA,MAAM,IAAI,KAAqC;EAC7C,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;EAChC,IAAI,CAAC,OAAO,OAAO;EACnB,IAAI,KAAK,IAAI,IAAI,MAAM,WAAW;GAChC,KAAK,YAAY,GAAG;GACpB,OAAO;EACT;EAEA,KAAK,MAAM,OAAO,GAAG;EACrB,KAAK,MAAM,IAAI,KAAK,KAAK;EACzB,OAAO,MAAM;CACf;CAEA,MAAM,IAAI,KAAa,OAAe,YAAmC;EACvE,MAAM,WAAW,KAAK,aAAa,iBAAiB,KAAK,IAAI;EAE7D,IAAI,KAAK,kBAAkB,KAAA,KAAa,WAAW,KAAK,eAAe;EAEvE,IAAI,KAAK,MAAM,IAAI,GAAG,GAAG,KAAK,YAAY,GAAG;EAE7C,OAAO,KAAK,MAAM,QAAQ,KAAK,YAAY,KAAK,YAAY;EAE5D,IAAI,KAAK,aAAa,KAAA,GAAW;GAC/B,OAAO,KAAK,eAAe,WAAW,KAAK,YAAY,KAAK,MAAM,OAAO,GACvE,KAAK,YAAY;GAEnB,IAAI,KAAK,eAAe,WAAW,KAAK,UAAU;EACpD;EAEA,KAAK,MAAM,IAAI,KAAK;GAAE;GAAO,WAAW,KAAK,IAAI,IAAI,aAAa;GAAM;EAAS,CAAC;EAClF,KAAK,gBAAgB;CACvB;CAEA,MAAM,IAAI,KAA4B;EACpC,KAAK,YAAY,GAAG;CACtB;CAIA,MAAM,KAAK,KAAa,SAAmB,aAAoC;EAC7E,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG;EAC3B,IAAI,CAAC,KAAK;GACR,sBAAM,IAAI,IAAI;GACd,KAAK,KAAK,IAAI,KAAK,GAAG;EACxB;EACA,KAAK,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC;CACpC;CAEA,MAAM,KAAK,KAAa,SAAkC;EACxD,MAAM,MAAM,KAAK,KAAK,IAAI,GAAG;EAC7B,IAAI,CAAC,KAAK;EACV,KAAK,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC;EACrC,IAAI,IAAI,SAAS,GAAG,KAAK,KAAK,OAAO,GAAG;CAC1C;CAEA,MAAM,SAAS,KAAgC;EAC7C,MAAM,MAAM,KAAK,KAAK,IAAI,GAAG;EAC7B,OAAO,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;CAC3B;CAEA,MAAM,KAAK,KAA4B;EACrC,KAAK,KAAK,OAAO,GAAG;CACtB;CAEA,IAAI,OAAe;EACjB,OAAO,KAAK,MAAM;CACpB;CAEA,IAAI,QAAgB;EAClB,OAAO,KAAK;CACd;CAEA,YAAoB,KAAmB;EACrC,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;EAChC,IAAI,OAAO;GACT,KAAK,gBAAgB,MAAM;GAC3B,KAAK,MAAM,OAAO,GAAG;EACvB;CACF;CAEA,cAA4B;EAC1B,MAAM,SAAS,KAAK,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;EACxC,IAAI,WAAW,KAAA,GAAW,KAAK,YAAY,MAAM;CACnD;AACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis CacheStore — strongly-consistent, supports native Set operations.
|
|
3
|
+
*
|
|
4
|
+
* The TagAwareCacheHandler will use the Set-based strategy automatically
|
|
5
|
+
* because this store provides sadd/smembers/srem/sdel.
|
|
6
|
+
*/
|
|
7
|
+
import type { CacheStore } from '../store.ts';
|
|
8
|
+
/**
|
|
9
|
+
* Minimal Redis client contract. Same philosophy as the old RedisClient
|
|
10
|
+
* interface — deliberately NOT the native shape of any library. TTL is a
|
|
11
|
+
* required positional argument so no adapter can forget it.
|
|
12
|
+
*
|
|
13
|
+
* @example ioredis
|
|
14
|
+
* ```ts
|
|
15
|
+
* import Redis from 'ioredis';
|
|
16
|
+
* const redis = new Redis(process.env.REDIS_URL);
|
|
17
|
+
* const client: RedisStoreClient = {
|
|
18
|
+
* get: (k) => redis.get(k),
|
|
19
|
+
* set: (k, v, ttl) => redis.set(k, v, 'EX', ttl),
|
|
20
|
+
* del: (k) => redis.del(k).then(() => {}),
|
|
21
|
+
* sadd: (k, ...m) => redis.sadd(k, ...m).then(() => {}),
|
|
22
|
+
* srem: (k, ...m) => redis.srem(k, ...m).then(() => {}),
|
|
23
|
+
* smembers: (k) => redis.smembers(k),
|
|
24
|
+
* expireNX: (k, s) => redis.expire(k, s, 'NX').then(() => {}),
|
|
25
|
+
* expireGT: (k, s) => redis.expire(k, s, 'GT').then(() => {}),
|
|
26
|
+
* };
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example @upstash/redis
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { Redis } from '@upstash/redis';
|
|
32
|
+
* const redis = new Redis({ url, token, automaticDeserialization: false });
|
|
33
|
+
* const client: RedisStoreClient = {
|
|
34
|
+
* get: (k) => redis.get(k),
|
|
35
|
+
* set: (k, v, ttl) => redis.set(k, v, { ex: ttl }).then(() => {}),
|
|
36
|
+
* del: (k) => redis.del(k).then(() => {}),
|
|
37
|
+
* sadd: (k, ...m) => redis.sadd(k, ...m).then(() => {}),
|
|
38
|
+
* srem: (k, ...m) => redis.srem(k, ...m).then(() => {}),
|
|
39
|
+
* smembers: (k) => redis.smembers(k),
|
|
40
|
+
* expireNX: (k, s) => redis.expire(k, s, 'NX').then(() => {}),
|
|
41
|
+
* expireGT: (k, s) => redis.expire(k, s, 'GT').then(() => {}),
|
|
42
|
+
* };
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export interface RedisStoreClient {
|
|
46
|
+
get(key: string): Promise<string | null>;
|
|
47
|
+
set(key: string, value: string, ttlSeconds: number): Promise<unknown>;
|
|
48
|
+
del(key: string): Promise<unknown>;
|
|
49
|
+
sadd(key: string, ...members: string[]): Promise<unknown>;
|
|
50
|
+
srem(key: string, ...members: string[]): Promise<unknown>;
|
|
51
|
+
smembers(key: string): Promise<string[]>;
|
|
52
|
+
/** `EXPIRE key seconds NX` — set TTL only if the key has no existing expiry (Redis 7.0+). */
|
|
53
|
+
expireNX(key: string, seconds: number): Promise<unknown>;
|
|
54
|
+
/** `EXPIRE key seconds GT` — extend TTL only if new value is greater (Redis 7.0+). */
|
|
55
|
+
expireGT(key: string, seconds: number): Promise<unknown>;
|
|
56
|
+
}
|
|
57
|
+
export declare class RedisCacheStore implements CacheStore {
|
|
58
|
+
private client;
|
|
59
|
+
readonly consistency: 'strong';
|
|
60
|
+
constructor(client: RedisStoreClient);
|
|
61
|
+
get(key: string): Promise<string | null>;
|
|
62
|
+
set(key: string, value: string, ttlSeconds: number): Promise<void>;
|
|
63
|
+
del(key: string): Promise<void>;
|
|
64
|
+
sadd(key: string, members: string[], ttlSeconds: number): Promise<void>;
|
|
65
|
+
srem(key: string, members: string[]): Promise<void>;
|
|
66
|
+
smembers(key: string): Promise<string[]>;
|
|
67
|
+
sdel(key: string): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/cache/stores/redis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,6FAA6F;IAC7F,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,sFAAsF;IACtF,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,MAAM,CAAmB;IACjC,QAAQ,CAAC,WAAW,EAAG,QAAQ,CAAU;IAEzC,YAAY,MAAM,EAAE,gBAAgB,EAEnC;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7C;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpC;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE7C;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErC;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/cache/stores/redis.ts
|
|
2
|
+
var RedisCacheStore = class {
|
|
3
|
+
client;
|
|
4
|
+
consistency = "strong";
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
async get(key) {
|
|
9
|
+
return this.client.get(key);
|
|
10
|
+
}
|
|
11
|
+
async set(key, value, ttlSeconds) {
|
|
12
|
+
await this.client.set(key, value, ttlSeconds);
|
|
13
|
+
}
|
|
14
|
+
async del(key) {
|
|
15
|
+
await this.client.del(key);
|
|
16
|
+
}
|
|
17
|
+
async sadd(key, members, ttlSeconds) {
|
|
18
|
+
await this.client.sadd(key, ...members);
|
|
19
|
+
await this.client.expireNX(key, ttlSeconds);
|
|
20
|
+
await this.client.expireGT(key, ttlSeconds);
|
|
21
|
+
}
|
|
22
|
+
async srem(key, members) {
|
|
23
|
+
await this.client.srem(key, ...members);
|
|
24
|
+
}
|
|
25
|
+
async smembers(key) {
|
|
26
|
+
return this.client.smembers(key);
|
|
27
|
+
}
|
|
28
|
+
async sdel(key) {
|
|
29
|
+
await this.client.del(key);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { RedisCacheStore };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","names":[],"sources":["../../../src/cache/stores/redis.ts"],"sourcesContent":["/**\n * Redis CacheStore — strongly-consistent, supports native Set operations.\n *\n * The TagAwareCacheHandler will use the Set-based strategy automatically\n * because this store provides sadd/smembers/srem/sdel.\n */\n\nimport type { CacheStore } from '../store.ts';\n\n/**\n * Minimal Redis client contract. Same philosophy as the old RedisClient\n * interface — deliberately NOT the native shape of any library. TTL is a\n * required positional argument so no adapter can forget it.\n *\n * @example ioredis\n * ```ts\n * import Redis from 'ioredis';\n * const redis = new Redis(process.env.REDIS_URL);\n * const client: RedisStoreClient = {\n * get: (k) => redis.get(k),\n * set: (k, v, ttl) => redis.set(k, v, 'EX', ttl),\n * del: (k) => redis.del(k).then(() => {}),\n * sadd: (k, ...m) => redis.sadd(k, ...m).then(() => {}),\n * srem: (k, ...m) => redis.srem(k, ...m).then(() => {}),\n * smembers: (k) => redis.smembers(k),\n * expireNX: (k, s) => redis.expire(k, s, 'NX').then(() => {}),\n * expireGT: (k, s) => redis.expire(k, s, 'GT').then(() => {}),\n * };\n * ```\n *\n * @example @upstash/redis\n * ```ts\n * import { Redis } from '@upstash/redis';\n * const redis = new Redis({ url, token, automaticDeserialization: false });\n * const client: RedisStoreClient = {\n * get: (k) => redis.get(k),\n * set: (k, v, ttl) => redis.set(k, v, { ex: ttl }).then(() => {}),\n * del: (k) => redis.del(k).then(() => {}),\n * sadd: (k, ...m) => redis.sadd(k, ...m).then(() => {}),\n * srem: (k, ...m) => redis.srem(k, ...m).then(() => {}),\n * smembers: (k) => redis.smembers(k),\n * expireNX: (k, s) => redis.expire(k, s, 'NX').then(() => {}),\n * expireGT: (k, s) => redis.expire(k, s, 'GT').then(() => {}),\n * };\n * ```\n */\nexport interface RedisStoreClient {\n get(key: string): Promise<string | null>;\n set(key: string, value: string, ttlSeconds: number): Promise<unknown>;\n del(key: string): Promise<unknown>;\n sadd(key: string, ...members: string[]): Promise<unknown>;\n srem(key: string, ...members: string[]): Promise<unknown>;\n smembers(key: string): Promise<string[]>;\n /** `EXPIRE key seconds NX` — set TTL only if the key has no existing expiry (Redis 7.0+). */\n expireNX(key: string, seconds: number): Promise<unknown>;\n /** `EXPIRE key seconds GT` — extend TTL only if new value is greater (Redis 7.0+). */\n expireGT(key: string, seconds: number): Promise<unknown>;\n}\n\nexport class RedisCacheStore implements CacheStore {\n private client: RedisStoreClient;\n readonly consistency = 'strong' as const;\n\n constructor(client: RedisStoreClient) {\n this.client = client;\n }\n\n async get(key: string): Promise<string | null> {\n return this.client.get(key);\n }\n\n async set(key: string, value: string, ttlSeconds: number): Promise<void> {\n await this.client.set(key, value, ttlSeconds);\n }\n\n async del(key: string): Promise<void> {\n await this.client.del(key);\n }\n\n async sadd(key: string, members: string[], ttlSeconds: number): Promise<void> {\n await this.client.sadd(key, ...members);\n await this.client.expireNX(key, ttlSeconds);\n await this.client.expireGT(key, ttlSeconds);\n }\n\n async srem(key: string, members: string[]): Promise<void> {\n await this.client.srem(key, ...members);\n }\n\n async smembers(key: string): Promise<string[]> {\n return this.client.smembers(key);\n }\n\n async sdel(key: string): Promise<void> {\n await this.client.del(key);\n }\n}\n"],"mappings":";AA2DA,IAAa,kBAAb,MAAmD;CACjD;CACA,cAAuB;CAEvB,YAAY,QAA0B;EACpC,KAAK,SAAS;CAChB;CAEA,MAAM,IAAI,KAAqC;EAC7C,OAAO,KAAK,OAAO,IAAI,GAAG;CAC5B;CAEA,MAAM,IAAI,KAAa,OAAe,YAAmC;EACvE,MAAM,KAAK,OAAO,IAAI,KAAK,OAAO,UAAU;CAC9C;CAEA,MAAM,IAAI,KAA4B;EACpC,MAAM,KAAK,OAAO,IAAI,GAAG;CAC3B;CAEA,MAAM,KAAK,KAAa,SAAmB,YAAmC;EAC5E,MAAM,KAAK,OAAO,KAAK,KAAK,GAAG,OAAO;EACtC,MAAM,KAAK,OAAO,SAAS,KAAK,UAAU;EAC1C,MAAM,KAAK,OAAO,SAAS,KAAK,UAAU;CAC5C;CAEA,MAAM,KAAK,KAAa,SAAkC;EACxD,MAAM,KAAK,OAAO,KAAK,KAAK,GAAG,OAAO;CACxC;CAEA,MAAM,SAAS,KAAgC;EAC7C,OAAO,KAAK,OAAO,SAAS,GAAG;CACjC;CAEA,MAAM,KAAK,KAA4B;EACrC,MAAM,KAAK,OAAO,IAAI,GAAG;CAC3B;AACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel Runtime Cache CacheStore — native tag support.
|
|
3
|
+
*
|
|
4
|
+
* Delegates tag operations to Vercel's infrastructure via their Runtime Cache
|
|
5
|
+
* API (getCache/expireTag). The TagAwareCacheHandler detects setWithTags +
|
|
6
|
+
* invalidateTag and delegates entirely — no inverted index, no version stamps.
|
|
7
|
+
*
|
|
8
|
+
* Vercel handles tag purging across CDN, Runtime Cache, and Data Cache layers
|
|
9
|
+
* simultaneously. Available on all plans.
|
|
10
|
+
*/
|
|
11
|
+
import type { CacheStore } from '../store.ts';
|
|
12
|
+
/**
|
|
13
|
+
* Vercel Runtime Cache contract — the subset we depend on.
|
|
14
|
+
* Resolved from `@vercel/functions` at runtime.
|
|
15
|
+
*/
|
|
16
|
+
export interface VercelCache {
|
|
17
|
+
get(key: string): Promise<string | undefined>;
|
|
18
|
+
set(key: string, value: string, options: {
|
|
19
|
+
ttl: number;
|
|
20
|
+
tags?: string[];
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
delete(key: string): Promise<void>;
|
|
23
|
+
expireTag(tag: string): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export declare class VercelCacheStore implements CacheStore {
|
|
26
|
+
private cache;
|
|
27
|
+
readonly consistency: 'strong';
|
|
28
|
+
constructor(cache: VercelCache | (() => VercelCache));
|
|
29
|
+
private getCache;
|
|
30
|
+
get(key: string): Promise<string | null>;
|
|
31
|
+
set(key: string, value: string, ttlSeconds: number): Promise<void>;
|
|
32
|
+
del(key: string): Promise<void>;
|
|
33
|
+
setWithTags(key: string, value: string, ttlSeconds: number, tags: string[]): Promise<void>;
|
|
34
|
+
invalidateTag(tag: string): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=vercel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/cache/stores/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,KAAK,CAAoC;IACjD,QAAQ,CAAC,WAAW,EAAG,QAAQ,CAAU;IAEzC,YAAY,KAAK,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,EAEnD;IAED,OAAO,CAAC,QAAQ;IAIV,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG7C;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpC;IAIK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/F;IAEK,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;CACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/cache/stores/vercel.ts
|
|
2
|
+
var VercelCacheStore = class {
|
|
3
|
+
cache;
|
|
4
|
+
consistency = "strong";
|
|
5
|
+
constructor(cache) {
|
|
6
|
+
this.cache = cache;
|
|
7
|
+
}
|
|
8
|
+
getCache() {
|
|
9
|
+
return typeof this.cache === "function" ? this.cache() : this.cache;
|
|
10
|
+
}
|
|
11
|
+
async get(key) {
|
|
12
|
+
return await this.getCache().get(key) ?? null;
|
|
13
|
+
}
|
|
14
|
+
async set(key, value, ttlSeconds) {
|
|
15
|
+
await this.getCache().set(key, value, { ttl: ttlSeconds });
|
|
16
|
+
}
|
|
17
|
+
async del(key) {
|
|
18
|
+
await this.getCache().delete(key);
|
|
19
|
+
}
|
|
20
|
+
async setWithTags(key, value, ttlSeconds, tags) {
|
|
21
|
+
await this.getCache().set(key, value, {
|
|
22
|
+
ttl: ttlSeconds,
|
|
23
|
+
tags
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async invalidateTag(tag) {
|
|
27
|
+
await this.getCache().expireTag(tag);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export { VercelCacheStore };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=vercel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.js","names":[],"sources":["../../../src/cache/stores/vercel.ts"],"sourcesContent":["/**\n * Vercel Runtime Cache CacheStore — native tag support.\n *\n * Delegates tag operations to Vercel's infrastructure via their Runtime Cache\n * API (getCache/expireTag). The TagAwareCacheHandler detects setWithTags +\n * invalidateTag and delegates entirely — no inverted index, no version stamps.\n *\n * Vercel handles tag purging across CDN, Runtime Cache, and Data Cache layers\n * simultaneously. Available on all plans.\n */\n\nimport type { CacheStore } from '../store.ts';\n\n/**\n * Vercel Runtime Cache contract — the subset we depend on.\n * Resolved from `@vercel/functions` at runtime.\n */\nexport interface VercelCache {\n get(key: string): Promise<string | undefined>;\n set(key: string, value: string, options: { ttl: number; tags?: string[] }): Promise<void>;\n delete(key: string): Promise<void>;\n expireTag(tag: string): Promise<void>;\n}\n\nexport class VercelCacheStore implements CacheStore {\n private cache: VercelCache | (() => VercelCache);\n readonly consistency = 'strong' as const;\n\n constructor(cache: VercelCache | (() => VercelCache)) {\n this.cache = cache;\n }\n\n private getCache(): VercelCache {\n return typeof this.cache === 'function' ? this.cache() : this.cache;\n }\n\n async get(key: string): Promise<string | null> {\n const result = await this.getCache().get(key);\n return result ?? null;\n }\n\n async set(key: string, value: string, ttlSeconds: number): Promise<void> {\n await this.getCache().set(key, value, { ttl: ttlSeconds });\n }\n\n async del(key: string): Promise<void> {\n await this.getCache().delete(key);\n }\n\n // --- Native tag support ---\n\n async setWithTags(key: string, value: string, ttlSeconds: number, tags: string[]): Promise<void> {\n await this.getCache().set(key, value, { ttl: ttlSeconds, tags });\n }\n\n async invalidateTag(tag: string): Promise<void> {\n await this.getCache().expireTag(tag);\n }\n}\n"],"mappings":";AAwBA,IAAa,mBAAb,MAAoD;CAClD;CACA,cAAuB;CAEvB,YAAY,OAA0C;EACpD,KAAK,QAAQ;CACf;CAEA,WAAgC;EAC9B,OAAO,OAAO,KAAK,UAAU,aAAa,KAAK,MAAM,IAAI,KAAK;CAChE;CAEA,MAAM,IAAI,KAAqC;EAE7C,OAAO,MADc,KAAK,SAAS,CAAC,CAAC,IAAI,GAAG,KAC3B;CACnB;CAEA,MAAM,IAAI,KAAa,OAAe,YAAmC;EACvE,MAAM,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,KAAK,WAAW,CAAC;CAC3D;CAEA,MAAM,IAAI,KAA4B;EACpC,MAAM,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG;CAClC;CAIA,MAAM,YAAY,KAAa,OAAe,YAAoB,MAA+B;EAC/F,MAAM,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,OAAO;GAAE,KAAK;GAAY;EAAK,CAAC;CACjE;CAEA,MAAM,cAAc,KAA4B;EAC9C,MAAM,KAAK,SAAS,CAAC,CAAC,UAAU,GAAG;CACrC;AACF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TagAwareCacheHandler — wraps any CacheStore and adds tag-based invalidation.
|
|
3
|
+
*
|
|
4
|
+
* Three strategies, selected by store capabilities (best available wins):
|
|
5
|
+
*
|
|
6
|
+
* 1. **Native** (store has setWithTags + invalidateTag): Delegates entirely.
|
|
7
|
+
* The store owns tag indexing. Used for Vercel Runtime Cache, DO-backed
|
|
8
|
+
* stores, or any platform with first-class tag support.
|
|
9
|
+
*
|
|
10
|
+
* 2. **Eager** (store has sadd/smembers/srem/sdel): Maintains an inverted
|
|
11
|
+
* index via atomic set operations. Invalidation enumerates the set and
|
|
12
|
+
* deletes entries. Used for Redis.
|
|
13
|
+
*
|
|
14
|
+
* 3. **Lazy** (bare get/set/del only): Version-stamps entries with tag
|
|
15
|
+
* counters. Invalidation bumps a counter (O(1)). Reads validate stored
|
|
16
|
+
* versions against current. Race-free, correct under eventual consistency.
|
|
17
|
+
* Used for Cloudflare KV.
|
|
18
|
+
*
|
|
19
|
+
* Implements the CacheHandler interface consumed by timber-cache.ts.
|
|
20
|
+
*/
|
|
21
|
+
import type { CacheHandler } from './index.ts';
|
|
22
|
+
import type { CacheStore } from './store.ts';
|
|
23
|
+
export declare class TagAwareCacheHandler implements CacheHandler {
|
|
24
|
+
private store;
|
|
25
|
+
private prefix;
|
|
26
|
+
private strategy;
|
|
27
|
+
constructor(store: CacheStore, opts?: {
|
|
28
|
+
prefix?: string;
|
|
29
|
+
});
|
|
30
|
+
get consistency(): 'strong' | 'eventual' | 'local';
|
|
31
|
+
private dataKey;
|
|
32
|
+
/** Namespace tags for native stores so prefix isolates shared stores. */
|
|
33
|
+
private prefixTags;
|
|
34
|
+
private tagSetKey;
|
|
35
|
+
private tagVersionKey;
|
|
36
|
+
get(key: string): Promise<{
|
|
37
|
+
value: unknown;
|
|
38
|
+
stale: boolean;
|
|
39
|
+
} | null>;
|
|
40
|
+
set(key: string, value: unknown, opts: {
|
|
41
|
+
ttl: number;
|
|
42
|
+
tags: string[];
|
|
43
|
+
generation?: number;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
invalidate(opts: {
|
|
46
|
+
key?: string;
|
|
47
|
+
tag?: string;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
private getTagVersions;
|
|
50
|
+
private bumpTagVersion;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=tag-aware-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag-aware-handler.d.ts","sourceRoot":"","sources":["../../src/cache/tag-aware-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA6B7C,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAW;IAE3B,YAAY,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAIxD;IAED,IAAI,WAAW,IAAI,QAAQ,GAAG,UAAU,GAAG,OAAO,CAEjD;IAED,OAAO,CAAC,OAAO;IAIf,yEAAyE;IACzE,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAsBzE;IAEK,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CA+Cf;IAEK,UAAU,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CpE;YAIa,cAAc;YAWd,cAAc;CAe7B"}
|
|
@@ -1,21 +1,31 @@
|
|
|
1
|
-
import type { CacheHandler, CacheOptions } from './index';
|
|
1
|
+
import type { CacheHandler, CacheOptions } from './index.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Set the timeout for the module-level default singleflight.
|
|
4
|
+
* Called at framework boot with renderTimeoutMs from timber.config.ts so that
|
|
5
|
+
* cache calls without a per-call timeoutMs still get deadlock protection.
|
|
6
|
+
* See design/06-caching.md §"Singleflight Timeout — Deadlock Risk".
|
|
7
|
+
*/
|
|
8
|
+
export declare function setDefaultSingleflightTimeout(timeoutMs: number): void;
|
|
2
9
|
/**
|
|
3
10
|
* Creates a cached wrapper around an async function.
|
|
4
11
|
*
|
|
5
|
-
* -
|
|
6
|
-
* - Singleflight: concurrent misses → single execution
|
|
12
|
+
* - FNV-1a default keys with normalized JSON args
|
|
13
|
+
* - Singleflight: concurrent misses → single execution AND single
|
|
14
|
+
* handler.set — the write happens inside the coalesced callback (TIM-1028)
|
|
15
|
+
* - Writes are skipped when the key/tags were invalidated while fn was in
|
|
16
|
+
* flight, so explicit invalidation is never silently undone (TIM-1028)
|
|
7
17
|
* - SWR: serve stale immediately, background refetch
|
|
8
18
|
* - Tags as string[] or function of args
|
|
9
|
-
* -
|
|
19
|
+
* - The handler is resolved per invocation via `getHandler`, never captured
|
|
20
|
+
* at wrapper-creation time — module-scope cache() wrappers created before
|
|
21
|
+
* the framework's boot wiring calls setCacheHandler() still use the
|
|
22
|
+
* configured handler once it arrives (TIM-1029)
|
|
23
|
+
* - No ALS dependency for correctness — cache() works outside a request
|
|
24
|
+
* context. The waitUntil ALS bridge is read optionally so the SWR
|
|
25
|
+
* background refetch survives handler return on Workers/Lambda.
|
|
10
26
|
*
|
|
11
27
|
* Cache hits/misses are recorded as OTEL span events on the enclosing
|
|
12
28
|
* span (not child spans). The DevSpanProcessor reads these for dev log output.
|
|
13
29
|
*/
|
|
14
|
-
export declare function createCache<Fn extends (...args: any[]) => Promise<any>>(fn: Fn, opts: CacheOptions<Fn>,
|
|
15
|
-
export declare namespace createCache {
|
|
16
|
-
var invalidate: (handler: CacheHandler, opts: {
|
|
17
|
-
key?: string;
|
|
18
|
-
tag?: string;
|
|
19
|
-
}) => Promise<void>;
|
|
20
|
-
}
|
|
30
|
+
export declare function createCache<Fn extends (...args: any[]) => Promise<any>>(fn: Fn, opts: CacheOptions<Fn>, getHandler: () => CacheHandler, stableId?: string): Fn;
|
|
21
31
|
//# sourceMappingURL=timber-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timber-cache.d.ts","sourceRoot":"","sources":["../../src/cache/timber-cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"timber-cache.d.ts","sourceRoot":"","sources":["../../src/cache/timber-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA+B7D;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAErE;AAoED;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wBAAgB,WAAW,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACrE,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,EACtB,UAAU,EAAE,MAAM,YAAY,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,EAAE,CAiHJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare CDN purge handler — purges by cache tag via the Cloudflare API.
|
|
3
|
+
*
|
|
4
|
+
* Requires Cloudflare Enterprise for tag-based purging.
|
|
5
|
+
* See https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-tags/
|
|
6
|
+
*/
|
|
7
|
+
import type { CdnPurgeHandler } from './purge-store.ts';
|
|
8
|
+
export interface CloudflarePurgeOptions {
|
|
9
|
+
/** Cloudflare zone ID. */
|
|
10
|
+
zoneId: string;
|
|
11
|
+
/** API token with Cache Purge permission. */
|
|
12
|
+
apiToken: string;
|
|
13
|
+
/** Override fetch for testing. */
|
|
14
|
+
fetch?: typeof globalThis.fetch;
|
|
15
|
+
}
|
|
16
|
+
export declare class CloudflarePurge implements CdnPurgeHandler {
|
|
17
|
+
private readonly zoneId;
|
|
18
|
+
private readonly apiToken;
|
|
19
|
+
private readonly _fetch;
|
|
20
|
+
constructor(opts: CloudflarePurgeOptions);
|
|
21
|
+
purgeTags(tags: string[]): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=cloudflare-purge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-purge.d.ts","sourceRoot":"","sources":["../../src/cdn/cloudflare-purge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,YAAY,IAAI,EAAE,sBAAsB,EAIvC;IAEK,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7C;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/cdn/cloudflare-purge.ts
|
|
2
|
+
var CloudflarePurge = class {
|
|
3
|
+
zoneId;
|
|
4
|
+
apiToken;
|
|
5
|
+
_fetch;
|
|
6
|
+
constructor(opts) {
|
|
7
|
+
this.zoneId = opts.zoneId;
|
|
8
|
+
this.apiToken = opts.apiToken;
|
|
9
|
+
this._fetch = opts.fetch ?? globalThis.fetch;
|
|
10
|
+
}
|
|
11
|
+
async purgeTags(tags) {
|
|
12
|
+
if (tags.length === 0) return;
|
|
13
|
+
const res = await this._fetch(`https://api.cloudflare.com/client/v4/zones/${this.zoneId}/purge_cache`, {
|
|
14
|
+
method: "POST",
|
|
15
|
+
headers: {
|
|
16
|
+
"Authorization": `Bearer ${this.apiToken}`,
|
|
17
|
+
"Content-Type": "application/json"
|
|
18
|
+
},
|
|
19
|
+
body: JSON.stringify({ tags })
|
|
20
|
+
});
|
|
21
|
+
if (!res.ok) {
|
|
22
|
+
const body = await res.text();
|
|
23
|
+
throw new Error(`Cloudflare purge failed (${res.status}): ${body}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { CloudflarePurge };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=cloudflare-purge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-purge.js","names":[],"sources":["../../src/cdn/cloudflare-purge.ts"],"sourcesContent":["/**\n * Cloudflare CDN purge handler — purges by cache tag via the Cloudflare API.\n *\n * Requires Cloudflare Enterprise for tag-based purging.\n * See https://developers.cloudflare.com/cache/how-to/purge-cache/purge-by-tags/\n */\n\nimport type { CdnPurgeHandler } from './purge-store.ts';\n\nexport interface CloudflarePurgeOptions {\n /** Cloudflare zone ID. */\n zoneId: string;\n /** API token with Cache Purge permission. */\n apiToken: string;\n /** Override fetch for testing. */\n fetch?: typeof globalThis.fetch;\n}\n\nexport class CloudflarePurge implements CdnPurgeHandler {\n private readonly zoneId: string;\n private readonly apiToken: string;\n private readonly _fetch: typeof globalThis.fetch;\n\n constructor(opts: CloudflarePurgeOptions) {\n this.zoneId = opts.zoneId;\n this.apiToken = opts.apiToken;\n this._fetch = opts.fetch ?? globalThis.fetch;\n }\n\n async purgeTags(tags: string[]): Promise<void> {\n if (tags.length === 0) return;\n\n const res = await this._fetch(\n `https://api.cloudflare.com/client/v4/zones/${this.zoneId}/purge_cache`,\n {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${this.apiToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ tags }),\n }\n );\n\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`Cloudflare purge failed (${res.status}): ${body}`);\n }\n }\n}\n"],"mappings":";AAkBA,IAAa,kBAAb,MAAwD;CACtD;CACA;CACA;CAEA,YAAY,MAA8B;EACxC,KAAK,SAAS,KAAK;EACnB,KAAK,WAAW,KAAK;EACrB,KAAK,SAAS,KAAK,SAAS,WAAW;CACzC;CAEA,MAAM,UAAU,MAA+B;EAC7C,IAAI,KAAK,WAAW,GAAG;EAEvB,MAAM,MAAM,MAAM,KAAK,OACrB,8CAA8C,KAAK,OAAO,eAC1D;GACE,QAAQ;GACR,SAAS;IACP,iBAAiB,UAAU,KAAK;IAChC,gBAAgB;GAClB;GACA,MAAM,KAAK,UAAU,EAAE,KAAK,CAAC;EAC/B,CACF;EAEA,IAAI,CAAC,IAAI,IAAI;GACX,MAAM,OAAO,MAAM,IAAI,KAAK;GAC5B,MAAM,IAAI,MAAM,4BAA4B,IAAI,OAAO,KAAK,MAAM;EACpE;CACF;AACF"}
|