@openclaw/zalo 2026.9.4 → 2026.9.5

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 (510) hide show
  1. package/assets/activity.svg +40 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/{actions.runtime-2MsIGd0H.js → .setup/actions.runtime-DZsb7I67.mjs} +1 -1
  4. package/dist/.setup/api-BPF84XFR.mjs +6 -0
  5. package/dist/{channel-mgXGK008.js → .setup/channel-D14b6qHz.mjs} +11 -9
  6. package/dist/{channel.runtime-aikbF-5l.js → .setup/channel.runtime-BA2foB5C.mjs} +3 -3
  7. package/dist/{monitor-CXlZtCk9.js → .setup/monitor-Cu5XdWDg.mjs} +5 -5
  8. package/dist/{monitor.webhook-DOCUBaE5.js → .setup/monitor.webhook-SDR5zoSA.mjs} +2 -2
  9. package/dist/.setup/secret-contract-api-DKDS_ZlS.mjs +3 -0
  10. package/dist/{send-CIMDH1gH.js → .setup/send-C01aoqEH.mjs} +31 -13
  11. package/dist/{setup-surface--Y84d_LY.js → .setup/setup-surface-CNyPRzlv.mjs} +1 -1
  12. package/dist/{webhook-spool-CPxf_Kwe.js → .setup/webhook-spool-nmnflXt2.mjs} +2 -2
  13. package/dist/api.js +3 -3
  14. package/dist/channel-plugin-api.js +1 -1
  15. package/dist/contract-api.js +1 -1
  16. package/dist/runtime-api.js +1 -1
  17. package/dist/secret-contract-api.js +1 -1
  18. package/dist/setup-api.js +2 -2
  19. package/dist/setup-entry.js +3 -2
  20. package/dist/setup-surface.js +2 -2
  21. package/node_modules/zod/README.md +27 -0
  22. package/node_modules/zod/compile.cjs +77 -0
  23. package/node_modules/zod/compile.d.cts +1 -0
  24. package/node_modules/zod/compile.d.ts +1 -0
  25. package/node_modules/zod/compile.js +52 -0
  26. package/node_modules/zod/index.cjs +2 -2
  27. package/node_modules/zod/index.d.cts +1 -2
  28. package/node_modules/zod/index.d.ts +1 -2
  29. package/node_modules/zod/index.js +5 -2
  30. package/node_modules/zod/package.json +13 -2
  31. package/node_modules/zod/src/compile.ts +56 -0
  32. package/node_modules/zod/src/index.ts +5 -2
  33. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  34. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  35. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  36. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  37. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  38. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  39. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  40. package/node_modules/zod/src/v3/types.ts +5 -5
  41. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  42. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  43. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  44. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  45. package/node_modules/zod/src/v4/classic/external.ts +12 -9
  46. package/node_modules/zod/src/v4/classic/from-json-schema.ts +140 -78
  47. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  48. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  49. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  50. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  51. package/node_modules/zod/src/v4/classic/schemas.ts +452 -262
  52. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  53. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  54. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +135 -0
  55. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +30 -1
  56. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  57. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  58. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  59. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  60. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  61. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +720 -0
  62. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  63. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  64. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  65. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  66. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  67. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  68. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +155 -13
  69. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +11 -0
  70. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  71. package/node_modules/zod/src/v4/classic/tests/error.test.ts +274 -6
  72. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +425 -10
  73. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  74. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  75. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  76. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  77. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  78. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +281 -0
  79. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +47 -0
  80. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  81. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +183 -0
  82. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  83. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  84. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  85. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  86. package/node_modules/zod/src/v4/classic/tests/number.test.ts +46 -9
  87. package/node_modules/zod/src/v4/classic/tests/object.test.ts +245 -12
  88. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +234 -0
  89. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  90. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  91. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  92. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  93. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  94. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +33 -2
  95. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  96. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  97. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  98. package/node_modules/zod/src/v4/classic/tests/string.test.ts +127 -5
  99. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  100. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +11 -2
  101. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1585 -173
  102. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  103. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  104. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +76 -0
  105. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  106. package/node_modules/zod/src/v4/core/api.ts +48 -12
  107. package/node_modules/zod/src/v4/core/checks.ts +57 -44
  108. package/node_modules/zod/src/v4/core/compile.ts +2188 -0
  109. package/node_modules/zod/src/v4/core/core.ts +98 -19
  110. package/node_modules/zod/src/v4/core/doc.ts +11 -7
  111. package/node_modules/zod/src/v4/core/errors.ts +115 -24
  112. package/node_modules/zod/src/v4/core/index.ts +3 -0
  113. package/node_modules/zod/src/v4/core/json-schema-generator.ts +6 -1
  114. package/node_modules/zod/src/v4/core/json-schema-processors.ts +257 -93
  115. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  116. package/node_modules/zod/src/v4/core/memoizer.ts +284 -0
  117. package/node_modules/zod/src/v4/core/parse.ts +131 -38
  118. package/node_modules/zod/src/v4/core/regexes.ts +30 -13
  119. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  120. package/node_modules/zod/src/v4/core/schemas.ts +759 -461
  121. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +969 -0
  122. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  123. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  124. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  125. package/node_modules/zod/src/v4/core/tests/compile.test.ts +1639 -0
  126. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  127. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  128. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  129. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  130. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  131. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  132. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +31 -0
  133. package/node_modules/zod/src/v4/core/to-json-schema.ts +275 -42
  134. package/node_modules/zod/src/v4/core/util.ts +268 -42
  135. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  136. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  137. package/node_modules/zod/src/v4/index.ts +3 -3
  138. package/node_modules/zod/src/v4/locales/ar.ts +3 -0
  139. package/node_modules/zod/src/v4/locales/az.ts +3 -0
  140. package/node_modules/zod/src/v4/locales/be.ts +10 -0
  141. package/node_modules/zod/src/v4/locales/bg.ts +3 -0
  142. package/node_modules/zod/src/v4/locales/bn.ts +121 -0
  143. package/node_modules/zod/src/v4/locales/ca.ts +3 -0
  144. package/node_modules/zod/src/v4/locales/ckb.ts +138 -0
  145. package/node_modules/zod/src/v4/locales/cs.ts +3 -0
  146. package/node_modules/zod/src/v4/locales/da.ts +5 -2
  147. package/node_modules/zod/src/v4/locales/de.ts +3 -0
  148. package/node_modules/zod/src/v4/locales/el.ts +1 -0
  149. package/node_modules/zod/src/v4/locales/en.ts +15 -4
  150. package/node_modules/zod/src/v4/locales/eo.ts +3 -0
  151. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  152. package/node_modules/zod/src/v4/locales/fa.ts +3 -0
  153. package/node_modules/zod/src/v4/locales/fi.ts +3 -0
  154. package/node_modules/zod/src/v4/locales/fr-CA.ts +3 -0
  155. package/node_modules/zod/src/v4/locales/fr.ts +19 -14
  156. package/node_modules/zod/src/v4/locales/gu.ts +121 -0
  157. package/node_modules/zod/src/v4/locales/he.ts +6 -1
  158. package/node_modules/zod/src/v4/locales/hi.ts +124 -0
  159. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  160. package/node_modules/zod/src/v4/locales/hu.ts +3 -0
  161. package/node_modules/zod/src/v4/locales/hy.ts +9 -0
  162. package/node_modules/zod/src/v4/locales/id.ts +3 -0
  163. package/node_modules/zod/src/v4/locales/index.ts +10 -0
  164. package/node_modules/zod/src/v4/locales/is.ts +3 -0
  165. package/node_modules/zod/src/v4/locales/it.ts +3 -0
  166. package/node_modules/zod/src/v4/locales/ja.ts +3 -0
  167. package/node_modules/zod/src/v4/locales/ka.ts +3 -0
  168. package/node_modules/zod/src/v4/locales/km.ts +3 -0
  169. package/node_modules/zod/src/v4/locales/kn.ts +124 -0
  170. package/node_modules/zod/src/v4/locales/ko.ts +3 -0
  171. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  172. package/node_modules/zod/src/v4/locales/mk.ts +3 -0
  173. package/node_modules/zod/src/v4/locales/ms.ts +3 -0
  174. package/node_modules/zod/src/v4/locales/ne.ts +126 -0
  175. package/node_modules/zod/src/v4/locales/nl.ts +3 -0
  176. package/node_modules/zod/src/v4/locales/nn.ts +119 -0
  177. package/node_modules/zod/src/v4/locales/no.ts +5 -2
  178. package/node_modules/zod/src/v4/locales/ota.ts +3 -0
  179. package/node_modules/zod/src/v4/locales/pl.ts +3 -0
  180. package/node_modules/zod/src/v4/locales/ps.ts +3 -0
  181. package/node_modules/zod/src/v4/locales/pt-BR.ts +159 -0
  182. package/node_modules/zod/src/v4/locales/pt.ts +99 -58
  183. package/node_modules/zod/src/v4/locales/ro.ts +1 -0
  184. package/node_modules/zod/src/v4/locales/ru.ts +10 -0
  185. package/node_modules/zod/src/v4/locales/sk.ts +121 -0
  186. package/node_modules/zod/src/v4/locales/sl.ts +3 -0
  187. package/node_modules/zod/src/v4/locales/sv.ts +5 -2
  188. package/node_modules/zod/src/v4/locales/ta.ts +3 -0
  189. package/node_modules/zod/src/v4/locales/th.ts +3 -0
  190. package/node_modules/zod/src/v4/locales/tk.ts +111 -0
  191. package/node_modules/zod/src/v4/locales/tr.ts +3 -0
  192. package/node_modules/zod/src/v4/locales/uk.ts +3 -0
  193. package/node_modules/zod/src/v4/locales/ur.ts +3 -0
  194. package/node_modules/zod/src/v4/locales/uz.ts +1 -0
  195. package/node_modules/zod/src/v4/locales/vi.ts +3 -0
  196. package/node_modules/zod/src/v4/locales/yo.ts +3 -0
  197. package/node_modules/zod/src/v4/locales/zh-CN.ts +3 -0
  198. package/node_modules/zod/src/v4/locales/zh-TW.ts +3 -0
  199. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  200. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  201. package/node_modules/zod/src/v4/mini/external.ts +10 -1
  202. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  203. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  204. package/node_modules/zod/src/v4/mini/schemas.ts +135 -56
  205. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  206. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  207. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  208. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  209. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  210. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  211. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  212. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  213. package/node_modules/zod/src/v4/mini/tests/index.test.ts +72 -5
  214. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  215. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  216. package/node_modules/zod/src/v4/mini/tests/string.test.ts +21 -0
  217. package/node_modules/zod/v3/ZodError.cjs +22 -12
  218. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  219. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  220. package/node_modules/zod/v3/ZodError.js +22 -12
  221. package/node_modules/zod/v3/types.cjs +7 -5
  222. package/node_modules/zod/v3/types.js +7 -5
  223. package/node_modules/zod/v4/classic/checks.cjs +2 -1
  224. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  225. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  226. package/node_modules/zod/v4/classic/checks.js +1 -1
  227. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  228. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  229. package/node_modules/zod/v4/classic/deep-partial.cjs +39 -0
  230. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  231. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  232. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  233. package/node_modules/zod/v4/classic/errors.cjs +43 -34
  234. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  235. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  236. package/node_modules/zod/v4/classic/errors.js +43 -34
  237. package/node_modules/zod/v4/classic/external.cjs +30 -27
  238. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  239. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  240. package/node_modules/zod/v4/classic/external.js +5 -8
  241. package/node_modules/zod/v4/classic/from-json-schema.cjs +136 -75
  242. package/node_modules/zod/v4/classic/from-json-schema.js +136 -75
  243. package/node_modules/zod/v4/classic/in-out.cjs +63 -0
  244. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  245. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  246. package/node_modules/zod/v4/classic/in-out.js +36 -0
  247. package/node_modules/zod/v4/classic/index.cjs +2 -2
  248. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  249. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  250. package/node_modules/zod/v4/classic/index.js +2 -2
  251. package/node_modules/zod/v4/classic/iso.cjs +11 -22
  252. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  253. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  254. package/node_modules/zod/v4/classic/iso.js +2 -17
  255. package/node_modules/zod/v4/classic/parse.cjs +4 -1
  256. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  257. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  258. package/node_modules/zod/v4/classic/parse.js +1 -0
  259. package/node_modules/zod/v4/classic/schemas.cjs +498 -398
  260. package/node_modules/zod/v4/classic/schemas.d.cts +53 -18
  261. package/node_modules/zod/v4/classic/schemas.d.ts +53 -18
  262. package/node_modules/zod/v4/classic/schemas.js +492 -396
  263. package/node_modules/zod/v4/core/api.cjs +23 -4
  264. package/node_modules/zod/v4/core/api.d.cts +13 -9
  265. package/node_modules/zod/v4/core/api.d.ts +13 -9
  266. package/node_modules/zod/v4/core/api.js +21 -4
  267. package/node_modules/zod/v4/core/checks.cjs +37 -31
  268. package/node_modules/zod/v4/core/checks.d.cts +13 -13
  269. package/node_modules/zod/v4/core/checks.d.ts +13 -13
  270. package/node_modules/zod/v4/core/checks.js +37 -31
  271. package/node_modules/zod/v4/core/compile.cjs +1813 -0
  272. package/node_modules/zod/v4/core/compile.d.cts +51 -0
  273. package/node_modules/zod/v4/core/compile.d.ts +51 -0
  274. package/node_modules/zod/v4/core/compile.js +1783 -0
  275. package/node_modules/zod/v4/core/core.cjs +81 -18
  276. package/node_modules/zod/v4/core/core.d.cts +16 -4
  277. package/node_modules/zod/v4/core/core.d.ts +16 -4
  278. package/node_modules/zod/v4/core/core.js +82 -19
  279. package/node_modules/zod/v4/core/doc.cjs +5 -7
  280. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  281. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  282. package/node_modules/zod/v4/core/doc.js +5 -7
  283. package/node_modules/zod/v4/core/errors.cjs +110 -25
  284. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  285. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  286. package/node_modules/zod/v4/core/errors.js +110 -25
  287. package/node_modules/zod/v4/core/index.cjs +5 -1
  288. package/node_modules/zod/v4/core/index.d.cts +3 -0
  289. package/node_modules/zod/v4/core/index.d.ts +3 -0
  290. package/node_modules/zod/v4/core/index.js +3 -0
  291. package/node_modules/zod/v4/core/json-schema-generator.cjs +4 -0
  292. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  293. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  294. package/node_modules/zod/v4/core/json-schema-generator.js +4 -0
  295. package/node_modules/zod/v4/core/json-schema-processors.cjs +264 -95
  296. package/node_modules/zod/v4/core/json-schema-processors.js +243 -97
  297. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  298. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  299. package/node_modules/zod/v4/core/memoizer.cjs +272 -0
  300. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  301. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  302. package/node_modules/zod/v4/core/memoizer.js +265 -0
  303. package/node_modules/zod/v4/core/parse.cjs +96 -34
  304. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  305. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  306. package/node_modules/zod/v4/core/parse.js +94 -33
  307. package/node_modules/zod/v4/core/regexes.cjs +27 -15
  308. package/node_modules/zod/v4/core/regexes.d.cts +2 -0
  309. package/node_modules/zod/v4/core/regexes.d.ts +2 -0
  310. package/node_modules/zod/v4/core/regexes.js +24 -13
  311. package/node_modules/zod/v4/core/registries.js +2 -2
  312. package/node_modules/zod/v4/core/schemas.cjs +537 -326
  313. package/node_modules/zod/v4/core/schemas.d.cts +100 -31
  314. package/node_modules/zod/v4/core/schemas.d.ts +100 -31
  315. package/node_modules/zod/v4/core/schemas.js +526 -325
  316. package/node_modules/zod/v4/core/to-json-schema.cjs +242 -39
  317. package/node_modules/zod/v4/core/to-json-schema.d.cts +42 -3
  318. package/node_modules/zod/v4/core/to-json-schema.d.ts +42 -3
  319. package/node_modules/zod/v4/core/to-json-schema.js +241 -39
  320. package/node_modules/zod/v4/core/util.cjs +212 -31
  321. package/node_modules/zod/v4/core/util.d.cts +58 -1
  322. package/node_modules/zod/v4/core/util.d.ts +58 -1
  323. package/node_modules/zod/v4/core/util.js +202 -30
  324. package/node_modules/zod/v4/core/versions.cjs +2 -2
  325. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  326. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  327. package/node_modules/zod/v4/core/versions.js +2 -2
  328. package/node_modules/zod/v4/core/visit.cjs +195 -0
  329. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  330. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  331. package/node_modules/zod/v4/core/visit.js +169 -0
  332. package/node_modules/zod/v4/index.cjs +15 -5
  333. package/node_modules/zod/v4/index.d.cts +2 -2
  334. package/node_modules/zod/v4/index.d.ts +2 -2
  335. package/node_modules/zod/v4/index.js +3 -2
  336. package/node_modules/zod/v4/locales/ar.cjs +3 -0
  337. package/node_modules/zod/v4/locales/ar.js +3 -0
  338. package/node_modules/zod/v4/locales/az.cjs +3 -0
  339. package/node_modules/zod/v4/locales/az.js +3 -0
  340. package/node_modules/zod/v4/locales/be.cjs +10 -0
  341. package/node_modules/zod/v4/locales/be.js +10 -0
  342. package/node_modules/zod/v4/locales/bg.cjs +3 -0
  343. package/node_modules/zod/v4/locales/bg.js +3 -0
  344. package/node_modules/zod/v4/locales/bn.cjs +138 -0
  345. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  346. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  347. package/node_modules/zod/v4/locales/bn.js +111 -0
  348. package/node_modules/zod/v4/locales/ca.cjs +3 -0
  349. package/node_modules/zod/v4/locales/ca.js +3 -0
  350. package/node_modules/zod/v4/locales/ckb.cjs +158 -0
  351. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  352. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  353. package/node_modules/zod/v4/locales/ckb.js +131 -0
  354. package/node_modules/zod/v4/locales/cs.cjs +3 -0
  355. package/node_modules/zod/v4/locales/cs.js +3 -0
  356. package/node_modules/zod/v4/locales/da.cjs +5 -2
  357. package/node_modules/zod/v4/locales/da.js +5 -2
  358. package/node_modules/zod/v4/locales/de.cjs +3 -0
  359. package/node_modules/zod/v4/locales/de.js +3 -0
  360. package/node_modules/zod/v4/locales/el.cjs +1 -0
  361. package/node_modules/zod/v4/locales/el.js +1 -0
  362. package/node_modules/zod/v4/locales/en.cjs +14 -4
  363. package/node_modules/zod/v4/locales/en.js +14 -4
  364. package/node_modules/zod/v4/locales/eo.cjs +3 -0
  365. package/node_modules/zod/v4/locales/eo.js +3 -0
  366. package/node_modules/zod/v4/locales/es.cjs +2 -0
  367. package/node_modules/zod/v4/locales/es.js +2 -0
  368. package/node_modules/zod/v4/locales/fa.cjs +3 -0
  369. package/node_modules/zod/v4/locales/fa.js +3 -0
  370. package/node_modules/zod/v4/locales/fi.cjs +3 -0
  371. package/node_modules/zod/v4/locales/fi.js +3 -0
  372. package/node_modules/zod/v4/locales/fr-CA.cjs +3 -0
  373. package/node_modules/zod/v4/locales/fr-CA.js +3 -0
  374. package/node_modules/zod/v4/locales/fr.cjs +16 -14
  375. package/node_modules/zod/v4/locales/fr.js +16 -14
  376. package/node_modules/zod/v4/locales/gu.cjs +138 -0
  377. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  378. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  379. package/node_modules/zod/v4/locales/gu.js +111 -0
  380. package/node_modules/zod/v4/locales/he.cjs +5 -0
  381. package/node_modules/zod/v4/locales/he.js +5 -0
  382. package/node_modules/zod/v4/locales/hi.cjs +136 -0
  383. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  384. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  385. package/node_modules/zod/v4/locales/hi.js +109 -0
  386. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  387. package/node_modules/zod/v4/locales/hr.js +2 -0
  388. package/node_modules/zod/v4/locales/hu.cjs +3 -0
  389. package/node_modules/zod/v4/locales/hu.js +3 -0
  390. package/node_modules/zod/v4/locales/hy.cjs +9 -0
  391. package/node_modules/zod/v4/locales/hy.js +9 -0
  392. package/node_modules/zod/v4/locales/id.cjs +3 -0
  393. package/node_modules/zod/v4/locales/id.js +3 -0
  394. package/node_modules/zod/v4/locales/index.cjs +22 -2
  395. package/node_modules/zod/v4/locales/index.d.cts +10 -0
  396. package/node_modules/zod/v4/locales/index.d.ts +10 -0
  397. package/node_modules/zod/v4/locales/index.js +10 -0
  398. package/node_modules/zod/v4/locales/is.cjs +3 -0
  399. package/node_modules/zod/v4/locales/is.js +3 -0
  400. package/node_modules/zod/v4/locales/it.cjs +3 -0
  401. package/node_modules/zod/v4/locales/it.js +3 -0
  402. package/node_modules/zod/v4/locales/ja.cjs +3 -0
  403. package/node_modules/zod/v4/locales/ja.js +3 -0
  404. package/node_modules/zod/v4/locales/ka.cjs +3 -0
  405. package/node_modules/zod/v4/locales/ka.js +3 -0
  406. package/node_modules/zod/v4/locales/km.cjs +3 -0
  407. package/node_modules/zod/v4/locales/km.js +3 -0
  408. package/node_modules/zod/v4/locales/kn.cjs +141 -0
  409. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  410. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  411. package/node_modules/zod/v4/locales/kn.js +114 -0
  412. package/node_modules/zod/v4/locales/ko.cjs +3 -0
  413. package/node_modules/zod/v4/locales/ko.js +3 -0
  414. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  415. package/node_modules/zod/v4/locales/lt.js +2 -0
  416. package/node_modules/zod/v4/locales/mk.cjs +3 -0
  417. package/node_modules/zod/v4/locales/mk.js +3 -0
  418. package/node_modules/zod/v4/locales/ms.cjs +3 -0
  419. package/node_modules/zod/v4/locales/ms.js +3 -0
  420. package/node_modules/zod/v4/locales/ne.cjs +136 -0
  421. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  422. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  423. package/node_modules/zod/v4/locales/ne.js +109 -0
  424. package/node_modules/zod/v4/locales/nl.cjs +3 -0
  425. package/node_modules/zod/v4/locales/nl.js +3 -0
  426. package/node_modules/zod/v4/locales/nn.cjs +138 -0
  427. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  428. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  429. package/node_modules/zod/v4/locales/nn.js +111 -0
  430. package/node_modules/zod/v4/locales/no.cjs +5 -2
  431. package/node_modules/zod/v4/locales/no.js +5 -2
  432. package/node_modules/zod/v4/locales/ota.cjs +3 -0
  433. package/node_modules/zod/v4/locales/ota.js +3 -0
  434. package/node_modules/zod/v4/locales/pl.cjs +3 -0
  435. package/node_modules/zod/v4/locales/pl.js +3 -0
  436. package/node_modules/zod/v4/locales/ps.cjs +3 -0
  437. package/node_modules/zod/v4/locales/ps.js +3 -0
  438. package/node_modules/zod/v4/locales/pt-BR.cjs +168 -0
  439. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  440. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  441. package/node_modules/zod/v4/locales/pt-BR.js +141 -0
  442. package/node_modules/zod/v4/locales/pt.cjs +87 -55
  443. package/node_modules/zod/v4/locales/pt.js +87 -55
  444. package/node_modules/zod/v4/locales/ro.cjs +1 -0
  445. package/node_modules/zod/v4/locales/ro.js +1 -0
  446. package/node_modules/zod/v4/locales/ru.cjs +10 -0
  447. package/node_modules/zod/v4/locales/ru.js +10 -0
  448. package/node_modules/zod/v4/locales/sk.cjs +141 -0
  449. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  450. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  451. package/node_modules/zod/v4/locales/sk.js +114 -0
  452. package/node_modules/zod/v4/locales/sl.cjs +3 -0
  453. package/node_modules/zod/v4/locales/sl.js +3 -0
  454. package/node_modules/zod/v4/locales/sv.cjs +5 -2
  455. package/node_modules/zod/v4/locales/sv.js +5 -2
  456. package/node_modules/zod/v4/locales/ta.cjs +3 -0
  457. package/node_modules/zod/v4/locales/ta.js +3 -0
  458. package/node_modules/zod/v4/locales/th.cjs +3 -0
  459. package/node_modules/zod/v4/locales/th.js +3 -0
  460. package/node_modules/zod/v4/locales/tk.cjs +132 -0
  461. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  462. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  463. package/node_modules/zod/v4/locales/tk.js +105 -0
  464. package/node_modules/zod/v4/locales/tr.cjs +3 -0
  465. package/node_modules/zod/v4/locales/tr.js +3 -0
  466. package/node_modules/zod/v4/locales/uk.cjs +3 -0
  467. package/node_modules/zod/v4/locales/uk.js +3 -0
  468. package/node_modules/zod/v4/locales/ur.cjs +3 -0
  469. package/node_modules/zod/v4/locales/ur.js +3 -0
  470. package/node_modules/zod/v4/locales/uz.cjs +1 -0
  471. package/node_modules/zod/v4/locales/uz.js +1 -0
  472. package/node_modules/zod/v4/locales/vi.cjs +3 -0
  473. package/node_modules/zod/v4/locales/vi.js +3 -0
  474. package/node_modules/zod/v4/locales/yo.cjs +3 -0
  475. package/node_modules/zod/v4/locales/yo.js +3 -0
  476. package/node_modules/zod/v4/locales/zh-CN.cjs +3 -0
  477. package/node_modules/zod/v4/locales/zh-CN.js +3 -0
  478. package/node_modules/zod/v4/locales/zh-TW.cjs +3 -0
  479. package/node_modules/zod/v4/locales/zh-TW.js +3 -0
  480. package/node_modules/zod/v4/mini/checks.cjs +2 -1
  481. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  482. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  483. package/node_modules/zod/v4/mini/checks.js +1 -1
  484. package/node_modules/zod/v4/mini/deep-partial.cjs +39 -0
  485. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  486. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  487. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  488. package/node_modules/zod/v4/mini/external.cjs +12 -1
  489. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  490. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  491. package/node_modules/zod/v4/mini/external.js +3 -1
  492. package/node_modules/zod/v4/mini/in-out.cjs +63 -0
  493. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  494. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  495. package/node_modules/zod/v4/mini/in-out.js +36 -0
  496. package/node_modules/zod/v4/mini/parse.cjs +3 -1
  497. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  498. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  499. package/node_modules/zod/v4/mini/parse.js +1 -1
  500. package/node_modules/zod/v4/mini/schemas.cjs +75 -47
  501. package/node_modules/zod/v4/mini/schemas.d.cts +43 -13
  502. package/node_modules/zod/v4/mini/schemas.d.ts +43 -13
  503. package/node_modules/zod/v4/mini/schemas.js +71 -45
  504. package/openclaw.plugin.json +12 -28
  505. package/package.json +9 -6
  506. package/node_modules/zod/src/v4/core/config.ts +0 -15
  507. /package/dist/{group-access-8qHRzDHx.js → .setup/group-access-8qHRzDHx.mjs} +0 -0
  508. /package/dist/{runtime-Dfhzt7qb.js → .setup/runtime-Dfhzt7qb.mjs} +0 -0
  509. /package/dist/{secret-contract-Cpsqe5Cv.js → .setup/secret-contract-Cpsqe5Cv.mjs} +0 -0
  510. /package/dist/{setup-core-CCMLSh4Q.js → .setup/setup-core-CCMLSh4Q.mjs} +0 -0
