@psnext/slingcli 3.3.20260911-1 → 3.3.20260915-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 (471) hide show
  1. package/README.md +17 -0
  2. package/bin/sling.js +117 -43
  3. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{chunk-VDBOM5UG.js → chunk-VY7PRZDT.js} +2 -2
  4. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/cli.js +1 -1
  5. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/index.js +1 -1
  6. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/rpc-entry.js +1 -1
  7. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js +79 -32
  8. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +2149 -248
  9. package/node_modules/@earendil-works/pi-coding-agent/package.json +1 -0
  10. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +2 -0
  11. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +25 -8
  12. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +2 -0
  13. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.browser.js +2 -0
  14. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.js +23 -8
  15. package/node_modules/@smithy/core/package.json +1 -1
  16. package/node_modules/@types/node/README.md +2 -2
  17. package/node_modules/@types/node/assert/strict.d.ts +13 -56
  18. package/node_modules/@types/node/assert.d.ts +189 -190
  19. package/node_modules/@types/node/async_hooks.d.ts +151 -43
  20. package/node_modules/@types/node/buffer.buffer.d.ts +12 -13
  21. package/node_modules/@types/node/buffer.d.ts +103 -237
  22. package/node_modules/@types/node/child_process.d.ts +39 -154
  23. package/node_modules/@types/node/cluster.d.ts +238 -384
  24. package/node_modules/@types/node/console.d.ts +45 -404
  25. package/node_modules/@types/node/constants.d.ts +3 -10
  26. package/node_modules/@types/node/crypto.d.ts +1000 -1593
  27. package/node_modules/@types/node/dgram.d.ts +133 -81
  28. package/node_modules/@types/node/diagnostics_channel.d.ts +277 -59
  29. package/node_modules/@types/node/dns/promises.d.ts +9 -15
  30. package/node_modules/@types/node/dns.d.ts +136 -183
  31. package/node_modules/@types/node/domain.d.ts +12 -32
  32. package/node_modules/@types/node/events.d.ts +872 -840
  33. package/node_modules/@types/node/ffi.d.ts +486 -0
  34. package/node_modules/@types/node/fs/promises.d.ts +256 -85
  35. package/node_modules/@types/node/fs.d.ts +865 -525
  36. package/node_modules/@types/node/globals.d.ts +12 -34
  37. package/node_modules/@types/node/globals.typedarray.d.ts +63 -0
  38. package/node_modules/@types/node/http.d.ts +433 -312
  39. package/node_modules/@types/node/http2.d.ts +545 -891
  40. package/node_modules/@types/node/https.d.ts +64 -243
  41. package/node_modules/@types/node/index.d.ts +25 -7
  42. package/node_modules/@types/node/inspector/promises.d.ts +35 -0
  43. package/node_modules/@types/node/inspector.d.ts +70 -58
  44. package/node_modules/@types/node/inspector.generated.d.ts +764 -410
  45. package/node_modules/@types/node/module.d.ts +54 -219
  46. package/node_modules/@types/node/net.d.ts +208 -222
  47. package/node_modules/@types/node/os.d.ts +41 -49
  48. package/node_modules/@types/node/package.json +13 -3
  49. package/node_modules/@types/node/path/posix.d.ts +8 -0
  50. package/node_modules/@types/node/path/win32.d.ts +8 -0
  51. package/node_modules/@types/node/path.d.ts +119 -141
  52. package/node_modules/@types/node/perf_hooks.d.ts +339 -690
  53. package/node_modules/@types/node/process.d.ts +389 -205
  54. package/node_modules/@types/node/punycode.d.ts +3 -31
  55. package/node_modules/@types/node/querystring.d.ts +3 -16
  56. package/node_modules/@types/node/quic.d.ts +2153 -0
  57. package/node_modules/@types/node/readline/promises.d.ts +3 -6
  58. package/node_modules/@types/node/readline.d.ts +66 -152
  59. package/node_modules/@types/node/repl.d.ts +101 -109
  60. package/node_modules/@types/node/sea.d.ts +1 -116
  61. package/node_modules/@types/node/sqlite.d.ts +486 -68
  62. package/node_modules/@types/node/stream/consumers.d.ts +91 -15
  63. package/node_modules/@types/node/stream/iter.d.ts +452 -0
  64. package/node_modules/@types/node/stream/promises.d.ts +136 -15
  65. package/node_modules/@types/node/stream/web.d.ts +197 -454
  66. package/node_modules/@types/node/stream.d.ts +603 -491
  67. package/node_modules/@types/node/string_decoder.d.ts +3 -43
  68. package/node_modules/@types/node/test/reporters.d.ts +59 -0
  69. package/node_modules/@types/node/test.d.ts +513 -292
  70. package/node_modules/@types/node/timers/promises.d.ts +3 -18
  71. package/node_modules/@types/node/timers.d.ts +3 -141
  72. package/node_modules/@types/node/tls.d.ts +166 -257
  73. package/node_modules/@types/node/trace_events.d.ts +3 -97
  74. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +7 -8
  75. package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  76. package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +2 -0
  77. package/node_modules/@types/node/ts5.6/index.d.ts +26 -6
  78. package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  79. package/node_modules/@types/node/ts5.7/index.d.ts +118 -0
  80. package/node_modules/@types/node/tty.d.ts +61 -43
  81. package/node_modules/@types/node/url.d.ts +156 -584
  82. package/node_modules/@types/node/util/types.d.ts +558 -0
  83. package/node_modules/@types/node/util.d.ts +170 -1099
  84. package/node_modules/@types/node/v8.d.ts +175 -36
  85. package/node_modules/@types/node/vfs.d.ts +211 -0
  86. package/node_modules/@types/node/vm.d.ts +292 -209
  87. package/node_modules/@types/node/wasi.d.ts +24 -74
  88. package/node_modules/@types/node/web-globals/abortcontroller.d.ts +27 -2
  89. package/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  90. package/node_modules/@types/node/web-globals/console.d.ts +9 -0
  91. package/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  92. package/node_modules/@types/node/web-globals/domexception.d.ts +15 -0
  93. package/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  94. package/node_modules/@types/node/web-globals/events.d.ts +9 -0
  95. package/node_modules/@types/node/web-globals/fetch.d.ts +14 -0
  96. package/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  97. package/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  98. package/node_modules/@types/node/web-globals/navigator.d.ts +3 -0
  99. package/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  100. package/node_modules/@types/node/web-globals/streams.d.ts +97 -0
  101. package/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  102. package/node_modules/@types/node/web-globals/url.d.ts +24 -0
  103. package/node_modules/@types/node/worker_threads.d.ts +257 -407
  104. package/node_modules/@types/node/zlib/iter.d.ts +131 -0
  105. package/node_modules/@types/node/zlib.d.ts +24 -165
  106. package/node_modules/brace-expansion/dist/commonjs/index.d.ts +4 -0
  107. package/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +1 -1
  108. package/node_modules/brace-expansion/dist/commonjs/index.js +69 -25
  109. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  110. package/node_modules/brace-expansion/dist/esm/index.d.ts +4 -0
  111. package/node_modules/brace-expansion/dist/esm/index.d.ts.map +1 -1
  112. package/node_modules/brace-expansion/dist/esm/index.js +68 -24
  113. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  114. package/node_modules/brace-expansion/package.json +2 -1
  115. package/node_modules/fast-uri/index.js +10 -6
  116. package/node_modules/fast-uri/package.json +1 -1
  117. package/node_modules/fast-uri/test/security-normalization.test.js +38 -0
  118. package/node_modules/hono/README.md +1 -1
  119. package/node_modules/hono/dist/adapter/aws-lambda/handler.js +5 -4
  120. package/node_modules/hono/dist/cjs/adapter/aws-lambda/handler.js +5 -4
  121. package/node_modules/hono/dist/cjs/context.js +1 -1
  122. package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +1 -1
  123. package/node_modules/hono/dist/cjs/jsx/dom/render.js +44 -8
  124. package/node_modules/hono/dist/cjs/middleware/language/language.js +4 -1
  125. package/node_modules/hono/dist/cjs/request.js +4 -1
  126. package/node_modules/hono/dist/cjs/utils/accept.js +4 -7
  127. package/node_modules/hono/dist/context.js +1 -1
  128. package/node_modules/hono/dist/helper/accepts/accepts.js +1 -1
  129. package/node_modules/hono/dist/jsx/dom/render.js +44 -8
  130. package/node_modules/hono/dist/middleware/language/language.js +4 -1
  131. package/node_modules/hono/dist/request.js +4 -1
  132. package/node_modules/hono/dist/types/helper/proxy/index.d.ts +1 -1
  133. package/node_modules/hono/dist/types/helper/route/index.d.ts +2 -2
  134. package/node_modules/hono/dist/types/middleware/combine/index.d.ts +3 -1
  135. package/node_modules/hono/dist/types/utils/types.d.ts +1 -1
  136. package/node_modules/hono/dist/utils/accept.js +4 -7
  137. package/node_modules/hono/package.json +1 -1
  138. package/node_modules/ip-address/README.md +114 -114
  139. package/node_modules/ip-address/dist/common.d.ts +5 -0
  140. package/node_modules/ip-address/dist/common.js +12 -0
  141. package/node_modules/ip-address/dist/common.js.map +1 -1
  142. package/node_modules/ip-address/dist/ipv4.d.ts +5 -1
  143. package/node_modules/ip-address/dist/ipv4.js +12 -1
  144. package/node_modules/ip-address/dist/ipv4.js.map +1 -1
  145. package/node_modules/ip-address/dist/ipv6.d.ts +5 -1
  146. package/node_modules/ip-address/dist/ipv6.js +15 -1
  147. package/node_modules/ip-address/dist/ipv6.js.map +1 -1
  148. package/node_modules/ip-address/package.json +1 -1
  149. package/node_modules/proxy-addr/HISTORY.md +60 -54
  150. package/node_modules/proxy-addr/README.md +1 -1
  151. package/node_modules/proxy-addr/index.js +32 -0
  152. package/node_modules/proxy-addr/package.json +8 -4
  153. package/node_modules/undici-types/agent.d.ts +12 -13
  154. package/node_modules/undici-types/api.d.ts +26 -26
  155. package/node_modules/undici-types/balanced-pool.d.ts +13 -12
  156. package/node_modules/undici-types/cache-interceptor.d.ts +179 -0
  157. package/node_modules/undici-types/client-stats.d.ts +15 -0
  158. package/node_modules/undici-types/client.d.ts +63 -37
  159. package/node_modules/undici-types/connector.d.ts +5 -2
  160. package/node_modules/undici-types/cookies.d.ts +3 -1
  161. package/node_modules/undici-types/diagnostics-channel.d.ts +18 -10
  162. package/node_modules/undici-types/dispatcher.d.ts +136 -139
  163. package/node_modules/undici-types/dispatcher1-wrapper.d.ts +7 -0
  164. package/node_modules/undici-types/env-http-proxy-agent.d.ts +4 -3
  165. package/node_modules/undici-types/errors.d.ts +92 -54
  166. package/node_modules/undici-types/eventsource.d.ts +9 -4
  167. package/node_modules/undici-types/fetch.d.ts +51 -25
  168. package/node_modules/undici-types/formdata.d.ts +7 -7
  169. package/node_modules/undici-types/global-dispatcher.d.ts +4 -4
  170. package/node_modules/undici-types/global-origin.d.ts +5 -5
  171. package/node_modules/undici-types/h2c-client.d.ts +73 -0
  172. package/node_modules/undici-types/handlers.d.ts +10 -9
  173. package/node_modules/undici-types/header.d.ts +162 -1
  174. package/node_modules/undici-types/index.d.ts +69 -47
  175. package/node_modules/undici-types/interceptors.d.ts +72 -9
  176. package/node_modules/undici-types/mock-agent.d.ts +36 -18
  177. package/node_modules/undici-types/mock-call-history.d.ts +111 -0
  178. package/node_modules/undici-types/mock-client.d.ts +6 -4
  179. package/node_modules/undici-types/mock-errors.d.ts +3 -3
  180. package/node_modules/undici-types/mock-interceptor.d.ts +26 -21
  181. package/node_modules/undici-types/mock-pool.d.ts +6 -4
  182. package/node_modules/undici-types/package.json +1 -1
  183. package/node_modules/undici-types/patch.d.ts +0 -4
  184. package/node_modules/undici-types/pool-stats.d.ts +8 -8
  185. package/node_modules/undici-types/pool.d.ts +14 -14
  186. package/node_modules/undici-types/proxy-agent.d.ts +14 -6
  187. package/node_modules/undici-types/readable.d.ts +19 -16
  188. package/node_modules/undici-types/retry-agent.d.ts +1 -1
  189. package/node_modules/undici-types/retry-handler.d.ts +19 -10
  190. package/node_modules/undici-types/round-robin-pool.d.ts +39 -0
  191. package/node_modules/undici-types/snapshot-agent.d.ts +113 -0
  192. package/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
  193. package/node_modules/undici-types/util.d.ts +3 -3
  194. package/node_modules/undici-types/utility.d.ts +7 -0
  195. package/node_modules/undici-types/webidl.d.ts +148 -30
  196. package/node_modules/undici-types/websocket.d.ts +48 -10
  197. package/node_modules/zod/README.md +2 -2
  198. package/node_modules/zod/package.json +1 -1
  199. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  200. package/node_modules/zod/src/v4/classic/schemas.ts +14 -30
  201. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +1 -0
  202. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +2 -11
  203. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +0 -4
  204. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +22 -0
  205. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +1 -1
  206. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  207. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +53 -137
  208. package/node_modules/zod/src/v4/classic/tests/string.test.ts +70 -1
  209. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +87 -35
  210. package/node_modules/zod/src/v4/core/api.ts +21 -29
  211. package/node_modules/zod/src/v4/core/checks.ts +61 -1
  212. package/node_modules/zod/src/v4/core/compile.ts +35 -24
  213. package/node_modules/zod/src/v4/core/core.ts +1 -3
  214. package/node_modules/zod/src/v4/core/json-schema-processors.ts +9 -63
  215. package/node_modules/zod/src/v4/core/memoizer.ts +2 -5
  216. package/node_modules/zod/src/v4/core/regexes.ts +4 -0
  217. package/node_modules/zod/src/v4/core/schemas.ts +36 -109
  218. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  219. package/node_modules/zod/src/v4/core/tests/compile.test.ts +177 -0
  220. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  221. package/node_modules/zod/src/v4/core/to-json-schema.ts +1 -1
  222. package/node_modules/zod/src/v4/core/util.ts +0 -4
  223. package/node_modules/zod/src/v4/core/versions.ts +1 -1
  224. package/node_modules/zod/src/v4/core/visit.ts +0 -11
  225. package/node_modules/zod/src/v4/locales/ar.ts +1 -0
  226. package/node_modules/zod/src/v4/locales/az.ts +1 -0
  227. package/node_modules/zod/src/v4/locales/be.ts +1 -0
  228. package/node_modules/zod/src/v4/locales/bg.ts +1 -0
  229. package/node_modules/zod/src/v4/locales/bn.ts +1 -0
  230. package/node_modules/zod/src/v4/locales/ca.ts +1 -0
  231. package/node_modules/zod/src/v4/locales/ckb.ts +1 -0
  232. package/node_modules/zod/src/v4/locales/cs.ts +1 -0
  233. package/node_modules/zod/src/v4/locales/da.ts +1 -0
  234. package/node_modules/zod/src/v4/locales/de.ts +1 -0
  235. package/node_modules/zod/src/v4/locales/el.ts +1 -0
  236. package/node_modules/zod/src/v4/locales/en.ts +1 -0
  237. package/node_modules/zod/src/v4/locales/eo.ts +1 -0
  238. package/node_modules/zod/src/v4/locales/es.ts +1 -0
  239. package/node_modules/zod/src/v4/locales/fa.ts +1 -0
  240. package/node_modules/zod/src/v4/locales/fi.ts +1 -0
  241. package/node_modules/zod/src/v4/locales/fr-CA.ts +1 -0
  242. package/node_modules/zod/src/v4/locales/fr.ts +1 -0
  243. package/node_modules/zod/src/v4/locales/gu.ts +1 -0
  244. package/node_modules/zod/src/v4/locales/he.ts +1 -0
  245. package/node_modules/zod/src/v4/locales/hi.ts +1 -0
  246. package/node_modules/zod/src/v4/locales/hr.ts +1 -0
  247. package/node_modules/zod/src/v4/locales/hu.ts +1 -0
  248. package/node_modules/zod/src/v4/locales/hy.ts +1 -0
  249. package/node_modules/zod/src/v4/locales/id.ts +1 -0
  250. package/node_modules/zod/src/v4/locales/is.ts +1 -0
  251. package/node_modules/zod/src/v4/locales/it.ts +1 -0
  252. package/node_modules/zod/src/v4/locales/ja.ts +1 -0
  253. package/node_modules/zod/src/v4/locales/ka.ts +1 -0
  254. package/node_modules/zod/src/v4/locales/km.ts +1 -0
  255. package/node_modules/zod/src/v4/locales/kn.ts +1 -0
  256. package/node_modules/zod/src/v4/locales/ko.ts +1 -0
  257. package/node_modules/zod/src/v4/locales/lt.ts +1 -0
  258. package/node_modules/zod/src/v4/locales/mk.ts +1 -0
  259. package/node_modules/zod/src/v4/locales/ms.ts +1 -0
  260. package/node_modules/zod/src/v4/locales/ne.ts +1 -0
  261. package/node_modules/zod/src/v4/locales/nl.ts +1 -0
  262. package/node_modules/zod/src/v4/locales/nn.ts +1 -0
  263. package/node_modules/zod/src/v4/locales/no.ts +1 -0
  264. package/node_modules/zod/src/v4/locales/ota.ts +1 -0
  265. package/node_modules/zod/src/v4/locales/pl.ts +1 -0
  266. package/node_modules/zod/src/v4/locales/ps.ts +1 -0
  267. package/node_modules/zod/src/v4/locales/pt-BR.ts +1 -0
  268. package/node_modules/zod/src/v4/locales/pt.ts +1 -0
  269. package/node_modules/zod/src/v4/locales/ro.ts +1 -0
  270. package/node_modules/zod/src/v4/locales/ru.ts +1 -0
  271. package/node_modules/zod/src/v4/locales/sk.ts +1 -0
  272. package/node_modules/zod/src/v4/locales/sl.ts +1 -0
  273. package/node_modules/zod/src/v4/locales/sv.ts +1 -0
  274. package/node_modules/zod/src/v4/locales/ta.ts +1 -0
  275. package/node_modules/zod/src/v4/locales/tg.ts +1 -0
  276. package/node_modules/zod/src/v4/locales/th.ts +1 -0
  277. package/node_modules/zod/src/v4/locales/tk.ts +1 -0
  278. package/node_modules/zod/src/v4/locales/tr.ts +1 -0
  279. package/node_modules/zod/src/v4/locales/uk.ts +1 -0
  280. package/node_modules/zod/src/v4/locales/ur.ts +1 -0
  281. package/node_modules/zod/src/v4/locales/uz.ts +1 -0
  282. package/node_modules/zod/src/v4/locales/vi.ts +1 -0
  283. package/node_modules/zod/src/v4/locales/yo.ts +1 -0
  284. package/node_modules/zod/src/v4/locales/zh-CN.ts +1 -0
  285. package/node_modules/zod/src/v4/locales/zh-TW.ts +1 -0
  286. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  287. package/node_modules/zod/src/v4/mini/schemas.ts +12 -23
  288. package/node_modules/zod/src/v4/mini/tests/index.test.ts +56 -0
  289. package/node_modules/zod/src/v4/mini/tests/string.test.ts +7 -0
  290. package/node_modules/zod/v4/classic/checks.cjs +2 -1
  291. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  292. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  293. package/node_modules/zod/v4/classic/checks.js +1 -1
  294. package/node_modules/zod/v4/classic/schemas.cjs +11 -15
  295. package/node_modules/zod/v4/classic/schemas.d.cts +4 -6
  296. package/node_modules/zod/v4/classic/schemas.d.ts +4 -6
  297. package/node_modules/zod/v4/classic/schemas.js +9 -13
  298. package/node_modules/zod/v4/core/api.cjs +11 -23
  299. package/node_modules/zod/v4/core/api.d.cts +8 -4
  300. package/node_modules/zod/v4/core/api.d.ts +8 -4
  301. package/node_modules/zod/v4/core/api.js +11 -23
  302. package/node_modules/zod/v4/core/checks.cjs +32 -1
  303. package/node_modules/zod/v4/core/checks.d.cts +16 -0
  304. package/node_modules/zod/v4/core/checks.d.ts +16 -0
  305. package/node_modules/zod/v4/core/checks.js +31 -0
  306. package/node_modules/zod/v4/core/compile.cjs +12 -17
  307. package/node_modules/zod/v4/core/compile.js +13 -18
  308. package/node_modules/zod/v4/core/core.cjs +1 -1
  309. package/node_modules/zod/v4/core/core.js +1 -1
  310. package/node_modules/zod/v4/core/json-schema-processors.cjs +8 -44
  311. package/node_modules/zod/v4/core/json-schema-processors.d.cts +0 -1
  312. package/node_modules/zod/v4/core/json-schema-processors.d.ts +0 -1
  313. package/node_modules/zod/v4/core/json-schema-processors.js +8 -43
  314. package/node_modules/zod/v4/core/memoizer.cjs +2 -5
  315. package/node_modules/zod/v4/core/memoizer.js +2 -5
  316. package/node_modules/zod/v4/core/regexes.cjs +4 -2
  317. package/node_modules/zod/v4/core/regexes.d.cts +1 -0
  318. package/node_modules/zod/v4/core/regexes.d.ts +1 -0
  319. package/node_modules/zod/v4/core/regexes.js +2 -0
  320. package/node_modules/zod/v4/core/schemas.cjs +33 -73
  321. package/node_modules/zod/v4/core/schemas.d.cts +7 -22
  322. package/node_modules/zod/v4/core/schemas.d.ts +7 -22
  323. package/node_modules/zod/v4/core/schemas.js +30 -72
  324. package/node_modules/zod/v4/core/to-json-schema.cjs +0 -1
  325. package/node_modules/zod/v4/core/to-json-schema.d.cts +0 -3
  326. package/node_modules/zod/v4/core/to-json-schema.d.ts +0 -3
  327. package/node_modules/zod/v4/core/to-json-schema.js +1 -1
  328. package/node_modules/zod/v4/core/util.cjs +0 -4
  329. package/node_modules/zod/v4/core/util.js +0 -4
  330. package/node_modules/zod/v4/core/versions.cjs +1 -1
  331. package/node_modules/zod/v4/core/versions.js +1 -1
  332. package/node_modules/zod/v4/core/visit.cjs +0 -12
  333. package/node_modules/zod/v4/core/visit.js +0 -12
  334. package/node_modules/zod/v4/locales/ar.cjs +1 -0
  335. package/node_modules/zod/v4/locales/ar.js +1 -0
  336. package/node_modules/zod/v4/locales/az.cjs +1 -0
  337. package/node_modules/zod/v4/locales/az.js +1 -0
  338. package/node_modules/zod/v4/locales/be.cjs +1 -0
  339. package/node_modules/zod/v4/locales/be.js +1 -0
  340. package/node_modules/zod/v4/locales/bg.cjs +1 -0
  341. package/node_modules/zod/v4/locales/bg.js +1 -0
  342. package/node_modules/zod/v4/locales/bn.cjs +1 -0
  343. package/node_modules/zod/v4/locales/bn.js +1 -0
  344. package/node_modules/zod/v4/locales/ca.cjs +1 -0
  345. package/node_modules/zod/v4/locales/ca.js +1 -0
  346. package/node_modules/zod/v4/locales/ckb.cjs +1 -0
  347. package/node_modules/zod/v4/locales/ckb.js +1 -0
  348. package/node_modules/zod/v4/locales/cs.cjs +1 -0
  349. package/node_modules/zod/v4/locales/cs.js +1 -0
  350. package/node_modules/zod/v4/locales/da.cjs +1 -0
  351. package/node_modules/zod/v4/locales/da.js +1 -0
  352. package/node_modules/zod/v4/locales/de.cjs +1 -0
  353. package/node_modules/zod/v4/locales/de.js +1 -0
  354. package/node_modules/zod/v4/locales/el.cjs +1 -0
  355. package/node_modules/zod/v4/locales/el.js +1 -0
  356. package/node_modules/zod/v4/locales/en.cjs +1 -0
  357. package/node_modules/zod/v4/locales/en.js +1 -0
  358. package/node_modules/zod/v4/locales/eo.cjs +1 -0
  359. package/node_modules/zod/v4/locales/eo.js +1 -0
  360. package/node_modules/zod/v4/locales/es.cjs +1 -0
  361. package/node_modules/zod/v4/locales/es.js +1 -0
  362. package/node_modules/zod/v4/locales/fa.cjs +1 -0
  363. package/node_modules/zod/v4/locales/fa.js +1 -0
  364. package/node_modules/zod/v4/locales/fi.cjs +1 -0
  365. package/node_modules/zod/v4/locales/fi.js +1 -0
  366. package/node_modules/zod/v4/locales/fr-CA.cjs +1 -0
  367. package/node_modules/zod/v4/locales/fr-CA.js +1 -0
  368. package/node_modules/zod/v4/locales/fr.cjs +1 -0
  369. package/node_modules/zod/v4/locales/fr.js +1 -0
  370. package/node_modules/zod/v4/locales/gu.cjs +1 -0
  371. package/node_modules/zod/v4/locales/gu.js +1 -0
  372. package/node_modules/zod/v4/locales/he.cjs +1 -0
  373. package/node_modules/zod/v4/locales/he.js +1 -0
  374. package/node_modules/zod/v4/locales/hi.cjs +1 -0
  375. package/node_modules/zod/v4/locales/hi.js +1 -0
  376. package/node_modules/zod/v4/locales/hr.cjs +1 -0
  377. package/node_modules/zod/v4/locales/hr.js +1 -0
  378. package/node_modules/zod/v4/locales/hu.cjs +1 -0
  379. package/node_modules/zod/v4/locales/hu.js +1 -0
  380. package/node_modules/zod/v4/locales/hy.cjs +1 -0
  381. package/node_modules/zod/v4/locales/hy.js +1 -0
  382. package/node_modules/zod/v4/locales/id.cjs +1 -0
  383. package/node_modules/zod/v4/locales/id.js +1 -0
  384. package/node_modules/zod/v4/locales/is.cjs +1 -0
  385. package/node_modules/zod/v4/locales/is.js +1 -0
  386. package/node_modules/zod/v4/locales/it.cjs +1 -0
  387. package/node_modules/zod/v4/locales/it.js +1 -0
  388. package/node_modules/zod/v4/locales/ja.cjs +1 -0
  389. package/node_modules/zod/v4/locales/ja.js +1 -0
  390. package/node_modules/zod/v4/locales/ka.cjs +1 -0
  391. package/node_modules/zod/v4/locales/ka.js +1 -0
  392. package/node_modules/zod/v4/locales/km.cjs +1 -0
  393. package/node_modules/zod/v4/locales/km.js +1 -0
  394. package/node_modules/zod/v4/locales/kn.cjs +1 -0
  395. package/node_modules/zod/v4/locales/kn.js +1 -0
  396. package/node_modules/zod/v4/locales/ko.cjs +1 -0
  397. package/node_modules/zod/v4/locales/ko.js +1 -0
  398. package/node_modules/zod/v4/locales/lt.cjs +1 -0
  399. package/node_modules/zod/v4/locales/lt.js +1 -0
  400. package/node_modules/zod/v4/locales/mk.cjs +1 -0
  401. package/node_modules/zod/v4/locales/mk.js +1 -0
  402. package/node_modules/zod/v4/locales/ms.cjs +1 -0
  403. package/node_modules/zod/v4/locales/ms.js +1 -0
  404. package/node_modules/zod/v4/locales/ne.cjs +1 -0
  405. package/node_modules/zod/v4/locales/ne.js +1 -0
  406. package/node_modules/zod/v4/locales/nl.cjs +1 -0
  407. package/node_modules/zod/v4/locales/nl.js +1 -0
  408. package/node_modules/zod/v4/locales/nn.cjs +1 -0
  409. package/node_modules/zod/v4/locales/nn.js +1 -0
  410. package/node_modules/zod/v4/locales/no.cjs +1 -0
  411. package/node_modules/zod/v4/locales/no.js +1 -0
  412. package/node_modules/zod/v4/locales/ota.cjs +1 -0
  413. package/node_modules/zod/v4/locales/ota.js +1 -0
  414. package/node_modules/zod/v4/locales/pl.cjs +1 -0
  415. package/node_modules/zod/v4/locales/pl.js +1 -0
  416. package/node_modules/zod/v4/locales/ps.cjs +1 -0
  417. package/node_modules/zod/v4/locales/ps.js +1 -0
  418. package/node_modules/zod/v4/locales/pt-BR.cjs +1 -0
  419. package/node_modules/zod/v4/locales/pt-BR.js +1 -0
  420. package/node_modules/zod/v4/locales/pt.cjs +1 -0
  421. package/node_modules/zod/v4/locales/pt.js +1 -0
  422. package/node_modules/zod/v4/locales/ro.cjs +1 -0
  423. package/node_modules/zod/v4/locales/ro.js +1 -0
  424. package/node_modules/zod/v4/locales/ru.cjs +1 -0
  425. package/node_modules/zod/v4/locales/ru.js +1 -0
  426. package/node_modules/zod/v4/locales/sk.cjs +1 -0
  427. package/node_modules/zod/v4/locales/sk.js +1 -0
  428. package/node_modules/zod/v4/locales/sl.cjs +1 -0
  429. package/node_modules/zod/v4/locales/sl.js +1 -0
  430. package/node_modules/zod/v4/locales/sv.cjs +1 -0
  431. package/node_modules/zod/v4/locales/sv.js +1 -0
  432. package/node_modules/zod/v4/locales/ta.cjs +1 -0
  433. package/node_modules/zod/v4/locales/ta.js +1 -0
  434. package/node_modules/zod/v4/locales/tg.cjs +1 -0
  435. package/node_modules/zod/v4/locales/tg.js +1 -0
  436. package/node_modules/zod/v4/locales/th.cjs +1 -0
  437. package/node_modules/zod/v4/locales/th.js +1 -0
  438. package/node_modules/zod/v4/locales/tk.cjs +1 -0
  439. package/node_modules/zod/v4/locales/tk.js +1 -0
  440. package/node_modules/zod/v4/locales/tr.cjs +1 -0
  441. package/node_modules/zod/v4/locales/tr.js +1 -0
  442. package/node_modules/zod/v4/locales/uk.cjs +1 -0
  443. package/node_modules/zod/v4/locales/uk.js +1 -0
  444. package/node_modules/zod/v4/locales/ur.cjs +1 -0
  445. package/node_modules/zod/v4/locales/ur.js +1 -0
  446. package/node_modules/zod/v4/locales/uz.cjs +1 -0
  447. package/node_modules/zod/v4/locales/uz.js +1 -0
  448. package/node_modules/zod/v4/locales/vi.cjs +1 -0
  449. package/node_modules/zod/v4/locales/vi.js +1 -0
  450. package/node_modules/zod/v4/locales/yo.cjs +1 -0
  451. package/node_modules/zod/v4/locales/yo.js +1 -0
  452. package/node_modules/zod/v4/locales/zh-CN.cjs +1 -0
  453. package/node_modules/zod/v4/locales/zh-CN.js +1 -0
  454. package/node_modules/zod/v4/locales/zh-TW.cjs +1 -0
  455. package/node_modules/zod/v4/locales/zh-TW.js +1 -0
  456. package/node_modules/zod/v4/mini/checks.cjs +2 -1
  457. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  458. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  459. package/node_modules/zod/v4/mini/checks.js +1 -1
  460. package/node_modules/zod/v4/mini/schemas.cjs +11 -13
  461. package/node_modules/zod/v4/mini/schemas.d.cts +1 -4
  462. package/node_modules/zod/v4/mini/schemas.d.ts +1 -4
  463. package/node_modules/zod/v4/mini/schemas.js +9 -11
  464. package/package.json +2 -2
  465. package/slingshot/index.js +268 -264
  466. package/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  467. package/node_modules/@types/node/compatibility/index.d.ts +0 -9
  468. package/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  469. package/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
  470. package/node_modules/undici-types/file.d.ts +0 -39
  471. package/node_modules/undici-types/filereader.d.ts +0 -54
