@openclaw/zalo 2026.9.4 → 2026.9.6

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 (551) 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-B7EqgwH6.mjs} +1 -1
  4. package/dist/.setup/api-BDqk_OyX.mjs +6 -0
  5. package/dist/{channel-mgXGK008.js → .setup/channel-C4-ovULW.mjs} +14 -12
  6. package/dist/{channel.runtime-aikbF-5l.js → .setup/channel.runtime-Bm9k5qqB.mjs} +3 -3
  7. package/dist/{monitor-CXlZtCk9.js → .setup/monitor-BXzlUPAd.mjs} +6 -7
  8. package/dist/{monitor.webhook-DOCUBaE5.js → .setup/monitor.webhook-B_9qJI4O.mjs} +2 -2
  9. package/dist/.setup/secret-contract-api-DKDS_ZlS.mjs +3 -0
  10. package/dist/{send-CIMDH1gH.js → .setup/send-Div0xZFE.mjs} +34 -15
  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-BSTKDQ8X.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 +29 -2
  22. package/node_modules/zod/compile.cjs +96 -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 +21 -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/locales/index.cjs +19 -0
  31. package/node_modules/zod/mini/index.cjs +19 -0
  32. package/node_modules/zod/package.json +20 -8
  33. package/node_modules/zod/src/compile.ts +56 -0
  34. package/node_modules/zod/src/index.ts +5 -2
  35. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  36. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  37. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  38. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  39. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  40. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  41. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  42. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  43. package/node_modules/zod/src/v3/types.ts +5 -5
  44. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  45. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  46. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  47. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  48. package/node_modules/zod/src/v4/classic/external.ts +14 -9
  49. package/node_modules/zod/src/v4/classic/from-json-schema.ts +363 -78
  50. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  51. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  52. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  53. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  54. package/node_modules/zod/src/v4/classic/schemas.ts +640 -375
  55. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  56. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  57. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +186 -0
  58. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +36 -1
  59. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  60. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  61. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  62. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +3 -3
  63. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  64. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  65. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  66. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  67. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  68. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  69. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  70. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  71. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +261 -13
  72. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +20 -0
  73. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  74. package/node_modules/zod/src/v4/classic/tests/error.test.ts +403 -6
  75. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +582 -10
  76. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  77. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  78. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  79. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  80. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  81. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  82. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  83. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +67 -0
  84. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  85. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
  86. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  87. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  88. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  89. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  90. package/node_modules/zod/src/v4/classic/tests/number.test.ts +85 -9
  91. package/node_modules/zod/src/v4/classic/tests/object.test.ts +301 -12
  92. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  93. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  94. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  95. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  96. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  97. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  98. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  99. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  100. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +79 -3
  101. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  102. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  103. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  104. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  105. package/node_modules/zod/src/v4/classic/tests/string.test.ts +222 -6
  106. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  107. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +44 -3
  108. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1812 -204
  109. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  110. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  111. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
  112. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  113. package/node_modules/zod/src/v4/core/api.ts +87 -35
  114. package/node_modules/zod/src/v4/core/checks.ts +119 -146
  115. package/node_modules/zod/src/v4/core/compile.ts +2313 -0
  116. package/node_modules/zod/src/v4/core/core.ts +99 -22
  117. package/node_modules/zod/src/v4/core/doc.ts +17 -9
  118. package/node_modules/zod/src/v4/core/errors.ts +113 -25
  119. package/node_modules/zod/src/v4/core/index.ts +3 -0
  120. package/node_modules/zod/src/v4/core/json-schema-generator.ts +8 -3
  121. package/node_modules/zod/src/v4/core/json-schema-processors.ts +424 -156
  122. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  123. package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
  124. package/node_modules/zod/src/v4/core/parse.ts +164 -50
  125. package/node_modules/zod/src/v4/core/regexes.ts +42 -15
  126. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  127. package/node_modules/zod/src/v4/core/schemas.ts +1000 -538
  128. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  129. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
  130. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  131. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  132. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  133. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  134. package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
  135. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  136. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  137. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  138. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  139. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  140. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  141. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  142. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  143. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  144. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  145. package/node_modules/zod/src/v4/core/to-json-schema.ts +283 -48
  146. package/node_modules/zod/src/v4/core/util.ts +454 -157
  147. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  148. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  149. package/node_modules/zod/src/v4/index.ts +3 -3
  150. package/node_modules/zod/src/v4/locales/ar.ts +5 -0
  151. package/node_modules/zod/src/v4/locales/az.ts +5 -0
  152. package/node_modules/zod/src/v4/locales/be.ts +12 -0
  153. package/node_modules/zod/src/v4/locales/bg.ts +5 -0
  154. package/node_modules/zod/src/v4/locales/bn.ts +123 -0
  155. package/node_modules/zod/src/v4/locales/ca.ts +5 -0
  156. package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
  157. package/node_modules/zod/src/v4/locales/cs.ts +5 -0
  158. package/node_modules/zod/src/v4/locales/da.ts +7 -2
  159. package/node_modules/zod/src/v4/locales/de.ts +5 -0
  160. package/node_modules/zod/src/v4/locales/el.ts +3 -0
  161. package/node_modules/zod/src/v4/locales/en.ts +17 -4
  162. package/node_modules/zod/src/v4/locales/eo.ts +5 -0
  163. package/node_modules/zod/src/v4/locales/es.ts +4 -0
  164. package/node_modules/zod/src/v4/locales/fa.ts +5 -0
  165. package/node_modules/zod/src/v4/locales/fi.ts +5 -0
  166. package/node_modules/zod/src/v4/locales/fr-CA.ts +5 -0
  167. package/node_modules/zod/src/v4/locales/fr.ts +21 -14
  168. package/node_modules/zod/src/v4/locales/gu.ts +123 -0
  169. package/node_modules/zod/src/v4/locales/he.ts +8 -1
  170. package/node_modules/zod/src/v4/locales/hi.ts +126 -0
  171. package/node_modules/zod/src/v4/locales/hr.ts +4 -0
  172. package/node_modules/zod/src/v4/locales/hu.ts +5 -0
  173. package/node_modules/zod/src/v4/locales/hy.ts +11 -0
  174. package/node_modules/zod/src/v4/locales/id.ts +5 -0
  175. package/node_modules/zod/src/v4/locales/index.ts +11 -0
  176. package/node_modules/zod/src/v4/locales/is.ts +5 -0
  177. package/node_modules/zod/src/v4/locales/it.ts +5 -0
  178. package/node_modules/zod/src/v4/locales/ja.ts +5 -0
  179. package/node_modules/zod/src/v4/locales/ka.ts +5 -0
  180. package/node_modules/zod/src/v4/locales/km.ts +5 -0
  181. package/node_modules/zod/src/v4/locales/kn.ts +126 -0
  182. package/node_modules/zod/src/v4/locales/ko.ts +5 -0
  183. package/node_modules/zod/src/v4/locales/lt.ts +4 -0
  184. package/node_modules/zod/src/v4/locales/mk.ts +5 -0
  185. package/node_modules/zod/src/v4/locales/ms.ts +5 -0
  186. package/node_modules/zod/src/v4/locales/ne.ts +128 -0
  187. package/node_modules/zod/src/v4/locales/nl.ts +5 -0
  188. package/node_modules/zod/src/v4/locales/nn.ts +121 -0
  189. package/node_modules/zod/src/v4/locales/no.ts +7 -2
  190. package/node_modules/zod/src/v4/locales/ota.ts +5 -0
  191. package/node_modules/zod/src/v4/locales/pl.ts +5 -0
  192. package/node_modules/zod/src/v4/locales/ps.ts +5 -0
  193. package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
  194. package/node_modules/zod/src/v4/locales/pt.ts +101 -58
  195. package/node_modules/zod/src/v4/locales/ro.ts +3 -0
  196. package/node_modules/zod/src/v4/locales/ru.ts +12 -0
  197. package/node_modules/zod/src/v4/locales/sk.ts +123 -0
  198. package/node_modules/zod/src/v4/locales/sl.ts +5 -0
  199. package/node_modules/zod/src/v4/locales/sv.ts +7 -2
  200. package/node_modules/zod/src/v4/locales/ta.ts +5 -0
  201. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  202. package/node_modules/zod/src/v4/locales/th.ts +5 -0
  203. package/node_modules/zod/src/v4/locales/tk.ts +113 -0
  204. package/node_modules/zod/src/v4/locales/tr.ts +5 -0
  205. package/node_modules/zod/src/v4/locales/uk.ts +5 -0
  206. package/node_modules/zod/src/v4/locales/ur.ts +5 -0
  207. package/node_modules/zod/src/v4/locales/uz.ts +3 -0
  208. package/node_modules/zod/src/v4/locales/vi.ts +5 -0
  209. package/node_modules/zod/src/v4/locales/yo.ts +5 -0
  210. package/node_modules/zod/src/v4/locales/zh-CN.ts +5 -0
  211. package/node_modules/zod/src/v4/locales/zh-TW.ts +5 -0
  212. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  213. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  214. package/node_modules/zod/src/v4/mini/external.ts +12 -1
  215. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  216. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  217. package/node_modules/zod/src/v4/mini/schemas.ts +167 -63
  218. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  219. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  220. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  221. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  222. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  223. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  224. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  225. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  226. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  227. package/node_modules/zod/src/v4/mini/tests/index.test.ts +158 -5
  228. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  229. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  230. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  231. package/node_modules/zod/src/v4/mini/tests/string.test.ts +44 -0
  232. package/node_modules/zod/v3/ZodError.cjs +41 -12
  233. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  234. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  235. package/node_modules/zod/v3/ZodError.js +22 -12
  236. package/node_modules/zod/v3/errors.cjs +19 -0
  237. package/node_modules/zod/v3/external.cjs +19 -0
  238. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  239. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  240. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  241. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  242. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  243. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  244. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  245. package/node_modules/zod/v3/index.cjs +19 -0
  246. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  247. package/node_modules/zod/v3/types.cjs +26 -5
  248. package/node_modules/zod/v3/types.js +7 -5
  249. package/node_modules/zod/v4/classic/checks.cjs +21 -1
  250. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  251. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  252. package/node_modules/zod/v4/classic/checks.js +1 -1
  253. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  254. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  255. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  256. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  257. package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
  258. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  259. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  260. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  261. package/node_modules/zod/v4/classic/errors.cjs +62 -34
  262. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  263. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  264. package/node_modules/zod/v4/classic/errors.js +43 -34
  265. package/node_modules/zod/v4/classic/external.cjs +51 -27
  266. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  267. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  268. package/node_modules/zod/v4/classic/external.js +5 -8
  269. package/node_modules/zod/v4/classic/from-json-schema.cjs +376 -75
  270. package/node_modules/zod/v4/classic/from-json-schema.js +357 -75
  271. package/node_modules/zod/v4/classic/in-out.cjs +82 -0
  272. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  273. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  274. package/node_modules/zod/v4/classic/in-out.js +36 -0
  275. package/node_modules/zod/v4/classic/index.cjs +21 -2
  276. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  277. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  278. package/node_modules/zod/v4/classic/index.js +2 -2
  279. package/node_modules/zod/v4/classic/iso.cjs +30 -22
  280. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  281. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  282. package/node_modules/zod/v4/classic/iso.js +2 -17
  283. package/node_modules/zod/v4/classic/parse.cjs +23 -1
  284. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  285. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  286. package/node_modules/zod/v4/classic/parse.js +1 -0
  287. package/node_modules/zod/v4/classic/schemas.cjs +591 -426
  288. package/node_modules/zod/v4/classic/schemas.d.cts +68 -19
  289. package/node_modules/zod/v4/classic/schemas.d.ts +68 -19
  290. package/node_modules/zod/v4/classic/schemas.js +564 -424
  291. package/node_modules/zod/v4/core/api.cjs +66 -24
  292. package/node_modules/zod/v4/core/api.d.cts +22 -12
  293. package/node_modules/zod/v4/core/api.d.ts +22 -12
  294. package/node_modules/zod/v4/core/api.js +44 -24
  295. package/node_modules/zod/v4/core/checks.cjs +88 -128
  296. package/node_modules/zod/v4/core/checks.d.cts +29 -13
  297. package/node_modules/zod/v4/core/checks.d.ts +29 -13
  298. package/node_modules/zod/v4/core/checks.js +68 -127
  299. package/node_modules/zod/v4/core/compile.cjs +1908 -0
  300. package/node_modules/zod/v4/core/compile.d.cts +65 -0
  301. package/node_modules/zod/v4/core/compile.d.ts +65 -0
  302. package/node_modules/zod/v4/core/compile.js +1858 -0
  303. package/node_modules/zod/v4/core/core.cjs +101 -19
  304. package/node_modules/zod/v4/core/core.d.cts +16 -4
  305. package/node_modules/zod/v4/core/core.d.ts +16 -4
  306. package/node_modules/zod/v4/core/core.js +83 -20
  307. package/node_modules/zod/v4/core/doc.cjs +31 -9
  308. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  309. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  310. package/node_modules/zod/v4/core/doc.js +12 -9
  311. package/node_modules/zod/v4/core/errors.cjs +126 -25
  312. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  313. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  314. package/node_modules/zod/v4/core/errors.js +107 -25
  315. package/node_modules/zod/v4/core/index.cjs +24 -1
  316. package/node_modules/zod/v4/core/index.d.cts +3 -0
  317. package/node_modules/zod/v4/core/index.d.ts +3 -0
  318. package/node_modules/zod/v4/core/index.js +3 -0
  319. package/node_modules/zod/v4/core/json-schema-generator.cjs +24 -1
  320. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  321. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  322. package/node_modules/zod/v4/core/json-schema-generator.js +6 -2
  323. package/node_modules/zod/v4/core/json-schema-processors.cjs +441 -156
  324. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  325. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  326. package/node_modules/zod/v4/core/json-schema-processors.js +400 -158
  327. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  328. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  329. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  330. package/node_modules/zod/v4/core/memoizer.cjs +360 -0
  331. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  332. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  333. package/node_modules/zod/v4/core/memoizer.js +311 -0
  334. package/node_modules/zod/v4/core/parse.cjs +148 -46
  335. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  336. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  337. package/node_modules/zod/v4/core/parse.js +127 -45
  338. package/node_modules/zod/v4/core/regexes.cjs +54 -17
  339. package/node_modules/zod/v4/core/regexes.d.cts +5 -0
  340. package/node_modules/zod/v4/core/regexes.d.ts +5 -0
  341. package/node_modules/zod/v4/core/regexes.js +32 -15
  342. package/node_modules/zod/v4/core/registries.cjs +19 -0
  343. package/node_modules/zod/v4/core/registries.js +2 -2
  344. package/node_modules/zod/v4/core/schemas.cjs +785 -386
  345. package/node_modules/zod/v4/core/schemas.d.cts +123 -34
  346. package/node_modules/zod/v4/core/schemas.d.ts +123 -34
  347. package/node_modules/zod/v4/core/schemas.js +753 -386
  348. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  349. package/node_modules/zod/v4/core/to-json-schema.cjs +269 -45
  350. package/node_modules/zod/v4/core/to-json-schema.d.cts +45 -5
  351. package/node_modules/zod/v4/core/to-json-schema.d.ts +45 -5
  352. package/node_modules/zod/v4/core/to-json-schema.js +247 -44
  353. package/node_modules/zod/v4/core/util.cjs +372 -157
  354. package/node_modules/zod/v4/core/util.d.cts +79 -1
  355. package/node_modules/zod/v4/core/util.d.ts +79 -1
  356. package/node_modules/zod/v4/core/util.js +341 -156
  357. package/node_modules/zod/v4/core/versions.cjs +21 -2
  358. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  359. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  360. package/node_modules/zod/v4/core/versions.js +2 -2
  361. package/node_modules/zod/v4/core/visit.cjs +214 -0
  362. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  363. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  364. package/node_modules/zod/v4/core/visit.js +169 -0
  365. package/node_modules/zod/v4/index.cjs +34 -5
  366. package/node_modules/zod/v4/index.d.cts +2 -2
  367. package/node_modules/zod/v4/index.d.ts +2 -2
  368. package/node_modules/zod/v4/index.js +3 -2
  369. package/node_modules/zod/v4/locales/ar.cjs +5 -0
  370. package/node_modules/zod/v4/locales/ar.js +5 -0
  371. package/node_modules/zod/v4/locales/az.cjs +5 -0
  372. package/node_modules/zod/v4/locales/az.js +5 -0
  373. package/node_modules/zod/v4/locales/be.cjs +12 -0
  374. package/node_modules/zod/v4/locales/be.js +12 -0
  375. package/node_modules/zod/v4/locales/bg.cjs +5 -0
  376. package/node_modules/zod/v4/locales/bg.js +5 -0
  377. package/node_modules/zod/v4/locales/bn.cjs +140 -0
  378. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  379. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  380. package/node_modules/zod/v4/locales/bn.js +113 -0
  381. package/node_modules/zod/v4/locales/ca.cjs +5 -0
  382. package/node_modules/zod/v4/locales/ca.js +5 -0
  383. package/node_modules/zod/v4/locales/ckb.cjs +160 -0
  384. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  385. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  386. package/node_modules/zod/v4/locales/ckb.js +133 -0
  387. package/node_modules/zod/v4/locales/cs.cjs +5 -0
  388. package/node_modules/zod/v4/locales/cs.js +5 -0
  389. package/node_modules/zod/v4/locales/da.cjs +7 -2
  390. package/node_modules/zod/v4/locales/da.js +7 -2
  391. package/node_modules/zod/v4/locales/de.cjs +5 -0
  392. package/node_modules/zod/v4/locales/de.js +5 -0
  393. package/node_modules/zod/v4/locales/el.cjs +3 -0
  394. package/node_modules/zod/v4/locales/el.js +3 -0
  395. package/node_modules/zod/v4/locales/en.cjs +16 -4
  396. package/node_modules/zod/v4/locales/en.js +16 -4
  397. package/node_modules/zod/v4/locales/eo.cjs +5 -0
  398. package/node_modules/zod/v4/locales/eo.js +5 -0
  399. package/node_modules/zod/v4/locales/es.cjs +4 -0
  400. package/node_modules/zod/v4/locales/es.js +4 -0
  401. package/node_modules/zod/v4/locales/fa.cjs +5 -0
  402. package/node_modules/zod/v4/locales/fa.js +5 -0
  403. package/node_modules/zod/v4/locales/fi.cjs +5 -0
  404. package/node_modules/zod/v4/locales/fi.js +5 -0
  405. package/node_modules/zod/v4/locales/fr-CA.cjs +5 -0
  406. package/node_modules/zod/v4/locales/fr-CA.js +5 -0
  407. package/node_modules/zod/v4/locales/fr.cjs +18 -14
  408. package/node_modules/zod/v4/locales/fr.js +18 -14
  409. package/node_modules/zod/v4/locales/gu.cjs +140 -0
  410. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  411. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  412. package/node_modules/zod/v4/locales/gu.js +113 -0
  413. package/node_modules/zod/v4/locales/he.cjs +7 -0
  414. package/node_modules/zod/v4/locales/he.js +7 -0
  415. package/node_modules/zod/v4/locales/hi.cjs +138 -0
  416. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  417. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  418. package/node_modules/zod/v4/locales/hi.js +111 -0
  419. package/node_modules/zod/v4/locales/hr.cjs +4 -0
  420. package/node_modules/zod/v4/locales/hr.js +4 -0
  421. package/node_modules/zod/v4/locales/hu.cjs +5 -0
  422. package/node_modules/zod/v4/locales/hu.js +5 -0
  423. package/node_modules/zod/v4/locales/hy.cjs +11 -0
  424. package/node_modules/zod/v4/locales/hy.js +11 -0
  425. package/node_modules/zod/v4/locales/id.cjs +5 -0
  426. package/node_modules/zod/v4/locales/id.js +5 -0
  427. package/node_modules/zod/v4/locales/index.cjs +43 -2
  428. package/node_modules/zod/v4/locales/index.d.cts +11 -0
  429. package/node_modules/zod/v4/locales/index.d.ts +11 -0
  430. package/node_modules/zod/v4/locales/index.js +11 -0
  431. package/node_modules/zod/v4/locales/is.cjs +5 -0
  432. package/node_modules/zod/v4/locales/is.js +5 -0
  433. package/node_modules/zod/v4/locales/it.cjs +5 -0
  434. package/node_modules/zod/v4/locales/it.js +5 -0
  435. package/node_modules/zod/v4/locales/ja.cjs +5 -0
  436. package/node_modules/zod/v4/locales/ja.js +5 -0
  437. package/node_modules/zod/v4/locales/ka.cjs +5 -0
  438. package/node_modules/zod/v4/locales/ka.js +5 -0
  439. package/node_modules/zod/v4/locales/km.cjs +5 -0
  440. package/node_modules/zod/v4/locales/km.js +5 -0
  441. package/node_modules/zod/v4/locales/kn.cjs +143 -0
  442. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  443. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  444. package/node_modules/zod/v4/locales/kn.js +116 -0
  445. package/node_modules/zod/v4/locales/ko.cjs +5 -0
  446. package/node_modules/zod/v4/locales/ko.js +5 -0
  447. package/node_modules/zod/v4/locales/lt.cjs +4 -0
  448. package/node_modules/zod/v4/locales/lt.js +4 -0
  449. package/node_modules/zod/v4/locales/mk.cjs +5 -0
  450. package/node_modules/zod/v4/locales/mk.js +5 -0
  451. package/node_modules/zod/v4/locales/ms.cjs +5 -0
  452. package/node_modules/zod/v4/locales/ms.js +5 -0
  453. package/node_modules/zod/v4/locales/ne.cjs +138 -0
  454. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  455. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  456. package/node_modules/zod/v4/locales/ne.js +111 -0
  457. package/node_modules/zod/v4/locales/nl.cjs +5 -0
  458. package/node_modules/zod/v4/locales/nl.js +5 -0
  459. package/node_modules/zod/v4/locales/nn.cjs +140 -0
  460. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  461. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  462. package/node_modules/zod/v4/locales/nn.js +113 -0
  463. package/node_modules/zod/v4/locales/no.cjs +7 -2
  464. package/node_modules/zod/v4/locales/no.js +7 -2
  465. package/node_modules/zod/v4/locales/ota.cjs +5 -0
  466. package/node_modules/zod/v4/locales/ota.js +5 -0
  467. package/node_modules/zod/v4/locales/pl.cjs +5 -0
  468. package/node_modules/zod/v4/locales/pl.js +5 -0
  469. package/node_modules/zod/v4/locales/ps.cjs +5 -0
  470. package/node_modules/zod/v4/locales/ps.js +5 -0
  471. package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
  472. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  473. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  474. package/node_modules/zod/v4/locales/pt-BR.js +143 -0
  475. package/node_modules/zod/v4/locales/pt.cjs +89 -55
  476. package/node_modules/zod/v4/locales/pt.js +89 -55
  477. package/node_modules/zod/v4/locales/ro.cjs +3 -0
  478. package/node_modules/zod/v4/locales/ro.js +3 -0
  479. package/node_modules/zod/v4/locales/ru.cjs +12 -0
  480. package/node_modules/zod/v4/locales/ru.js +12 -0
  481. package/node_modules/zod/v4/locales/sk.cjs +143 -0
  482. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  483. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  484. package/node_modules/zod/v4/locales/sk.js +116 -0
  485. package/node_modules/zod/v4/locales/sl.cjs +5 -0
  486. package/node_modules/zod/v4/locales/sl.js +5 -0
  487. package/node_modules/zod/v4/locales/sv.cjs +7 -2
  488. package/node_modules/zod/v4/locales/sv.js +7 -2
  489. package/node_modules/zod/v4/locales/ta.cjs +5 -0
  490. package/node_modules/zod/v4/locales/ta.js +5 -0
  491. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  492. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  493. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  494. package/node_modules/zod/v4/locales/tg.js +117 -0
  495. package/node_modules/zod/v4/locales/th.cjs +5 -0
  496. package/node_modules/zod/v4/locales/th.js +5 -0
  497. package/node_modules/zod/v4/locales/tk.cjs +134 -0
  498. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  499. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  500. package/node_modules/zod/v4/locales/tk.js +107 -0
  501. package/node_modules/zod/v4/locales/tr.cjs +5 -0
  502. package/node_modules/zod/v4/locales/tr.js +5 -0
  503. package/node_modules/zod/v4/locales/uk.cjs +5 -0
  504. package/node_modules/zod/v4/locales/uk.js +5 -0
  505. package/node_modules/zod/v4/locales/ur.cjs +5 -0
  506. package/node_modules/zod/v4/locales/ur.js +5 -0
  507. package/node_modules/zod/v4/locales/uz.cjs +3 -0
  508. package/node_modules/zod/v4/locales/uz.js +3 -0
  509. package/node_modules/zod/v4/locales/vi.cjs +5 -0
  510. package/node_modules/zod/v4/locales/vi.js +5 -0
  511. package/node_modules/zod/v4/locales/yo.cjs +5 -0
  512. package/node_modules/zod/v4/locales/yo.js +5 -0
  513. package/node_modules/zod/v4/locales/zh-CN.cjs +5 -0
  514. package/node_modules/zod/v4/locales/zh-CN.js +5 -0
  515. package/node_modules/zod/v4/locales/zh-TW.cjs +5 -0
  516. package/node_modules/zod/v4/locales/zh-TW.js +5 -0
  517. package/node_modules/zod/v4/mini/checks.cjs +21 -1
  518. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  519. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  520. package/node_modules/zod/v4/mini/checks.js +1 -1
  521. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  522. package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
  523. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  524. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  525. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  526. package/node_modules/zod/v4/mini/external.cjs +33 -1
  527. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  528. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  529. package/node_modules/zod/v4/mini/external.js +3 -1
  530. package/node_modules/zod/v4/mini/in-out.cjs +82 -0
  531. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  532. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  533. package/node_modules/zod/v4/mini/in-out.js +36 -0
  534. package/node_modules/zod/v4/mini/index.cjs +19 -0
  535. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  536. package/node_modules/zod/v4/mini/parse.cjs +22 -1
  537. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  538. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  539. package/node_modules/zod/v4/mini/parse.js +1 -1
  540. package/node_modules/zod/v4/mini/schemas.cjs +117 -53
  541. package/node_modules/zod/v4/mini/schemas.d.cts +49 -14
  542. package/node_modules/zod/v4/mini/schemas.d.ts +49 -14
  543. package/node_modules/zod/v4/mini/schemas.js +92 -51
  544. package/node_modules/zod/v4-mini/index.cjs +19 -0
  545. package/openclaw.plugin.json +12 -28
  546. package/package.json +9 -6
  547. package/node_modules/zod/src/v4/core/config.ts +0 -15
  548. /package/dist/{group-access-8qHRzDHx.js → .setup/group-access-8qHRzDHx.mjs} +0 -0
  549. /package/dist/{runtime-Dfhzt7qb.js → .setup/runtime-Dfhzt7qb.mjs} +0 -0
  550. /package/dist/{secret-contract-Cpsqe5Cv.js → .setup/secret-contract-Cpsqe5Cv.mjs} +0 -0
  551. /package/dist/{setup-core-CCMLSh4Q.js → .setup/setup-core-CCMLSh4Q.mjs} +0 -0