@@ -0,0 +1,183 @@
1
+ import { afterEach, expect, test } from "vitest";
2
+ import * as z from "zod/v4";
3
+
4
+ afterEach(() => {
5
+ z.config({ customError: undefined });
6
+ });
7
+
8
+ /** Collects the owning schema's registered metadata for every issue an error map sees. */
9
+ function captureMeta(): { seen: (z.core.GlobalMeta | undefined)[] } {
10
+ const seen: (z.core.GlobalMeta | undefined)[] = [];
11
+ z.config({
12
+ customError: (issue) => {
13
+ seen.push(issue.schema && z.globalRegistry.get(issue.schema));
14
+ return undefined;
15
+ },
16
+ });
17
+ return { seen };
18
+ }
19
+
20
+ test("check-originated issues expose the owning schema", () => {
21
+ const { seen } = captureMeta();
22
+
23
+ z.object({ name: z.string().min(5).meta({ title: "Name" }) }).safeParse({ name: "ab" });
24
+ z.string().max(2).meta({ title: "Max" }).safeParse("abc");
25
+ z.email().meta({ title: "Email" }).safeParse("nope");
26
+ z.number().multipleOf(3).meta({ title: "Multiple" }).safeParse(4);
27
+ z.array(z.string()).min(2).meta({ title: "Array" }).safeParse([]);
28
+
29
+ expect(seen).toEqual([
30
+ { title: "Name" },
31
+ { title: "Max" },
32
+ { title: "Email" },
33
+ { title: "Multiple" },
34
+ { title: "Array" },
35
+ ]);
36
+ });
37
+
38
+ test("schema-originated issues expose the owning schema", () => {
39
+ const { seen } = captureMeta();
40
+
41
+ z.object({ name: z.string().min(5).meta({ title: "Name" }) }).safeParse({ name: 123 });
42
+ z.email().meta({ title: "Email" }).safeParse(123);
43
+
44
+ expect(seen).toEqual([{ title: "Name" }, { title: "Email" }]);
45
+ });
46
+
47
+ test("refinements attribute to the refined schema, not the internal check schema", () => {
48
+ const { seen } = captureMeta();
49
+
50
+ z.string()
51
+ .refine(() => false)
52
+ .meta({ title: "Refine" })
53
+ .safeParse("abc");
54
+ z.string()
55
+ .superRefine((_, ctx) => ctx.addIssue({ code: "custom", message: "" }))
56
+ .meta({ title: "SuperRefine" })
57
+ .safeParse("abc");
58
+
59
+ expect(seen).toEqual([{ title: "Refine" }, { title: "SuperRefine" }]);
60
+ });
61
+
62
+ test("the innermost schema owns the issue", () => {
63
+ const { seen } = captureMeta();
64
+
65
+ z.array(z.string().min(5).meta({ title: "Element" }))
66
+ .meta({ title: "Array" })
67
+ .safeParse(["ab"]);
68
+ z.string()
69
+ .pipe(z.string().min(5).meta({ title: "Target" }))
70
+ .meta({ title: "Pipe" })
71
+ .safeParse("ab");
72
+ z.looseObject({})
73
+ .check(z.property("a", z.string().meta({ title: "Property" })))
74
+ .meta({ title: "Object" })
75
+ .safeParse({ a: 1 });
76
+
77
+ expect(seen).toEqual([{ title: "Element" }, { title: "Target" }, { title: "Property" }]);
78
+ });
79
+
80
+ test("issues carrying no usable `inst` still get the owning schema", () => {
81
+ const { seen } = captureMeta();
82
+
83
+ // A hand-pushed issue may carry no inst at all, and ctx.addIssue(string) puts the check's def — not a Zod object — on inst.
84
+ z.string()
85
+ .check((payload) => {
86
+ payload.issues.push({ code: "custom", input: payload.value });
87
+ })
88
+ .meta({ title: "Bare" })
89
+ .safeParse("abc");
90
+ const shorthand = z
91
+ .string()
92
+ .superRefine((_, ctx) => ctx.addIssue("bad stuff"))
93
+ .meta({ title: "Shorthand" })
94
+ .safeParse("abc");
95
+
96
+ expect(seen).toEqual([{ title: "Bare" }]);
97
+ expect(shorthand.error!.issues[0].message).toEqual("bad stuff");
98
+ });
99
+
100
+ test("async checks expose the owning schema", async () => {
101
+ const { seen } = captureMeta();
102
+
103
+ await z
104
+ .string()
105
+ .refine(async () => false)
106
+ .meta({ title: "Async" })
107
+ .safeParseAsync("abc");
108
+
109
+ expect(seen).toEqual([{ title: "Async" }]);
110
+ });
111
+
112
+ test("the owning schema is the clone `.meta()` registered, not the pre-metadata schema", () => {
113
+ const bare = z.string().min(5);
114
+ const labeled = bare.meta({ title: "Labeled" });
115
+ const seen: unknown[] = [];
116
+ z.config({
117
+ customError: (issue) => {
118
+ seen.push(issue.schema === labeled);
119
+ return undefined;
120
+ },
121
+ });
122
+
123
+ labeled.safeParse("ab");
124
+
125
+ expect(seen).toEqual([true]);
126
+ });
127
+
128
+ test("`inst` keeps its meaning and `schema` stays off the finalized issue", () => {
129
+ const insts: string[] = [];
130
+ z.config({
131
+ customError: (issue) => {
132
+ insts.push(issue.inst!.constructor.name);
133
+ return undefined;
134
+ },
135
+ });
136
+
137
+ const tooSmall = z.string().min(5).safeParse("ab");
138
+ const wrongType = z.string().safeParse(123);
139
+
140
+ expect(insts).toEqual(["$ZodCheckMinLength", "ZodString"]);
141
+ expect(Object.keys(tooSmall.error!.issues[0])).not.toContain("schema");
142
+ expect(Object.keys(wrongType.error!.issues[0])).not.toContain("schema");
143
+ });
144
+
145
+ test("every error map kind receives the owning schema", () => {
146
+ const seen: Record<string, z.core.GlobalMeta | undefined> = {};
147
+ const capture = (key: string) => (issue: { schema?: z.core.$ZodType | undefined }) => {
148
+ seen[key] = issue.schema && z.globalRegistry.get(issue.schema);
149
+ return undefined;
150
+ };
151
+
152
+ z.string()
153
+ .min(5, { error: capture("check") })
154
+ .meta({ title: "Check" })
155
+ .safeParse("ab");
156
+
157
+ // A schema-bound map is only consulted for issues the schema itself raised, so this one needs a type error.
158
+ z.string({ error: capture("schema") })
159
+ .meta({ title: "Schema" })
160
+ .safeParse(123);
161
+
162
+ z.string()
163
+ .min(5)
164
+ .meta({ title: "Parse" })
165
+ .safeParse("ab", { error: capture("parse") });
166
+
167
+ z.config({ customError: capture("customError") });
168
+ z.string().min(5).meta({ title: "Custom" }).safeParse("ab");
169
+
170
+ // localeError carries the default English locale, so it is restored rather than cleared.
171
+ const localeError = z.config().localeError;
172
+ z.config({ customError: undefined, localeError: capture("localeError") });
173
+ z.string().min(5).meta({ title: "Locale" }).safeParse("ab");
174
+ z.config({ localeError });
175
+
176
+ expect(seen).toEqual({
177
+ check: { title: "Check" },
178
+ schema: { title: "Schema" },
179
+ parse: { title: "Parse" },
180
+ customError: { title: "Custom" },
181
+ localeError: { title: "Locale" },
182
+ });
183
+ });
@@ -10,23 +10,16 @@ const { allowsEval } = core.util;
10
10
  // `securitypolicyviolation` report on strict-CSP pages (no 'unsafe-eval')
