@psnext/slingcli 3.1.20260904-1 → 3.3.20260914-1

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.
Files changed (595) hide show
  1. package/node_modules/@aws-sdk/core/dist-cjs/submodules/util/index.js +5 -0
  2. package/node_modules/@aws-sdk/core/dist-es/submodules/util/hasOwn.js +3 -0
  3. package/node_modules/@aws-sdk/core/dist-es/submodules/util/index.js +1 -0
  4. package/node_modules/@aws-sdk/core/dist-types/submodules/util/hasOwn.d.ts +4 -0
  5. package/node_modules/@aws-sdk/core/dist-types/submodules/util/index.d.ts +1 -0
  6. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/hasOwn.d.ts +1 -0
  7. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/index.d.ts +1 -0
  8. package/node_modules/@aws-sdk/core/package.json +1 -1
  9. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  10. package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
  11. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  12. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  13. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  14. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  15. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +3 -3
  16. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  17. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  18. package/node_modules/@aws-sdk/middleware-websocket/package.json +2 -2
  19. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  20. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  21. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  22. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  23. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  24. package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
  25. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{chunk-PBNSMEG7.js → chunk-BRL3MDQL.js} +10 -10
  26. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/cli.js +1 -1
  27. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/index.js +1 -1
  28. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/rpc-entry.js +1 -1
  29. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js +79 -32
  30. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/Client.md +25 -8
  31. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +3 -2
  32. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/EventSource.md +4 -0
  33. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/Interceptors.md +7 -3
  34. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +7 -1
  35. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/api/readable.js +33 -43
  36. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/cache/memory-cache-store.js +2 -2
  37. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/core/connect.js +16 -2
  38. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/core/symbols.js +3 -0
  39. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/agent.js +7 -2
  40. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/balanced-pool.js +7 -4
  41. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/client-h1.js +9 -1
  42. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/client-h2.js +221 -12
  43. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/client.js +76 -30
  44. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/dispatcher-base.js +13 -1
  45. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/dispatcher.js +15 -1
  46. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -0
  47. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
  48. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/proxy-agent.js +18 -1
  49. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
  50. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/round-robin-pool.js +1 -1
  51. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +106 -22
  52. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/cache-handler.js +29 -5
  53. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/decorator-handler.js +7 -1
  54. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
  55. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/redirect-handler.js +21 -4
  56. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/retry-handler.js +155 -32
  57. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/cache.js +65 -9
  58. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/decompress.js +115 -13
  59. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
  60. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/dns.js +7 -0
  61. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/dump.js +10 -23
  62. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/mock/mock-agent.js +13 -1
  63. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/mock/mock-utils.js +217 -27
  64. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/util/cache.js +43 -3
  65. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/cookies/parse.js +150 -147
  66. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
  67. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/eventsource/eventsource.js +13 -3
  68. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/fetch/index.js +6 -0
  69. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/fetch/request.js +2 -3
  70. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/fetch/util.js +6 -1
  71. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/webidl/index.js +3 -3
  72. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/connection.js +1 -1
  73. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
  74. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
  75. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/websocket.js +22 -0
  76. package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/package.json +3 -3
  77. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +4 -4
  78. package/node_modules/@earendil-works/pi-coding-agent/package.json +1 -1
  79. package/node_modules/@smithy/core/dist-cjs/submodules/errors/index.js +20 -0
  80. package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.browser.js +11 -10
  81. package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.js +11 -10
  82. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +2 -0
  83. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +25 -8
  84. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +2 -0
  85. package/node_modules/@smithy/core/dist-es/submodules/errors/errors.js +18 -0
  86. package/node_modules/@smithy/core/dist-es/submodules/errors/index.js +1 -0
  87. package/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/service-error-classification.js +11 -10
  88. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.browser.js +2 -0
  89. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.js +23 -8
  90. package/node_modules/@smithy/core/dist-types/submodules/errors/errors.d.ts +44 -0
  91. package/node_modules/@smithy/core/dist-types/submodules/errors/index.d.ts +1 -0
  92. package/node_modules/@smithy/core/dist-types/submodules/retry/service-error-classification/service-error-classification.d.ts +4 -0
  93. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/errors/errors.d.ts +44 -0
  94. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/errors/index.d.ts +1 -0
  95. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/retry/service-error-classification/service-error-classification.d.ts +4 -0
  96. package/node_modules/@smithy/core/errors.d.ts +5 -0
  97. package/node_modules/@smithy/core/errors.js +5 -0
  98. package/node_modules/@smithy/core/package.json +11 -2
  99. package/node_modules/@types/node/README.md +1 -1
  100. package/node_modules/@types/node/buffer.d.ts +1 -0
  101. package/node_modules/@types/node/diagnostics_channel.d.ts +4 -4
  102. package/node_modules/@types/node/http.d.ts +1 -1
  103. package/node_modules/@types/node/package.json +3 -3
  104. package/node_modules/@types/node/perf_hooks.d.ts +31 -19
  105. package/node_modules/@types/node/quic.d.ts +6 -4
  106. package/node_modules/@types/node/stream/web.d.ts +20 -0
  107. package/node_modules/@types/node/tls.d.ts +26 -15
  108. package/node_modules/@types/node/vfs.d.ts +7 -6
  109. package/node_modules/@types/node/web-globals/streams.d.ts +4 -0
  110. package/node_modules/@types/node/zlib.d.ts +17 -0
  111. package/node_modules/hono/dist/cjs/client/client.js +4 -4
  112. package/node_modules/hono/dist/cjs/hono-base.js +7 -6
  113. package/node_modules/hono/dist/cjs/jsx/base.js +18 -1
  114. package/node_modules/hono/dist/cjs/jsx/components.js +25 -26
  115. package/node_modules/hono/dist/cjs/jsx/context.js +5 -5
  116. package/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
  117. package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +2 -2
  118. package/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
  119. package/node_modules/hono/dist/client/client.js +4 -4
  120. package/node_modules/hono/dist/hono-base.js +7 -6
  121. package/node_modules/hono/dist/jsx/base.js +15 -1
  122. package/node_modules/hono/dist/jsx/components.js +26 -27
  123. package/node_modules/hono/dist/jsx/context.js +6 -6
  124. package/node_modules/hono/dist/jsx/dom/server.js +5 -1
  125. package/node_modules/hono/dist/jsx/intrinsic-element/components.js +3 -3
  126. package/node_modules/hono/dist/jsx/streaming.js +5 -6
  127. package/node_modules/hono/dist/types/context.d.ts +2 -2
  128. package/node_modules/hono/dist/types/jsx/base.d.ts +3 -0
  129. package/node_modules/hono/package.json +2 -2
  130. package/node_modules/jose/dist/types/index.d.ts +1 -2
  131. package/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +7 -11
  132. package/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +13 -16
  133. package/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +7 -11
  134. package/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +16 -19
  135. package/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +10 -16
  136. package/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +18 -21
  137. package/node_modules/jose/dist/types/jwk/embedded.d.ts +3 -1
  138. package/node_modules/jose/dist/types/jwk/thumbprint.d.ts +4 -6
  139. package/node_modules/jose/dist/types/jwks/local.d.ts +5 -4
  140. package/node_modules/jose/dist/types/jwks/remote.d.ts +20 -21
  141. package/node_modules/jose/dist/types/jws/compact/sign.d.ts +4 -4
  142. package/node_modules/jose/dist/types/jws/compact/verify.d.ts +8 -11
  143. package/node_modules/jose/dist/types/jws/flattened/sign.d.ts +5 -5
  144. package/node_modules/jose/dist/types/jws/flattened/verify.d.ts +8 -11
  145. package/node_modules/jose/dist/types/jws/general/sign.d.ts +10 -14
  146. package/node_modules/jose/dist/types/jws/general/verify.d.ts +11 -17
  147. package/node_modules/jose/dist/types/jwt/decrypt.d.ts +14 -11
  148. package/node_modules/jose/dist/types/jwt/encrypt.d.ts +24 -22
  149. package/node_modules/jose/dist/types/jwt/sign.d.ts +3 -7
  150. package/node_modules/jose/dist/types/jwt/unsecured.d.ts +2 -6
  151. package/node_modules/jose/dist/types/jwt/verify.d.ts +13 -6
  152. package/node_modules/jose/dist/types/key/export.d.ts +6 -6
  153. package/node_modules/jose/dist/types/key/generate_key_pair.d.ts +9 -14
  154. package/node_modules/jose/dist/types/key/generate_secret.d.ts +10 -10
  155. package/node_modules/jose/dist/types/key/import.d.ts +19 -18
  156. package/node_modules/jose/dist/types/types.d.ts +152 -247
  157. package/node_modules/jose/dist/types/util/base64url.d.ts +7 -7
  158. package/node_modules/jose/dist/types/util/decode_jwt.d.ts +6 -1
  159. package/node_modules/jose/dist/types/util/decode_protected_header.d.ts +4 -3
  160. package/node_modules/jose/dist/types/util/errors.d.ts +29 -40
  161. package/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +1 -2
  162. package/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +9 -26
  163. package/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +3 -3
  164. package/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +11 -30
  165. package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +6 -6
  166. package/node_modules/jose/dist/webapi/jwe/general/encrypt.js +33 -57
  167. package/node_modules/jose/dist/webapi/jwk/embedded.js +3 -4
  168. package/node_modules/jose/dist/webapi/jwk/thumbprint.js +3 -6
  169. package/node_modules/jose/dist/webapi/jwks/local.js +16 -10
  170. package/node_modules/jose/dist/webapi/jwks/remote.js +2 -2
  171. package/node_modules/jose/dist/webapi/jws/compact/sign.js +2 -4
  172. package/node_modules/jose/dist/webapi/jws/compact/verify.js +2 -2
  173. package/node_modules/jose/dist/webapi/jws/flattened/sign.js +8 -15
  174. package/node_modules/jose/dist/webapi/jws/flattened/verify.js +4 -14
  175. package/node_modules/jose/dist/webapi/jws/general/sign.js +4 -11
  176. package/node_modules/jose/dist/webapi/jws/general/verify.js +5 -7
  177. package/node_modules/jose/dist/webapi/jwt/decrypt.js +2 -3
  178. package/node_modules/jose/dist/webapi/jwt/encrypt.js +11 -25
  179. package/node_modules/jose/dist/webapi/jwt/sign.js +1 -1
  180. package/node_modules/jose/dist/webapi/jwt/unsecured.js +1 -2
  181. package/node_modules/jose/dist/webapi/jwt/verify.js +4 -4
  182. package/node_modules/jose/dist/webapi/key/export.js +12 -16
  183. package/node_modules/jose/dist/webapi/key/generate_key_pair.js +4 -13
  184. package/node_modules/jose/dist/webapi/key/generate_secret.js +1 -1
  185. package/node_modules/jose/dist/webapi/key/import.js +5 -9
  186. package/node_modules/jose/dist/webapi/lib/asn1.js +2 -4
  187. package/node_modules/jose/dist/webapi/lib/buffer_utils.js +35 -0
  188. package/node_modules/jose/dist/webapi/lib/content_encryption.js +21 -29
  189. package/node_modules/jose/dist/webapi/lib/deflate.js +9 -19
  190. package/node_modules/jose/dist/webapi/lib/jwe_algorithms.js +0 -4
  191. package/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +21 -54
  192. package/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +26 -59
  193. package/node_modules/jose/dist/webapi/lib/jws_sign.js +29 -43
  194. package/node_modules/jose/dist/webapi/lib/jws_verify.js +37 -45
  195. package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +1 -1
  196. package/node_modules/jose/dist/webapi/lib/key.js +119 -59
  197. package/node_modules/jose/dist/webapi/lib/key_management.js +45 -80
  198. package/node_modules/jose/dist/webapi/lib/{options.js → validate.js} +64 -3
  199. package/node_modules/jose/dist/webapi/util/base64url.js +5 -19
  200. package/node_modules/jose/dist/webapi/util/decode_jwt.js +1 -1
  201. package/node_modules/jose/dist/webapi/util/decode_protected_header.js +1 -1
  202. package/node_modules/jose/package.json +1 -1
  203. package/node_modules/undici/lib/dispatcher/balanced-pool.js +4 -2
  204. package/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
  205. package/node_modules/undici/lib/dispatcher/client-h2.js +70 -14
  206. package/node_modules/undici/lib/dispatcher/client.js +6 -2
  207. package/node_modules/undici/lib/handler/cache-handler.js +21 -5
  208. package/node_modules/undici/lib/handler/retry-handler.js +42 -7
  209. package/node_modules/undici/lib/interceptor/cache.js +20 -1
  210. package/node_modules/undici/lib/interceptor/decompress.js +146 -14
  211. package/node_modules/undici/lib/interceptor/dump.js +10 -23
  212. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +245 -150
  213. package/node_modules/undici/lib/web/websocket/connection.js +1 -1
  214. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
  215. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
  216. package/node_modules/undici/package.json +1 -1
  217. package/node_modules/undici/types/interceptors.d.ts +2 -0
  218. package/node_modules/undici-types/client.d.ts +8 -3
  219. package/node_modules/undici-types/connector.d.ts +1 -0
  220. package/node_modules/undici-types/cookies.d.ts +1 -1
  221. package/node_modules/undici-types/dispatcher.d.ts +3 -3
  222. package/node_modules/undici-types/errors.d.ts +10 -0
  223. package/node_modules/undici-types/fetch.d.ts +5 -1
  224. package/node_modules/undici-types/handlers.d.ts +2 -0
  225. package/node_modules/undici-types/interceptors.d.ts +1 -1
  226. package/node_modules/undici-types/mock-interceptor.d.ts +5 -1
  227. package/node_modules/undici-types/package.json +1 -1
  228. package/node_modules/undici-types/proxy-agent.d.ts +7 -0
  229. package/node_modules/zod/README.md +2 -2
  230. package/node_modules/zod/compile.cjs +19 -0
  231. package/node_modules/zod/index.cjs +19 -0
  232. package/node_modules/zod/locales/index.cjs +19 -0
  233. package/node_modules/zod/mini/index.cjs +19 -0
  234. package/node_modules/zod/package.json +8 -7
  235. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  236. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  237. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  238. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  239. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  240. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  241. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  242. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  243. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  244. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  245. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  246. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  247. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  248. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  249. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  250. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  251. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  252. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  253. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  254. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  255. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  256. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  257. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  258. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  259. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  260. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  261. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  262. package/node_modules/zod/src/v4/core/api.ts +44 -28
  263. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  264. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  265. package/node_modules/zod/src/v4/core/core.ts +1 -3
  266. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  267. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  268. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  269. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  270. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  271. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  272. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  273. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  274. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  275. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  276. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  277. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  278. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  279. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  280. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  281. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  282. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  283. package/node_modules/zod/src/v4/core/util.ts +218 -147
  284. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  285. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  286. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  287. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  288. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  289. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  290. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  291. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  292. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  293. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  294. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  295. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  296. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  297. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  298. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  299. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  300. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  301. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  302. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  303. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  304. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  305. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  306. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  307. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  308. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  309. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  310. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  311. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  312. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  313. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  314. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  315. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  316. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  317. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  318. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  319. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  320. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  321. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  322. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  323. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  324. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  325. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  326. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  327. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  328. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  329. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  330. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  331. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  332. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  333. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  334. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  335. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  336. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  337. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  338. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  339. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  340. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  341. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  342. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  343. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  344. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  345. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  346. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  347. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  348. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  349. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  350. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  351. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  352. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  353. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  354. package/node_modules/zod/v3/ZodError.cjs +19 -0
  355. package/node_modules/zod/v3/errors.cjs +19 -0
  356. package/node_modules/zod/v3/external.cjs +19 -0
  357. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  358. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  359. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  360. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  361. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  362. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  363. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  364. package/node_modules/zod/v3/index.cjs +19 -0
  365. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  366. package/node_modules/zod/v3/types.cjs +19 -0
  367. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  368. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  369. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  370. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  371. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  372. package/node_modules/zod/v4/classic/external.cjs +22 -1
  373. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  374. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  375. package/node_modules/zod/v4/classic/external.js +1 -1
  376. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  377. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  378. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  379. package/node_modules/zod/v4/classic/index.cjs +19 -0
  380. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  381. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  382. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  383. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  384. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  385. package/node_modules/zod/v4/classic/schemas.js +77 -33
  386. package/node_modules/zod/v4/core/api.cjs +45 -22
  387. package/node_modules/zod/v4/core/api.d.cts +12 -6
  388. package/node_modules/zod/v4/core/api.d.ts +12 -6
  389. package/node_modules/zod/v4/core/api.js +25 -22
  390. package/node_modules/zod/v4/core/checks.cjs +51 -97
  391. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  392. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  393. package/node_modules/zod/v4/core/checks.js +31 -96
  394. package/node_modules/zod/v4/core/compile.cjs +173 -78
  395. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  396. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  397. package/node_modules/zod/v4/core/compile.js +154 -79
  398. package/node_modules/zod/v4/core/core.cjs +20 -1
  399. package/node_modules/zod/v4/core/core.js +1 -1
  400. package/node_modules/zod/v4/core/doc.cjs +26 -2
  401. package/node_modules/zod/v4/core/doc.js +7 -2
  402. package/node_modules/zod/v4/core/errors.cjs +21 -5
  403. package/node_modules/zod/v4/core/errors.js +2 -5
  404. package/node_modules/zod/v4/core/index.cjs +19 -0
  405. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  406. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  407. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  408. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  409. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  410. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  411. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  412. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  413. package/node_modules/zod/v4/core/memoizer.js +69 -23
  414. package/node_modules/zod/v4/core/parse.cjs +56 -16
  415. package/node_modules/zod/v4/core/parse.js +37 -16
  416. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  417. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  418. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  419. package/node_modules/zod/v4/core/regexes.js +10 -4
  420. package/node_modules/zod/v4/core/registries.cjs +19 -0
  421. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  422. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  423. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  424. package/node_modules/zod/v4/core/schemas.js +279 -113
  425. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  426. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  427. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  428. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  429. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  430. package/node_modules/zod/v4/core/util.cjs +177 -143
  431. package/node_modules/zod/v4/core/util.d.cts +25 -4
  432. package/node_modules/zod/v4/core/util.d.ts +25 -4
  433. package/node_modules/zod/v4/core/util.js +156 -143
  434. package/node_modules/zod/v4/core/versions.cjs +21 -2
  435. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  436. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  437. package/node_modules/zod/v4/core/versions.js +2 -2
  438. package/node_modules/zod/v4/core/visit.cjs +19 -0
  439. package/node_modules/zod/v4/index.cjs +19 -0
  440. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  441. package/node_modules/zod/v4/locales/ar.js +2 -0
  442. package/node_modules/zod/v4/locales/az.cjs +2 -0
  443. package/node_modules/zod/v4/locales/az.js +2 -0
  444. package/node_modules/zod/v4/locales/be.cjs +2 -0
  445. package/node_modules/zod/v4/locales/be.js +2 -0
  446. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  447. package/node_modules/zod/v4/locales/bg.js +2 -0
  448. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  449. package/node_modules/zod/v4/locales/bn.js +2 -0
  450. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  451. package/node_modules/zod/v4/locales/ca.js +2 -0
  452. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  453. package/node_modules/zod/v4/locales/ckb.js +2 -0
  454. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  455. package/node_modules/zod/v4/locales/cs.js +2 -0
  456. package/node_modules/zod/v4/locales/da.cjs +2 -0
  457. package/node_modules/zod/v4/locales/da.js +2 -0
  458. package/node_modules/zod/v4/locales/de.cjs +2 -0
  459. package/node_modules/zod/v4/locales/de.js +2 -0
  460. package/node_modules/zod/v4/locales/el.cjs +2 -0
  461. package/node_modules/zod/v4/locales/el.js +2 -0
  462. package/node_modules/zod/v4/locales/en.cjs +2 -0
  463. package/node_modules/zod/v4/locales/en.js +2 -0
  464. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  465. package/node_modules/zod/v4/locales/eo.js +2 -0
  466. package/node_modules/zod/v4/locales/es.cjs +2 -0
  467. package/node_modules/zod/v4/locales/es.js +2 -0
  468. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  469. package/node_modules/zod/v4/locales/fa.js +2 -0
  470. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  471. package/node_modules/zod/v4/locales/fi.js +2 -0
  472. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  473. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  474. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  475. package/node_modules/zod/v4/locales/fr.js +2 -0
  476. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  477. package/node_modules/zod/v4/locales/gu.js +2 -0
  478. package/node_modules/zod/v4/locales/he.cjs +2 -0
  479. package/node_modules/zod/v4/locales/he.js +2 -0
  480. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  481. package/node_modules/zod/v4/locales/hi.js +2 -0
  482. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  483. package/node_modules/zod/v4/locales/hr.js +2 -0
  484. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  485. package/node_modules/zod/v4/locales/hu.js +2 -0
  486. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  487. package/node_modules/zod/v4/locales/hy.js +2 -0
  488. package/node_modules/zod/v4/locales/id.cjs +2 -0
  489. package/node_modules/zod/v4/locales/id.js +2 -0
  490. package/node_modules/zod/v4/locales/index.cjs +22 -1
  491. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  492. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  493. package/node_modules/zod/v4/locales/index.js +1 -0
  494. package/node_modules/zod/v4/locales/is.cjs +2 -0
  495. package/node_modules/zod/v4/locales/is.js +2 -0
  496. package/node_modules/zod/v4/locales/it.cjs +2 -0
  497. package/node_modules/zod/v4/locales/it.js +2 -0
  498. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  499. package/node_modules/zod/v4/locales/ja.js +2 -0
  500. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  501. package/node_modules/zod/v4/locales/ka.js +2 -0
  502. package/node_modules/zod/v4/locales/km.cjs +2 -0
  503. package/node_modules/zod/v4/locales/km.js +2 -0
  504. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  505. package/node_modules/zod/v4/locales/kn.js +2 -0
  506. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  507. package/node_modules/zod/v4/locales/ko.js +2 -0
  508. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  509. package/node_modules/zod/v4/locales/lt.js +2 -0
  510. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  511. package/node_modules/zod/v4/locales/mk.js +2 -0
  512. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  513. package/node_modules/zod/v4/locales/ms.js +2 -0
  514. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  515. package/node_modules/zod/v4/locales/ne.js +2 -0
  516. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  517. package/node_modules/zod/v4/locales/nl.js +2 -0
  518. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  519. package/node_modules/zod/v4/locales/nn.js +2 -0
  520. package/node_modules/zod/v4/locales/no.cjs +2 -0
  521. package/node_modules/zod/v4/locales/no.js +2 -0
  522. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  523. package/node_modules/zod/v4/locales/ota.js +2 -0
  524. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  525. package/node_modules/zod/v4/locales/pl.js +2 -0
  526. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  527. package/node_modules/zod/v4/locales/ps.js +2 -0
  528. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  529. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  530. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  531. package/node_modules/zod/v4/locales/pt.js +2 -0
  532. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  533. package/node_modules/zod/v4/locales/ro.js +2 -0
  534. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  535. package/node_modules/zod/v4/locales/ru.js +2 -0
  536. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  537. package/node_modules/zod/v4/locales/sk.js +2 -0
  538. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  539. package/node_modules/zod/v4/locales/sl.js +2 -0
  540. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  541. package/node_modules/zod/v4/locales/sv.js +2 -0
  542. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  543. package/node_modules/zod/v4/locales/ta.js +2 -0
  544. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  545. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  546. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  547. package/node_modules/zod/v4/locales/tg.js +117 -0
  548. package/node_modules/zod/v4/locales/th.cjs +2 -0
  549. package/node_modules/zod/v4/locales/th.js +2 -0
  550. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  551. package/node_modules/zod/v4/locales/tk.js +2 -0
  552. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  553. package/node_modules/zod/v4/locales/tr.js +2 -0
  554. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  555. package/node_modules/zod/v4/locales/uk.js +2 -0
  556. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  557. package/node_modules/zod/v4/locales/ur.js +2 -0
  558. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  559. package/node_modules/zod/v4/locales/uz.js +2 -0
  560. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  561. package/node_modules/zod/v4/locales/vi.js +2 -0
  562. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  563. package/node_modules/zod/v4/locales/yo.js +2 -0
  564. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  565. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  566. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  567. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  568. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  569. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  570. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  571. package/node_modules/zod/v4/mini/external.cjs +22 -1
  572. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  573. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  574. package/node_modules/zod/v4/mini/external.js +1 -1
  575. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  576. package/node_modules/zod/v4/mini/index.cjs +19 -0
  577. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  578. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  579. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  580. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  581. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  582. package/node_modules/zod/v4/mini/schemas.js +21 -6
  583. package/node_modules/zod/v4-mini/index.cjs +19 -0
  584. package/package.json +2 -2
  585. package/slingshot/index.js +201 -198
  586. package/node_modules/jose/dist/webapi/lib/base64.js +0 -20
  587. package/node_modules/jose/dist/webapi/lib/crypto_key.js +0 -27
  588. package/node_modules/jose/dist/webapi/lib/helpers.js +0 -45
  589. package/node_modules/jose/dist/webapi/lib/invalid_key_input.js +0 -12
  590. package/node_modules/jose/dist/webapi/lib/is_key_like.js +0 -19
  591. package/node_modules/jose/dist/webapi/lib/jwk_metadata.js +0 -19
  592. package/node_modules/jose/dist/webapi/lib/jwk_to_key.js +0 -10
  593. package/node_modules/jose/dist/webapi/lib/key_options.js +0 -8
  594. package/node_modules/jose/dist/webapi/lib/signing.js +0 -22
  595. package/node_modules/jose/dist/webapi/lib/type_checks.js +0 -30
