@openclaw/buzz 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 (575) hide show
  1. package/assets/activity.svg +3 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/{adapter.runtime-CaDdxQ2C.js → .setup/adapter.runtime-FIC9NMFI.mjs} +3 -3
  4. package/dist/{channel-C6rro-f7.js → .setup/channel-qV8kQiPi.mjs} +203 -105
  5. package/dist/.setup/directory-config-CzHz6fzo.mjs +43 -0
  6. package/dist/{room-membership-a8IHfdgL.js → .setup/room-membership-tqLQznFE.mjs} +1 -1
  7. package/dist/{secret-contract-DNuqbK64.js → .setup/secret-contract-DjibkTDL.mjs} +1 -1
  8. package/dist/.setup/secret-contract-api-DcFDI-eR.mjs +3 -0
  9. package/dist/.setup/setup-plugin-api-DI8WfvKQ.mjs +47 -0
  10. package/dist/.setup/setup-plugin-api-H-XWBzaF.mjs +2 -0
  11. package/dist/{setup-surface-DDUmAluL.js → .setup/setup-surface-DOHxdPor.mjs} +3 -3
  12. package/dist/api.js +2 -2
  13. package/dist/channel-plugin-api.js +1 -1
  14. package/dist/directory-contract-api.js +1 -1
  15. package/dist/qa-runner-api.js +1 -1
  16. package/dist/secret-contract-api.js +1 -1
  17. package/dist/setup-entry.js +3 -2
  18. package/dist/setup-plugin-api.js +1 -46
  19. package/node_modules/nostr-tools/lib/cjs/abstract-pool.js +3 -1
  20. package/node_modules/nostr-tools/lib/cjs/abstract-pool.js.map +2 -2
  21. package/node_modules/nostr-tools/lib/cjs/abstract-relay.js +3 -1
  22. package/node_modules/nostr-tools/lib/cjs/abstract-relay.js.map +2 -2
  23. package/node_modules/nostr-tools/lib/cjs/index.js +3 -1
  24. package/node_modules/nostr-tools/lib/cjs/index.js.map +2 -2
  25. package/node_modules/nostr-tools/lib/cjs/nip46.js +3 -1
  26. package/node_modules/nostr-tools/lib/cjs/nip46.js.map +2 -2
  27. package/node_modules/nostr-tools/lib/cjs/pool.js +3 -1
  28. package/node_modules/nostr-tools/lib/cjs/pool.js.map +2 -2
  29. package/node_modules/nostr-tools/lib/cjs/relay.js +3 -1
  30. package/node_modules/nostr-tools/lib/cjs/relay.js.map +2 -2
  31. package/node_modules/nostr-tools/lib/esm/abstract-pool.js +3 -1
  32. package/node_modules/nostr-tools/lib/esm/abstract-pool.js.map +2 -2
  33. package/node_modules/nostr-tools/lib/esm/abstract-relay.js +3 -1
  34. package/node_modules/nostr-tools/lib/esm/abstract-relay.js.map +2 -2
  35. package/node_modules/nostr-tools/lib/esm/index.js +3 -1
  36. package/node_modules/nostr-tools/lib/esm/index.js.map +2 -2
  37. package/node_modules/nostr-tools/lib/esm/nip46.js +3 -1
  38. package/node_modules/nostr-tools/lib/esm/nip46.js.map +2 -2
  39. package/node_modules/nostr-tools/lib/esm/pool.js +3 -1
  40. package/node_modules/nostr-tools/lib/esm/pool.js.map +2 -2
  41. package/node_modules/nostr-tools/lib/esm/relay.js +3 -1
  42. package/node_modules/nostr-tools/lib/esm/relay.js.map +2 -2
  43. package/node_modules/nostr-tools/lib/nostr.bundle.js +3 -1
  44. package/node_modules/nostr-tools/lib/nostr.bundle.js.map +2 -2
  45. package/node_modules/nostr-tools/package.json +1 -1
  46. package/node_modules/zod/README.md +29 -2
  47. package/node_modules/zod/compile.cjs +96 -0
  48. package/node_modules/zod/compile.d.cts +1 -0
  49. package/node_modules/zod/compile.d.ts +1 -0
  50. package/node_modules/zod/compile.js +52 -0
  51. package/node_modules/zod/index.cjs +21 -2
  52. package/node_modules/zod/index.d.cts +1 -2
  53. package/node_modules/zod/index.d.ts +1 -2
  54. package/node_modules/zod/index.js +5 -2
  55. package/node_modules/zod/locales/index.cjs +19 -0
  56. package/node_modules/zod/mini/index.cjs +19 -0
  57. package/node_modules/zod/package.json +20 -8
  58. package/node_modules/zod/src/compile.ts +56 -0
  59. package/node_modules/zod/src/index.ts +5 -2
  60. package/node_modules/zod/src/v3/ZodError.ts +22 -12
  61. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  62. package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
  63. package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
  64. package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
  65. package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
  66. package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
  67. package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
  68. package/node_modules/zod/src/v3/types.ts +5 -5
  69. package/node_modules/zod/src/v4/classic/checks.ts +1 -0
  70. package/node_modules/zod/src/v4/classic/compat.ts +26 -18
  71. package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
  72. package/node_modules/zod/src/v4/classic/errors.ts +59 -44
  73. package/node_modules/zod/src/v4/classic/external.ts +14 -9
  74. package/node_modules/zod/src/v4/classic/from-json-schema.ts +363 -78
  75. package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
  76. package/node_modules/zod/src/v4/classic/index.ts +2 -2
  77. package/node_modules/zod/src/v4/classic/iso.ts +2 -72
  78. package/node_modules/zod/src/v4/classic/parse.ts +10 -4
  79. package/node_modules/zod/src/v4/classic/schemas.ts +640 -375
  80. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
  81. package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
  82. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +186 -0
  83. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +36 -1
  84. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
  85. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
  86. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
  87. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +3 -3
  88. package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
  89. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  90. package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
  91. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
  92. package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
  93. package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
  94. package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
  95. package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
  96. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +261 -13
  97. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +20 -0
  98. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
  99. package/node_modules/zod/src/v4/classic/tests/error.test.ts +403 -6
  100. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +582 -10
  101. package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
  102. package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
  103. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
  104. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  105. package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
  106. package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
  107. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  108. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +67 -0
  109. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
  110. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
  111. package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
  112. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
  113. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
  114. package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
  115. package/node_modules/zod/src/v4/classic/tests/number.test.ts +85 -9
  116. package/node_modules/zod/src/v4/classic/tests/object.test.ts +301 -12
  117. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  118. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
  119. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
  120. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  121. package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
  122. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  123. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
  124. package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
  125. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +79 -3
  126. package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
  127. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
  128. package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
  129. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  130. package/node_modules/zod/src/v4/classic/tests/string.test.ts +222 -6
  131. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
  132. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +44 -3
  133. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1812 -204
  134. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
  135. package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
  136. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
  137. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
  138. package/node_modules/zod/src/v4/core/api.ts +87 -35
  139. package/node_modules/zod/src/v4/core/checks.ts +119 -146
  140. package/node_modules/zod/src/v4/core/compile.ts +2313 -0
  141. package/node_modules/zod/src/v4/core/core.ts +99 -22
  142. package/node_modules/zod/src/v4/core/doc.ts +17 -9
  143. package/node_modules/zod/src/v4/core/errors.ts +113 -25
  144. package/node_modules/zod/src/v4/core/index.ts +3 -0
  145. package/node_modules/zod/src/v4/core/json-schema-generator.ts +8 -3
  146. package/node_modules/zod/src/v4/core/json-schema-processors.ts +424 -156
  147. package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
  148. package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
  149. package/node_modules/zod/src/v4/core/parse.ts +164 -50
  150. package/node_modules/zod/src/v4/core/regexes.ts +42 -15
  151. package/node_modules/zod/src/v4/core/registries.ts +2 -2
  152. package/node_modules/zod/src/v4/core/schemas.ts +1000 -538
  153. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  154. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
  155. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  156. package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
  157. package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  158. package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
  159. package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
  160. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  161. package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
  162. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
  163. package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
  164. package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
  165. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  166. package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
  167. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  168. package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
  169. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  170. package/node_modules/zod/src/v4/core/to-json-schema.ts +283 -48
  171. package/node_modules/zod/src/v4/core/util.ts +454 -157
  172. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  173. package/node_modules/zod/src/v4/core/visit.ts +193 -0
  174. package/node_modules/zod/src/v4/index.ts +3 -3
  175. package/node_modules/zod/src/v4/locales/ar.ts +5 -0
  176. package/node_modules/zod/src/v4/locales/az.ts +5 -0
  177. package/node_modules/zod/src/v4/locales/be.ts +12 -0
  178. package/node_modules/zod/src/v4/locales/bg.ts +5 -0
  179. package/node_modules/zod/src/v4/locales/bn.ts +123 -0
  180. package/node_modules/zod/src/v4/locales/ca.ts +5 -0
  181. package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
  182. package/node_modules/zod/src/v4/locales/cs.ts +5 -0
  183. package/node_modules/zod/src/v4/locales/da.ts +7 -2
  184. package/node_modules/zod/src/v4/locales/de.ts +5 -0
  185. package/node_modules/zod/src/v4/locales/el.ts +3 -0
  186. package/node_modules/zod/src/v4/locales/en.ts +17 -4
  187. package/node_modules/zod/src/v4/locales/eo.ts +5 -0
  188. package/node_modules/zod/src/v4/locales/es.ts +4 -0
  189. package/node_modules/zod/src/v4/locales/fa.ts +5 -0
  190. package/node_modules/zod/src/v4/locales/fi.ts +5 -0
  191. package/node_modules/zod/src/v4/locales/fr-CA.ts +5 -0
  192. package/node_modules/zod/src/v4/locales/fr.ts +21 -14
  193. package/node_modules/zod/src/v4/locales/gu.ts +123 -0
  194. package/node_modules/zod/src/v4/locales/he.ts +8 -1
  195. package/node_modules/zod/src/v4/locales/hi.ts +126 -0
  196. package/node_modules/zod/src/v4/locales/hr.ts +4 -0
  197. package/node_modules/zod/src/v4/locales/hu.ts +5 -0
  198. package/node_modules/zod/src/v4/locales/hy.ts +11 -0
  199. package/node_modules/zod/src/v4/locales/id.ts +5 -0
  200. package/node_modules/zod/src/v4/locales/index.ts +11 -0
  201. package/node_modules/zod/src/v4/locales/is.ts +5 -0
  202. package/node_modules/zod/src/v4/locales/it.ts +5 -0
  203. package/node_modules/zod/src/v4/locales/ja.ts +5 -0
  204. package/node_modules/zod/src/v4/locales/ka.ts +5 -0
  205. package/node_modules/zod/src/v4/locales/km.ts +5 -0
  206. package/node_modules/zod/src/v4/locales/kn.ts +126 -0
  207. package/node_modules/zod/src/v4/locales/ko.ts +5 -0
  208. package/node_modules/zod/src/v4/locales/lt.ts +4 -0
  209. package/node_modules/zod/src/v4/locales/mk.ts +5 -0
  210. package/node_modules/zod/src/v4/locales/ms.ts +5 -0
  211. package/node_modules/zod/src/v4/locales/ne.ts +128 -0
  212. package/node_modules/zod/src/v4/locales/nl.ts +5 -0
  213. package/node_modules/zod/src/v4/locales/nn.ts +121 -0
  214. package/node_modules/zod/src/v4/locales/no.ts +7 -2
  215. package/node_modules/zod/src/v4/locales/ota.ts +5 -0
  216. package/node_modules/zod/src/v4/locales/pl.ts +5 -0
  217. package/node_modules/zod/src/v4/locales/ps.ts +5 -0
  218. package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
  219. package/node_modules/zod/src/v4/locales/pt.ts +101 -58
  220. package/node_modules/zod/src/v4/locales/ro.ts +3 -0
  221. package/node_modules/zod/src/v4/locales/ru.ts +12 -0
  222. package/node_modules/zod/src/v4/locales/sk.ts +123 -0
  223. package/node_modules/zod/src/v4/locales/sl.ts +5 -0
  224. package/node_modules/zod/src/v4/locales/sv.ts +7 -2
  225. package/node_modules/zod/src/v4/locales/ta.ts +5 -0
  226. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  227. package/node_modules/zod/src/v4/locales/th.ts +5 -0
  228. package/node_modules/zod/src/v4/locales/tk.ts +113 -0
  229. package/node_modules/zod/src/v4/locales/tr.ts +5 -0
  230. package/node_modules/zod/src/v4/locales/uk.ts +5 -0
  231. package/node_modules/zod/src/v4/locales/ur.ts +5 -0
  232. package/node_modules/zod/src/v4/locales/uz.ts +3 -0
  233. package/node_modules/zod/src/v4/locales/vi.ts +5 -0
  234. package/node_modules/zod/src/v4/locales/yo.ts +5 -0
  235. package/node_modules/zod/src/v4/locales/zh-CN.ts +5 -0
  236. package/node_modules/zod/src/v4/locales/zh-TW.ts +5 -0
  237. package/node_modules/zod/src/v4/mini/checks.ts +1 -0
  238. package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
  239. package/node_modules/zod/src/v4/mini/external.ts +12 -1
  240. package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
  241. package/node_modules/zod/src/v4/mini/parse.ts +2 -0
  242. package/node_modules/zod/src/v4/mini/schemas.ts +167 -63
  243. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
  244. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
  245. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
  246. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
  247. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  248. package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  249. package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
  250. package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
  251. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
  252. package/node_modules/zod/src/v4/mini/tests/index.test.ts +158 -5
  253. package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
  254. package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
  255. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  256. package/node_modules/zod/src/v4/mini/tests/string.test.ts +44 -0
  257. package/node_modules/zod/v3/ZodError.cjs +41 -12
  258. package/node_modules/zod/v3/ZodError.d.cts +1 -1
  259. package/node_modules/zod/v3/ZodError.d.ts +1 -1
  260. package/node_modules/zod/v3/ZodError.js +22 -12
  261. package/node_modules/zod/v3/errors.cjs +19 -0
  262. package/node_modules/zod/v3/external.cjs +19 -0
  263. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  264. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  265. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  266. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  267. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  268. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  269. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  270. package/node_modules/zod/v3/index.cjs +19 -0
  271. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  272. package/node_modules/zod/v3/types.cjs +26 -5
  273. package/node_modules/zod/v3/types.js +7 -5
  274. package/node_modules/zod/v4/classic/checks.cjs +21 -1
  275. package/node_modules/zod/v4/classic/checks.d.cts +1 -1
  276. package/node_modules/zod/v4/classic/checks.d.ts +1 -1
  277. package/node_modules/zod/v4/classic/checks.js +1 -1
  278. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  279. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  280. package/node_modules/zod/v4/classic/compat.d.cts +9 -11
  281. package/node_modules/zod/v4/classic/compat.d.ts +9 -11
  282. package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
  283. package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
  284. package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
  285. package/node_modules/zod/v4/classic/deep-partial.js +13 -0
  286. package/node_modules/zod/v4/classic/errors.cjs +62 -34
  287. package/node_modules/zod/v4/classic/errors.d.cts +3 -4
  288. package/node_modules/zod/v4/classic/errors.d.ts +3 -4
  289. package/node_modules/zod/v4/classic/errors.js +43 -34
  290. package/node_modules/zod/v4/classic/external.cjs +51 -27
  291. package/node_modules/zod/v4/classic/external.d.cts +5 -2
  292. package/node_modules/zod/v4/classic/external.d.ts +5 -2
  293. package/node_modules/zod/v4/classic/external.js +5 -8
  294. package/node_modules/zod/v4/classic/from-json-schema.cjs +376 -75
  295. package/node_modules/zod/v4/classic/from-json-schema.js +357 -75
  296. package/node_modules/zod/v4/classic/in-out.cjs +82 -0
  297. package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
  298. package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
  299. package/node_modules/zod/v4/classic/in-out.js +36 -0
  300. package/node_modules/zod/v4/classic/index.cjs +21 -2
  301. package/node_modules/zod/v4/classic/index.d.cts +1 -2
  302. package/node_modules/zod/v4/classic/index.d.ts +1 -2
  303. package/node_modules/zod/v4/classic/index.js +2 -2
  304. package/node_modules/zod/v4/classic/iso.cjs +30 -22
  305. package/node_modules/zod/v4/classic/iso.d.cts +2 -17
  306. package/node_modules/zod/v4/classic/iso.d.ts +2 -17
  307. package/node_modules/zod/v4/classic/iso.js +2 -17
  308. package/node_modules/zod/v4/classic/parse.cjs +23 -1
  309. package/node_modules/zod/v4/classic/parse.d.cts +17 -4
  310. package/node_modules/zod/v4/classic/parse.d.ts +17 -4
  311. package/node_modules/zod/v4/classic/parse.js +1 -0
  312. package/node_modules/zod/v4/classic/schemas.cjs +591 -426
  313. package/node_modules/zod/v4/classic/schemas.d.cts +68 -19
  314. package/node_modules/zod/v4/classic/schemas.d.ts +68 -19
  315. package/node_modules/zod/v4/classic/schemas.js +564 -424
  316. package/node_modules/zod/v4/core/api.cjs +66 -24
  317. package/node_modules/zod/v4/core/api.d.cts +22 -12
  318. package/node_modules/zod/v4/core/api.d.ts +22 -12
  319. package/node_modules/zod/v4/core/api.js +44 -24
  320. package/node_modules/zod/v4/core/checks.cjs +88 -128
  321. package/node_modules/zod/v4/core/checks.d.cts +29 -13
  322. package/node_modules/zod/v4/core/checks.d.ts +29 -13
  323. package/node_modules/zod/v4/core/checks.js +68 -127
  324. package/node_modules/zod/v4/core/compile.cjs +1908 -0
  325. package/node_modules/zod/v4/core/compile.d.cts +65 -0
  326. package/node_modules/zod/v4/core/compile.d.ts +65 -0
  327. package/node_modules/zod/v4/core/compile.js +1858 -0
  328. package/node_modules/zod/v4/core/core.cjs +101 -19
  329. package/node_modules/zod/v4/core/core.d.cts +16 -4
  330. package/node_modules/zod/v4/core/core.d.ts +16 -4
  331. package/node_modules/zod/v4/core/core.js +83 -20
  332. package/node_modules/zod/v4/core/doc.cjs +31 -9
  333. package/node_modules/zod/v4/core/doc.d.cts +3 -1
  334. package/node_modules/zod/v4/core/doc.d.ts +3 -1
  335. package/node_modules/zod/v4/core/doc.js +12 -9
  336. package/node_modules/zod/v4/core/errors.cjs +126 -25
  337. package/node_modules/zod/v4/core/errors.d.cts +4 -0
  338. package/node_modules/zod/v4/core/errors.d.ts +4 -0
  339. package/node_modules/zod/v4/core/errors.js +107 -25
  340. package/node_modules/zod/v4/core/index.cjs +24 -1
  341. package/node_modules/zod/v4/core/index.d.cts +3 -0
  342. package/node_modules/zod/v4/core/index.d.ts +3 -0
  343. package/node_modules/zod/v4/core/index.js +3 -0
  344. package/node_modules/zod/v4/core/json-schema-generator.cjs +24 -1
  345. package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
  346. package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
  347. package/node_modules/zod/v4/core/json-schema-generator.js +6 -2
  348. package/node_modules/zod/v4/core/json-schema-processors.cjs +441 -156
  349. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  350. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  351. package/node_modules/zod/v4/core/json-schema-processors.js +400 -158
  352. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  353. package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
  354. package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
  355. package/node_modules/zod/v4/core/memoizer.cjs +360 -0
  356. package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
  357. package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
  358. package/node_modules/zod/v4/core/memoizer.js +311 -0
  359. package/node_modules/zod/v4/core/parse.cjs +148 -46
  360. package/node_modules/zod/v4/core/parse.d.cts +14 -11
  361. package/node_modules/zod/v4/core/parse.d.ts +14 -11
  362. package/node_modules/zod/v4/core/parse.js +127 -45
  363. package/node_modules/zod/v4/core/regexes.cjs +54 -17
  364. package/node_modules/zod/v4/core/regexes.d.cts +5 -0
  365. package/node_modules/zod/v4/core/regexes.d.ts +5 -0
  366. package/node_modules/zod/v4/core/regexes.js +32 -15
  367. package/node_modules/zod/v4/core/registries.cjs +19 -0
  368. package/node_modules/zod/v4/core/registries.js +2 -2
  369. package/node_modules/zod/v4/core/schemas.cjs +785 -386
  370. package/node_modules/zod/v4/core/schemas.d.cts +123 -34
  371. package/node_modules/zod/v4/core/schemas.d.ts +123 -34
  372. package/node_modules/zod/v4/core/schemas.js +753 -386
  373. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  374. package/node_modules/zod/v4/core/to-json-schema.cjs +269 -45
  375. package/node_modules/zod/v4/core/to-json-schema.d.cts +45 -5
  376. package/node_modules/zod/v4/core/to-json-schema.d.ts +45 -5
  377. package/node_modules/zod/v4/core/to-json-schema.js +247 -44
  378. package/node_modules/zod/v4/core/util.cjs +372 -157
  379. package/node_modules/zod/v4/core/util.d.cts +79 -1
  380. package/node_modules/zod/v4/core/util.d.ts +79 -1
  381. package/node_modules/zod/v4/core/util.js +341 -156
  382. package/node_modules/zod/v4/core/versions.cjs +21 -2
  383. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  384. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  385. package/node_modules/zod/v4/core/versions.js +2 -2
  386. package/node_modules/zod/v4/core/visit.cjs +214 -0
  387. package/node_modules/zod/v4/core/visit.d.cts +30 -0
  388. package/node_modules/zod/v4/core/visit.d.ts +30 -0
  389. package/node_modules/zod/v4/core/visit.js +169 -0
  390. package/node_modules/zod/v4/index.cjs +34 -5
  391. package/node_modules/zod/v4/index.d.cts +2 -2
  392. package/node_modules/zod/v4/index.d.ts +2 -2
  393. package/node_modules/zod/v4/index.js +3 -2
  394. package/node_modules/zod/v4/locales/ar.cjs +5 -0
  395. package/node_modules/zod/v4/locales/ar.js +5 -0
  396. package/node_modules/zod/v4/locales/az.cjs +5 -0
  397. package/node_modules/zod/v4/locales/az.js +5 -0
  398. package/node_modules/zod/v4/locales/be.cjs +12 -0
  399. package/node_modules/zod/v4/locales/be.js +12 -0
  400. package/node_modules/zod/v4/locales/bg.cjs +5 -0
  401. package/node_modules/zod/v4/locales/bg.js +5 -0
  402. package/node_modules/zod/v4/locales/bn.cjs +140 -0
  403. package/node_modules/zod/v4/locales/bn.d.cts +5 -0
  404. package/node_modules/zod/v4/locales/bn.d.ts +4 -0
  405. package/node_modules/zod/v4/locales/bn.js +113 -0
  406. package/node_modules/zod/v4/locales/ca.cjs +5 -0
  407. package/node_modules/zod/v4/locales/ca.js +5 -0
  408. package/node_modules/zod/v4/locales/ckb.cjs +160 -0
  409. package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
  410. package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
  411. package/node_modules/zod/v4/locales/ckb.js +133 -0
  412. package/node_modules/zod/v4/locales/cs.cjs +5 -0
  413. package/node_modules/zod/v4/locales/cs.js +5 -0
  414. package/node_modules/zod/v4/locales/da.cjs +7 -2
  415. package/node_modules/zod/v4/locales/da.js +7 -2
  416. package/node_modules/zod/v4/locales/de.cjs +5 -0
  417. package/node_modules/zod/v4/locales/de.js +5 -0
  418. package/node_modules/zod/v4/locales/el.cjs +3 -0
  419. package/node_modules/zod/v4/locales/el.js +3 -0
  420. package/node_modules/zod/v4/locales/en.cjs +16 -4
  421. package/node_modules/zod/v4/locales/en.js +16 -4
  422. package/node_modules/zod/v4/locales/eo.cjs +5 -0
  423. package/node_modules/zod/v4/locales/eo.js +5 -0
  424. package/node_modules/zod/v4/locales/es.cjs +4 -0
  425. package/node_modules/zod/v4/locales/es.js +4 -0
  426. package/node_modules/zod/v4/locales/fa.cjs +5 -0
  427. package/node_modules/zod/v4/locales/fa.js +5 -0
  428. package/node_modules/zod/v4/locales/fi.cjs +5 -0
  429. package/node_modules/zod/v4/locales/fi.js +5 -0
  430. package/node_modules/zod/v4/locales/fr-CA.cjs +5 -0
  431. package/node_modules/zod/v4/locales/fr-CA.js +5 -0
  432. package/node_modules/zod/v4/locales/fr.cjs +18 -14
  433. package/node_modules/zod/v4/locales/fr.js +18 -14
  434. package/node_modules/zod/v4/locales/gu.cjs +140 -0
  435. package/node_modules/zod/v4/locales/gu.d.cts +5 -0
  436. package/node_modules/zod/v4/locales/gu.d.ts +4 -0
  437. package/node_modules/zod/v4/locales/gu.js +113 -0
  438. package/node_modules/zod/v4/locales/he.cjs +7 -0
  439. package/node_modules/zod/v4/locales/he.js +7 -0
  440. package/node_modules/zod/v4/locales/hi.cjs +138 -0
  441. package/node_modules/zod/v4/locales/hi.d.cts +5 -0
  442. package/node_modules/zod/v4/locales/hi.d.ts +4 -0
  443. package/node_modules/zod/v4/locales/hi.js +111 -0
  444. package/node_modules/zod/v4/locales/hr.cjs +4 -0
  445. package/node_modules/zod/v4/locales/hr.js +4 -0
  446. package/node_modules/zod/v4/locales/hu.cjs +5 -0
  447. package/node_modules/zod/v4/locales/hu.js +5 -0
  448. package/node_modules/zod/v4/locales/hy.cjs +11 -0
  449. package/node_modules/zod/v4/locales/hy.js +11 -0
  450. package/node_modules/zod/v4/locales/id.cjs +5 -0
  451. package/node_modules/zod/v4/locales/id.js +5 -0
  452. package/node_modules/zod/v4/locales/index.cjs +43 -2
  453. package/node_modules/zod/v4/locales/index.d.cts +11 -0
  454. package/node_modules/zod/v4/locales/index.d.ts +11 -0
  455. package/node_modules/zod/v4/locales/index.js +11 -0
  456. package/node_modules/zod/v4/locales/is.cjs +5 -0
  457. package/node_modules/zod/v4/locales/is.js +5 -0
  458. package/node_modules/zod/v4/locales/it.cjs +5 -0
  459. package/node_modules/zod/v4/locales/it.js +5 -0
  460. package/node_modules/zod/v4/locales/ja.cjs +5 -0
  461. package/node_modules/zod/v4/locales/ja.js +5 -0
  462. package/node_modules/zod/v4/locales/ka.cjs +5 -0
  463. package/node_modules/zod/v4/locales/ka.js +5 -0
  464. package/node_modules/zod/v4/locales/km.cjs +5 -0
  465. package/node_modules/zod/v4/locales/km.js +5 -0
  466. package/node_modules/zod/v4/locales/kn.cjs +143 -0
  467. package/node_modules/zod/v4/locales/kn.d.cts +5 -0
  468. package/node_modules/zod/v4/locales/kn.d.ts +4 -0
  469. package/node_modules/zod/v4/locales/kn.js +116 -0
  470. package/node_modules/zod/v4/locales/ko.cjs +5 -0
  471. package/node_modules/zod/v4/locales/ko.js +5 -0
  472. package/node_modules/zod/v4/locales/lt.cjs +4 -0
  473. package/node_modules/zod/v4/locales/lt.js +4 -0
  474. package/node_modules/zod/v4/locales/mk.cjs +5 -0
  475. package/node_modules/zod/v4/locales/mk.js +5 -0
  476. package/node_modules/zod/v4/locales/ms.cjs +5 -0
  477. package/node_modules/zod/v4/locales/ms.js +5 -0
  478. package/node_modules/zod/v4/locales/ne.cjs +138 -0
  479. package/node_modules/zod/v4/locales/ne.d.cts +5 -0
  480. package/node_modules/zod/v4/locales/ne.d.ts +4 -0
  481. package/node_modules/zod/v4/locales/ne.js +111 -0
  482. package/node_modules/zod/v4/locales/nl.cjs +5 -0
  483. package/node_modules/zod/v4/locales/nl.js +5 -0
  484. package/node_modules/zod/v4/locales/nn.cjs +140 -0
  485. package/node_modules/zod/v4/locales/nn.d.cts +5 -0
  486. package/node_modules/zod/v4/locales/nn.d.ts +4 -0
  487. package/node_modules/zod/v4/locales/nn.js +113 -0
  488. package/node_modules/zod/v4/locales/no.cjs +7 -2
  489. package/node_modules/zod/v4/locales/no.js +7 -2
  490. package/node_modules/zod/v4/locales/ota.cjs +5 -0
  491. package/node_modules/zod/v4/locales/ota.js +5 -0
  492. package/node_modules/zod/v4/locales/pl.cjs +5 -0
  493. package/node_modules/zod/v4/locales/pl.js +5 -0
  494. package/node_modules/zod/v4/locales/ps.cjs +5 -0
  495. package/node_modules/zod/v4/locales/ps.js +5 -0
  496. package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
  497. package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
  498. package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
  499. package/node_modules/zod/v4/locales/pt-BR.js +143 -0
  500. package/node_modules/zod/v4/locales/pt.cjs +89 -55
  501. package/node_modules/zod/v4/locales/pt.js +89 -55
  502. package/node_modules/zod/v4/locales/ro.cjs +3 -0
  503. package/node_modules/zod/v4/locales/ro.js +3 -0
  504. package/node_modules/zod/v4/locales/ru.cjs +12 -0
  505. package/node_modules/zod/v4/locales/ru.js +12 -0
  506. package/node_modules/zod/v4/locales/sk.cjs +143 -0
  507. package/node_modules/zod/v4/locales/sk.d.cts +5 -0
  508. package/node_modules/zod/v4/locales/sk.d.ts +4 -0
  509. package/node_modules/zod/v4/locales/sk.js +116 -0
  510. package/node_modules/zod/v4/locales/sl.cjs +5 -0
  511. package/node_modules/zod/v4/locales/sl.js +5 -0
  512. package/node_modules/zod/v4/locales/sv.cjs +7 -2
  513. package/node_modules/zod/v4/locales/sv.js +7 -2
  514. package/node_modules/zod/v4/locales/ta.cjs +5 -0
  515. package/node_modules/zod/v4/locales/ta.js +5 -0
  516. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  517. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  518. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  519. package/node_modules/zod/v4/locales/tg.js +117 -0
  520. package/node_modules/zod/v4/locales/th.cjs +5 -0
  521. package/node_modules/zod/v4/locales/th.js +5 -0
  522. package/node_modules/zod/v4/locales/tk.cjs +134 -0
  523. package/node_modules/zod/v4/locales/tk.d.cts +5 -0
  524. package/node_modules/zod/v4/locales/tk.d.ts +4 -0
  525. package/node_modules/zod/v4/locales/tk.js +107 -0
  526. package/node_modules/zod/v4/locales/tr.cjs +5 -0
  527. package/node_modules/zod/v4/locales/tr.js +5 -0
  528. package/node_modules/zod/v4/locales/uk.cjs +5 -0
  529. package/node_modules/zod/v4/locales/uk.js +5 -0
  530. package/node_modules/zod/v4/locales/ur.cjs +5 -0
  531. package/node_modules/zod/v4/locales/ur.js +5 -0
  532. package/node_modules/zod/v4/locales/uz.cjs +3 -0
  533. package/node_modules/zod/v4/locales/uz.js +3 -0
  534. package/node_modules/zod/v4/locales/vi.cjs +5 -0
  535. package/node_modules/zod/v4/locales/vi.js +5 -0
  536. package/node_modules/zod/v4/locales/yo.cjs +5 -0
  537. package/node_modules/zod/v4/locales/yo.js +5 -0
  538. package/node_modules/zod/v4/locales/zh-CN.cjs +5 -0
  539. package/node_modules/zod/v4/locales/zh-CN.js +5 -0
  540. package/node_modules/zod/v4/locales/zh-TW.cjs +5 -0
  541. package/node_modules/zod/v4/locales/zh-TW.js +5 -0
  542. package/node_modules/zod/v4/mini/checks.cjs +21 -1
  543. package/node_modules/zod/v4/mini/checks.d.cts +1 -1
  544. package/node_modules/zod/v4/mini/checks.d.ts +1 -1
  545. package/node_modules/zod/v4/mini/checks.js +1 -1
  546. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  547. package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
  548. package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
  549. package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
  550. package/node_modules/zod/v4/mini/deep-partial.js +13 -0
  551. package/node_modules/zod/v4/mini/external.cjs +33 -1
  552. package/node_modules/zod/v4/mini/external.d.cts +5 -2
  553. package/node_modules/zod/v4/mini/external.d.ts +5 -2
  554. package/node_modules/zod/v4/mini/external.js +3 -1
  555. package/node_modules/zod/v4/mini/in-out.cjs +82 -0
  556. package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
  557. package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
  558. package/node_modules/zod/v4/mini/in-out.js +36 -0
  559. package/node_modules/zod/v4/mini/index.cjs +19 -0
  560. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  561. package/node_modules/zod/v4/mini/parse.cjs +22 -1
  562. package/node_modules/zod/v4/mini/parse.d.cts +1 -1
  563. package/node_modules/zod/v4/mini/parse.d.ts +1 -1
  564. package/node_modules/zod/v4/mini/parse.js +1 -1
  565. package/node_modules/zod/v4/mini/schemas.cjs +117 -53
  566. package/node_modules/zod/v4/mini/schemas.d.cts +49 -14
  567. package/node_modules/zod/v4/mini/schemas.d.ts +49 -14
  568. package/node_modules/zod/v4/mini/schemas.js +92 -51
  569. package/node_modules/zod/v4-mini/index.cjs +19 -0
  570. package/openclaw.plugin.json +12 -28
  571. package/package.json +9 -7
  572. package/dist/directory-config-B0shiBa4.js +0 -33
  573. package/node_modules/zod/src/v4/core/config.ts +0 -15
  574. /package/dist/{message-event-X_aBiM1X.js → .setup/message-event-X_aBiM1X.mjs} +0 -0
  575. /package/dist/{types-CeupBG0P.js → .setup/types-CeupBG0P.mjs} +0 -0
