@openclaw/slack 2026.9.5 → 2026.9.7
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/assets/icon.png +0 -0
- package/dist/.setup/{account-inspect-B86OaUEt.mjs → account-inspect-DWBXpER6.mjs} +1 -1
- package/dist/.setup/{accounts-C1FspRF-.mjs → accounts-D_N9IqNA.mjs} +33 -10
- package/dist/.setup/{action-runtime-Aa-h24Fq.mjs → action-runtime-DfWvuiZd.mjs} +46 -65
- package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
- package/dist/.setup/{actions-BvGUGk3w.mjs → actions-Df0CzcDl.mjs} +148 -204
- package/dist/.setup/{approval-handler.runtime-BcZNF-VP.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
- package/dist/.setup/{approval-message-updates-Cy1cxfBn.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
- package/dist/.setup/{channel-DrBm0NFw.mjs → channel-C7bgPSTE.mjs} +192 -280
- package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
- package/dist/.setup/{channel-type-osC0XOES.mjs → channel-type-ClOttrZ5.mjs} +13 -21
- package/dist/.setup/{channel.setup-BSY5hzVz.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
- package/dist/.setup/{config-schema-DrY3S7Ee.mjs → config-schema-BZCxmHKG.mjs} +32 -21
- package/dist/.setup/{directory-config-CTs7YyuU.mjs → directory-config-BOUWH3hR.mjs} +7 -10
- package/dist/.setup/{directory-live-Btq0063Q.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
- package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
- package/dist/.setup/{message-tool-api-DRnDCVdY.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
- package/dist/.setup/{provider-w36VTgZ3.mjs → monitor-BPVfkumU.mjs} +2191 -2704
- package/dist/.setup/{outbound-adapter-K3Ek1iSR.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
- package/dist/.setup/{pipeline.runtime-BZqGcbfi.mjs → pipeline.runtime-B1H63Frf.mjs} +901 -892
- package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
- package/dist/.setup/{policy-Db_QWCZZ.mjs → policy-D-jfM174.mjs} +5 -5
- package/dist/.setup/{probe-64C6k3_Q.mjs → probe-B2Y9qc_z.mjs} +101 -39
- package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
- package/dist/.setup/{relay-source-CDqY76Vp.mjs → relay-source-BpKdjsll.mjs} +10 -12
- package/dist/.setup/{replies-CWFhjS9S.mjs → replies-BAnUtr2f.mjs} +16 -76
- package/dist/.setup/{reply-blocks-9uCeAJts.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
- package/dist/.setup/{resolve-channels-x8fX1SEt.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
- package/dist/.setup/{resolve-users-B8BpBnH2.mjs → resolve-users-DW0ngD03.mjs} +20 -22
- package/dist/.setup/{scopes-CJ-6l4v4.mjs → scopes-CasuDvaa.mjs} +6 -17
- package/dist/.setup/{secret-contract-DxmvbxBF.mjs → secret-contract-BaZcu6P_.mjs} +15 -20
- package/dist/.setup/{secret-contract-api-D9UfYujm.mjs → secret-contract-api-Dp6290Vg.mjs} +1 -1
- package/dist/.setup/{security-audit-BypHqcq5.mjs → security-audit-BqDc-6VL.mjs} +1 -1
- package/dist/.setup/{send-6GCb3lBP.mjs → send-BOVLQi3n.mjs} +102 -199
- package/dist/.setup/{session-status-BhG6pdiH.mjs → session-status-DscajIsd.mjs} +323 -250
- package/dist/.setup/{setup-plugin-api-DtCEByQB.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
- package/dist/.setup/{setup-surface-DsE0hsYY.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
- package/dist/.setup/{shared-BNmqCPgQ.mjs → shared-qau-uDGl.mjs} +30 -56
- package/dist/.setup/{slash-dispatch.runtime-Io4ASZsY.mjs → slash-dispatch.runtime--AEzLVBF.mjs} +1 -1
- package/dist/.setup/{streaming-compat-B-e0mqM0.mjs → streaming-compat-C5Wut626.mjs} +31 -8
- package/dist/.setup/{target-parsing-DEsPjngB.mjs → target-parsing-FFE26kOV.mjs} +1 -7
- package/dist/.setup/{targets-Cku2KCvg.mjs → targets-C6LZQL1Q.mjs} +1 -1
- package/dist/.setup/{thread-ts-CukseRVL.mjs → thread-ts-Cvt7WD6B.mjs} +0 -1
- package/dist/account-inspect-api.js +1 -1
- package/dist/api.js +18 -17
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +1 -1
- package/dist/http-routes-api.js +1 -1
- package/dist/index.js +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/runtime-api.js +11 -12
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +2 -2
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/bolt/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/bolt/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/bolt/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/web-globals/streams.d.ts +4 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/streams.d.ts +4 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/get-east-asian-width/index.js +8 -3
- package/node_modules/get-east-asian-width/lookup-data.js +1 -1
- package/node_modules/get-east-asian-width/lookup.js +4 -4
- package/node_modules/get-east-asian-width/package.json +1 -1
- package/node_modules/typebox/build/compile/code.mjs +1 -2
- package/node_modules/typebox/build/compile/validator.mjs +5 -1
- package/node_modules/typebox/build/format/iri.mjs +16 -9
- package/node_modules/typebox/build/guard/emit.mjs +2 -2
- package/node_modules/typebox/build/guard/guard.d.mts +7 -5
- package/node_modules/typebox/build/guard/guard.mjs +14 -9
- package/node_modules/typebox/build/guard/index.mjs +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/node_modules/typebox/build/schema/build.mjs +2 -3
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
- package/node_modules/typebox/build/schema/parse.mjs +3 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
- package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
- package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
- package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
- package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +3 -1
- package/node_modules/undici/README.md +81 -25
- package/node_modules/undici/docs/docs/api/Agent.md +249 -42
- package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
- package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
- package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
- package/node_modules/undici/docs/docs/api/Client.md +407 -162
- package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
- package/node_modules/undici/docs/docs/api/Connector.md +118 -35
- package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
- package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
- package/node_modules/undici/docs/docs/api/Debug.md +34 -18
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
- package/node_modules/undici/docs/docs/api/Dispatcher.md +490 -1055
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +105 -93
- package/node_modules/undici/docs/docs/api/Errors.md +503 -28
- package/node_modules/undici/docs/docs/api/EventSource.md +326 -13
- package/node_modules/undici/docs/docs/api/Fetch.md +681 -30
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -96
- package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
- package/node_modules/undici/docs/docs/api/Interceptors.md +418 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
- package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
- package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
- package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
- package/node_modules/undici/docs/docs/api/Pool.md +236 -41
- package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -55
- package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -27
- package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -79
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +262 -517
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +177 -196
- package/node_modules/undici/docs/docs/api/Util.md +68 -11
- package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
- package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
- package/node_modules/undici/docs/docs/getting-started.md +281 -0
- package/node_modules/undici/docs/docs/index.md +784 -0
- package/node_modules/undici/docs/docs/site.json +125 -0
- package/node_modules/undici/docs/docs/type-map.json +79 -0
- package/node_modules/undici/index.js +4 -2
- package/node_modules/undici/lib/api/api-connect.js +13 -11
- package/node_modules/undici/lib/api/api-pipeline.js +26 -13
- package/node_modules/undici/lib/api/api-request.js +51 -21
- package/node_modules/undici/lib/api/api-stream.js +81 -20
- package/node_modules/undici/lib/api/api-upgrade.js +21 -11
- package/node_modules/undici/lib/api/readable.js +45 -9
- package/node_modules/undici/lib/cache/memory-cache-store.js +3 -3
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +3 -1
- package/node_modules/undici/lib/core/connect.js +46 -7
- package/node_modules/undici/lib/core/constants.js +1 -24
- package/node_modules/undici/lib/core/errors.js +22 -2
- package/node_modules/undici/lib/core/request.js +100 -18
- package/node_modules/undici/lib/core/symbols.js +4 -0
- package/node_modules/undici/lib/core/util.js +105 -48
- package/node_modules/undici/lib/dispatcher/agent.js +51 -32
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +23 -27
- package/node_modules/undici/lib/dispatcher/client-h1.js +86 -24
- package/node_modules/undici/lib/dispatcher/client-h2.js +1091 -361
- package/node_modules/undici/lib/dispatcher/client.js +109 -36
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -6
- package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -5
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +110 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
- package/node_modules/undici/lib/dispatcher/h2c-client.js +4 -4
- package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
- package/node_modules/undici/lib/dispatcher/pool.js +30 -5
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +95 -19
- package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +32 -10
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +153 -63
- package/node_modules/undici/lib/global.js +37 -14
- package/node_modules/undici/lib/handler/cache-handler.js +49 -7
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +8 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/node_modules/undici/lib/handler/redirect-handler.js +66 -66
- package/node_modules/undici/lib/handler/retry-handler.js +191 -50
- package/node_modules/undici/lib/interceptor/cache.js +75 -25
- package/node_modules/undici/lib/interceptor/decompress.js +5 -2
- package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
- package/node_modules/undici/lib/interceptor/dns.js +12 -1
- package/node_modules/undici/lib/interceptor/redirect.js +3 -3
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
- package/node_modules/undici/lib/mock/mock-agent.js +21 -9
- package/node_modules/undici/lib/mock/mock-call-history.js +1 -1
- package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/node_modules/undici/lib/mock/mock-utils.js +281 -47
- package/node_modules/undici/lib/mock/snapshot-agent.js +25 -7
- package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
- package/node_modules/undici/lib/util/cache.js +92 -10
- package/node_modules/undici/lib/util/runtime-features.js +3 -34
- package/node_modules/undici/lib/web/cache/cache.js +6 -8
- package/node_modules/undici/lib/web/cookies/parse.js +150 -146
- package/node_modules/undici/lib/web/cookies/util.js +1 -1
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +20 -21
- package/node_modules/undici/lib/web/eventsource/util.js +32 -1
- package/node_modules/undici/lib/web/fetch/body.js +48 -10
- package/node_modules/undici/lib/web/fetch/constants.js +1 -1
- package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
- package/node_modules/undici/lib/web/fetch/index.js +242 -223
- package/node_modules/undici/lib/web/fetch/request.js +35 -6
- package/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/node_modules/undici/lib/web/fetch/util.js +10 -2
- package/node_modules/undici/lib/web/webidl/index.js +5 -7
- package/node_modules/undici/lib/web/websocket/frame.js +1 -7
- package/node_modules/undici/lib/web/websocket/receiver.js +1 -1
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +25 -3
- package/node_modules/undici/package.json +10 -10
- package/node_modules/undici/types/agent.d.ts +0 -2
- package/node_modules/undici/types/client.d.ts +69 -24
- package/node_modules/undici/types/connector.d.ts +1 -0
- package/node_modules/undici/types/cookies.d.ts +1 -1
- package/node_modules/undici/types/dispatcher.d.ts +8 -30
- package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
- package/node_modules/undici/types/errors.d.ts +10 -0
- package/node_modules/undici/types/fetch.d.ts +5 -1
- package/node_modules/undici/types/formdata.d.ts +0 -6
- package/node_modules/undici/types/h2c-client.d.ts +6 -6
- package/node_modules/undici/types/handlers.d.ts +2 -0
- package/node_modules/undici/types/header.d.ts +5 -0
- package/node_modules/undici/types/index.d.ts +3 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/mock-agent.d.ts +11 -10
- package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/node_modules/undici/types/pool.d.ts +0 -2
- package/node_modules/undici/types/proxy-agent.d.ts +9 -2
- package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
- package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +4 -2
- package/node_modules/undici/types/webidl.d.ts +0 -1
- package/node_modules/zod/README.md +2 -2
- package/node_modules/zod/compile.cjs +19 -0
- package/node_modules/zod/index.cjs +19 -0
- package/node_modules/zod/locales/index.cjs +19 -0
- package/node_modules/zod/mini/index.cjs +19 -0
- package/node_modules/zod/package.json +8 -7
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
- package/node_modules/zod/src/v4/classic/external.ts +2 -0
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
- package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
- package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
- package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
- package/node_modules/zod/src/v4/core/api.ts +44 -28
- package/node_modules/zod/src/v4/core/checks.ts +62 -102
- package/node_modules/zod/src/v4/core/compile.ts +218 -93
- package/node_modules/zod/src/v4/core/core.ts +1 -3
- package/node_modules/zod/src/v4/core/doc.ts +6 -2
- package/node_modules/zod/src/v4/core/errors.ts +3 -6
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
- package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
- package/node_modules/zod/src/v4/core/parse.ts +37 -16
- package/node_modules/zod/src/v4/core/regexes.ts +14 -4
- package/node_modules/zod/src/v4/core/schemas.ts +296 -132
- package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
- package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
- package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
- package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
- package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
- package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
- package/node_modules/zod/src/v4/core/util.ts +218 -147
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/locales/ar.ts +2 -0
- package/node_modules/zod/src/v4/locales/az.ts +2 -0
- package/node_modules/zod/src/v4/locales/be.ts +2 -0
- package/node_modules/zod/src/v4/locales/bg.ts +2 -0
- package/node_modules/zod/src/v4/locales/bn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ca.ts +2 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
- package/node_modules/zod/src/v4/locales/cs.ts +2 -0
- package/node_modules/zod/src/v4/locales/da.ts +2 -0
- package/node_modules/zod/src/v4/locales/de.ts +2 -0
- package/node_modules/zod/src/v4/locales/el.ts +2 -0
- package/node_modules/zod/src/v4/locales/en.ts +2 -0
- package/node_modules/zod/src/v4/locales/eo.ts +2 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +2 -0
- package/node_modules/zod/src/v4/locales/fi.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr.ts +2 -0
- package/node_modules/zod/src/v4/locales/gu.ts +2 -0
- package/node_modules/zod/src/v4/locales/he.ts +2 -0
- package/node_modules/zod/src/v4/locales/hi.ts +2 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +2 -0
- package/node_modules/zod/src/v4/locales/hy.ts +2 -0
- package/node_modules/zod/src/v4/locales/id.ts +2 -0
- package/node_modules/zod/src/v4/locales/index.ts +1 -0
- package/node_modules/zod/src/v4/locales/is.ts +2 -0
- package/node_modules/zod/src/v4/locales/it.ts +2 -0
- package/node_modules/zod/src/v4/locales/ja.ts +2 -0
- package/node_modules/zod/src/v4/locales/ka.ts +2 -0
- package/node_modules/zod/src/v4/locales/km.ts +2 -0
- package/node_modules/zod/src/v4/locales/kn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ko.ts +2 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ms.ts +2 -0
- package/node_modules/zod/src/v4/locales/ne.ts +2 -0
- package/node_modules/zod/src/v4/locales/nl.ts +2 -0
- package/node_modules/zod/src/v4/locales/nn.ts +2 -0
- package/node_modules/zod/src/v4/locales/no.ts +2 -0
- package/node_modules/zod/src/v4/locales/ota.ts +2 -0
- package/node_modules/zod/src/v4/locales/pl.ts +2 -0
- package/node_modules/zod/src/v4/locales/ps.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt.ts +2 -0
- package/node_modules/zod/src/v4/locales/ro.ts +2 -0
- package/node_modules/zod/src/v4/locales/ru.ts +2 -0
- package/node_modules/zod/src/v4/locales/sk.ts +2 -0
- package/node_modules/zod/src/v4/locales/sl.ts +2 -0
- package/node_modules/zod/src/v4/locales/sv.ts +2 -0
- package/node_modules/zod/src/v4/locales/ta.ts +2 -0
- package/node_modules/zod/src/v4/locales/tg.ts +135 -0
- package/node_modules/zod/src/v4/locales/th.ts +2 -0
- package/node_modules/zod/src/v4/locales/tk.ts +2 -0
- package/node_modules/zod/src/v4/locales/tr.ts +2 -0
- package/node_modules/zod/src/v4/locales/uk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ur.ts +2 -0
- package/node_modules/zod/src/v4/locales/uz.ts +2 -0
- package/node_modules/zod/src/v4/locales/vi.ts +2 -0
- package/node_modules/zod/src/v4/locales/yo.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
- package/node_modules/zod/src/v4/mini/external.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
- package/node_modules/zod/v3/ZodError.cjs +19 -0
- package/node_modules/zod/v3/errors.cjs +19 -0
- package/node_modules/zod/v3/external.cjs +19 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
- package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
- package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
- package/node_modules/zod/v3/helpers/util.cjs +19 -0
- package/node_modules/zod/v3/index.cjs +19 -0
- package/node_modules/zod/v3/standard-schema.cjs +19 -0
- package/node_modules/zod/v3/types.cjs +19 -0
- package/node_modules/zod/v4/classic/checks.cjs +19 -0
- package/node_modules/zod/v4/classic/coerce.cjs +19 -0
- package/node_modules/zod/v4/classic/compat.cjs +19 -0
- package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
- package/node_modules/zod/v4/classic/errors.cjs +19 -0
- package/node_modules/zod/v4/classic/external.cjs +22 -1
- package/node_modules/zod/v4/classic/external.d.cts +1 -1
- package/node_modules/zod/v4/classic/external.d.ts +1 -1
- package/node_modules/zod/v4/classic/external.js +1 -1
- package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
- package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
- package/node_modules/zod/v4/classic/in-out.cjs +19 -0
- package/node_modules/zod/v4/classic/index.cjs +19 -0
- package/node_modules/zod/v4/classic/iso.cjs +19 -0
- package/node_modules/zod/v4/classic/parse.cjs +19 -0
- package/node_modules/zod/v4/classic/schemas.cjs +100 -35
- package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
- package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
- package/node_modules/zod/v4/classic/schemas.js +77 -33
- package/node_modules/zod/v4/core/api.cjs +45 -22
- package/node_modules/zod/v4/core/api.d.cts +12 -6
- package/node_modules/zod/v4/core/api.d.ts +12 -6
- package/node_modules/zod/v4/core/api.js +25 -22
- package/node_modules/zod/v4/core/checks.cjs +51 -97
- package/node_modules/zod/v4/core/checks.d.cts +17 -1
- package/node_modules/zod/v4/core/checks.d.ts +17 -1
- package/node_modules/zod/v4/core/checks.js +31 -96
- package/node_modules/zod/v4/core/compile.cjs +173 -78
- package/node_modules/zod/v4/core/compile.d.cts +18 -4
- package/node_modules/zod/v4/core/compile.d.ts +18 -4
- package/node_modules/zod/v4/core/compile.js +154 -79
- package/node_modules/zod/v4/core/core.cjs +20 -1
- package/node_modules/zod/v4/core/core.js +1 -1
- package/node_modules/zod/v4/core/doc.cjs +26 -2
- package/node_modules/zod/v4/core/doc.js +7 -2
- package/node_modules/zod/v4/core/errors.cjs +21 -5
- package/node_modules/zod/v4/core/errors.js +2 -5
- package/node_modules/zod/v4/core/index.cjs +19 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
- package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
- package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
- package/node_modules/zod/v4/core/json-schema.cjs +19 -0
- package/node_modules/zod/v4/core/memoizer.cjs +111 -23
- package/node_modules/zod/v4/core/memoizer.js +69 -23
- package/node_modules/zod/v4/core/parse.cjs +56 -16
- package/node_modules/zod/v4/core/parse.js +37 -16
- package/node_modules/zod/v4/core/regexes.cjs +31 -6
- package/node_modules/zod/v4/core/regexes.d.cts +3 -0
- package/node_modules/zod/v4/core/regexes.d.ts +3 -0
- package/node_modules/zod/v4/core/regexes.js +10 -4
- package/node_modules/zod/v4/core/registries.cjs +19 -0
- package/node_modules/zod/v4/core/schemas.cjs +302 -114
- package/node_modules/zod/v4/core/schemas.d.cts +28 -8
- package/node_modules/zod/v4/core/schemas.d.ts +28 -8
- package/node_modules/zod/v4/core/schemas.js +279 -113
- package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
- package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.js +7 -6
- package/node_modules/zod/v4/core/util.cjs +177 -143
- package/node_modules/zod/v4/core/util.d.cts +25 -4
- package/node_modules/zod/v4/core/util.d.ts +25 -4
- package/node_modules/zod/v4/core/util.js +156 -143
- package/node_modules/zod/v4/core/versions.cjs +21 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +19 -0
- package/node_modules/zod/v4/index.cjs +19 -0
- package/node_modules/zod/v4/locales/ar.cjs +2 -0
- package/node_modules/zod/v4/locales/ar.js +2 -0
- package/node_modules/zod/v4/locales/az.cjs +2 -0
- package/node_modules/zod/v4/locales/az.js +2 -0
- package/node_modules/zod/v4/locales/be.cjs +2 -0
- package/node_modules/zod/v4/locales/be.js +2 -0
- package/node_modules/zod/v4/locales/bg.cjs +2 -0
- package/node_modules/zod/v4/locales/bg.js +2 -0
- package/node_modules/zod/v4/locales/bn.cjs +2 -0
- package/node_modules/zod/v4/locales/bn.js +2 -0
- package/node_modules/zod/v4/locales/ca.cjs +2 -0
- package/node_modules/zod/v4/locales/ca.js +2 -0
- package/node_modules/zod/v4/locales/ckb.cjs +2 -0
- package/node_modules/zod/v4/locales/ckb.js +2 -0
- package/node_modules/zod/v4/locales/cs.cjs +2 -0
- package/node_modules/zod/v4/locales/cs.js +2 -0
- package/node_modules/zod/v4/locales/da.cjs +2 -0
- package/node_modules/zod/v4/locales/da.js +2 -0
- package/node_modules/zod/v4/locales/de.cjs +2 -0
- package/node_modules/zod/v4/locales/de.js +2 -0
- package/node_modules/zod/v4/locales/el.cjs +2 -0
- package/node_modules/zod/v4/locales/el.js +2 -0
- package/node_modules/zod/v4/locales/en.cjs +2 -0
- package/node_modules/zod/v4/locales/en.js +2 -0
- package/node_modules/zod/v4/locales/eo.cjs +2 -0
- package/node_modules/zod/v4/locales/eo.js +2 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +2 -0
- package/node_modules/zod/v4/locales/fa.js +2 -0
- package/node_modules/zod/v4/locales/fi.cjs +2 -0
- package/node_modules/zod/v4/locales/fi.js +2 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
- package/node_modules/zod/v4/locales/fr-CA.js +2 -0
- package/node_modules/zod/v4/locales/fr.cjs +2 -0
- package/node_modules/zod/v4/locales/fr.js +2 -0
- package/node_modules/zod/v4/locales/gu.cjs +2 -0
- package/node_modules/zod/v4/locales/gu.js +2 -0
- package/node_modules/zod/v4/locales/he.cjs +2 -0
- package/node_modules/zod/v4/locales/he.js +2 -0
- package/node_modules/zod/v4/locales/hi.cjs +2 -0
- package/node_modules/zod/v4/locales/hi.js +2 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +2 -0
- package/node_modules/zod/v4/locales/hu.js +2 -0
- package/node_modules/zod/v4/locales/hy.cjs +2 -0
- package/node_modules/zod/v4/locales/hy.js +2 -0
- package/node_modules/zod/v4/locales/id.cjs +2 -0
- package/node_modules/zod/v4/locales/id.js +2 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -1
- package/node_modules/zod/v4/locales/index.d.cts +1 -0
- package/node_modules/zod/v4/locales/index.d.ts +1 -0
- package/node_modules/zod/v4/locales/index.js +1 -0
- package/node_modules/zod/v4/locales/is.cjs +2 -0
- package/node_modules/zod/v4/locales/is.js +2 -0
- package/node_modules/zod/v4/locales/it.cjs +2 -0
- package/node_modules/zod/v4/locales/it.js +2 -0
- package/node_modules/zod/v4/locales/ja.cjs +2 -0
- package/node_modules/zod/v4/locales/ja.js +2 -0
- package/node_modules/zod/v4/locales/ka.cjs +2 -0
- package/node_modules/zod/v4/locales/ka.js +2 -0
- package/node_modules/zod/v4/locales/km.cjs +2 -0
- package/node_modules/zod/v4/locales/km.js +2 -0
- package/node_modules/zod/v4/locales/kn.cjs +2 -0
- package/node_modules/zod/v4/locales/kn.js +2 -0
- package/node_modules/zod/v4/locales/ko.cjs +2 -0
- package/node_modules/zod/v4/locales/ko.js +2 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +2 -0
- package/node_modules/zod/v4/locales/mk.js +2 -0
- package/node_modules/zod/v4/locales/ms.cjs +2 -0
- package/node_modules/zod/v4/locales/ms.js +2 -0
- package/node_modules/zod/v4/locales/ne.cjs +2 -0
- package/node_modules/zod/v4/locales/ne.js +2 -0
- package/node_modules/zod/v4/locales/nl.cjs +2 -0
- package/node_modules/zod/v4/locales/nl.js +2 -0
- package/node_modules/zod/v4/locales/nn.cjs +2 -0
- package/node_modules/zod/v4/locales/nn.js +2 -0
- package/node_modules/zod/v4/locales/no.cjs +2 -0
- package/node_modules/zod/v4/locales/no.js +2 -0
- package/node_modules/zod/v4/locales/ota.cjs +2 -0
- package/node_modules/zod/v4/locales/ota.js +2 -0
- package/node_modules/zod/v4/locales/pl.cjs +2 -0
- package/node_modules/zod/v4/locales/pl.js +2 -0
- package/node_modules/zod/v4/locales/ps.cjs +2 -0
- package/node_modules/zod/v4/locales/ps.js +2 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
- package/node_modules/zod/v4/locales/pt-BR.js +2 -0
- package/node_modules/zod/v4/locales/pt.cjs +2 -0
- package/node_modules/zod/v4/locales/pt.js +2 -0
- package/node_modules/zod/v4/locales/ro.cjs +2 -0
- package/node_modules/zod/v4/locales/ro.js +2 -0
- package/node_modules/zod/v4/locales/ru.cjs +2 -0
- package/node_modules/zod/v4/locales/ru.js +2 -0
- package/node_modules/zod/v4/locales/sk.cjs +2 -0
- package/node_modules/zod/v4/locales/sk.js +2 -0
- package/node_modules/zod/v4/locales/sl.cjs +2 -0
- package/node_modules/zod/v4/locales/sl.js +2 -0
- package/node_modules/zod/v4/locales/sv.cjs +2 -0
- package/node_modules/zod/v4/locales/sv.js +2 -0
- package/node_modules/zod/v4/locales/ta.cjs +2 -0
- package/node_modules/zod/v4/locales/ta.js +2 -0
- package/node_modules/zod/v4/locales/tg.cjs +144 -0
- package/node_modules/zod/v4/locales/tg.d.cts +5 -0
- package/node_modules/zod/v4/locales/tg.d.ts +4 -0
- package/node_modules/zod/v4/locales/tg.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +2 -0
- package/node_modules/zod/v4/locales/th.js +2 -0
- package/node_modules/zod/v4/locales/tk.cjs +2 -0
- package/node_modules/zod/v4/locales/tk.js +2 -0
- package/node_modules/zod/v4/locales/tr.cjs +2 -0
- package/node_modules/zod/v4/locales/tr.js +2 -0
- package/node_modules/zod/v4/locales/uk.cjs +2 -0
- package/node_modules/zod/v4/locales/uk.js +2 -0
- package/node_modules/zod/v4/locales/ur.cjs +2 -0
- package/node_modules/zod/v4/locales/ur.js +2 -0
- package/node_modules/zod/v4/locales/uz.cjs +2 -0
- package/node_modules/zod/v4/locales/uz.js +2 -0
- package/node_modules/zod/v4/locales/vi.cjs +2 -0
- package/node_modules/zod/v4/locales/vi.js +2 -0
- package/node_modules/zod/v4/locales/yo.cjs +2 -0
- package/node_modules/zod/v4/locales/yo.js +2 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-CN.js +2 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-TW.js +2 -0
- package/node_modules/zod/v4/mini/checks.cjs +19 -0
- package/node_modules/zod/v4/mini/coerce.cjs +19 -0
- package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
- package/node_modules/zod/v4/mini/external.cjs +22 -1
- package/node_modules/zod/v4/mini/external.d.cts +1 -1
- package/node_modules/zod/v4/mini/external.d.ts +1 -1
- package/node_modules/zod/v4/mini/external.js +1 -1
- package/node_modules/zod/v4/mini/in-out.cjs +19 -0
- package/node_modules/zod/v4/mini/index.cjs +19 -0
- package/node_modules/zod/v4/mini/iso.cjs +19 -0
- package/node_modules/zod/v4/mini/parse.cjs +19 -0
- package/node_modules/zod/v4/mini/schemas.cjs +44 -8
- package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
- package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
- package/node_modules/zod/v4/mini/schemas.js +21 -6
- package/node_modules/zod/v4-mini/index.cjs +19 -0
- package/openclaw.plugin.json +49 -3
- package/package.json +8 -8
- package/dist/.setup/accounts.runtime-BpWv-6-2.mjs +0 -2
- package/dist/.setup/action-runtime.runtime-DwH3NdpT.mjs +0 -2
- package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
- package/dist/.setup/monitor-Dw5uuKWM.mjs +0 -13
- package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
- package/dist/.setup/send.runtime-BmqRP-WG.mjs +0 -2
- package/dist/.setup/slash-commands.runtime-BpSH0b3q.mjs +0 -2
- package/dist/.setup/slash-skill-commands.runtime-Bi1JWZHY.mjs +0 -2
- package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
- package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/util/promise.js +0 -28
- /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -4,22 +4,33 @@ const { URL } = require('node:url')
|
|
|
4
4
|
|
|
5
5
|
let tls // include tls conditionally since it is not always available
|
|
6
6
|
const DispatcherBase = require('./dispatcher-base')
|
|
7
|
-
const { InvalidArgumentError } = require('../core/errors')
|
|
7
|
+
const { ConnectTimeoutError, InvalidArgumentError } = require('../core/errors')
|
|
8
8
|
const { Socks5Client, STATES } = require('../core/socks5-client')
|
|
9
|
-
const { kDispatch, kClose, kDestroy } = require('../core/symbols')
|
|
9
|
+
const { kBusy, kConnected, kDispatch, kClose, kDestroy } = require('../core/symbols')
|
|
10
10
|
const Pool = require('./pool')
|
|
11
11
|
const buildConnector = require('../core/connect')
|
|
12
|
+
const { setupConnectTimeout } = require('../core/util')
|
|
12
13
|
const { debuglog } = require('node:util')
|
|
13
14
|
|
|
14
15
|
const debug = debuglog('undici:socks5-proxy')
|
|
15
16
|
|
|
17
|
+
const DEFAULT_SOCKS5_CONNECT_TIMEOUT = 5000
|
|
18
|
+
|
|
16
19
|
const kProxyUrl = Symbol('proxy url')
|
|
17
20
|
const kProxyHeaders = Symbol('proxy headers')
|
|
18
21
|
const kProxyAuth = Symbol('proxy auth')
|
|
19
22
|
const kProxyProtocol = Symbol('proxy protocol')
|
|
20
23
|
const kPools = Symbol('pools')
|
|
21
24
|
const kConnector = Symbol('connector')
|
|
25
|
+
const kConnectTimeout = Symbol('connect timeout')
|
|
22
26
|
const kRequestTls = Symbol('request tls settings')
|
|
27
|
+
const kRequestTlsTimeout = Symbol('request tls timeout')
|
|
28
|
+
|
|
29
|
+
function createConnectTimeoutError (hostname, port, timeout) {
|
|
30
|
+
return new ConnectTimeoutError(
|
|
31
|
+
`Connect Timeout Error (attempted address: ${hostname}:${port}, timeout: ${timeout}ms)`
|
|
32
|
+
)
|
|
33
|
+
}
|
|
23
34
|
|
|
24
35
|
// Static flag to ensure warning is only emitted once per process
|
|
25
36
|
let experimentalWarningEmitted = false
|
|
@@ -29,7 +40,7 @@ let experimentalWarningEmitted = false
|
|
|
29
40
|
*/
|
|
30
41
|
class Socks5ProxyAgent extends DispatcherBase {
|
|
31
42
|
constructor (proxyUrl, options = {}) {
|
|
32
|
-
super()
|
|
43
|
+
super(options)
|
|
33
44
|
|
|
34
45
|
// Emit experimental warning only once
|
|
35
46
|
if (!experimentalWarningEmitted) {
|
|
@@ -54,7 +65,20 @@ class Socks5ProxyAgent extends DispatcherBase {
|
|
|
54
65
|
this[kProxyUrl] = url
|
|
55
66
|
this[kProxyHeaders] = options.headers || {}
|
|
56
67
|
this[kProxyProtocol] = options.proxyTls ? 'https:' : 'http:'
|
|
57
|
-
|
|
68
|
+
|
|
69
|
+
const connectTimeout = options.connectTimeout ?? DEFAULT_SOCKS5_CONNECT_TIMEOUT
|
|
70
|
+
if (!Number.isFinite(connectTimeout) || connectTimeout < 0) {
|
|
71
|
+
throw new InvalidArgumentError('invalid connectTimeout')
|
|
72
|
+
}
|
|
73
|
+
this[kConnectTimeout] = connectTimeout
|
|
74
|
+
|
|
75
|
+
const { timeout, ...requestTls } = options.requestTls || {}
|
|
76
|
+
const requestTlsTimeout = timeout ?? connectTimeout
|
|
77
|
+
if (!Number.isFinite(requestTlsTimeout) || requestTlsTimeout < 0) {
|
|
78
|
+
throw new InvalidArgumentError('invalid requestTls.timeout')
|
|
79
|
+
}
|
|
80
|
+
this[kRequestTls] = requestTls
|
|
81
|
+
this[kRequestTlsTimeout] = requestTlsTimeout
|
|
58
82
|
|
|
59
83
|
// Extract auth from URL or options
|
|
60
84
|
this[kProxyAuth] = {
|
|
@@ -63,8 +87,13 @@ class Socks5ProxyAgent extends DispatcherBase {
|
|
|
63
87
|
}
|
|
64
88
|
|
|
65
89
|
// Create connector for proxy connection
|
|
90
|
+
const proxyTlsTimeout = options.proxyTls?.timeout ?? connectTimeout
|
|
91
|
+
if (!Number.isFinite(proxyTlsTimeout) || proxyTlsTimeout < 0) {
|
|
92
|
+
throw new InvalidArgumentError('invalid proxyTls.timeout')
|
|
93
|
+
}
|
|
66
94
|
this[kConnector] = options.connect || buildConnector({
|
|
67
95
|
...options.proxyTls,
|
|
96
|
+
timeout: proxyTlsTimeout,
|
|
68
97
|
servername: options.proxyTls?.servername || url.hostname
|
|
69
98
|
})
|
|
70
99
|
|
|
@@ -82,21 +111,23 @@ class Socks5ProxyAgent extends DispatcherBase {
|
|
|
82
111
|
debug('creating SOCKS5 connection to', proxyHost, proxyPort)
|
|
83
112
|
|
|
84
113
|
// Connect to the SOCKS5 proxy
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
114
|
+
const socketReady = Promise.withResolvers()
|
|
115
|
+
|
|
116
|
+
this[kConnector]({
|
|
117
|
+
hostname: proxyHost,
|
|
118
|
+
host: proxyHost,
|
|
119
|
+
port: proxyPort,
|
|
120
|
+
protocol: this[kProxyProtocol]
|
|
121
|
+
}, (err, socket) => {
|
|
122
|
+
if (err) {
|
|
123
|
+
socketReady.reject(err)
|
|
124
|
+
} else {
|
|
125
|
+
socketReady.resolve(socket)
|
|
126
|
+
}
|
|
98
127
|
})
|
|
99
128
|
|
|
129
|
+
const socket = await socketReady.promise
|
|
130
|
+
|
|
100
131
|
// Create SOCKS5 client
|
|
101
132
|
const socks5Client = new Socks5Client(socket, this[kProxyAuth])
|
|
102
133
|
|
|
@@ -110,58 +141,80 @@ class Socks5ProxyAgent extends DispatcherBase {
|
|
|
110
141
|
await socks5Client.handshake()
|
|
111
142
|
|
|
112
143
|
// Wait for authentication (if required)
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
144
|
+
const authenticationReady = Promise.withResolvers()
|
|
145
|
+
const authenticationTimeout = this[kConnectTimeout] === 0
|
|
146
|
+
? null
|
|
147
|
+
: setTimeout(() => {
|
|
148
|
+
cleanupAuthenticationListeners()
|
|
149
|
+
socks5Client.destroy()
|
|
150
|
+
authenticationReady.reject(
|
|
151
|
+
createConnectTimeoutError(proxyHost, proxyPort, this[kConnectTimeout])
|
|
152
|
+
)
|
|
153
|
+
}, this[kConnectTimeout])
|
|
154
|
+
|
|
155
|
+
const cleanupAuthenticationListeners = () => {
|
|
156
|
+
clearTimeout(authenticationTimeout)
|
|
157
|
+
socks5Client.removeListener('authenticated', onAuthenticated)
|
|
158
|
+
socks5Client.removeListener('error', onAuthenticationError)
|
|
159
|
+
}
|
|
123
160
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
161
|
+
const onAuthenticated = () => {
|
|
162
|
+
cleanupAuthenticationListeners()
|
|
163
|
+
authenticationReady.resolve()
|
|
164
|
+
}
|
|
129
165
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
166
|
+
const onAuthenticationError = (err) => {
|
|
167
|
+
cleanupAuthenticationListeners()
|
|
168
|
+
authenticationReady.reject(err)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Check if already authenticated (for NO_AUTH method)
|
|
172
|
+
if (socks5Client.state === STATES.AUTHENTICATED) {
|
|
173
|
+
clearTimeout(authenticationTimeout)
|
|
174
|
+
authenticationReady.resolve()
|
|
175
|
+
} else {
|
|
176
|
+
socks5Client.once('authenticated', onAuthenticated)
|
|
177
|
+
socks5Client.once('error', onAuthenticationError)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
await authenticationReady.promise
|
|
139
181
|
|
|
140
182
|
// Send CONNECT command
|
|
141
183
|
await socks5Client.connect(targetHost, targetPort)
|
|
142
184
|
|
|
143
185
|
// Wait for connection
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
186
|
+
const connectionReady = Promise.withResolvers()
|
|
187
|
+
const connectionTimeout = this[kConnectTimeout] === 0
|
|
188
|
+
? null
|
|
189
|
+
: setTimeout(() => {
|
|
190
|
+
cleanupConnectionListeners()
|
|
191
|
+
socks5Client.destroy()
|
|
192
|
+
connectionReady.reject(
|
|
193
|
+
createConnectTimeoutError(targetHost, targetPort, this[kConnectTimeout])
|
|
194
|
+
)
|
|
195
|
+
}, this[kConnectTimeout])
|
|
196
|
+
|
|
197
|
+
const cleanupConnectionListeners = () => {
|
|
198
|
+
clearTimeout(connectionTimeout)
|
|
199
|
+
socks5Client.removeListener('connected', onConnected)
|
|
200
|
+
socks5Client.removeListener('error', onConnectionError)
|
|
201
|
+
}
|
|
155
202
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
203
|
+
const onConnected = (info) => {
|
|
204
|
+
debug('SOCKS5 tunnel established to', targetHost, targetPort, 'via', info)
|
|
205
|
+
cleanupConnectionListeners()
|
|
206
|
+
connectionReady.resolve()
|
|
207
|
+
}
|
|
161
208
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
209
|
+
const onConnectionError = (err) => {
|
|
210
|
+
cleanupConnectionListeners()
|
|
211
|
+
connectionReady.reject(err)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
socks5Client.once('connected', onConnected)
|
|
215
|
+
socks5Client.once('error', onConnectionError)
|
|
216
|
+
|
|
217
|
+
await connectionReady.promise
|
|
165
218
|
|
|
166
219
|
return socket
|
|
167
220
|
}
|
|
@@ -206,10 +259,33 @@ class Socks5ProxyAgent extends DispatcherBase {
|
|
|
206
259
|
servername: this[kRequestTls]?.servername || targetHost
|
|
207
260
|
})
|
|
208
261
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
262
|
+
const tlsReady = Promise.withResolvers()
|
|
263
|
+
|
|
264
|
+
const cleanupTlsListeners = () => {
|
|
265
|
+
queueMicrotask(clearTlsTimeout)
|
|
266
|
+
finalSocket.removeListener('secureConnect', onSecureConnect)
|
|
267
|
+
finalSocket.removeListener('error', onTlsError)
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
const onSecureConnect = () => {
|
|
271
|
+
cleanupTlsListeners()
|
|
272
|
+
tlsReady.resolve()
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const onTlsError = (err) => {
|
|
276
|
+
cleanupTlsListeners()
|
|
277
|
+
tlsReady.reject(err)
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const clearTlsTimeout = setupConnectTimeout(new WeakRef(finalSocket), {
|
|
281
|
+
timeout: this[kRequestTlsTimeout],
|
|
282
|
+
hostname: targetHost,
|
|
283
|
+
port: targetPort
|
|
212
284
|
})
|
|
285
|
+
|
|
286
|
+
finalSocket.once('secureConnect', onSecureConnect)
|
|
287
|
+
finalSocket.once('error', onTlsError)
|
|
288
|
+
await tlsReady.promise
|
|
213
289
|
}
|
|
214
290
|
|
|
215
291
|
callback(null, finalSocket)
|
|
@@ -220,6 +296,20 @@ class Socks5ProxyAgent extends DispatcherBase {
|
|
|
220
296
|
}
|
|
221
297
|
})
|
|
222
298
|
this[kPools].set(originKey, pool)
|
|
299
|
+
|
|
300
|
+
const closePoolIfUnused = () => {
|
|
301
|
+
if (this[kPools].get(originKey) !== pool || pool[kConnected] > 0 || pool[kBusy]) {
|
|
302
|
+
return
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
this[kPools].delete(originKey)
|
|
306
|
+
if (!pool.destroyed) {
|
|
307
|
+
pool.close()
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
pool.on('disconnect', closePoolIfUnused)
|
|
312
|
+
pool.on('connectionError', closePoolIfUnused)
|
|
223
313
|
}
|
|
224
314
|
|
|
225
315
|
// Dispatch the request through the per-origin pool
|
|
@@ -6,6 +6,10 @@ const globalDispatcher = Symbol.for('undici.globalDispatcher.2')
|
|
|
6
6
|
const legacyGlobalDispatcher = Symbol.for('undici.globalDispatcher.1')
|
|
7
7
|
const { InvalidArgumentError } = require('./core/errors')
|
|
8
8
|
const Agent = require('./dispatcher/agent')
|
|
9
|
+
const Dispatcher1Wrapper = require('./dispatcher/dispatcher1-wrapper')
|
|
10
|
+
|
|
11
|
+
// Fallback storage for when globalThis is not extensible (e.g. frozen)
|
|
12
|
+
let fallbackDispatcher
|
|
9
13
|
|
|
10
14
|
if (getGlobalDispatcher() === undefined) {
|
|
11
15
|
setGlobalDispatcher(new Agent())
|
|
@@ -16,23 +20,42 @@ function setGlobalDispatcher (agent) {
|
|
|
16
20
|
throw new InvalidArgumentError('Argument agent must implement Agent')
|
|
17
21
|
}
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
try {
|
|
24
|
+
Object.defineProperty(globalThis, globalDispatcher, {
|
|
25
|
+
value: agent,
|
|
26
|
+
writable: true,
|
|
27
|
+
enumerable: false,
|
|
28
|
+
configurable: false
|
|
29
|
+
})
|
|
30
|
+
} catch (err) {
|
|
31
|
+
// globalThis is not extensible (e.g. Object.freeze(globalThis))
|
|
32
|
+
// Use fallback storage instead
|
|
33
|
+
if (err instanceof TypeError) {
|
|
34
|
+
fallbackDispatcher = agent
|
|
35
|
+
return
|
|
36
|
+
}
|
|
37
|
+
throw err
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
const legacyAgent = agent instanceof Dispatcher1Wrapper ? agent : new Dispatcher1Wrapper(agent)
|
|
42
|
+
|
|
43
|
+
Object.defineProperty(globalThis, legacyGlobalDispatcher, {
|
|
44
|
+
value: legacyAgent,
|
|
45
|
+
writable: true,
|
|
46
|
+
enumerable: false,
|
|
47
|
+
configurable: false
|
|
48
|
+
})
|
|
49
|
+
} catch (err) {
|
|
50
|
+
// globalThis is not extensible; fallback storage is already set
|
|
51
|
+
if (!(err instanceof TypeError)) {
|
|
52
|
+
throw err
|
|
53
|
+
}
|
|
54
|
+
}
|
|
32
55
|
}
|
|
33
56
|
|
|
34
57
|
function getGlobalDispatcher () {
|
|
35
|
-
return globalThis[
|
|
58
|
+
return globalThis[globalDispatcher] ?? fallbackDispatcher
|
|
36
59
|
}
|
|
37
60
|
|
|
38
61
|
// These are the globals that can be installed by undici.install().
|
|
@@ -29,6 +29,10 @@ const NOT_UNDERSTOOD_STATUS_CODES = [
|
|
|
29
29
|
|
|
30
30
|
const MAX_RESPONSE_AGE = 2147483647000
|
|
31
31
|
|
|
32
|
+
// Retention for revalidation-only entries (zero freshness lifetime but a
|
|
33
|
+
// validator present); each successful revalidation re-stores the entry.
|
|
34
|
+
const REVALIDATION_ONLY_RETENTION = 86400000 // 24 hours
|
|
35
|
+
|
|
32
36
|
function trimOWS (value) {
|
|
33
37
|
return value.replace(/^[\t ]+|[\t ]+$/g, '')
|
|
34
38
|
}
|
|
@@ -114,7 +118,6 @@ function invalidateUnsafeRequest (store, cacheKey, resHeaders) {
|
|
|
114
118
|
deleteLocationTargets(store, cacheKey, resHeaders.location)
|
|
115
119
|
deleteLocationTargets(store, cacheKey, resHeaders['content-location'])
|
|
116
120
|
}
|
|
117
|
-
|
|
118
121
|
/**
|
|
119
122
|
* @typedef {import('../../types/dispatcher.d.ts').default.DispatchHandler} DispatchHandler
|
|
120
123
|
*
|
|
@@ -170,6 +173,14 @@ class CacheHandler {
|
|
|
170
173
|
this.#handler.onRequestStart?.(controller, context)
|
|
171
174
|
}
|
|
172
175
|
|
|
176
|
+
onBodySent (chunk) {
|
|
177
|
+
this.#handler.onBodySent?.(chunk)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
onRequestSent () {
|
|
181
|
+
this.#handler.onRequestSent?.()
|
|
182
|
+
}
|
|
183
|
+
|
|
173
184
|
onRequestUpgrade (controller, statusCode, headers, socket) {
|
|
174
185
|
this.#handler.onRequestUpgrade?.(controller, statusCode, headers, socket)
|
|
175
186
|
}
|
|
@@ -255,10 +266,18 @@ class CacheHandler {
|
|
|
255
266
|
const apparentAge = resDate ? Math.max(0, now - resDate.getTime()) : 0
|
|
256
267
|
const currentAge = Math.max(apparentAge, resAge ?? 0)
|
|
257
268
|
|
|
269
|
+
const hasValidator =
|
|
270
|
+
(typeof resHeaders.etag === 'string' && isEtagUsable(resHeaders.etag)) ||
|
|
271
|
+
typeof resHeaders['last-modified'] === 'string'
|
|
272
|
+
|
|
258
273
|
const staleAt =
|
|
259
|
-
determineStaleAt(this.#cacheType, now, resAge, resHeaders, resDate, cacheControlDirectives) ??
|
|
274
|
+
determineStaleAt(this.#cacheType, now, resAge, resHeaders, resDate, cacheControlDirectives, hasValidator) ??
|
|
260
275
|
this.#cacheByDefault
|
|
261
|
-
|
|
276
|
+
// Zero freshness lifetime but a validator: stale from the start, yet still
|
|
277
|
+
// storable since each reuse is preceded by a revalidation request.
|
|
278
|
+
// https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.4
|
|
279
|
+
const revalidationOnly = staleAt === 0 && hasValidator
|
|
280
|
+
if (staleAt === undefined || (currentAge >= staleAt && !revalidationOnly)) {
|
|
262
281
|
if (cacheControlHeader || staleAt !== undefined) {
|
|
263
282
|
deleteCachedValueIfNotModified(statusCode, this.#store, this.#cacheKey)
|
|
264
283
|
}
|
|
@@ -268,7 +287,7 @@ class CacheHandler {
|
|
|
268
287
|
|
|
269
288
|
const baseTime = now - currentAge
|
|
270
289
|
const absoluteStaleAt = staleAt + baseTime
|
|
271
|
-
if (now >= absoluteStaleAt) {
|
|
290
|
+
if (now >= absoluteStaleAt && !revalidationOnly) {
|
|
272
291
|
// Response is already stale
|
|
273
292
|
deleteCachedValueIfNotModified(statusCode, this.#store, this.#cacheKey)
|
|
274
293
|
return downstreamOnHeaders()
|
|
@@ -610,10 +629,12 @@ function getAge (ageHeader) {
|
|
|
610
629
|
* @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders
|
|
611
630
|
* @param {Date | undefined} responseDate
|
|
612
631
|
* @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives} cacheControlDirectives
|
|
632
|
+
* @param {boolean} hasValidator whether the response has a validator (etag or
|
|
633
|
+
* last-modified) that revalidation requests can be made with
|
|
613
634
|
*
|
|
614
635
|
* @returns {number | undefined} time that the value is stale at in seconds or undefined if it shouldn't be cached
|
|
615
636
|
*/
|
|
616
|
-
function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheControlDirectives) {
|
|
637
|
+
function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheControlDirectives, hasValidator) {
|
|
617
638
|
if (cacheType === 'shared') {
|
|
618
639
|
// Prioritize s-maxage since we're a shared cache
|
|
619
640
|
// s-maxage > max-age > Expire
|
|
@@ -624,7 +645,12 @@ function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheC
|
|
|
624
645
|
|
|
625
646
|
const sMaxAge = cacheControlDirectives['s-maxage']
|
|
626
647
|
if (sMaxAge !== undefined) {
|
|
627
|
-
|
|
648
|
+
if (sMaxAge > 0) {
|
|
649
|
+
return sMaxAge * 1000
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
// Immediately stale, but storable if we can revalidate it before reuse.
|
|
653
|
+
return 0
|
|
628
654
|
}
|
|
629
655
|
}
|
|
630
656
|
|
|
@@ -634,7 +660,12 @@ function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheC
|
|
|
634
660
|
|
|
635
661
|
const maxAge = cacheControlDirectives['max-age']
|
|
636
662
|
if (maxAge !== undefined) {
|
|
637
|
-
|
|
663
|
+
if (maxAge > 0) {
|
|
664
|
+
return maxAge * 1000
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
// Immediately stale, but storable if we can revalidate it before reuse.
|
|
668
|
+
return 0
|
|
638
669
|
}
|
|
639
670
|
|
|
640
671
|
if (Object.hasOwn(resHeaders, 'expires')) {
|
|
@@ -687,6 +718,12 @@ function determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheC
|
|
|
687
718
|
return 31536000000
|
|
688
719
|
}
|
|
689
720
|
|
|
721
|
+
if (cacheControlDirectives['no-cache'] === true && hasValidator) {
|
|
722
|
+
// No freshness source, but a validator lets us revalidate before reuse.
|
|
723
|
+
// https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.4
|
|
724
|
+
return 0
|
|
725
|
+
}
|
|
726
|
+
|
|
690
727
|
return undefined
|
|
691
728
|
}
|
|
692
729
|
|
|
@@ -723,6 +760,11 @@ function determineDeleteAt (baseTime, cachedAt, cacheControlDirectives, staleAt)
|
|
|
723
760
|
// revalidated.
|
|
724
761
|
if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity && immutable === -Infinity) {
|
|
725
762
|
const freshnessLifetime = staleAt - baseTime
|
|
763
|
+
if (freshnessLifetime <= 0) {
|
|
764
|
+
// Revalidation-only entry: no freshness lifetime to size the buffer on,
|
|
765
|
+
// so retain it for a bounded window instead.
|
|
766
|
+
return cachedAt + REVALIDATION_ONLY_RETENTION
|
|
767
|
+
}
|
|
726
768
|
const datePrecisionPadding = Math.min(Math.max(cachedAt - baseTime, 0), 1000)
|
|
727
769
|
return staleAt + freshnessLifetime + datePrecisionPadding
|
|
728
770
|
}
|
|
@@ -109,6 +109,16 @@ class CacheRevalidationHandler {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
if (this.#callback) {
|
|
112
|
+
// Serve the stale cached response on a connection error, per stale-if-error:
|
|
113
|
+
// RFC 5861 counts an unreachable origin (a would-be 5xx) as an error.
|
|
114
|
+
// https://datatracker.ietf.org/doc/html/rfc5861#section-4
|
|
115
|
+
if (this.#allowErrorStatusCodes) {
|
|
116
|
+
this.#successful = true
|
|
117
|
+
this.#callback(true, this.#context)
|
|
118
|
+
this.#callback = null
|
|
119
|
+
return
|
|
120
|
+
}
|
|
121
|
+
|
|
112
122
|
this.#callback(false)
|
|
113
123
|
this.#callback = null
|
|
114
124
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const assert = require('node:assert')
|
|
4
|
-
const WrapHandler = require('./wrap-handler')
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* @deprecated
|
|
@@ -16,7 +15,7 @@ module.exports = class DecoratorHandler {
|
|
|
16
15
|
if (typeof handler !== 'object' || handler === null) {
|
|
17
16
|
throw new TypeError('handler must be an object')
|
|
18
17
|
}
|
|
19
|
-
this.#handler =
|
|
18
|
+
this.#handler = handler
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
onRequestStart (...args) {
|
|
@@ -63,5 +62,11 @@ module.exports = class DecoratorHandler {
|
|
|
63
62
|
/**
|
|
64
63
|
* @deprecated
|
|
65
64
|
*/
|
|
66
|
-
onBodySent () {
|
|
65
|
+
onBodySent (...args) {
|
|
66
|
+
return this.#handler.onBodySent?.(...args)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
onRequestSent (...args) {
|
|
70
|
+
return this.#handler.onRequestSent?.(...args)
|
|
71
|
+
}
|
|
67
72
|
}
|
|
@@ -365,12 +365,22 @@ class DeduplicationHandler {
|
|
|
365
365
|
get aborted () { return state.aborted },
|
|
366
366
|
get reason () { return state.reason },
|
|
367
367
|
abort: (reason) => {
|
|
368
|
+
if (state.aborted) {
|
|
369
|
+
return
|
|
370
|
+
}
|
|
371
|
+
|
|
368
372
|
state.aborted = true
|
|
369
373
|
state.reason = reason ?? null
|
|
370
374
|
waitingHandler.done = true
|
|
371
375
|
waitingHandler.pendingTrailers = null
|
|
372
376
|
waitingHandler.bufferedChunks = []
|
|
373
377
|
waitingHandler.bufferedBytes = 0
|
|
378
|
+
|
|
379
|
+
try {
|
|
380
|
+
handler.onResponseError?.(waitingHandler.controller, state.reason ?? new RequestAbortedError())
|
|
381
|
+
} catch {
|
|
382
|
+
// Ignore errors from waiting handlers
|
|
383
|
+
}
|
|
374
384
|
}
|
|
375
385
|
}
|
|
376
386
|
|
|
@@ -444,12 +454,8 @@ class DeduplicationHandler {
|
|
|
444
454
|
waitingHandler.bufferedChunks = []
|
|
445
455
|
waitingHandler.bufferedBytes = 0
|
|
446
456
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
waitingHandler.handler.onResponseError?.(waitingHandler.controller, err)
|
|
450
|
-
} catch {
|
|
451
|
-
// Ignore errors from waiting handlers
|
|
452
|
-
}
|
|
457
|
+
// controller.abort(err) notifies the handler via onResponseError
|
|
458
|
+
waitingHandler.controller.abort(err)
|
|
453
459
|
}
|
|
454
460
|
|
|
455
461
|
#pruneDoneWaitingHandlers () {
|