11
11
  // that Chrome DevTools surfaces as an Issue.
12
12
  //
13
- // The fix: when `globalConfig.jitless` is true, `allowsEval.value`
14
- // returns `false` without triggering the probe. This test lives in its
15
- // own file because vitest isolates ESM graphs per file, so the cached
16
- // `allowsEval.value` is fresh and is never accessed before the config
17
- // mutation below.
13
+ // The fix: when `globalConfig.jitless` is true, `allowsEval.value` returns `false` without triggering the probe. This test lives in its own file because vitest isolates ESM graphs per file, so the cached `allowsEval.value` is fresh and is never accessed before the config mutation below.
18
14
 
19
15
  test("globalConfig.jitless=true short-circuits the allowsEval probe", () => {
20
- // Set BEFORE first access to allowsEval.value — the getter is memoised
21
- // via `cached()`, so the contract is "configure at app entry".
16
+ // Set BEFORE first access to allowsEval.value — the getter is memoised via `cached()`, so the contract is "configure at app entry".
22
17
  z.config({ jitless: true });
23
18
 
24
19
  // Sanity: config is wired
25
20
  expect(core.globalConfig.jitless).toBe(true);
26
21
 
27
- // Spy: if the probe were still attempted, `new Function("")` would be
28
- // called. Swap the global `Function` constructor with a throwing stub
29
- // and verify the stub is NEVER invoked.
22
+ // Spy: if the probe were still attempted, `new Function("")` would be called. Swap the global `Function` constructor with a throwing stub and verify the stub is NEVER invoked.
30
23
  const origFunction = globalThis.Function;
31
24
  let probeAttempted = false;
32
25
  // @ts-expect-error assigning a stub to the Function global for the test
@@ -42,7 +42,7 @@ test("opt passthrough", () => {
42
42
  expect(z.lazy(() => z.string().optional())._zod.optin).toEqual("optional");
43
43
  expect(z.lazy(() => z.string().optional())._zod.optout).toEqual("optional");
44
44
 
45
- expect(z.lazy(() => z.string().default("asdf"))._zod.optin).toEqual("optional");
45
+ expect(z.lazy(() => z.string().default("asdf"))._zod.optin).toEqual("defaulted");
46
46
  expect(z.lazy(() => z.string().default("asdf"))._zod.optout).toEqual(undefined);
47
47
  });
48
48
 
@@ -225,3 +225,38 @@ test("lazy initialization", () => {
225
225
  subcategories: z.lazy(() => categorySchema.array()),
226
226
  });
227
227
  });