@@ -58,3 +58,70 @@ test("instanceof respects customError", () => {
58
58
 
59
59
  z.config({ customError: undefined });
60
60
  });
61
+
62
+ test("z.properties", () => {
63
+ const httpsUrl = z.instanceof(URL).check(
64
+ ...z.properties({
65
+ protocol: z.literal("https:"),
66
+ hostname: z.string().regex(z.regexes.domain),
67
+ })
68
+ );
69
+
70
+ expectTypeOf<URL>().toEqualTypeOf<z.infer<typeof httpsUrl>>();
71
+ expect(httpsUrl.safeParse(new URL("https://example.com")).success).toBe(true);
72
+
73
+ // One check iterates the whole shape, so every failing property reports — unlike the equivalent chain of z.property() calls, which aborts on the first.
74
+ const both = httpsUrl.safeParse(new URL("http://localhost"));
75
+ expect(both.error!.issues.map((i) => i.path)).toEqual([["protocol"], ["hostname"]]);
76
+
77
+ // A failing base schema yields its own issue and no property issues.
78
+ for (const input of ["not a url", null]) {
79
+ const issues = httpsUrl.safeParse(input).error!.issues;
80
+ expect(issues.map((i) => [i.code, i.path])).toEqual([["custom", []]]);
81
+ }
82
+
83
+ // Not specific to z.instanceof(). A base whose type mismatch aborts implicitly rather than explicitly must still not run the property checks against the rejected value.
84
+ const obj = z
85
+ .object({ a: z.string(), b: z.string() })
86
+ .check(...z.properties({ a: z.literal("x"), b: z.literal("y") }));
87
+ expect(obj.safeParse({ a: "x", b: "y" }).success).toBe(true);
88
+ expect(obj.safeParse({ a: "!", b: "!" }).error!.issues.map((i) => i.path)).toEqual([["a"], ["b"]]);
89
+ for (const input of [null, undefined, 5]) {
90
+ expect(obj.safeParse(input).error!.issues.map((i) => [i.code, i.path])).toEqual([["invalid_type", []]]);
91
+ }
92
+
93
+ // Known looseness versus the longhand, pinned so it stays deliberate: the check is typed over the whole shape, and `$ZodCheckInternals.check()` is a method, so TypeScript compares it bivariantly and accepts a check type that is a subtype of the target. Naming a key the target lacks therefore compiles here and fails at parse time, where the equivalent chain of `z.property()` calls rejects it outright.
94
+ z.object({ a: z.string() }).check(...z.properties({ a: z.literal("x"), b: z.literal("y") }));
95
+ expect(
96
+ z
97
+ .object({ a: z.string() })
98
+ .check(...z.properties({ a: z.string(), b: z.literal("y") }))
99
+ .safeParse({ a: "ok" })
100
+ .error!.issues.map((i) => [i.code, i.path])
101
+ ).toEqual([["invalid_value", ["b"]]]);
102
+
103
+ // literal and enum inputs widen to their primitive, so a `string`/`boolean` property accepts them without a cast, while a genuine type mismatch or an unknown key still fails to compile
104
+ z.instanceof(URL).check(z.property("protocol", z.literal("https:")));
105
+ z.instanceof(Request).check(...z.properties({ method: z.enum(["POST", "PUT"]), bodyUsed: z.literal(false) }));
106
+ // @ts-expect-error length is a number
107
+ z.string().check(z.property("length", z.string()));
108
+ // @ts-expect-error no such key
109
+ z.instanceof(URL).check(z.property("nope", z.string()));
110
+
111
+ // the check feeds the property value into its schema, so it is typed over the input side rather than the output
112
+ const stringToLength = z.property(
113
+ "a",
114
+ z.string().transform((s) => s.length)
115
+ );
116
+ z.object({ a: z.string() }).check(stringToLength);
117
+ // @ts-expect-error a is a number, the schema takes a string
118
+ z.object({ a: z.number() }).check(stringToLength);
119
+
120
+ // The properties check carries no `when`, so the schema stays on the compiled fast path.
121
+ const compiled = z.compile(httpsUrl);
122
+ expect(compiled.safeParse(new URL("https://example.com")).success).toBe(true);
123
+ expect(compiled.safeParse(new URL("http://localhost")).error!.issues.map((i) => i.path)).toEqual([
124
+ ["protocol"],
125
+ ["hostname"],
126
+ ]);
127
+ });
@@ -67,6 +67,24 @@ test("object intersection: strict + strict", () => {
67
67
  `);
68
68
  });
69
69
 
70
+ test("object intersection strips __proto__ from pass-through operands", () => {
71
+ const cases = [
72
+ [
73
+ z.intersection(z.object({ name: z.string() }), z.unknown()),
74
+ JSON.parse('{"__proto__":{"isAdmin":true},"name":"alice"}'),
75
+ { name: "alice" },
76
+ ],
77
+ [z.intersection(z.record(z.string(), z.unknown()), z.any()), JSON.parse('{"__proto__":{},"a":1}'), { a: 1 }],
78
+ ] as const;
79
+
80
+ for (const [schema, input, expected] of cases) {
81
+ const parsed = schema.parse(input);
82
+ expect(parsed).toEqual(expected);
83
+ expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
84
+ expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
85
+ }
86
+ });
87
+
70
88
  test("deep intersection", () => {
71
89
  const Animal = z.object({
72
90
  properties: z.object({
@@ -196,3 +214,121 @@ test("invalid deep merge of object and array combination", async () => {
196
214
  `[Error: Unmergable intersection. Error path: ["students",0,"name"]]`
197
215
  );
198
216
  });
217
+
218
+ // A record's key schema says which keys that record GOVERNS; it is not a predicate
219
+ // every key in the result must satisfy. TypeScript works the same way: in
220
+ // `{name: string} & Record<`S_${string}`, string>` the index signature constrains
221
+ // only the keys matching it, so `name` is fine. So a key one side does not govern
222
+ // is reconciled against the other side, exactly as unrecognized_keys already is.
223
+ test("a record's key schema governs only its own keys inside an intersection", () => {
224
+ const Obj = z.object({ name: z.string() });
225
+ const value = { name: "a", S_a: "s" };
226
+
227
+ // Every key-schema flavor behaves the same: `name` belongs to the object side.
228
+ expect(z.intersection(Obj, z.record(z.string().regex(/^S_/), z.string())).parse(value)).toEqual(value);
229
+ expect(z.intersection(Obj, z.record(z.templateLiteral(["S_", z.string()]), z.string())).parse(value)).toEqual(value);
230
+ expect(z.intersection(Obj, z.partialRecord(z.enum(["p1", "p2"]), z.string())).parse({ name: "a", p1: "x" })).toEqual({
231
+ name: "a",
232
+ p1: "x",
233
+ });
234
+ expect(z.intersection(Obj, z.record(z.enum(["p1"]), z.string())).parse({ name: "a", p1: "x" })).toEqual({
235
+ name: "a",
236
+ p1: "x",
237
+ });
238
+
239
+ // A key the record DOES govern still has its value validated across the intersection.
240
+ const governed = z.intersection(z.object({ S_x: z.number() }), z.record(z.string().regex(/^S_/), z.string()));
241
+ expect(governed.safeParse({ S_x: 1 }).success).toBe(false);
242
+
243
+ // A key NEITHER side governs is still rejected.
244
+ const strict = z.intersection(z.strictObject({ name: z.string() }), z.record(z.string().regex(/^S_/), z.string()));
245
+ expect(strict.parse(value)).toEqual(value);
246
+ expect(strict.safeParse({ ...value, evil: "q" }).success).toBe(false);
247
+
248
+ // Standalone, a record still rejects a key it does not govern.
249
+ expect(z.record(z.string().regex(/^S_/), z.string()).safeParse({ S_a: "s", bad: "x" }).success).toBe(false);
250
+ });
251
+
252
+ test("partialRecord reports an out-of-set key as unrecognized, not invalid", () => {
253
+ const enumKeys = z.partialRecord(z.enum(["a", "b"]), z.string()).safeParse({ a: "x", zzz: "q" });
254
+ expect(enumKeys.success).toBe(false);
255
+ expect(enumKeys.error!.issues[0].code).toBe("unrecognized_keys");
256
+
257
+ // A regex key schema still reports the failure as an invalid key.
258
+ const regexKeys = z.record(z.string().regex(/^S_/), z.string()).safeParse({ S_a: "x", zzz: "q" });
259
+ expect(regexKeys.success).toBe(false);
260
+ expect(regexKeys.error!.issues[0].code).toBe("invalid_key");
261
+ });
262
+
263
+ test("intersection operands run their own checks, refinements and transforms", () => {
264
+ let checks = 0;
265
+ const failing = z.intersection(
266
+ z.strictObject({ x: z.string() }).check(() => {
267
+ checks++;
268
+ }),
269
+ z.strictObject({ a: z.string() }).superRefine((_data, ctx) => {
270
+ checks++;
271
+ ctx.addIssue({ code: "custom", message: "boom" });
272
+ })
273
+ );
274
+ expect(failing.safeParse({ x: "test", a: "hello" })).toMatchObject({
275
+ success: false,
276
+ error: { issues: [{ code: "custom", message: "boom" }] },
277
+ });
278
+ expect(checks).toBe(2);
279
+
280
+ const transformed = z.intersection(
281
+ z.strictObject({ x: z.string() }).transform((v) => ({ ...v, x: v.x.toUpperCase() })),
282
+ z.strictObject({ a: z.string() }).transform((v) => ({ ...v, seen: true }))
283
+ );
284
+ expect(transformed.parse({ x: "test", a: "hello" })).toEqual({ x: "TEST", a: "hello", seen: true });
285
+ });
286
+
287
+ test("intersection operands apply defaults, including through a nested intersection", () => {
288
+ const inner = z.intersection(
289
+ z.strictObject({ x: z.string().default("X default"), y: z.number() }),
290
+ z.strictObject({ z: z.boolean() })
291
+ );
292
+ const schema = z.intersection(inner, z.strictObject({ a: z.string() }));
293
+ expectTypeOf<z.output<typeof schema>>().toEqualTypeOf<{ x: string; y: number } & { z: boolean } & { a: string }>();
294
+
295
+ expect(schema.parse({ y: 34, z: true, a: "hello" })).toEqual({ x: "X default", y: 34, z: true, a: "hello" });
296
+ });
297
+
298
+ test("a record operand runs its own refinements inside an intersection", () => {
299
+ let calls = 0;
300
+ const schema = z
301
+ .record(z.enum(["p1", "p2"]), z.string())
302
+ .superRefine((_data, ctx) => {
303
+ calls++;
304
+ ctx.addIssue({ code: "custom", message: "record refined" });
305
+ })
306
+ .and(z.strictObject({ name: z.string() }));
307
+
308
+ expect(schema.safeParse({ p1: "a", p2: "b", name: "n" })).toMatchObject({
309
+ success: false,
310
+ error: { issues: [{ code: "custom", message: "record refined" }] },
311
+ });
312
+ expect(calls).toBe(1);
313
+ });
314
+
315
+ test("a strict object nested under an operand keeps its strictness", () => {
316
+ const schema = z.intersection(
317
+ z.object({ inner: z.strictObject({ a: z.string() }) }),
318
+ z.object({ other: z.string() })
319
+ );
320
+
321
+ expect(schema.parse({ inner: { a: "x" }, other: "y" })).toEqual({ inner: { a: "x" }, other: "y" });
322
+ expect(schema.safeParse({ inner: { a: "x", extra: 1 }, other: "y" })).toMatchObject({
323
+ success: false,
324
+ error: { issues: [{ code: "unrecognized_keys", keys: ["extra"], path: ["inner"] }] },
325
+ });
326
+ });
327
+
328
+ test("a strict object composes with a refined object", () => {
329
+ const A = z.object({ key1: z.boolean() }).strict();
330
+ const B = z.object({ key2: z.boolean() }).refine(({ key2 }) => key2, "key2 must be true");
331
+
332
+ expect(A.and(B).parse({ key1: true, key2: true })).toEqual({ key1: true, key2: true });
333
+ expect(A.and(B).safeParse({ key1: true, key2: false }).success).toBe(false);
334
+ });
@@ -0,0 +1,215 @@
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
+ /** Error maps run on the first read of `error`, so a test that only observes them reads it. */
9
+ const fail = (r: { error?: unknown }) => r.error;
10
+
11
+ /** Collects the owning schema's registered metadata for every issue an error map sees. */
12
+ function captureMeta(): { seen: (z.core.GlobalMeta | undefined)[] } {
13
+ const seen: (z.core.GlobalMeta | undefined)[] = [];
14
+ z.config({
15
+ customError: (issue) => {
16
+ seen.push(issue.schema && z.globalRegistry.get(issue.schema));
17
+ return undefined;
18
+ },
19
+ });
20
+ return { seen };
21
+ }
22
+
23
+ test("check-originated issues expose the owning schema", () => {
24
+ const { seen } = captureMeta();
25
+
26
+ fail(z.object({ name: z.string().min(5).meta({ title: "Name" }) }).safeParse({ name: "ab" }));
27
+ fail(z.string().max(2).meta({ title: "Max" }).safeParse("abc"));
28
+ fail(z.email().meta({ title: "Email" }).safeParse("nope"));
29
+ fail(z.number().multipleOf(3).meta({ title: "Multiple" }).safeParse(4));
30
+ fail(z.array(z.string()).min(2).meta({ title: "Array" }).safeParse([]));
31
+
32
+ expect(seen).toEqual([
33
+ { title: "Name" },
34
+ { title: "Max" },
35
+ { title: "Email" },
36
+ { title: "Multiple" },
37
+ { title: "Array" },
38
+ ]);
39
+ });
40
+
41
+ test("schema-originated issues expose the owning schema", () => {
42
+ const { seen } = captureMeta();
43
+
44
+ fail(z.object({ name: z.string().min(5).meta({ title: "Name" }) }).safeParse({ name: 123 }));
45
+ fail(z.email().meta({ title: "Email" }).safeParse(123));
46
+
47
+ expect(seen).toEqual([{ title: "Name" }, { title: "Email" }]);
48
+ });
49
+
50
+ test("refinements attribute to the refined schema, not the internal check schema", () => {
51
+ const { seen } = captureMeta();
52
+
53
+ fail(
54
+ z
55
+ .string()
56
+ .refine(() => false)
57
+ .meta({ title: "Refine" })
58
+ .safeParse("abc")
59
+ );
60
+ fail(
61
+ z
62
+ .string()
63
+ .superRefine((_, ctx) => ctx.addIssue({ code: "custom", message: "" }))
64
+ .meta({ title: "SuperRefine" })
65
+ .safeParse("abc")
66
+ );
67
+
68
+ expect(seen).toEqual([{ title: "Refine" }, { title: "SuperRefine" }]);
69
+ });
70
+
71
+ test("the innermost schema owns the issue", () => {
72
+ const { seen } = captureMeta();
73
+
74
+ fail(
75
+ z
76
+ .array(z.string().min(5).meta({ title: "Element" }))
77
+ .meta({ title: "Array" })
78
+ .safeParse(["ab"])
79
+ );
80
+ fail(
81
+ z
82
+ .string()
83
+ .pipe(z.string().min(5).meta({ title: "Target" }))
84
+ .meta({ title: "Pipe" })
85
+ .safeParse("ab")
86
+ );
87
+ fail(
88
+ z
89
+ .looseObject({})
90
+ .check(z.property("a", z.string().meta({ title: "Property" })))
91
+ .meta({ title: "Object" })
92
+ .safeParse({ a: 1 })
93
+ );
94
+
95
+ expect(seen).toEqual([{ title: "Element" }, { title: "Target" }, { title: "Property" }]);
96
+ });
97
+
98
+ test("issues carrying no usable `inst` still get the owning schema", () => {
99
+ const { seen } = captureMeta();
100
+
101
+ // 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.
102
+ fail(
103
+ z
104
+ .string()
105
+ .check((payload) => {
106
+ payload.issues.push({ code: "custom", input: payload.value });
107
+ })
108
+ .meta({ title: "Bare" })
109
+ .safeParse("abc")
110
+ );
111
+ const shorthand = z
112
+ .string()
113
+ .superRefine((_, ctx) => ctx.addIssue("bad stuff"))
114
+ .meta({ title: "Shorthand" })
115
+ .safeParse("abc");
116
+
117
+ expect(seen).toEqual([{ title: "Bare" }]);
118
+ expect(shorthand.error!.issues[0].message).toEqual("bad stuff");
119
+ });
120
+
121
+ test("async checks expose the owning schema", async () => {
122
+ const { seen } = captureMeta();
123
+
124
+ fail(
125
+ await z
126
+ .string()
127
+ .refine(async () => false)
128
+ .meta({ title: "Async" })
129
+ .safeParseAsync("abc")
130
+ );
131
+
132
+ expect(seen).toEqual([{ title: "Async" }]);
133
+ });
134
+
135
+ test("the owning schema is the clone `.meta()` registered, not the pre-metadata schema", () => {
136
+ const bare = z.string().min(5);
137
+ const labeled = bare.meta({ title: "Labeled" });
138
+ const seen: unknown[] = [];
139
+ z.config({
140
+ customError: (issue) => {
141
+ seen.push(issue.schema === labeled);
142
+ return undefined;
143
+ },
144
+ });
145
+
146
+ fail(labeled.safeParse("ab"));
147
+
148
+ expect(seen).toEqual([true]);
149
+ });
150
+
151
+ test("`inst` keeps its meaning and `schema` stays off the finalized issue", () => {
152
+ const insts: string[] = [];
153
+ z.config({
154
+ customError: (issue) => {
155
+ insts.push(issue.inst!.constructor.name);
156
+ return undefined;
157
+ },
158
+ });
159
+
160
+ const tooSmall = z.string().min(5).safeParse("ab").error!;
161
+ const wrongType = z.string().safeParse(123).error!;
162
+
163
+ expect(insts).toEqual(["$ZodCheckMinLength", "ZodString"]);
164
+ expect(Object.keys(tooSmall.issues[0])).not.toContain("schema");
165
+ expect(Object.keys(wrongType.issues[0])).not.toContain("schema");
166
+ });
167
+
168
+ test("every error map kind receives the owning schema", () => {
169
+ const seen: Record<string, z.core.GlobalMeta | undefined> = {};
170
+ const capture = (key: string) => (issue: { schema?: z.core.$ZodType | undefined }) => {
171
+ seen[key] = issue.schema && z.globalRegistry.get(issue.schema);
172
+ return undefined;
173
+ };
174
+
175
+ fail(
176
+ z
177
+ .string()
178
+ .min(5, { error: capture("check") })
179
+ .meta({ title: "Check" })
180
+ .safeParse("ab")
181
+ );
182
+
183
+ // A schema-bound map is only consulted for issues the schema itself raised, so this one needs a type error.
184
+ fail(
185
+ z
186
+ .string({ error: capture("schema") })
187
+ .meta({ title: "Schema" })
188
+ .safeParse(123)
189
+ );
190
+
191
+ fail(
192
+ z
193
+ .string()
194
+ .min(5)
195
+ .meta({ title: "Parse" })
196
+ .safeParse("ab", { error: capture("parse") })
197
+ );
198
+
199
+ z.config({ customError: capture("customError") });
200
+ fail(z.string().min(5).meta({ title: "Custom" }).safeParse("ab"));
201
+
202
+ // localeError carries the default English locale, so it is restored rather than cleared.
203
+ const localeError = z.config().localeError;
204
+ z.config({ customError: undefined, localeError: capture("localeError") });
205
+ fail(z.string().min(5).meta({ title: "Locale" }).safeParse("ab"));
206
+ z.config({ localeError });
207
+
208
+ expect(seen).toEqual({
209
+ check: { title: "Check" },
210
+ schema: { title: "Schema" },
211
+ parse: { title: "Parse" },
212
+ customError: { title: "Custom" },
213
+ localeError: { title: "Locale" },
214
+ });
215
+ });
@@ -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"),