@@ -0,0 +1,445 @@
1
+ import { expect, test } from "vitest";
2
+
3
+ import * as z from "../../index.js";
4
+ import { compile, compileFn } from "../compile.js";
5
+
6
+ // Generative differential: random schemas over the compiled node types, a valid value for each, single corruptions of that value, and the assertion that the interpreter and the compiled schema agree on the verdict, the output, the issues and how often user callbacks ran. A fixture suite covers the compositions somebody wrote down; this covers the ones nobody did. Seeds are fixed, so a failure names the seed and the schema it built.
7
+
8
+ function mulberry32(seed: number): () => number {
9
+ return () => {
10
+ seed = (seed + 0x6d2b79f5) | 0;
11
+ let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
12
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
13
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
14
+ };
15
+ }
16
+
17
+ interface Gen {
18
+ schema: z.ZodType;
19
+ desc: string;
20
+ valid: () => unknown;
21
+ // one corruption of a valid value; not always rejected (a loose object absorbs an extra key), and both sides must agree either way
22
+ corrupt: (v: unknown) => unknown;
23
+ // this node itself has no fast emitter and compiles through the runtime
24
+ island: boolean;
25
+ }
26
+
27
+ interface Ctx {
28
+ rand: () => number;
29
+ // runs per generated callback, so the two-run bound holds for each one rather than for the sum
30
+ calls: Map<number, number>;
31
+ nextCallback: number;
32
+ }
33
+
34
+ function count(c: Ctx, id: number): void {
35
+ c.calls.set(id, (c.calls.get(id) ?? 0) + 1);
36
+ }
37
+
38
+ const pick = <T>(c: Ctx, xs: readonly T[]): T => xs[Math.floor(c.rand() * xs.length)]!;
39
+ const int = (c: Ctx, lo: number, hi: number): number => lo + Math.floor(c.rand() * (hi - lo + 1));
40
+ const JUNK = [42, "x", null, undefined, true, [], {}, -0, Number.NaN] as const;
41
+
42
+ function leaf(c: Ctx): Gen {
43
+ switch (int(c, 0, 7)) {
44
+ case 0: {
45
+ const min = int(c, 0, 3);
46
+ return {
47
+ schema: z.string().min(min),
48
+ desc: `string.min(${min})`,
49
+ valid: () => "x".repeat(min + int(c, 0, 2)),
50
+ corrupt: () => (c.rand() < 0.5 ? 42 : "x".repeat(Math.max(0, min - 1))),
51
+ island: false,
52
+ };
53
+ }
54
+ case 1:
55
+ return {
56
+ schema: z.email(),
57
+ desc: "email",
58
+ valid: () => "a@b.co",
59
+ corrupt: () => (c.rand() < 0.5 ? "nope" : 1),
60
+ island: false,
61
+ };
62
+ case 2: {
63
+ const lo = int(c, -5, 0);
64
+ const hi = int(c, 1, 5);
65
+ return {
66
+ schema: z.number().int().min(lo).max(hi),
67
+ desc: `int[${lo},${hi}]`,
68
+ valid: () => int(c, lo, hi),
69
+ corrupt: () => pick(c, [hi + 1, lo - 1, 1.5, "1"]),
70
+ island: false,
71
+ };
72
+ }
73
+ case 3:
74
+ return {
75
+ schema: z.boolean(),
76
+ desc: "boolean",
77
+ valid: () => c.rand() < 0.5,
78
+ corrupt: () => pick(c, ["true", 0, null]),
79
+ island: false,
80
+ };
81
+ case 4: {
82
+ const lit = pick(c, ["a", 1, true] as const);
83
+ return {
84
+ schema: z.literal(lit),
85
+ desc: `literal(${JSON.stringify(lit)})`,
86
+ valid: () => lit,
87
+ corrupt: () => pick(c, ["b", 2, false]),
88
+ island: false,
89
+ };
90
+ }
91
+ case 5:
92
+ return {
93
+ schema: z.enum(["a", "b", "c"]),
94
+ desc: "enum",
95
+ valid: () => pick(c, ["a", "b", "c"]),
96
+ corrupt: () => pick(c, ["d", 2, null]),
97
+ island: false,
98
+ };
99
+ case 6: {
100
+ const id = c.nextCallback++;
101
+ return {
102
+ schema: z.number().superRefine((v, ctx) => {
103
+ count(c, id);
104
+ if (v < 0) ctx.addIssue({ code: "custom", message: "negative" });
105
+ }),
106
+ desc: "number.superRefine",
107
+ valid: () => int(c, 0, 9),
108
+ corrupt: () => pick(c, [-1, "x"]),
109
+ island: false,
110
+ };
111
+ }
112
+ default: {
113
+ const id = c.nextCallback++;
114
+ return {
115
+ schema: z.string().transform((s) => {
116
+ count(c, id);
117
+ return s.length;
118
+ }),
119
+ desc: "string.transform",
120
+ valid: () => "y".repeat(int(c, 0, 3)),
121
+ corrupt: () => 42,
122
+ island: false,
123
+ };
124
+ }
125
+ }
126
+ }
127
+
128
+ function wrap(c: Ctx, inner: Gen): Gen {
129
+ switch (int(c, 0, 4)) {
130
+ case 0:
131
+ return {
132
+ ...inner,
133
+ schema: inner.schema.optional(),
134
+ desc: `${inner.desc}.optional`,
135
+ valid: () => (c.rand() < 0.3 ? undefined : inner.valid()),
136
+ island: false,
137
+ };
138
+ case 1:
139
+ return {
140
+ ...inner,
141
+ schema: inner.schema.nullable(),
142
+ desc: `${inner.desc}.nullable`,
143
+ valid: () => (c.rand() < 0.3 ? null : inner.valid()),
144
+ island: false,
145
+ };
146
+ case 2: {
147
+ const dflt = inner.valid();
148
+ return {
149
+ ...inner,
150
+ schema: inner.schema.default(dflt as never),
151
+ desc: `${inner.desc}.default`,
152
+ valid: () => (c.rand() < 0.3 ? undefined : inner.valid()),
153
+ island: false,
154
+ };
155
+ }
156
+ case 3:
157
+ return { ...inner, schema: inner.schema.readonly(), desc: `${inner.desc}.readonly`, island: false };
158
+ default:
159
+ return {
160
+ ...inner,
161
+ schema: inner.schema.optional().nonoptional(),
162
+ desc: `${inner.desc}.optional.nonoptional`,
163
+ corrupt: (v) => (c.rand() < 0.5 ? undefined : inner.corrupt(v)),
164
+ island: false,
165
+ };
166
+ }
167
+ }
168
+
169
+ function container(c: Ctx, depth: number): Gen {
170
+ const child = () => gen(c, depth - 1);
171
+ switch (int(c, 0, 8)) {
172
+ case 0:
173
+ case 1: {
174
+ const n = int(c, 1, 4);
175
+ const entries = Array.from({ length: n }, (_, i) => [`k${i}`, child(), c.rand() < 0.3] as const);
176
+ const shape = Object.fromEntries(entries.map(([k, g, opt]) => [k, opt ? g.schema.optional() : g.schema]));
177
+ const mode = pick(c, ["plain", "strict", "loose", "catchall"] as const);
178
+ const schema =
179
+ mode === "strict"
180
+ ? z.strictObject(shape)
181
+ : mode === "loose"
182
+ ? z.looseObject(shape)
183
+ : mode === "catchall"
184
+ ? z.object(shape).catchall(z.number())
185
+ : z.object(shape);
186
+ const valid = () => {
187
+ const o: Record<string, unknown> = {};
188
+ for (const [k, g, opt] of entries) if (!opt || c.rand() < 0.6) o[k] = g.valid();
189
+ if (mode === "catchall" && c.rand() < 0.5) o.extra = 1;
190
+ return o;
191
+ };
192
+ return {
193
+ schema,
194
+ desc: `${mode}{${entries.map(([k, g, opt]) => `${k}${opt ? "?" : ""}:${g.desc}`).join(",")}}`,
195
+ valid,
196
+ corrupt: (v) => {
197
+ if (typeof v !== "object" || v === null) return v;
198
+ const o = { ...(v as Record<string, unknown>) };
199
+ const [k, g, opt] = pick(c, entries);
200
+ switch (int(c, 0, 3)) {
201
+ case 0:
202
+ o[k] = g.corrupt(k in o ? o[k] : g.valid());
203
+ break;
204
+ case 1:
205
+ if (opt) o[k] = g.corrupt(g.valid());
206
+ else delete o[k];
207
+ break;
208
+ case 2:
209
+ o.extra = "e";
210
+ break;
211
+ default:
212
+ return 42;
213
+ }
214
+ return o;
215
+ },
216
+ island: false,
217
+ };
218
+ }
219
+ case 2: {
220
+ const g = child();
221
+ const min = int(c, 0, 2);
222
+ return {
223
+ schema: z.array(g.schema).min(min),
224
+ desc: `array(${g.desc}).min(${min})`,
225
+ valid: () => Array.from({ length: min + int(c, 0, 2) }, () => g.valid()),
226
+ corrupt: (v) => {
227
+ if (!Array.isArray(v)) return v;
228
+ const a = [...v];
229
+ if (a.length && c.rand() < 0.6) a[int(c, 0, a.length - 1)] = g.corrupt(a[0]);
230
+ else if (min > 0) a.length = min - 1;
231
+ else return 42;
232
+ return a;
233
+ },
234
+ island: false,
235
+ };
236
+ }
237
+ case 3: {
238
+ const items = Array.from({ length: int(c, 1, 3) }, child);
239
+ const rest = c.rand() < 0.4 ? child() : null;
240
+ const schema = rest
241
+ ? z.tuple(items.map((g) => g.schema) as [z.ZodType, ...z.ZodType[]], rest.schema)
242
+ : z.tuple(items.map((g) => g.schema) as [z.ZodType, ...z.ZodType[]]);
243
+ return {
244
+ schema,
245
+ desc: `tuple(${items.map((g) => g.desc).join(",")}${rest ? `,...${rest.desc}` : ""})`,
246
+ valid: () => [
247
+ ...items.map((g) => g.valid()),
248
+ ...(rest ? Array.from({ length: int(c, 0, 2) }, () => rest.valid()) : []),
249
+ ],
250
+ corrupt: (v) => {
251
+ if (!Array.isArray(v)) return v;
252
+ const a = [...v];
253
+ const i = int(c, 0, items.length - 1);
254
+ if (c.rand() < 0.6) a[i] = items[i]!.corrupt(a[i]);
255
+ else if (c.rand() < 0.5) a.push("extra");
256
+ else a.length = i;
257
+ return a;
258
+ },
259
+ island: false,
260
+ };
261
+ }
262
+ case 4: {
263
+ const g = child();
264
+ const enumKeys = c.rand() < 0.4;
265
+ const schema = enumKeys ? z.record(z.enum(["a", "b"]), g.schema) : z.record(z.string(), g.schema);
266
+ return {
267
+ schema,
268
+ desc: `record(${enumKeys ? "enum" : "string"},${g.desc})`,
269
+ valid: () =>
270
+ enumKeys
271
+ ? { a: g.valid(), b: g.valid() }
272
+ : Object.fromEntries(Array.from({ length: int(c, 0, 3) }, (_, i) => [`r${i}`, g.valid()])),
273
+ corrupt: (v) => {
274
+ if (typeof v !== "object" || v === null) return v;
275
+ const o = { ...(v as Record<string, unknown>) };
276
+ const keys = Object.keys(o);
277
+ if (keys.length && c.rand() < 0.6) o[pick(c, keys)] = g.corrupt(o[keys[0]!]);
278
+ else if (enumKeys) o.z = g.valid();
279
+ else return 42;
280
+ return o;
281
+ },
282
+ island: false,
283
+ };
284
+ }
285
+ case 5: {
286
+ const options = Array.from({ length: int(c, 2, 3) }, child);
287
+ return {
288
+ schema: z.union(options.map((g) => g.schema) as [z.ZodType, z.ZodType, ...z.ZodType[]]),
289
+ desc: `union(${options.map((g) => g.desc).join("|")})`,
290
+ valid: () => pick(c, options).valid(),
291
+ corrupt: (v) => pick(c, options).corrupt(v),
292
+ island: false,
293
+ };
294
+ }
295
+ case 6: {
296
+ const branches = Array.from({ length: int(c, 2, 3) }, (_, i) => [i, child()] as const);
297
+ return {
298
+ schema: z.discriminatedUnion(
299
+ "t",
300
+ branches.map(([i, g]) => z.object({ t: z.literal(`b${i}`), v: g.schema })) as [
301
+ z.ZodObject<{ t: z.ZodLiteral<string>; v: z.ZodType }>,
302
+ ...z.ZodObject<{ t: z.ZodLiteral<string>; v: z.ZodType }>[],
303
+ ]
304
+ ),
305
+ desc: `dunion(${branches.map(([, g]) => g.desc).join("|")})`,
306
+ valid: () => {
307
+ const [i, g] = pick(c, branches);
308
+ return { t: `b${i}`, v: g.valid() };
309
+ },
310
+ corrupt: (v) => {
311
+ if (typeof v !== "object" || v === null) return v;
312
+ const o = { ...(v as { t: string; v: unknown }) };
313
+ const branch = branches.find(([i]) => `b${i}` === o.t);
314
+ if (branch && c.rand() < 0.6) o.v = branch[1].corrupt(o.v);
315
+ else o.t = "nope";
316
+ return o;
317
+ },
318
+ island: false,
319
+ };
320
+ }
321
+ case 7: {
322
+ const min = int(c, 1, 3);
323
+ return {
324
+ schema: z.string().pipe(z.string().min(min)),
325
+ desc: `string.pipe(min(${min}))`,
326
+ valid: () => "p".repeat(min + int(c, 0, 1)),
327
+ corrupt: () => (c.rand() < 0.5 ? "p".repeat(min - 1) : 7),
328
+ island: false,
329
+ };
330
+ }
331
+ default: {
332
+ // map and set: the compiled result still has to agree
333
+ const g = child();
334
+ if (c.rand() < 0.5) {
335
+ return {
336
+ schema: z.map(z.string(), g.schema),
337
+ desc: `map(string,${g.desc})`,
338
+ valid: () => new Map(Array.from({ length: int(c, 0, 2) }, (_, i) => [`m${i}`, g.valid()])),
339
+ corrupt: (v) => {
340
+ if (!(v instanceof Map)) return v;
341
+ const m = new Map(v);
342
+ if (m.size && c.rand() < 0.7) m.set("m0", g.corrupt(m.get("m0")));
343
+ else return [];
344
+ return m;
345
+ },
346
+ island: true,
347
+ };
348
+ }
349
+ return {
350
+ schema: z.set(g.schema),
351
+ desc: `set(${g.desc})`,
352
+ valid: () => new Set(Array.from({ length: int(c, 0, 2) }, () => g.valid())),
353
+ corrupt: (v) => {
354
+ if (!(v instanceof Set)) return v;
355
+ const s = new Set(v);
356
+ if (c.rand() < 0.7) s.add(g.corrupt(g.valid()));
357
+ else return {};
358
+ return s;
359
+ },
360
+ island: true,
361
+ };
362
+ }
363
+ }
364
+ }
365
+
366
+ function gen(c: Ctx, depth: number): Gen {
367
+ if (depth === 0) return leaf(c);
368
+ const r = c.rand();
369
+ if (r < 0.25) return leaf(c);
370
+ if (r < 0.4) return wrap(c, gen(c, depth - 1));
371
+ return container(c, depth);
372
+ }
373
+
374
+ function attempt<T>(fn: () => T): { value?: T; threw?: string } {
375
+ try {
376
+ return { value: fn() };
377
+ } catch (err) {
378
+ return { threw: (err as Error)?.constructor?.name || "Error" };
379
+ }
380
+ }
381
+
382
+ function describe(value: unknown): string {
383
+ return JSON.stringify(value, (_k, v) =>
384
+ v instanceof Map ? { $map: [...v] } : v instanceof Set ? { $set: [...v] } : v === undefined ? "$undefined" : v
385
+ );
386
+ }
387
+
388
+ // own-key order and undefined-valued-vs-absent keys, which toStrictEqual does not see
389
+ function shape(value: unknown): unknown {
390
+ if (Array.isArray(value)) return value.map(shape);
391
+ if (value && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype) {
392
+ return Reflect.ownKeys(value).map((k) => [k, shape((value as Record<PropertyKey, unknown>)[k])]);
393
+ }
394
+ return value;
395
+ }
396
+
397
+ const SEEDS = 400;
398
+
399
+ test("random schemas parse identically through the interpreter and the compiler", () => {
400
+ // every failing seed is collected, so one run names all of them
401
+ const failures: string[] = [];
402
+ for (let seed = 1; seed <= SEEDS; seed++) {
403
+ try {
404
+ checkSeed(seed);
405
+ } catch (err) {
406
+ failures.push((err as Error).message.split("\n")[0]!);
407
+ }
408
+ }
409
+ expect(failures).toEqual([]);
410
+ });
411
+
412
+ function checkSeed(seed: number): void {
413
+ {
414
+ const c: Ctx = { rand: mulberry32(seed), calls: new Map(), nextCallback: 0 };
415
+ const g = gen(c, 3);
416
+ const compiled = compile(g.schema);
417
+ const inputs = [g.valid(), g.corrupt(g.valid()), g.corrupt(g.corrupt(g.valid())), pick(c, JUNK)];
418
+ for (const input of inputs) {
419
+ const label = `seed ${seed} ${g.desc} input ${describe(input)}`;
420
+ c.calls.clear();
421
+ const a = attempt(() => g.schema.safeParse(input));
422
+ const runtimeCalls = new Map(c.calls);
423
+ c.calls.clear();
424
+ const b = attempt(() => compiled.safeParse(input));
425
+ const compiledCalls = new Map(c.calls);
426
+ expect(b.threw, `${label}: throw`).toBe(a.threw);
427
+ if (a.threw) continue;
428
+ expect(b.value!.success, `${label}: verdict`).toBe(a.value!.success);
429
+ if (a.value!.success) {
430
+ expect(b.value!.data, `${label}: data`).toStrictEqual(a.value!.data);
431
+ expect(shape(b.value!.data), `${label}: key order`).toEqual(shape(a.value!.data));
432
+ } else {
433
+ expect(b.value!.error!.issues, `${label}: issues`).toEqual(a.value!.error!.issues);
434
+ }
435
+ // every callback the interpreter reaches, the compiled schema reaches too; the fast pass runs it at most once and the runtime re-parse at most once more
436
+ for (const id of new Set([...compiledCalls.keys(), ...runtimeCalls.keys()])) {
437
+ const n = compiledCalls.get(id) ?? 0;
438
+ const r = runtimeCalls.get(id) ?? 0;
439
+ expect(n, `${label}: callback ${id} ran ${n} vs ${r}`).toBeGreaterThanOrEqual(r);
440
+ expect(n, `${label}: callback ${id} ran ${n} vs ${r}`).toBeLessThanOrEqual(2 * r);
441
+ }
442
+ }
443
+ expect(() => compileFn(g.schema), `${g.desc}: compile refused`).not.toThrow();
444
+ }
445
+ }
@@ -0,0 +1,89 @@
1
+ // Tests the `zod/compile` subpath module — the user-facing API for enabling global AOT compilation. Importing this file (or running it under compile-mode where the setup file already imported `zod/compile`) installs the post-processor for the duration of this vitest worker. Vitest's `isolate: true` puts each test file in its own worker, so the install doesn't leak to other files.
2
+
3
+ import { expect, test } from "vitest";
4
+ import "zod/compile";
5
+ import * as z from "zod/v4";
6
+ import * as core from "zod/v4/core";
7
+
8
+ test("zod/compile sets globalConfig.postProcessor", () => {
9
+ expect(typeof core.globalConfig.postProcessor).toBe("function");
10
+ });
11
+
12
+ test("z.compile is exported from the public namespace", () => {
13
+ expect(typeof z.compile).toBe("function");
14
+ const schema = z.compile(z.object({ name: z.string() }));
15
+ expect(schema.parse({ name: "ok" })).toEqual({ name: "ok" });
16
+ });
17
+
18
+ test("schemas constructed after import are compiled on first parse", () => {
19
+ const schema = z.object({ name: z.string(), age: z.number() });
20
+
21
+ // First parse: shim fires, compiles, replaces self.
22
+ const r1 = schema.safeParse({ name: "ok", age: 1 });
23
+ expect(r1.success).toBe(true);
24
+
25
+ // Second parse: directly through compiled wrapper.
26
+ const r2 = schema.safeParse({ name: "ok", age: 2 });
27
+ expect(r2.success).toBe(true);
28
+
29
+ const bad = schema.safeParse({ name: 1, age: "x" });
30
+ expect(bad.success).toBe(false);
31
+ });
32
+
33
+ test("user callbacks run at most twice on invalid input", () => {
34
+ let refines = 0;
35
+ const schema = z.object({
36
+ a: z.string().refine((v) => {
37
+ refines++;
38
+ return v.length > 1;
39
+ }),
40
+ });
41
+ schema.safeParse({ a: "ok" }); // trigger lazy compile
42
+
43
+ refines = 0;
44
+ expect(schema.safeParse({ a: "x" }).success).toBe(false);
45
+ expect(refines).toBe(2);
46
+
47
+ refines = 0;
48
+ expect(() => schema.parse({ a: "x" })).toThrow();
49
+ expect(refines).toBe(2);
50
+
51
+ // Explicit z.compile of a shim-managed schema keeps the same contract.
52
+ const compiled = z.compile(schema);
53
+ refines = 0;
54
+ expect(compiled.safeParse({ a: "x" }).success).toBe(false);
55
+ expect(refines).toBe(2);
56
+ });
57
+
58
+ test("global mode respects the jitless config", () => {
59
+ core.config({ jitless: true });
60
+ try {
61
+ const schema = z.object({ a: z.string() });
62
+ expect(schema.safeParse({ a: "x" }).success).toBe(true);
63
+ // The shim restored the runtime parser instead of compiling: a compiled wrapper carries __originalRun, the bare runtime does not.
64
+ expect((schema._zod.run as { __originalRun?: unknown }).__originalRun).toBeUndefined();
65
+ } finally {
66
+ core.config({ jitless: undefined });
67
+ }
68
+ });
69
+
70
+ test("schemas with unsupported features fall back without crashing", () => {
71
+ const schema = z.string().refine(async () => true);
72
+ // First call attempts compile, falls back. Subsequent calls use runtime. Sync parse of an async-refined schema is its own runtime concern; we only care that the post-processor doesn't crash with a compile error.
73
+ expect(() => schema.safeParse("ok")).not.toThrow(/ZodCompile/);
74
+ });
75
+
76
+ test("global mode installs the validator validate reads", () => {
77
+ const schema = z.looseObject({ name: z.string() });
78
+ schema.parse({ name: "ok", extra: 1 }); // shim fires and compiles
79
+
80
+ // Without this the shim leaves no validator behind, validate misses its fast path and answers from the runtime parser instead. Correct, so nothing else in the suite notices, and several times slower.
81
+ const bag = schema._zod.bag as { validator?: (input: unknown) => unknown };
82
+ expect(typeof bag.validator).toBe("function");
83
+
84
+ // a verdict rather than a rebuilt object, so this is the assert-mode codegen and not the parser
85
+ expect(bag.validator!({ name: "ok", extra: 1 })).toBe(true);
86
+
87
+ expect(z.validate(schema, { name: "ok", extra: 1 })).toBe(true);
88
+ expect(z.validate(schema, { name: 1 })).toBe(false);
89
+ });
@@ -0,0 +1,26 @@
1
+ import { expect, test } from "vitest";
2
+
3
+ import * as z from "../../index.js";
4
+ import * as core from "../index.js";
5
+
6
+ // Global compilation is opt-in through `import "zod/compile"`, and that opt-in mutates `globalThis.__zod_globalConfig` — process-global state, not module state. Two things therefore have to hold, and neither is evident from reading the module: importing zod must not install the post-processor, and the compile-mode vitest project must not leak its setup file into the default one. Both projects run this file and each asserts the state it is supposed to be in, so a leak in either direction fails here instead of silently turning the default suite into a second compiled run (or the compiled suite into a second uncompiled one).
7
+ const compileMode = (globalThis as any).__zodCompileStats !== undefined;
8
+
9
+ test("global compilation is installed only under compile mode", () => {
10
+ if (compileMode) {
11
+ expect(core.globalConfig.postProcessor).toBeTypeOf("function");
12
+ } else {
13
+ expect(core.globalConfig.postProcessor).toBeUndefined();
14
+ }
15
+ });
16
+
17
+ test("a freshly constructed schema is compiled only under compile mode", () => {
18
+ const schema = z.object({ a: z.string() });
19
+ // The global shim replaces `_zod.run` at construction time and tags itself with `__originalRun` so a later compile can unwrap past it. An untagged `run` is proof the post-processor never touched this schema.
20
+ const tagged = (schema._zod.run as { __originalRun?: unknown }).__originalRun !== undefined;
21
+ expect(tagged).toBe(compileMode);
22
+
23
+ // Either way the schema has to parse identically.
24
+ expect(schema.parse({ a: "x" })).toEqual({ a: "x" });
25
+ expect(schema.safeParse({ a: 1 }).success).toBe(false);
26
+ });
@@ -0,0 +1,34 @@
1
+ import { expect, test } from "vitest";
2
+ import * as z from "../../index.js";
3
+
4
+ // Verifies that the compile-mode setup file is wired up correctly. Vitest's `isolate: true` resets module state per test file, so the counter only sees this file's compile attempts. We construct + parse a few schemas here to produce signal, then assert the post-processor saw them.
5
+ //
6
+ // When run under the default project (without the setup file), the counter is absent and the test self-skips.
7
+
8
+ interface CompileStats {
9
+ attempts: number;
10
+ successes: number;
11
+ fallbacks: number;
12
+ }
13
+
14
+ test("compile-mode post-processor is installed and compiles supported schemas", () => {
15
+ const stats = (globalThis as any).__zodCompileStats as CompileStats | undefined;
16
+ if (!stats) return; // Default project — compile mode disabled.
17
+
18
+ const before = { ...stats };
19
+
20
+ // Trigger compile via a handful of supported shapes
21
+ const cases: Array<[z.ZodType, unknown]> = [
22
+ [z.string(), "hi"],
23
+ [z.number(), 1],
24
+ [z.object({ name: z.string() }), { name: "ok" }],
25
+ [z.array(z.number()), [1, 2, 3]],
26
+ [z.union([z.string(), z.number()]), "x"],
27
+ ];
28
+ for (const [schema, input] of cases) {
29
+ schema.safeParse(input);
30
+ }
31
+
32
+ expect(stats.attempts - before.attempts).toBeGreaterThanOrEqual(cases.length);
33
+ expect(stats.successes - before.successes).toBeGreaterThanOrEqual(cases.length);
34
+ });