228
+
229
+ test("derived internals resolve on self-referential lazy", () => {
230
+ const optional: any = z.lazy(() => optional.optional());
231
+ const pipe: any = z.lazy(() => z.pipe(z.string(), pipe));
232
+
233
+ expect(optional._zod.optin).toEqual("optional");
234
+ expect(optional._zod.optout).toEqual("optional");
235
+ expect(pipe._zod.optin).toEqual(undefined);
236
+ expect(pipe._zod.optout).toEqual(undefined);
237
+ });
238
+
239
+ test("a cycle-broken internal is not memoized", () => {
240
+ const lazyRef: any = z.lazy(() => Rec);
241
+ const Rec: any = z.union([z.string().optional(), lazyRef]);
242
+
243
+ // Reading the outer node first resolves `lazyRef`'s own `optin` through the cycle.
244
+ expect(Rec._zod.optin).toEqual("optional");
245
+ expect(lazyRef._zod.optin).toEqual("optional");
246
+ expect(z.object({ x: Rec, y: lazyRef }).safeParse({ x: "a" }).success).toEqual(true);
247
+ });
248
+
249
+ test("an internal computed without a cycle break is memoized", () => {
250
+ // `undefined` is the legitimate answer here and still has to cache: these getters are read per parse, so recomputing them is a parse-path cost.
251
+ const union = z.union([z.string(), z.number()]);
252
+ expect(union._zod.optin).toEqual(undefined);
253
+ expect(Object.getOwnPropertyNames(union._zod)).toContain("optin");
254
+ });
255
+
256
+ // A compute that throws must memoize nothing, or the second read answers undefined for a schema whose internals were never derived.
257
+ test("a throwing lazy internal throws on every read", () => {
258
+ const schema = z.discriminatedUnion("type", [z.string() as any]) as any;
259
+ for (let i = 0; i < 3; i++) {
260
+ expect(() => schema._zod.propValues).toThrow();
261
+ }
262
+ });
@@ -1,4 +1,4 @@
1
- import { expect, test } from "vitest";
1
+ import { expect, expectTypeOf, test } from "vitest";
2
2
 