@@ -1787,6 +1787,183 @@ test("compiled records walk own enumerable keys without Reflect.ownKeys", () =>
1787
1787
  expect(compile(plain).parse(revealing())).toStrictEqual({ a: 1, b: 2 });
1788
1788
  });
1789
1789
 
1790
+ test("validate honors custom checks composed with format traits", () => {
1791
+ const postProcessor = z.core.globalConfig.postProcessor;
1792
+ z.core.globalConfig.postProcessor = undefined;
1793
+ try {
1794
+ const CustomEmail = z.core.$constructor<z.core.$ZodEmail>("CustomEmail", (inst, def) => {
1795
+ inst._zod.check = (payload) => {
1796
+ if (payload.value !== "custom") payload.issues.push({ code: "custom", input: payload.value });
1797
+ };
1798
+ z.core.$ZodEmail.init(inst, def);
1799
+ });
1800
+ const schema = new CustomEmail({ type: "string", format: "email", check: "string_format" });
1801
+ for (const [input, valid] of [
1802
+ ["custom", true],
1803
+ ["test@example.com", false],
1804
+ [42, false],
1805
+ ] as const) {
1806
+ expect(z.safeParse(schema, input).success).toBe(valid);
1807
+ expect(z.validate(schema, input)).toBe(valid);
1808
+ }
1809
+ } finally {
1810
+ z.core.globalConfig.postProcessor = postProcessor;
1811
+ }
1812
+ });
1813
+
1814
+ test("validate honors standalone format checks", () => {
1815
+ const cases = [
1816
+ [z.iso.datetime(), "2021-01-01T00:00:00Z"],
1817
+ [z.iso.date(), "2021-01-01"],
1818
+ [z.iso.time(), "00:00:00"],
1819
+ [z.iso.duration(), "P1Y2M3DT4H5M6S"],
1820
+ [z.email(), "test@example.com"],
1821
+ [z.uuid(), "20354d7a-e4fe-47af-8ff6-187bca92f3f9"],
1822
+ [z.ipv4(), "192.168.0.1"],
1823
+ ] as const;
1824
+
1825
+ for (const [schema, valid] of cases) {
1826
+ expect(schema._zod.traits.has("$ZodStringFormat")).toBe(true);
1827
+ expect(schema instanceof z.core.$ZodStringFormat).toBe(true);
1828
+ expect(z.validate(schema, valid)).toBe(true);
1829
+ expect(z.validate(schema, "invalid")).toBe(false);
1830
+ expect(z.validate(schema, 1)).toBe(false);
1831
+ }
1832
+
1833
+ const source = z.email();
1834
+ const refined = source.refine((value) => value.startsWith("x"));
1835
+ const asyncRefined = source.refine(async () => true);
1836
+ const coercedDef = Object.assign(Object.create({ coerce: true }), source._zod.def);
1837
+ const coerced = source.clone(coercedDef);
1838
+ const checkedDef = Object.assign(Object.create({ checks: refined._zod.def.checks }), source._zod.def);
1839
+ const inheritedChecked = source.clone(checkedDef);
1840
+ expect(z.validate(refined, "test@example.com")).toBe(false);
1841
+ expect(z.validate(refined, "x@example.com")).toBe(true);
1842
+ expect(z.validate(inheritedChecked, "test@example.com")).toBe(false);
1843
+ expect(() => z.validate(asyncRefined, "test@example.com")).toThrow($ZodAsyncError);
1844
+ expect(z.validate(coerced, { toString: () => "test@example.com" })).toBe(true);
1845
+ });
1846
+
1847
+ test("runtime validate preserves contexts, getters, errors, and regex state", () => {
1848
+ const postProcessor = z.core.globalConfig.postProcessor;
1849
+ z.core.globalConfig.postProcessor = undefined;
1850
+ try {
1851
+ const source = z.email();
1852
+ expect(z.validate(source, "invalid", { skipChecks: true } as any)).toBe(true);
1853
+
1854
+ let whenReads = 0;
1855
+ const whenProto = Object.defineProperty({}, "when", {
1856
+ enumerable: true,
1857
+ get() {
1858
+ whenReads++;
1859
+ return () => false;
1860
+ },
1861
+ });
1862
+ const whenDef = Object.assign(Object.create(whenProto), source._zod.def);
1863
+ const gated = source.clone(whenDef as typeof source._zod.def);
1864
+ expect(whenReads).toBe(0);
1865
+ expect(z.validate(gated, "invalid")).toBe(true);
1866
+ expect(whenReads).toBeGreaterThan(0);
1867
+
1868
+ let errorReads = 0;
1869
+ const errorDef = Object.defineProperties({}, Object.getOwnPropertyDescriptors(source._zod.def));
1870
+ Object.defineProperty(errorDef, "error", {
1871
+ enumerable: true,
1872
+ get() {
1873
+ errorReads++;
1874
+ return () => "custom";
1875
+ },
1876
+ });
1877
+ const customError = source.clone(errorDef as typeof source._zod.def);
1878
+ expect(z.validate(customError, "invalid")).toBe(false);
1879
+ expect(errorReads).toBe(0);
1880
+ const result = customError.safeParse("invalid");
1881
+ expect(errorReads).toBe(0);
1882
+ if (result.success) expect.unreachable();
1883
+ expect(result.error.issues[0]?.message).toBe("custom");
1884
+ expect(errorReads).toBeGreaterThan(0);
1885
+
1886
+ const pattern = /^a$/g;
1887
+ const cloned = source.clone({ ...source._zod.def, pattern });
1888
+ for (let i = 0; i < 3; i++) expect(z.validate(cloned, "a")).toBe(true);
1889
+ expect(z.validate(cloned, "b")).toBe(false);
1890
+ expect(pattern.lastIndex).toBe(0);
1891
+ const replacement = /^b$/g;
1892
+ cloned._zod.def.pattern = replacement;
1893
+ expect(z.validate(cloned, "a")).toBe(false);
1894
+ expect(z.validate(cloned, "b")).toBe(true);
1895
+ } finally {
1896
+ z.core.globalConfig.postProcessor = postProcessor;
1897
+ }
1898
+ });
1899
+
1900
+ test("validate preserves live pattern accessor reads", () => {
1901
+ const postProcessor = z.core.globalConfig.postProcessor;
1902
+ z.core.globalConfig.postProcessor = undefined;
1903
+ try {
1904
+ const schema = z.email();
1905
+ let reads = 0;
1906
+ Object.defineProperty(schema.def, "pattern", {
1907
+ get: () => (++reads % 2 === 1 ? /^a$/ : /^b$/),
1908
+ });
1909
+ expect(schema.safeParse("b").success).toBe(true);
1910
+ expect(reads).toBe(2);
1911
+ reads = 0;
1912
+ expect(z.validate(schema, "b")).toBe(true);
1913
+ expect(reads).toBe(2);
1914
+ } finally {
1915
+ z.core.globalConfig.postProcessor = postProcessor;
1916
+ }
1917
+ });
1918
+
1919
+ test.each(["when", "coerce"] as const)("runtime validate honors live %s options", (option) => {
1920
+ const postProcessor = z.core.globalConfig.postProcessor;
1921
+ z.core.globalConfig.postProcessor = undefined;
1922
+ try {
1923
+ for (const inherited of [false, true]) {
1924
+ const schema = z.email();
1925
+ const input = option === "when" ? "invalid" : { toString: () => "test@example.com" };
1926
+ expect(z.validate(schema, input)).toBe(false);
1927
+
1928
+ const target = inherited ? Object.create(Object.getPrototypeOf(schema.def)) : schema.def;
1929
+ let reads = 0;
1930
+ Object.defineProperty(target, option, {
1931
+ get() {
1932
+ reads++;
1933
+ return option === "when" ? () => false : true;
1934
+ },
1935
+ });
1936
+ if (inherited) Object.setPrototypeOf(schema.def, target);
1937
+ expect(reads).toBe(0);
1938
+ expect(z.validate(schema, input)).toBe(true);
1939
+ expect(reads).toBeGreaterThan(0);
1940
+ expect(schema.safeParse(input).success).toBe(true);
1941
+ }
1942
+ } finally {
1943
+ z.core.globalConfig.postProcessor = postProcessor;
1944
+ }
1945
+ });
1946
+
1947
+ test("validate uses compiled validators and runtime fallbacks", () => {
1948
+ const compiled = compile(z.email());
1949
+ expect((compiled._zod.bag as { validator?: unknown }).validator).toBeTypeOf("function");
1950
+ expect(z.validate(compiled, "test@example.com")).toBe(true);
1951
+ expect(z.validate(compiled, "invalid")).toBe(false);
1952
+ expect(z.validate(compiled, "invalid", { skipChecks: true } as any)).toBe(true);
1953
+
1954
+ const source = z.email();
1955
+ const installed = withParser(source, () => INVALID);
1956
+ const bag = installed._zod.bag as { fallbackRun: typeof source._zod.run };
1957
+ const originalRun = bag.fallbackRun;
1958
+ let fallbackRuns = 0;
1959
+ bag.fallbackRun = (payload, ctx) => {
1960
+ fallbackRuns++;
1961
+ return originalRun(payload, ctx);
1962
+ };
1963
+ expect(z.validate(installed, "invalid")).toBe(false);
1964
+ expect(fallbackRuns).toBeGreaterThan(0);
1965
+ });
1966
+
1790
1967
  // withParser: a parser Zod did not generate, installed on the same wrapper compile() uses.