@@ -10,7 +10,8 @@ const {
10
10
  InformationalError,
11
11
  InvalidArgumentError,
12
12
  HeadersTimeoutError,
13
- BodyTimeoutError
13
+ BodyTimeoutError,
14
+ ResponseExceededMaxSizeError
14
15
  } = require('../core/errors.js')
15
16
  const {
16
17
  kUrl,
@@ -26,10 +27,7 @@ const {
26
27
  kStrictContentLength,
27
28
  kOnError,
28
29
  kMaxConcurrentStreams,
29
- kPingInterval,
30
30
  kHTTP2Session,
31
- kHTTP2InitialWindowSize,
32
- kHTTP2ConnectionWindowSize,
33
31
  kHostAuthority,
34
32
  kResume,
35
33
  kSize,
@@ -41,7 +39,9 @@ const {
41
39
  kEnableConnectProtocol,
42
40
  kRemoteSettings,
43
41
  kHTTP2Stream,
44
- kHTTP2SessionState
42
+ kHTTP2SessionState,
43
+ kHTTP2Options,
44
+ kMaxResponseSize
45
45
  } = require('../core/symbols.js')
46
46
  const { channels } = require('../core/diagnostics.js')
47
47
 
@@ -51,6 +51,14 @@ const kRequestStream = Symbol('request stream')
51
51
  const kRequestStreamCleanup = Symbol('request stream cleanup')
52
52
  const kRequestStreamState = Symbol('request stream state')
53
53
  const kReceivedGoAway = Symbol('received goaway')
54
+ const kGoAwayReplayAttempts = Symbol('goaway replay attempts')
55
+ const kRefusedStreamRetry = Symbol('refused stream retry')
56
+
57
+ // RFC 9113 section 8.7: a client SHOULD NOT automatically retry a request more
58
+ // than once. Without a budget a peer that keeps refusing turns one request into
59
+ // an unbounded connect/refuse/reconnect loop that never settles and starves the
60
+ // event loop.
61
+ const MAX_GOAWAY_REPLAY_ATTEMPTS = 1
54
62
 
55
63
  let extractBody
56
64
 
@@ -179,12 +187,24 @@ function completeRequest (client, request, resetPendingIdx = false) {
179
187
  }
180
188
  }
181
189
 
182
- function canRetryRequestAfterGoAway (request) {
190
+ function canReplayRequest (request) {
183
191
  const { body } = request
184
192
 
185
193
  return body == null || util.isBuffer(body) || util.isBlobLike(body)
186
194
  }
187
195
 
196
+ // Count a GOAWAY refusal against the request's replay budget. A peer that
197
+ // refuses every connection must eventually surface an error to the caller
198
+ // rather than being retried forever. Kept separate from canReplayRequest so
199
+ // that the REFUSED_STREAM retry, which has its own single-attempt limit, does
200
+ // not consume this budget just by asking whether the body can be replayed.
201
+ function registerGoAwayRefusal (request) {
202
+ const attempts = (request[kGoAwayReplayAttempts] ?? 0) + 1
203
+ request[kGoAwayReplayAttempts] = attempts
204
+
205
+ return attempts <= MAX_GOAWAY_REPLAY_ATTEMPTS
206
+ }
207
+
188
208
  function closeStream (stream, code = NGHTTP2_REFUSED_STREAM) {
189
209
  if (stream != null && !stream.destroyed && !stream.closed) {
190
210
  try {
@@ -197,19 +217,44 @@ function detachRequestStreamForClose (request) {
197
217
  const stream = request[kRequestStream]
198
218
 
199
219
  clearRequestStream(request)
220
+ severRequestStream(stream)
200
221
 
201
222
  return stream
202
223
  }
203
224
 
225
+ // Unbind a stream from its request for good. releaseRequestStream() alone
226
+ // leaves the 'close' listener attached and kRequestStreamState populated, so a
227
+ // stream abandoned here would still run completeRequestStream() later — and
228
+ // splice out the request that has since been requeued onto another session.
229
+ function severRequestStream (stream) {
230
+ if (stream == null || stream[kRequestStreamState] == null) {
231
+ return
232
+ }
233
+
234
+ stream[kRequestStreamState] = null
235
+ stream.off('close', completeRequestStream)
236
+ // Upgrade streams use their own close cleanup, which would otherwise release
237
+ // the session a second time after the stream has been severed for GOAWAY.
238
+ stream.off('close', onUpgradeStreamClose)
239
+
240
+ if (stream[kHTTP2Session] != null) {
241
+ closeStreamSession(stream)
242
+ }
243
+
244
+ if (!stream.destroyed && !stream.closed) {
245
+ stream.once('error', noop)
246
+ }
247
+ }
248
+
204
249
  function connectH2 (client, socket) {
205
250
  client[kSocket] = socket
206
251
 
207
- const http2InitialWindowSize = client[kHTTP2InitialWindowSize]
208
- const http2ConnectionWindowSize = client[kHTTP2ConnectionWindowSize]
252
+ const http2InitialWindowSize = client[kHTTP2Options].sessionOptions?.initialWindowSize
253
+ const http2ConnectionWindowSize = client[kHTTP2Options].connectionWindowSize
209
254
 
210
255
  const session = http2.connect(client[kUrl], {
211
256
  createConnection: () => socket,
212
- peerMaxConcurrentStreams: client[kMaxConcurrentStreams],
257
+ peerMaxConcurrentStreams: client[kHTTP2Options].maxConcurrentStreams,
213
258
  settings: {
214
259
  // TODO(metcoder95): add support for PUSH
215
260
  enablePush: false,
@@ -223,13 +268,16 @@ function connectH2 (client, socket) {
223
268
  session[kSocket] = socket
224
269
  session[kHTTP2SessionState] = {
225
270
  idleTimeout: null,
271
+ // Armed while the peer advertises MAX_CONCURRENT_STREAMS = 0 and we have
272
+ // work that cannot start. See setNoStreamsTimeout.
273
+ noStreamsTimeout: null,
226
274
  // Sockets start out ref'd. Session ref/unref proxies to the socket, so a
227
275
  // single cached flag lets us skip redundant uv ref/unref calls, provided
228
276
  // every ref/unref of the session or its socket goes through
229
277
  // refH2Session/unrefH2Session.
230
278
  refed: true,
231
279
  ping: {
232
- interval: client[kPingInterval] === 0 ? null : setInterval(onHttp2SendPing, client[kPingInterval], session).unref()
280
+ interval: client[kHTTP2Options].pingInterval === 0 ? null : setInterval(onHttp2SendPing, client[kHTTP2Options].pingInterval, session).unref()
233
281
  }
234
282
  }
235
283
  session[kReceivedGoAway] = false
@@ -369,9 +417,76 @@ function resumeH2 (client) {
369
417
  } else {
370
418
  clearHttp2IdleTimeout(session)
371
419
  }
420
+
421
+ if (client[kMaxConcurrentStreams] === 0 && client[kRunning] === 0 && client[kPending] > 0) {
422
+ setNoStreamsTimeout(session)
423
+ } else {
424
+ clearNoStreamsTimeout(session)
425
+ }
426
+ }
427
+ }
428
+
429
+ function clearNoStreamsTimeout (session) {
430
+ const state = session[kHTTP2SessionState]
431
+
432
+ if (state?.noStreamsTimeout != null) {
433
+ clearTimeout(state.noStreamsTimeout)
434
+ state.noStreamsTimeout = null
372
435
  }
373
436
  }
374
437
 
438
+ // A peer is allowed to advertise SETTINGS_MAX_CONCURRENT_STREAMS = 0 to refuse
439
+ // new streams (RFC 9113 §6.5.2), and is expected to raise it again later. Until
440
+ // it does, busy() reports the client as permanently busy and queued requests
441
+ // cannot open a stream — which means no per-stream timeout covers them, and no
442
+ // reconnect can happen either, so the SETTINGS frame that would lift the limit
443
+ // can never arrive. Give the peer headersTimeout to start honouring requests
444
+ // before failing them; a request that cannot even be sent has missed the same
445
+ // deadline as one whose headers never arrive.
446
+ function setNoStreamsTimeout (session) {
447
+ const client = session[kClient]
448
+ const state = session[kHTTP2SessionState]
449
+ const timeout = client[kHeadersTimeout]
450
+
451
+ if (!timeout || state.noStreamsTimeout != null) {
452
+ return
453
+ }
454
+
455
+ state.noStreamsTimeout = setTimeout(onNoStreamsTimeout, timeout, session).unref()
456
+ }
457
+
458
+ function onNoStreamsTimeout (session) {
459
+ const client = session[kClient]
460
+ const state = session[kHTTP2SessionState]
461
+
462
+ state.noStreamsTimeout = null
463
+
464
+ if (
465
+ client[kHTTP2Session] !== session ||
466
+ client[kMaxConcurrentStreams] !== 0 ||
467
+ client[kRunning] !== 0 ||
468
+ client[kPending] === 0
469
+ ) {
470
+ return
471
+ }
472
+
473
+ const err = new HeadersTimeoutError(
474
+ `HTTP/2: server did not accept a new stream within ${client[kHeadersTimeout]}`
475
+ )
476
+
477
+ const requests = client[kQueue].splice(client[kPendingIdx])
478
+ for (let i = 0; i < requests.length; i++) {
479
+ if (requests[i] != null) {
480
+ util.errorRequest(client, requests[i], err)
481
+ }
482
+ }
483
+
484
+ // Drop the unusable session so the next request gets a fresh connection,
485
+ // whose SETTINGS may well allow streams again.
486
+ session[kError] = err
487
+ resetHttp2Session(session, err)
488
+ }
489
+
375
490
  function clearHttp2IdleTimeout (session) {
376
491
  const state = session[kHTTP2SessionState]
377
492
 
@@ -527,7 +642,7 @@ function onHttp2SessionGoAway (errorCode, lastStreamID) {
527
642
  if (request != null) {
528
643
  streamsToClose.push(detachRequestStreamForClose(request))
529
644
 
530
- if (canRetryRequestAfterGoAway(request)) {
645
+ if (canReplayRequest(request) && registerGoAwayRefusal(request)) {
531
646
  retriableRequests.push(request)
532
647
  } else {
533
648
  util.errorRequest(client, request, err)
@@ -552,6 +667,7 @@ function onHttp2SessionGoAway (errorCode, lastStreamID) {
552
667
  }
553
668
 
554
669
  clearHttp2IdleTimeout(this)
670
+ clearNoStreamsTimeout(this)
555
671
 
556
672
  if (!this.closed && !this.destroyed) {
557
673
  this.close()
@@ -576,6 +692,7 @@ function onHttp2SessionClose () {
576
692
  }
577
693
 
578
694
  clearHttp2IdleTimeout(this)
695
+ clearNoStreamsTimeout(this)
579
696
 
580
697
  if (state.ping.interval != null) {
581
698
  clearInterval(state.ping.interval)
@@ -687,6 +804,16 @@ function completeRequestStream () {
687
804
 
688
805
  if (state.pendingEnd && !state.request.aborted && !state.request.completed) {
689
806
  state.request.onResponseEnd(state.trailers || {})
807
+ } else if (!state.request.aborted && !state.request.completed) {
808
+ // The stream closed without a complete response and without reporting an
809
+ // error. finalizeRequest() below frees the queue slot either way, so
810
+ // without this the request would simply vanish and its caller would never
811
+ // hear back.
812
+ util.errorRequest(
813
+ state.client,
814
+ state.request,
815
+ new InformationalError('HTTP/2: stream closed before the response was complete')
816
+ )
690
817
  }
691
818
 
692
819
  finalizeRequest(state)
@@ -897,9 +1024,11 @@ function writeH2 (client, request) {
897
1024
  const state = {
898
1025
  abort: null,
899
1026
  body: request.body,
1027
+ bytesRead: 0,
900
1028
  client,
901
1029
  contentLength: null,
902
1030
  expectsPayload: false,
1031
+ maxResponseSize: client[kMaxResponseSize],
903
1032
  request,
904
1033
  headersTimeout,
905
1034
  bodyTimeout,
@@ -1135,6 +1264,7 @@ function writeH2 (client, request) {
1135
1264
  // become unreachable once the stream closes, so plain `on` avoids the
1136
1265
  // per-listener `once` wrapper allocation.
1137
1266
  stream.on('response', onResponse)
1267
+ stream.on('headers', onInterimResponse)
1138
1268
  stream.on('end', onEnd)
1139
1269
  stream.on('error', onError)
1140
1270
  stream.on('frameError', onFrameError)
@@ -1155,6 +1285,7 @@ function removeRequestStreamListeners (stream) {
1155
1285
  stream.off('error', noop)
1156
1286
  stream.off('continue', writeBodyH2)
1157
1287
  stream.off('response', onResponse)
1288
+ stream.off('headers', onInterimResponse)
1158
1289
  stream.off('end', onEnd)
1159
1290
  stream.off('error', onError)
1160
1291
  stream.off('frameError', onFrameError)
@@ -1197,17 +1328,51 @@ function onData (chunk) {
1197
1328
  return
1198
1329
  }
1199
1330
 
1200
- const { request } = state
1331
+ const { request, maxResponseSize } = state
1201
1332
 
1202
1333
  if (request.aborted || request.completed) {
1203
1334
  return
1204
1335
  }
1205
1336
 
1337
+ if (maxResponseSize > -1 && state.bytesRead + chunk.length > maxResponseSize) {
1338
+ // Unlike HTTP/1.1, which destroys the socket because it cannot abandon one
1339
+ // response without losing framing, resetting the offending stream leaves
1340
+ // the session usable for its siblings.
1341
+ state.abort(new ResponseExceededMaxSizeError())
1342
+ return
1343
+ }
1344
+
1345
+ state.bytesRead += chunk.length
1346
+
1206
1347
  if (request.onResponseData(chunk) === false) {
1207
1348
  stream.pause()
1208
1349
  }
1209
1350
  }
1210
1351
 
1352
+ function onInterimResponse (headers) {
1353
+ const stream = this
1354
+ const state = stream[kRequestStreamState]
1355
+
1356
+ if (state == null) {
1357
+ return
1358
+ }
1359
+
1360
+ const { request } = state
1361
+
1362
+ if (request.aborted || request.completed) {
1363
+ return
1364
+ }
1365
+
1366
+ // node http2 emits 'headers' for interim (1xx) informational responses,
1367
+ // while the final response arrives via 'response'. Forward these to the
1368
+ // handler so that onInfo is invoked, matching the HTTP/1 behaviour and the
1369
+ // documented onInfo contract.
1370
+ const statusCode = headers[HTTP2_HEADER_STATUS]
1371
+ delete headers[HTTP2_HEADER_STATUS]
1372
+
1373
+ request.onResponseStart(Number(statusCode), headers, noop, '')
1374
+ }
1375
+
1211
1376
  function onResponse (headers) {
1212
1377
  const stream = this
1213
1378
  const state = stream[kRequestStreamState]
@@ -1286,6 +1451,38 @@ function onEnd () {
1286
1451
  }
1287
1452
  }
1288
1453
 
1454
+ function retryRefusedStream (stream, state) {
1455
+ const { client, request } = state
1456
+
1457
+ if (
1458
+ state.responseReceived ||
1459
+ request.aborted ||
1460
+ request.completed ||
1461
+ request[kRefusedStreamRetry] ||
1462
+ !canReplayRequest(request)
1463
+ ) {
1464
+ return false
1465
+ }
1466
+
1467
+ // RFC 9113 section 8.7 permits retrying REFUSED_STREAM, but says clients
1468
+ // SHOULD NOT automatically retry the same request more than once.
1469
+ request[kRefusedStreamRetry] = true
1470
+
1471
+ // Detach the failed attempt before moving the request back to the pending
1472
+ // queue. The peer only reset this stream, so the HTTP/2 session remains
1473
+ // usable for the retry. Severing also drops the 'close' listener, so the
1474
+ // abandoned stream cannot later complete the retried request.
1475
+ detachRequestStreamForClose(request)
1476
+ state.stream = null
1477
+ state.requestFinalized = true
1478
+
1479
+ completeRequest(client, request)
1480
+ client[kQueue].splice(client[kPendingIdx], 0, request)
1481
+ client[kResume]()
1482
+
1483
+ return true
1484
+ }
1485
+
1289
1486
  function onError (err) {
1290
1487
  const stream = this
1291
1488
  const state = stream[kRequestStreamState]
@@ -1295,6 +1492,18 @@ function onError (err) {
1295
1492
  }
1296
1493
 
1297
1494
  stream.off('error', onError)
1495
+
1496
+ if (typeof stream.rstCode === 'number' && stream.rstCode !== NGHTTP2_NO_ERROR) {
1497
+ err.http2ErrorCode = stream.rstCode
1498
+ }
1499
+
1500
+ if (
1501
+ stream.rstCode === NGHTTP2_REFUSED_STREAM &&
1502
+ retryRefusedStream(stream, state)
1503
+ ) {
1504
+ return
1505
+ }
1506
+
1298
1507
  state.abort(err)
1299
1508
  }
1300
1509
 
@@ -53,10 +53,8 @@ const {
53
53
  kHTTPContext,
54
54
  kMaxConcurrentStreams,
55
55
  kHostAuthority,
56
- kHTTP2InitialWindowSize,
57
- kHTTP2ConnectionWindowSize,
58
56
  kResume,
59
- kPingInterval
57
+ kHTTP2Options
60
58
  } = require('../core/symbols.js')
61
59
  const connectH1 = require('./client-h1.js')
62
60
  const connectH2 = require('./client-h2.js')
@@ -76,6 +74,16 @@ function getPipelining (client) {
76
74
  return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1
77
75
  }
78
76
 
77
+ let h2NamespaceOptsWarning = false
78
+ function emitH2OptionsNamespaceWarning (optName) {
79
+ if (h2NamespaceOptsWarning === true) return
80
+
81
+ process.emitWarning(`Use h2Options.${optName} instead. ${optName} for H2 will be deprecated in future major.`, {
82
+ code: 'UNDICI-H2-OPTIONS'
83
+ })
84
+ h2NamespaceOptsWarning = true
85
+ }
86
+
79
87
  // Protocol-aware dispatch ceiling. h1 RFC7230 pipelining is unrelated to h2
80
88
  // stream multiplexing — over h2 the ceiling is the (server-confirmed)
81
89
  // maxConcurrentStreams. Before a context is attached we use the h1
@@ -128,7 +136,9 @@ class Client extends DispatcherBase {
128
136
  initialWindowSize,
129
137
  connectionWindowSize,
130
138
  pingInterval,
131
- webSocket
139
+ webSocket,
140
+ h2Options,
141
+ eventSource
132
142
  } = {}) {
133
143
  if (keepAlive !== undefined) {
134
144
  throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')
@@ -216,35 +226,66 @@ class Client extends DispatcherBase {
216
226
  throw new InvalidArgumentError('allowH2 must be a valid boolean value')
217
227
  }
218
228
 
219
- if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {
220
- throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0')
221
- }
229
+ // We validate only if allowH2 is enabled or null (enabled by default)
230
+ if (allowH2 !== false) {
231
+ // Prioritise new h2Options object, otherwise fallback to prior configuration options
232
+ if (h2Options != null) {
233
+ if (h2Options.useH2c != null && typeof h2Options.useH2c !== 'boolean') {
234
+ throw new InvalidArgumentError('h2Options.useH2c must be a valid boolean value')
235
+ }
222
236
 
223
- if (useH2c != null && typeof useH2c !== 'boolean') {
224
- throw new InvalidArgumentError('useH2c must be a valid boolean value')
225
- }
237
+ if (h2Options.settings?.initialWindowSize != null && (!Number.isInteger(h2Options.settings.initialWindowSize) || h2Options.settings.initialWindowSize < 1)) {
238
+ throw new InvalidArgumentError('h2Options.settings.initialWindowSize must be a positive integer, greater than 0')
239
+ }
226
240
 
227
- if (initialWindowSize != null && (!Number.isInteger(initialWindowSize) || initialWindowSize < 1)) {
228
- throw new InvalidArgumentError('initialWindowSize must be a positive integer, greater than 0')
229
- }
241
+ if (h2Options.maxConcurrentStreams != null && (!Number.isInteger(h2Options.connectionWindowSize) || h2Options.maxConcurrentStreams < 1)) {
242
+ throw new InvalidArgumentError('h2Options.maxConcurrentStreams must be a positive integer, greater than 0')
243
+ }
230
244
 
231
- if (connectionWindowSize != null && (!Number.isInteger(connectionWindowSize) || connectionWindowSize < 1)) {
232
- throw new InvalidArgumentError('connectionWindowSize must be a positive integer, greater than 0')
233
- }
245
+ if (h2Options.connectionWindowSize != null && (!Number.isInteger(h2Options.connectionWindowSize) || h2Options.connectionWindowSize < 1)) {
246
+ throw new InvalidArgumentError('h2Options.connectionWindowSize must be a positive integer, greater than 0')
247
+ }
248
+
249
+ if (h2Options.pingInterval != null && (typeof h2Options.pingInterval !== 'number' || !Number.isInteger(h2Options.pingInterval) || h2Options.pingInterval < 0)) {
250
+ throw new InvalidArgumentError('h2Options.pingInterval must be a positive integer, greater or equal to 0')
251
+ }
252
+ } else {
253
+ if (useH2c != null && typeof useH2c !== 'boolean') {
254
+ emitH2OptionsNamespaceWarning('useH2c')
255
+ throw new InvalidArgumentError('useH2c must be a valid boolean value')
256
+ }
257
+
258
+ if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {
259
+ emitH2OptionsNamespaceWarning('maxConcurrentStreams')
260
+ throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0')
261
+ }
234
262
 
235
- if (pingInterval != null && (typeof pingInterval !== 'number' || !Number.isInteger(pingInterval) || pingInterval < 0)) {
236
- throw new InvalidArgumentError('pingInterval must be a positive integer, greater or equal to 0')
263
+ if (initialWindowSize != null && (!Number.isInteger(initialWindowSize) || initialWindowSize < 1)) {
264
+ emitH2OptionsNamespaceWarning('initialWindowSize')
265
+ throw new InvalidArgumentError('initialWindowSize must be a positive integer, greater than 0')
266
+ }
267
+
268
+ if (connectionWindowSize != null && (!Number.isInteger(connectionWindowSize) || connectionWindowSize < 1)) {
269
+ emitH2OptionsNamespaceWarning('connectionWindowSize')
270
+ throw new InvalidArgumentError('connectionWindowSize must be a positive integer, greater than 0')
271
+ }
272
+
273
+ if (pingInterval != null && (typeof pingInterval !== 'number' || !Number.isInteger(pingInterval) || pingInterval < 0)) {
274
+ emitH2OptionsNamespaceWarning('pingInterval')
275
+ throw new InvalidArgumentError('pingInterval must be a positive integer, greater or equal to 0')
276
+ }
277
+ }
237
278
  }
238
279
 
239
- super({ webSocket })
280
+ super({ webSocket, eventSource })
240
281
 
241
282
  if (typeof connect !== 'function') {
242
283
  connect = buildConnector({
243
284
  ...tls,
244
285
  maxCachedSessions,
245
286
  allowH2,
246
- useH2c,
247
287
  socketPath,
288
+ useH2c: h2Options?.useH2c ?? useH2c,
248
289
  timeout: connectTimeout,
249
290
  ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),
250
291
  ...connect
@@ -280,16 +321,20 @@ class Client extends DispatcherBase {
280
321
  this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1
281
322
  this[kHTTPContext] = null
282
323
  // h2
283
- this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server
284
- // HTTP/2 window sizes are set to higher defaults than Node.js core for better performance:
285
- // - initialWindowSize: 262144 (256KB) vs Node.js default 65535 (64KB - 1)
286
- // Allows more data to be sent before requiring acknowledgment, improving throughput
287
- // especially on high-latency networks. This matches common production HTTP/2 servers.
288
- // - connectionWindowSize: 524288 (512KB) vs Node.js default (none set)
289
- // Provides better flow control for the entire connection across multiple streams.
290
- this[kHTTP2InitialWindowSize] = initialWindowSize != null ? initialWindowSize : 262144
291
- this[kHTTP2ConnectionWindowSize] = connectionWindowSize != null ? connectionWindowSize : 524288
292
- this[kPingInterval] = pingInterval != null ? pingInterval : 60e3 // Default ping interval for h2 - 1 minute
324
+ this[kHTTP2Options] = {
325
+ pingInterval: h2Options?.pingInterval ?? pingInterval ?? 60e3,
326
+ connectionWindowSize: h2Options?.connectionWindowSize ?? connectionWindowSize ?? 524288,
327
+ maxConcurrentStreams: h2Options?.maxConcurrentStreams ?? maxConcurrentStreams ?? 100, // Max peerConcurrentStreams for a Node h2 server
328
+ sessionOptions: {
329
+ // HTTP/2 window sizes are set to higher defaults than Node.js core for better performance:
330
+ // - initialWindowSize: 262144 (256KB) vs Node.js default 65535 (64KB - 1)
331
+ // Allows more data to be sent before requiring acknowledgment, improving throughput
332
+ // especially on high-latency networks. This matches common production HTTP/2 servers.
333
+ // - connectionWindowSize: 524288 (512KB) vs Node.js default (none set)
334
+ // Provides better flow control for the entire connection across multiple streams.
335
+ initialWindowSize: h2Options?.initialWindowSize ?? initialWindowSize ?? 262144
336
+ }
337
+ }
293
338
 
294
339
  // kQueue is built up of 3 sections separated by
295
340
  // the kRunningIdx and kPendingIdx indices.
@@ -672,6 +717,7 @@ function _resume (client, sync) {
672
717
  }
673
718
 
674
719
  if (!client[kHTTPContext]) {
720
+ client[kServerName] = request.servername
675
721
  connect(client)
676
722
  return
677
723
  }
@@ -1,5 +1,6 @@
1
1
  'use strict'
2
2
 
3
+ const buffer = require('node:buffer')
3
4
  const Dispatcher = require('./dispatcher')
4
5
  const {
5
6
  ClientDestroyedError,
@@ -11,6 +12,7 @@ const { kDestroy, kClose, kClosed, kDestroyed, kDispatch } = require('../core/sy
11
12
  const kOnDestroyed = Symbol('onDestroyed')
12
13
  const kOnClosed = Symbol('onClosed')
13
14
  const kWebSocketOptions = Symbol('webSocketOptions')
15
+ const kEventSourceOptions = Symbol('eventSourceOptions')
14
16
 
15
17
  class DispatcherBase extends Dispatcher {
16
18
  /** @type {boolean} */
@@ -31,10 +33,11 @@ class DispatcherBase extends Dispatcher {
31
33
  constructor (opts) {
32
34
  super()
33
35
  this[kWebSocketOptions] = opts?.webSocket ?? {}
36
+ this[kEventSourceOptions] = opts?.eventSource ?? {}
34
37
  }
35
38
 
36
39
  /**
37
- * @returns {import('../../types/dispatcher').WebSocketOptions}
40
+ * @returns {import('../../types/client').Client.WebSocketOptions}
38
41
  */
39
42
  get webSocketOptions () {
40
43
  return {
@@ -43,6 +46,15 @@ class DispatcherBase extends Dispatcher {
43
46
  }
44
47
  }
45
48
 
49
+ /**
50
+ * @returns {import('../../types/client').Client.EventSourceOptions}
51
+ */
52
+ get eventSourceOptions () {
53
+ return {
54
+ maxEventSize: this[kEventSourceOptions].maxEventSize ?? buffer.kStringMaxLength
55
+ }
56
+ }
57
+
46
58
  /** @returns {boolean} */
47
59
  get destroyed () {
48
60
  return this[kDestroyed]
@@ -1,5 +1,6 @@
1
1
  'use strict'
2
2
  const EventEmitter = require('node:events')
3
+ const { kOriginless, kUrl } = require('../core/symbols')
3
4
 
4
5
  class Dispatcher extends EventEmitter {
5
6
  dispatch () {
@@ -17,6 +18,10 @@ class Dispatcher extends EventEmitter {
17
18
  compose (...args) {
18
19
  // So we handle [interceptor1, interceptor2] or interceptor1, interceptor2, ...
19
20
  const interceptors = Array.isArray(args[0]) ? args[0] : args
21
+ // null disables origin-dependent interceptors; undefined uses opts.origin.
22
+ const interceptorOrigin = this[kOriginless] === true
23
+ ? null
24
+ : this[kUrl]?.origin
20
25
  let dispatch = this.dispatch.bind(this)
21
26
 
22
27
  for (const interceptor of interceptors) {
@@ -28,13 +33,22 @@ class Dispatcher extends EventEmitter {
28
33
  throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`)
29
34
  }
30
35
 
31
- dispatch = interceptor(dispatch)
36
+ dispatch = interceptor(dispatch, interceptorOrigin)
32
37
 
33
38
  if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) {
34
39
  throw new TypeError('invalid interceptor')
35
40
  }
36
41
  }
37
42
 
43
+ const originalDispatch = dispatch
44
+ const self = this
45
+ dispatch = function (opts, handler) {
46
+ if (opts && typeof opts === 'object' && !opts.origin && self[kUrl]) {
47
+ opts = Object.assign({}, opts, { origin: self[kUrl].origin })
48
+ }
49
+ return originalDispatch(opts, handler)
50
+ }
51
+
38
52
  return new Proxy(this, {
39
53
  get: (target, key) => key === 'dispatch' ? dispatch : target[key]
40
54
  })
@@ -3,6 +3,7 @@
3
3
  const Dispatcher = require('./dispatcher')
4
4
  const { InvalidArgumentError } = require('../core/errors')
5
5
  const { toRawHeaders } = require('../core/util')
6
+ const { kOriginless, kUrl } = require('../core/symbols')
6
7
 
7
8
  class LegacyHandlerWrapper {
8
9
  #handler
@@ -71,6 +72,8 @@ class Dispatcher1Wrapper extends Dispatcher {
71
72
  }
72
73
 
73
74
  this.#dispatcher = dispatcher
75
+ this[kUrl] = dispatcher[kUrl]
76
+ this[kOriginless] = dispatcher[kOriginless]
74
77
  }
75
78
 
76
79
  static wrapHandler (handler) {