3
3
  import * as z from "zod/v4";
4
4
 
@@ -115,3 +115,14 @@ test("literal pattern", () => {
115
115
  }
116
116
  `);
117
117
  });
118
+
119
+ test("empty literal matches nothing", () => {
120
+ const empty = z.literal([]);
121
+ expectTypeOf<z.infer<typeof empty>>().toEqualTypeOf<never>();
122
+ expect(empty.safeParse("").success).toEqual(false);
123
+ expect(empty.safeParse(undefined).success).toEqual(false);
124
+ expect(z.templateLiteral(["", empty]).safeParse("").success).toEqual(false);
125
+ expect(z.toJSONSchema(empty)).toMatchObject({ not: {} });
126
+
127
+ expect(z.literal("").safeParse("").success).toEqual(true);
128
+ });
@@ -99,6 +99,18 @@ test("failing when map is bigger than max() ", () => {
99
99
  expect(result.error!.issues[0].code).toEqual("too_big");
100
100
  });
101
101
 
102
+ test("failing when map does not match size() ", () => {
103
+ expect(justTwo.safeParse(new Map([["a", "b"]])).error!.issues[0].message).toEqual(
104
+ "Too small: expected map to have exactly 2 entries"
105
+ );
106
+ const tooBig = new Map([
107
+ ["a", "b"],
108
+ ["c", "d"],
109
+ ["e", "f"],
110
+ ]);
111
+ expect(justTwo.safeParse(tooBig).error!.issues[0].message).toEqual("Too big: expected map to have exactly 2 entries");
112
+ });
113
+
102
114
  test("valid parse async", async () => {
103
115
  const asyncMap = z.map(
104
116
  z.string().refine(async () => false, "bad key"),
@@ -1,4 +1,4 @@
1
- import { expect, test } from "vitest";
1
+ import { expect, expectTypeOf, test } from "vitest";
2
2
 
3
3
  import * as z from "zod/v4";
4
4
 
@@ -22,7 +22,7 @@ test("Infinity validation", () => {
22
22
  "code": "invalid_type",
23
23
  "received": "Infinity",
24
24
  "path": [],
25
- "message": "Invalid input: expected number, received number"
25
+ "message": "Invalid input: expected number, received Infinity"
26
26
  }
27
27
  ]],
28
28
  "success": false,
@@ -34,9 +34,9 @@ test("Infinity validation", () => {
34
34
  {
35
35
  "expected": "number",
36
36
  "code": "invalid_type",
37
- "received": "Infinity",
37
+ "received": "-Infinity",
38
38
  "path": [],
39
- "message": "Invalid input: expected number, received number"
39
+ "message": "Invalid input: expected number, received -Infinity"
40
40
  }
41
41
  ]],
42
42
  "success": false,
@@ -137,6 +137,16 @@ test("multipleOf", () => {
137
137
  expect(() => schemas.schema7.parse(numbers.number8)).toThrow();
138
138
  });
139
139
 
140
+ test(".multipleOf() accepts exact decimal multiples", () => {
141
+ // 2.03 === 29 * 0.07, but the quotient lands 2 ULP below 29, so the old tolerance rejected it while the neighbouring multiples 1.96 and 2.10 passed.
142
+ const schema = z.number().multipleOf(0.07);
143
+ expect(schema.safeParse(2.03).success).toBe(true);
144
+ expect(schema.safeParse(4.06).success).toBe(true);
145
+ expect(schema.safeParse(8.54).success).toBe(true);
146
+ // genuine non-multiples must still be rejected
147
+ expect(schema.safeParse(2.04).success).toBe(false);
148
+ });
149
+
140
150
  test(".multipleOf() with positive divisor", () => {
141
151
  const schema = z.number().multipleOf(5);
142
152
  expect(schema.parse(15)).toEqual(15);
@@ -154,8 +164,7 @@ test(".multipleOf() with negative divisor", () => {
154
164
  });
155
165
 
156
166
  test(".multipleOf() with scientific notation (multi-digit exponents)", () => {
157
- // Regression test for https://github.com/colinhacks/zod/pull/5687
158
- // The regex was using \d? which only matches single-digit exponents
167
+ // Regression test for https://github.com/colinhacks/zod/pull/5687 — the regex was using \d? which only matches single-digit exponents
159
168
  const schema = z.number().multipleOf(1e-10);
160
169
 
161
170
  // These should all pass - they are valid multiples of 1e-10
@@ -208,7 +217,7 @@ test(".finite() validation", () => {
208
217
  "code": "invalid_type",
209
218
  "received": "Infinity",
210
219
  "path": [],
211
- "message": "Invalid input: expected number, received number"
220
+ "message": "Invalid input: expected number, received Infinity"
212
221
  }
213
222
  ]],
214
223
  "success": false,
@@ -220,9 +229,9 @@ test(".finite() validation", () => {
220
229
  {
221
230
  "expected": "number",
222
231
  "code": "invalid_type",
223
- "received": "Infinity",
232
+ "received": "-Infinity",
224
233
  "path": [],
225
- "message": "Invalid input: expected number, received number"
234
+ "message": "Invalid input: expected number, received -Infinity"
226
235
  }
227
236
  ]],
228
237
  "success": false,
@@ -323,3 +332,31 @@ test("error customization", () => {
323
332
  z.number().gte(5, { error: (iss) => "Min: " + iss.minimum.valueOf() });
324
333
  z.number().lte(5, { error: (iss) => "Max: " + iss.maximum.valueOf() });
325
334
  });
335
+
336
+ test("number formats are distinct at the type level", () => {
337
+ expectTypeOf(z.int()._zod.def.format).toEqualTypeOf<"safeint">();
338
+ expectTypeOf(z.int32()._zod.def.format).toEqualTypeOf<"int32">();
339
+ expectTypeOf(z.uint32()._zod.def.format).toEqualTypeOf<"uint32">();
340
+ expectTypeOf(z.float32()._zod.def.format).toEqualTypeOf<"float32">();
341
+ expectTypeOf(z.float64()._zod.def.format).toEqualTypeOf<"float64">();
342
+
343
+ z.int() satisfies z.ZodNumberFormat;
344
+ z.int() satisfies z.ZodNumber;
345
+
346
+ // @ts-expect-error a float32 schema is not a ZodInt
347
+ z.float32() satisfies z.ZodInt;
348
+ // @ts-expect-error a uint32 schema is not a ZodInt32
349
+ z.uint32() satisfies z.ZodInt32;
350
+
351
+ // the point of the distinction: dispatching on the schema type in a conditional type
352
+ type Sql<T> = T extends z.ZodUInt32
353
+ ? "BIGINT"
354
+ : T extends z.ZodInt32
355
+ ? "INTEGER"
356
+ : T extends z.ZodFloat32
357
+ ? "REAL"
358
+ : never;
359
+ expectTypeOf<Sql<z.ZodUInt32>>().toEqualTypeOf<"BIGINT">();
360
+ expectTypeOf<Sql<z.ZodInt32>>().toEqualTypeOf<"INTEGER">();
361
+ expectTypeOf<Sql<z.ZodFloat32>>().toEqualTypeOf<"REAL">();
362
+ });