1791
1968
 
1792
1969
  // tags its output so a test fails loudly if the runtime ran instead of the supplied parser
@@ -1,31 +1,133 @@
1
1
  import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
2
2
 
3
- // schemas.ts resolves URL.canParse on first use, not at module load. Resetting the module registry gives the re-imported copy a fresh, unresolved `urlCanParseImpl`, so deleting URL.canParse before the first parse still selects the inline fallback branch (URL.canParse may be undefined on older runtimes).
4
- describe("z.url() with URL.canParse absent", () => {
5
- const original = URL.canParse;
3
+ const URLDescriptor = Object.getOwnPropertyDescriptor(globalThis, "URL")!;
4
+ const NativeURL = globalThis.URL;
5
+ const canParseDescriptor = Object.getOwnPropertyDescriptor(NativeURL, "canParse")!;
6
+ const parseDescriptor = Object.getOwnPropertyDescriptor(NativeURL, "parse")!;
6
7
 
8
+ function restoreURL() {
9
+ Object.defineProperty(globalThis, "URL", URLDescriptor);
10
+ Object.defineProperty(NativeURL, "canParse", canParseDescriptor);
11
+ Object.defineProperty(NativeURL, "parse", parseDescriptor);
12
+ }
13
+
14
+ describe("URL parser fallbacks", () => {
7
15
  beforeEach(() => {
16
+ restoreURL();
8
17
  vi.resetModules();
9
- // @ts-expect-error force the fallback branch (URL.canParse may be undefined on older runtimes)
10
- delete URL.canParse;
11
18
  });
12
19
 
13
- afterEach(() => {
14
- URL.canParse = original;
20
+ afterEach(restoreURL);
21
+
22
+ test("uses the boolean and object APIs on modern runtimes", async () => {
23
+ const canParse = vi.spyOn(NativeURL, "canParse");
24
+ const URLStatic = NativeURL as typeof URL & { parse: (input: string) => URL | null };
25
+ const parse = vi.spyOn(URLStatic, "parse");
26
+ const z = await import("../../index.js");
27
+
28
+ expect(z.validate(z.url(), "https://example.com")).toBe(true);
29
+ expect(canParse).toHaveBeenCalledOnce();
30
+ expect(parse).not.toHaveBeenCalled();
31
+
32
+ canParse.mockClear();
33
+ expect(z.validate(z.url({ normalize: true }), "https://example.com")).toBe(true);
34
+ expect(parse).toHaveBeenCalledOnce();
35
+ expect(canParse).not.toHaveBeenCalled();
36
+
37
+ parse.mockClear();
38
+ expect(z.validate(z.ipv6(), "2001:db8::1")).toBe(true);
39
+ expect(canParse).toHaveBeenCalledOnce();
40
+ expect(parse).not.toHaveBeenCalled();
15
41
  });
16
42
 
17
- test("z.url() validates correctly without URL.canParse (runtime)", async () => {
18
- expect(URL.canParse).toBeUndefined();
43
+ test("URL fast-path selection preserves live option getter reads", async () => {
19
44
  const z = await import("../../index.js");
20
- expect(z.url().safeParse("https://example.com").success).toBe(true);
21
- expect(z.url().safeParse("not a url").success).toBe(false);
45
+ const postProcessor = z.core.globalConfig.postProcessor;
46
+ z.core.globalConfig.postProcessor = undefined;
47
+ try {
48
+ for (const inherited of [false, true]) {
49
+ const schema = z.url();
50
+ const target = inherited ? Object.create(Object.getPrototypeOf(schema.def)) : schema.def;
51
+ let reads = 0;
52
+ Object.defineProperty(target, "hostname", {
53
+ get: () => (++reads === 1 ? /^example\.com$/ : undefined),
54
+ });
55
+ if (inherited) Object.setPrototypeOf(schema.def, target);
56
+ expect(z.validate(schema, "https://example.com")).toBe(false);
57
+ expect(reads).toBe(2);
58
+ reads = 0;
59
+ expect(schema.safeParse("https://example.com").success).toBe(false);
60
+ expect(reads).toBe(2);
61
+ }
62
+ } finally {
63
+ z.core.globalConfig.postProcessor = postProcessor;
64
+ }
65
+ });
66
+
67
+ test("the exported object parser still returns a URL", async () => {
68
+ const { parseURLObject } = await import("../schemas.js");
69
+ const result = parseURLObject("https://example.com", {});
70
+ expect(result).toBeInstanceOf(NativeURL);
71
+ if (typeof result === "number") expect.unreachable();
72
+ expect(result.hostname).toBe("example.com");
73
+ expect(parseURLObject("invalid", {})).toBe(2);
22
74
  });
23
75
 
24
- test("z.url() validates correctly without URL.canParse (compiled)", async () => {
25
- expect(URL.canParse).toBeUndefined();
76
+ test("falls back when URL.canParse is absent", async () => {
77
+ Reflect.deleteProperty(NativeURL, "canParse");
26
78
  const z = await import("../../index.js");
27
- const compiled = z.compile(z.url());
28
- expect(compiled.safeParse("https://example.com").success).toBe(true);
29
- expect(compiled.safeParse("not a url").success).toBe(false);
79
+ const cases = [
80
+ [z.url(), "https://example.com", "not a url"],
81
+ [z.ipv6(), "2001:db8::1", "not-an-ip"],
82
+ [z.cidrv6(), "2001:db8::/32", "not-an-ip/32"],
83
+ ] as const;
84
+
85
+ for (const [schema, valid, invalid] of cases) {
86
+ for (const subject of [schema, z.compile(schema)]) {
87
+ expect(z.validate(subject, valid)).toBe(true);
88
+ expect(z.validate(subject, invalid)).toBe(false);
89
+ expect(subject.safeParse(valid).success).toBe(true);
90
+ expect(subject.safeParse(invalid).success).toBe(false);
91
+ }
92
+ }
93
+ });
94
+
95
+ test("falls back when URL.parse is absent", async () => {
96
+ Reflect.deleteProperty(NativeURL, "parse");
97
+ const z = await import("../../index.js");
98
+ const cases = [
99
+ [z.url({ normalize: true }), "https://example.com", "not a url"],
100
+ [z.url({ hostname: /^example\.com$/ }), "https://example.com", "https://other.com"],
101
+ [z.httpUrl(), "https://example.com", "mailto:a@example.com"],
102
+ ] as const;
103
+
104
+ for (const [schema, valid, invalid] of cases) {
105
+ for (const subject of [schema, z.compile(schema)]) {
106
+ expect(z.validate(subject, valid)).toBe(true);
107
+ expect(z.validate(subject, invalid)).toBe(false);
108
+ expect(subject.safeParse(valid).success).toBe(true);
109
+ expect(subject.safeParse(invalid).success).toBe(false);
110
+ }
111
+ }
112
+ });
113
+
114
+ test("rejects without a global URL constructor", async () => {
115
+ const z = await import("../../index.js");
116
+ const cases = [
117
+ [z.url(), "https://example.com"],
118
+ [z.url({ normalize: true }), "https://example.com"],
119
+ [z.ipv6(), "2001:db8::1"],
120
+ [z.cidrv6(), "2001:db8::/32"],
121
+ ] as const;
122
+ const subjects = cases.flatMap(([schema, input]) => [
123
+ [schema, input] as const,
124
+ [z.compile(schema), input] as const,
125
+ ]);
126
+ Object.defineProperty(globalThis, "URL", { configurable: true, value: undefined });
127
+
128
+ for (const [schema, input] of subjects) {
129
+ expect(z.validate(schema, input)).toBe(false);
130
+ expect(schema.safeParse(input).success).toBe(false);
131
+ }
30
132
  });
31
133
  });
@@ -757,7 +757,7 @@ export function finalize<T extends schemas.$ZodType>(
757
757
  }
758
758
  }
759
759
 
760
- export function isTransforming(
760
+ function isTransforming(
761
761
  _schema: schemas.$ZodType,
762
762
  _ctx?: {
763
763
  seen: Set<schemas.$ZodType>;
@@ -1125,10 +1125,6 @@ export function members(proto: object, table: object): void {
1125
1125
  // a method materializes bound on first read, which is what keeps a detached member working: `const opt = schema.optional; opt()`
1126
1126
  else defineBound(proto, key, desc.value);
1127
1127
  }
1128
- // for..in sees no symbol keys, so well-known members like Symbol.iterator install here
1129
- for (const sym of Object.getOwnPropertySymbols(table)) {
1130
- defineBound(proto, sym, (table as any)[sym]);
1131
- }
1132
1128
  }
1133
1129
 
1134
1130
  /** Shadows a prototype member with an own value, so a getter that builds from the instance runs once. */
@@ -1,5 +1,5 @@
1
1
  export const version = {
2
2
  major: 4,
3
3
  minor: 6,
4
- patch: 2 as number,
4
+ patch: 5 as number,
5
5
  } as const;
@@ -158,17 +158,6 @@ export function visit(schema: schemas.SomeType, fnOrHandlers: VisitFn | VisitHan
158
158
  const { _cachedInner, ...rest } = def;
159
159
  return clone(s, { ...rest, getter: () => run(original()) });
160
160
  }
161
- case "properties": {
162
- const oldShape = def.shape as Record<string | symbol, AnyZod>;
163
- let changed = false;
164
- const newShape: Record<string | symbol, AnyZod> = {};
165
- for (const k of Reflect.ownKeys(oldShape)) {
166
- const mapped = run(oldShape[k]!);
167
- if (mapped !== oldShape[k]) changed = true;
168
- newShape[k] = mapped;
169
- }
170
- return changed ? clone(s, { ...def, shape: newShape }) : s;
171
- }
172
161
  // A leaf by choice: `parts` are regex fragments, not data positions.
173
162
  case "template_literal":
174
163
  // Leaves.
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "نَص على هيئة JSON",
47
47
  e164: "رقم هاتف بمعيار E.164",
48
48
  credit_card: "رقم بطاقة الائتمان",
49
+ currency_code: "رمز العملة",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "مدخل",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON string",
47
47
  e164: "E.164 number",
48
48
  credit_card: "kredit kartı nömrəsi",
49
+ currency_code: "valyuta kodu",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "input",
@@ -109,6 +109,7 @@ const error: () => errors.$ZodErrorMap = () => {
109
109
  json_string: "JSON радок",
110
110
  e164: "нумар E.164",
111
111
  credit_card: "нумар крэдытнай карты",
112
+ currency_code: "код валюты",
112
113
  iban: "IBAN",
113
114
  jwt: "JWT",
114
115
  template_literal: "увод",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON низ",
47
47
  e164: "E.164 номер",
48
48
  credit_card: "номер на кредитна карта",
49
+ currency_code: "код на валута",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "вход",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON স্ট্রিং",
47
47
  e164: "E.164 নম্বর",
48
48
  credit_card: "ক্রেডিট কার্ড নম্বর",
49
+ currency_code: "মুদ্রা কোড",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "ইনপুট",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "cadena JSON",
47
47
  e164: "número E.164",
48
48
  credit_card: "número de targeta de crèdit",
49
+ currency_code: "codi de moneda",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "entrada",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "دەقی JSON",
47
47
  e164: "ژمارەی E.164",
48
48
  credit_card: "ژمارەی کارتی کرێدیت",
49
+ currency_code: "کۆدی دراو",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "تێکردە",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "řetězec ve formátu JSON",
47
47
  e164: "číslo E.164",
48
48
  credit_card: "číslo kreditní karty",
49
+ currency_code: "kód měny",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "vstup",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON-streng",
47
47
  e164: "E.164-nummer",
48
48
  credit_card: "kreditkortnummer",
49
+ currency_code: "valutakode",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "input",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON-String",
47
47
  e164: "E.164-Nummer",
48
48
  credit_card: "Kreditkartennummer",
49
+ currency_code: "Währungscode",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "Eingabe",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "συμβολοσειρά JSON",
47
47
  e164: "αριθμός E.164",
48
48
  credit_card: "αριθμός πιστωτικής κάρτας",
49
+ currency_code: "κωδικός νομίσματος",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "είσοδος",
@@ -45,6 +45,7 @@ const error: () => errors.$ZodErrorMap = () => {
45
45
  base64url: "base64url-encoded string",
46
46
  json_string: "JSON string",
47
47
  e164: "E.164 number",
48
+ currency_code: "currency code",
48
49
  credit_card: "credit card number",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON-karaktraro",
47
47
  e164: "E.164-nombro",
48
48
  credit_card: "kreditkarta numero",
49
+ currency_code: "valuta kodo",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "enigo",
@@ -45,6 +45,7 @@ const error: () => errors.$ZodErrorMap = () => {
45
45
  json_string: "cadena JSON",
46
46
  e164: "número E.164",
47
47
  credit_card: "número de tarjeta de crédito",
48
+ currency_code: "código de moneda",
48
49
  iban: "IBAN",
49
50
  jwt: "JWT",
50
51
  template_literal: "entrada",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON رشته",
47
47
  e164: "E.164 عدد",
48
48
  credit_card: "شماره کارت اعتباری",
49
+ currency_code: "کد ارز",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "ورودی",
@@ -50,6 +50,7 @@ const error: () => errors.$ZodErrorMap = () => {
50
50
  json_string: "JSON-merkkijono",
51
51
  e164: "E.164-luku",
52
52
  credit_card: "luottokortin numero",
53
+ currency_code: "valuuttakoodi",
53
54
  iban: "IBAN",
54
55
  jwt: "JWT",
55
56
  template_literal: "templaattimerkkijono",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "chaîne JSON",
47
47
  e164: "numéro E.164",
48
48
  credit_card: "numéro de carte de crédit",
49
+ currency_code: "code de devise",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "entrée",
@@ -45,6 +45,7 @@ const error: () => errors.$ZodErrorMap = () => {
45
45
  json_string: "chaîne de caractères JSON",
46
46
  e164: "numéro au format E.164",
47
47
  credit_card: "numéro de carte de crédit",
48
+ currency_code: "code de devise",
48
49
  iban: "IBAN",
49
50
  jwt: "JWT",
50
51
  template_literal: "entrée",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON સ્ટ્રિંગ",
47
47
  e164: "E.164 નંબર",
48
48
  credit_card: "ક્રેડિટ કાર્ડ નંબર",
49
+ currency_code: "ચલણ કોડ",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "ઇનપુટ",
@@ -88,6 +88,7 @@ const error: () => errors.$ZodErrorMap = () => {
88
88
  json_string: { label: "מחרוזת JSON", gender: "f" },
89
89
  e164: { label: "מספר E.164", gender: "m" },
90
90
  credit_card: { label: "מספר כרטיס אשראי", gender: "m" },
91
+ currency_code: { label: "קוד מטבע", gender: "m" },
91
92
  iban: { label: "IBAN", gender: "m" },
92
93
  jwt: { label: "JWT", gender: "m" },
93
94
  template_literal: { label: "קלט", gender: "m" },
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON स्ट्रिंग",
47
47
  e164: "E.164 संख्या",
48
48
  credit_card: "क्रेडिट कार्ड संख्या",
49
+ currency_code: "मुद्रा कोड",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "इनपुट",
@@ -45,6 +45,7 @@ const error: () => errors.$ZodErrorMap = () => {
45
45
  json_string: "JSON tekst",
46
46
  e164: "E.164 broj",
47
47
  credit_card: "broj kreditne kartice",
48
+ currency_code: "kod valute",
48
49
  iban: "IBAN",
49
50
  jwt: "JWT",
50
51
  template_literal: "unos",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON string",
47
47
  e164: "E.164 szám",
48
48
  credit_card: "hitelkártyaszám",
49
+ currency_code: "pénznemkód",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "bemenet",
@@ -95,6 +95,7 @@ const error: () => errors.$ZodErrorMap = () => {
95
95
  json_string: "JSON տող",
96
96
  e164: "E.164 համար",
97
97
  credit_card: "կրեդիտ քարտի համար",
98
+ currency_code: "արժույթի կոդ",
98
99
  iban: "IBAN",
99
100
  jwt: "JWT",
100
101
  template_literal: "մուտք",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "string JSON",
47
47
  e164: "angka E.164",
48
48
  credit_card: "nomor kartu kredit",
49
+ currency_code: "kode mata uang",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "input",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON strengur",
47
47
  e164: "E.164 tölugildi",
48
48
  credit_card: "kreditkortanúmer",
49
+ currency_code: "gjaldmiðilskóði",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "gildi",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "stringa JSON",
47
47
  e164: "numero E.164",
48
48
  credit_card: "numero di carta di credito",
49
+ currency_code: "codice valuta",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "input",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON文字列",
47
47
  e164: "E.164番号",
48
48
  credit_card: "クレジットカード番号",
49
+ currency_code: "通貨コード",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "入力値",
@@ -46,6 +46,7 @@ const error: () => errors.$ZodErrorMap = () => {
46
46
  json_string: "JSON ველი",
47
47
  e164: "E.164 ნომერი",
48
48
  credit_card: "საკრედიტო ბარათის ნომერი",
49
+ currency_code: "ვალუტის კოდი",
49
50
  iban: "IBAN",
50
51
  jwt: "JWT",
51
52
  template_literal: "შეყვანა",