@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
@@ -1,7 +1,46 @@
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
 
5
+ test("number factory checks", () => {
6
+ const schema = z.number({ checks: [z.gte(1), z.lte(3)] as const });
7
+ const chained = z.number().min(1).max(3);
8
+ expectTypeOf<z.output<typeof schema>>().toEqualTypeOf<number>();
9
+ for (const value of [0, 1, 3, 4, Number.NaN, "2", undefined]) {
10
+ expect(z.validate(schema, value)).toBe(z.validate(chained, value));
11
+ expect(schema.safeParse(value)).toEqual(chained.safeParse(value));
12
+ }
13
+ expect(z.toJSONSchema(schema)).toEqual(z.toJSONSchema(chained));
14
+ expect(schema.minValue).toBe(1);
15
+ expect(schema.maxValue).toBe(3);
16
+ expect(z.coerce.number({ checks: [z.gte(1)] }).parse("2")).toBe(2);
17
+ const overwritten = z.number({ checks: [z.overwrite<number>((value) => value + 1), z.gte(2)] });
18
+ expect(overwritten.parse(1)).toBe(2);
19
+ expect(z.validate(overwritten, 0)).toBe(false);
20
+ // @ts-expect-error length checks cannot validate numbers
21
+ z.number({ checks: [z.minLength(1)] });
22
+ });
23
+
24
+ test("number factory checks snapshot caller arrays", () => {
25
+ for (const factory of [z.number, z.coerce.number]) {
26
+ const checks = [z.gte(1)];
27
+ const schema = factory({ checks });
28
+ let reads = 0;
29
+ factory({
30
+ get checks() {
31
+ if (++reads > 1) throw new Error("checks read twice");
32
+ return checks;
33
+ },
34
+ });
35
+ expect(reads).toBe(1);
36
+ const before = z.toJSONSchema(schema);
37
+ checks.push(z.gte(10));
38
+ expect(z.validate(schema, 3)).toBe(true);
39
+ expect(z.validate(z.compile(schema), 3)).toBe(true);
40
+ expect(z.toJSONSchema(schema)).toEqual(before);
41
+ }
42
+ });
43
+
5
44
  test("z.number() basic validation", () => {
6
45
  const schema = z.number();
7
46
  expect(schema.parse(1234)).toEqual(1234);
@@ -22,7 +61,7 @@ test("Infinity validation", () => {
22
61
  "code": "invalid_type",
23
62
  "received": "Infinity",
24
63
  "path": [],
25
- "message": "Invalid input: expected number, received number"
64
+ "message": "Invalid input: expected number, received Infinity"
26
65
  }
27
66
  ]],
28
67
  "success": false,
@@ -34,9 +73,9 @@ test("Infinity validation", () => {
34
73
  {
35
74
  "expected": "number",
36
75
  "code": "invalid_type",
37
- "received": "Infinity",
76
+ "received": "-Infinity",
38
77
  "path": [],
39
- "message": "Invalid input: expected number, received number"
78
+ "message": "Invalid input: expected number, received -Infinity"
40
79
  }
41
80
  ]],
42
81
  "success": false,
@@ -137,6 +176,16 @@ test("multipleOf", () => {
137
176
  expect(() => schemas.schema7.parse(numbers.number8)).toThrow();
138
177
  });
139
178
 
179
+ test(".multipleOf() accepts exact decimal multiples", () => {
180
+ // 2.03 === 29 * 0.07, but the quotient lands 2 ULP below 29, so the old tolerance rejected it while the neighbouring multiples 1.96 and 2.10 passed.
181
+ const schema = z.number().multipleOf(0.07);
182
+ expect(schema.safeParse(2.03).success).toBe(true);
183
+ expect(schema.safeParse(4.06).success).toBe(true);
184
+ expect(schema.safeParse(8.54).success).toBe(true);
185
+ // genuine non-multiples must still be rejected
186
+ expect(schema.safeParse(2.04).success).toBe(false);
187
+ });
188
+
140
189
  test(".multipleOf() with positive divisor", () => {
141
190
  const schema = z.number().multipleOf(5);
142
191
  expect(schema.parse(15)).toEqual(15);
@@ -154,8 +203,7 @@ test(".multipleOf() with negative divisor", () => {
154
203
  });
155
204
 
156
205
  test(".multipleOf() with scientific notation (multi-digit exponents)", () => {
157
- // Regression test for https://github.com/colinhacks/zod/pull/5687
158
- // The regex was using \d? which only matches single-digit exponents
206
+ // Regression test for https://github.com/colinhacks/zod/pull/5687 — the regex was using \d? which only matches single-digit exponents
159
207
  const schema = z.number().multipleOf(1e-10);
160
208
 
161
209
  // These should all pass - they are valid multiples of 1e-10
@@ -208,7 +256,7 @@ test(".finite() validation", () => {
208
256
  "code": "invalid_type",
209
257
  "received": "Infinity",
210
258
  "path": [],
211
- "message": "Invalid input: expected number, received number"
259
+ "message": "Invalid input: expected number, received Infinity"
212
260
  }
213
261
  ]],
214
262
  "success": false,
@@ -220,9 +268,9 @@ test(".finite() validation", () => {
220
268
  {
221
269
  "expected": "number",
222
270
  "code": "invalid_type",
223
- "received": "Infinity",
271
+ "received": "-Infinity",
224
272
  "path": [],
225
- "message": "Invalid input: expected number, received number"
273
+ "message": "Invalid input: expected number, received -Infinity"
226
274
  }
227
275
  ]],
228
276
  "success": false,
@@ -323,3 +371,31 @@ test("error customization", () => {
323
371
  z.number().gte(5, { error: (iss) => "Min: " + iss.minimum.valueOf() });
324
372
  z.number().lte(5, { error: (iss) => "Max: " + iss.maximum.valueOf() });
325
373
  });
374
+
375
+ test("number formats are distinct at the type level", () => {
376
+ expectTypeOf(z.int()._zod.def.format).toEqualTypeOf<"safeint">();
377
+ expectTypeOf(z.int32()._zod.def.format).toEqualTypeOf<"int32">();
378
+ expectTypeOf(z.uint32()._zod.def.format).toEqualTypeOf<"uint32">();
379
+ expectTypeOf(z.float32()._zod.def.format).toEqualTypeOf<"float32">();
380
+ expectTypeOf(z.float64()._zod.def.format).toEqualTypeOf<"float64">();
381
+
382
+ z.int() satisfies z.ZodNumberFormat;
383
+ z.int() satisfies z.ZodNumber;
384
+
385
+ // @ts-expect-error a float32 schema is not a ZodInt
386
+ z.float32() satisfies z.ZodInt;
387
+ // @ts-expect-error a uint32 schema is not a ZodInt32
388
+ z.uint32() satisfies z.ZodInt32;
389
+
390
+ // the point of the distinction: dispatching on the schema type in a conditional type
391
+ type Sql<T> = T extends z.ZodUInt32
392
+ ? "BIGINT"
393
+ : T extends z.ZodInt32
394
+ ? "INTEGER"
395
+ : T extends z.ZodFloat32
396
+ ? "REAL"
397
+ : never;
398
+ expectTypeOf<Sql<z.ZodUInt32>>().toEqualTypeOf<"BIGINT">();
399
+ expectTypeOf<Sql<z.ZodInt32>>().toEqualTypeOf<"INTEGER">();
400
+ expectTypeOf<Sql<z.ZodFloat32>>().toEqualTypeOf<"REAL">();
401
+ });
@@ -132,14 +132,12 @@ test("catchall inference", () => {
132
132
  test("catchall overrides strict", () => {
133
133
  const o1 = z.object({ first: z.string().optional() }).strict().catchall(z.number());
134
134
 
135
- // should run fine
136
- // setting a catchall overrides the unknownKeys behavior
135
+ // should run fine setting a catchall overrides the unknownKeys behavior
137
136
  o1.parse({
138
137
  asdf: 1234,
139
138
  });
140
139
 
141
- // should only run catchall validation
142
- // against unknown keys
140
+ // should only run catchall validation against unknown keys
143
141
  o1.parse({
144
142
  first: "asdf",
145
143
  asdf: 1234,
@@ -154,8 +152,7 @@ test("catchall overrides strict", () => {
154
152
  .strict()
155
153
  .catchall(z.number());
156
154
 
157
- // should run fine
158
- // setting a catchall overrides the unknownKeys behavior
155
+ // should run fine setting a catchall overrides the unknownKeys behavior
159
156
  o1.parse({
160
157
  first: "asdf",
161
158
  asdf: 1234,
@@ -670,10 +667,7 @@ test("safeExtend() on object with refinements should not throw", () => {
670
667
  expect(() => schema.safeExtend({ b: z.string() })).not.toThrow();
671
668
  });
672
669
 
673
- // __proto__ in input must not replace the prototype of the parsed object via
674
- // the assignment setter on the result {}.
675
- // https://github.com/colinhacks/zod/security/advisories/GHSA-r34p-xfmx-58wv
676
- // https://github.com/colinhacks/zod/security/advisories/GHSA-84jv-fqfx-wxhr
670
+ // __proto__ in input must not replace the prototype of the parsed object via the assignment setter on the result {}.
677
671
  describe("__proto__ in object catchall paths", () => {
678
672
  const protoInput = () => JSON.parse('{"__proto__":{"isAdmin":true},"name":"alice"}');
679
673
 
@@ -709,9 +703,304 @@ describe("__proto__ in object catchall paths", () => {
709
703
  }
710
704
  });
711
705
 
712
- test("strict does not surface __proto__ as unrecognized", () => {
706
+ test("strict surfaces __proto__ as unrecognized without copying it", () => {
713
707
  const schema = z.object({ name: z.string() }).strict();
714
708
  const result = schema.safeParse(protoInput());
715
- expect(result.success).toBe(true);
709
+ expect(result.success).toBe(false);
710
+ if (!result.success) {
711
+ expect(result.error.issues[0].code).toBe("unrecognized_keys");
712
+ expect((result.error.issues[0] as any).keys).toEqual(["__proto__"]);
713
+ }
714
+ });
715
+
716
+ test("strict accepts but strips a __proto__ key the shape declares", () => {
717
+ const shape: any = { name: z.string() };
718
+ Object.defineProperty(shape, "__proto__", {
719
+ value: z.string(),
720
+ enumerable: true,
721
+ configurable: true,
722
+ writable: true,
723
+ });
724
+ const input = JSON.parse('{"name":"alice","__proto__":"hello"}');
725
+
726
+ for (const schema of [z.object(shape).strict(), z.object(shape).catchall(z.any()), z.object(shape)]) {
727
+ const result = schema.safeParse(input);
728
+ expect(result.success).toBe(true);
729
+ if (result.success) {
730
+ expect(Object.keys(result.data)).toEqual(["name"]);
731
+ expect(Object.getPrototypeOf(result.data)).toBe(Object.prototype);
732
+ }
733
+ }
734
+ });
735
+
736
+ test("strictObject and jitless agree with .strict()", async () => {
737
+ for (const schema of [z.strictObject({ name: z.string() }), z.object({ name: z.string() }).strict()]) {
738
+ for (const result of [
739
+ schema.safeParse(protoInput()),
740
+ await schema.safeParseAsync(protoInput(), {
741
+ jitless: true,
742
+ } as any),
743
+ ]) {
744
+ expect(result.success).toBe(false);
745
+ if (!result.success) {
746
+ expect((result.error.issues[0] as any).keys).toEqual(["__proto__"]);
747
+ }
748
+ }
749
+ }
750
+ });
751
+ });
752
+
753
+ // Parsed objects always strip __proto__, including keys explicitly declared by the schema.
754
+ describe("__proto__ as a declared shape key", () => {
755
+ const protoInput = () => JSON.parse('{"__proto__":{"isAdmin":true},"name":"alice"}');
756
+ const makeShape = () =>
757
+ Object.fromEntries([
758
+ ["__proto__", z.object({ isAdmin: z.boolean() })],
759
+ ["name", z.string()],
760
+ ]) as Record<string, any>;
761
+
762
+ const expectStripped = (parsed: any) => {
763
+ expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
764
+ expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
765
+ expect((parsed as any).isAdmin).toBeUndefined();
766
+ expect(Object.keys(parsed)).toEqual(["name"]);
767
+ };
768
+
769
+ test("jit fastpass", () => {
770
+ expectStripped(z.object(makeShape()).parse(protoInput()));
771
+ });
772
+
773
+ test("jitless", () => {
774
+ expectStripped(z.object(makeShape()).parse(protoInput(), { jitless: true } as any));
775
+ });
776
+
777
+ test("async", async () => {
778
+ const shape = Object.fromEntries([
779
+ ["__proto__", z.object({ isAdmin: z.boolean() }).refine(async () => true)],
780
+ ["name", z.string()],
781
+ ]) as Record<string, any>;
782
+ expectStripped(await z.object(shape).parseAsync(protoInput()));
783
+ });
784
+
785
+ test("primitive value is stripped", () => {
786
+ const schema = z.object(Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>);
787
+ const parsed: any = schema.parse(JSON.parse('{"__proto__":"hello"}'));
788
+ expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
789
+ expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
790
+ });
791
+
792
+ test("declared key is not validated", () => {
793
+ const schema = z.object(Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>);
794
+ expect(schema.parse(JSON.parse('{"__proto__":123}'))).toEqual({});
795
+ });
796
+
797
+ test("required, optional, and defaulted declarations are all stripped", () => {
798
+ const shape = (schema: z.ZodType) => Object.fromEntries([["__proto__", schema]]) as Record<string, any>;
799
+
800
+ for (const jitless of [false, true]) {
801
+ const ctx = { jitless } as any;
802
+ expect(z.object(shape(z.unknown())).parse({}, ctx)).toEqual({});
803
+ expect(z.object(shape(z.string().optional())).parse({}, ctx)).toEqual({});
804
+ expect(z.object(shape(z.string().default("fallback"))).parse({}, ctx)).toEqual({});
805
+ }
806
+ });
807
+
808
+ test("an own getter is not evaluated", () => {
809
+ let reads = 0;
810
+ const input = Object.defineProperty({}, "__proto__", {
811
+ get() {
812
+ reads++;
813
+ return "value";
814
+ },
815
+ enumerable: true,
816
+ });
817
+ const schema = z.object(Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>);
818
+
819
+ expect(schema.parse(input)).toEqual({});
820
+ expect(reads).toBe(0);
821
+ });
822
+
823
+ test("pick keeps a declared key", () => {
824
+ const shape = Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>;
825
+ const mask = Object.fromEntries([["__proto__", true]]) as Record<string, true>;
826
+ const picked = z.object(shape).pick(mask);
827
+
828
+ expect(Object.keys(picked.shape)).toEqual(["__proto__"]);
829
+ const parsed: any = picked.parse(Object.fromEntries([["__proto__", "value"]]));
830
+ expect(parsed).toEqual({});
831
+ expect(() => z.object({ value: z.string() }).pick(mask as any).shape).toThrow('Unrecognized key: "__proto__"');
832
+ });
833
+
834
+ test.each(["omit", "partial", "required"] as const)("%s rejects an undeclared key", (method) => {
835
+ const mask = Object.fromEntries([["__proto__", true]]);
836
+ const schema = z.object({ value: z.string() });
837
+
838
+ expect(() => (schema[method] as any)(mask).shape).toThrow('Unrecognized key: "__proto__"');
839
+ });
840
+
841
+ // the mask is checked against the source's declared keys, which reads without resolving them, so it throws where the mistake is
842
+ test.each(["pick", "omit", "partial", "required"] as const)("%s rejects an undeclared key at the call", (method) => {
843
+ const schema = z.object({ value: z.string() });
844
+
845
+ expect(() => (schema[method] as any)({ nope: true })).toThrow('Unrecognized key: "nope"');
846
+ });
847
+
848
+ // a derived shape is built key by key, and a plain assignment runs whatever setter answers to the key — `__proto__` always has one, and a polluted prototype can supply one for any name
849
+ test("an inherited setter cannot swallow a derived key", () => {
850
+ let swallowed: unknown;
851
+ Object.defineProperty(Object.prototype, "field", {
852
+ configurable: true,
853
+ set(v) {
854
+ swallowed = v;
855
+ },
856
+ get() {
857
+ return undefined;
858
+ },
859
+ });
860
+
861
+ try {
862
+ const derived = z.object({ field: z.string() }).extend({ extra: z.number() });
863
+
864
+ expect(Object.keys(derived.shape)).toEqual(["field", "extra"]);
865
+ expect(swallowed).toBeUndefined();
866
+ // the key is still validated; what a parse writes into its result is the ambient prototype's business, as it is without a builder
867
+ expect(derived.safeParse({ field: 123, extra: 1 }).success).toBe(false);
868
+ expect(derived.safeParse({ field: "a", extra: 1 }).success).toBe(true);
869
+ } finally {
870
+ delete (Object.prototype as any).field;
871
+ }
872
+ });
873
+
874
+ // a shape resolves by object spread, so a non-enumerable entry is no part of it and no builder may promote one into a derived shape
875
+ test("a non-enumerable shape entry stays out of every derived shape", () => {
876
+ const sym = Symbol("kept");
877
+ const hide = (target: Record<string, any>) =>
878
+ Object.defineProperty(target, "hidden", { value: z.string(), enumerable: false, configurable: true });
879
+ // each case needs a source whose shape is still unresolved, since resolving drops the entry on its own
880
+ const source = () => z.object(hide({ b: z.number(), [sym]: z.boolean() }) as any);
881
+
882
+ expect(Reflect.ownKeys(source().shape)).toEqual(["b", sym]);
883
+ expect(Reflect.ownKeys(source().extend({ c: z.boolean() }).shape)).toEqual(["b", "c", sym]);
884
+ expect(Reflect.ownKeys(source().partial().shape)).toEqual(["b", sym]);
885
+ expect(Reflect.ownKeys(source().merge(z.object({ c: z.boolean() })).shape)).toEqual(["b", "c", sym]);
886
+ expect(Object.keys(z.object({ b: z.number() }).extend(hide({}) as any).shape)).toEqual(["b"]);
887
+ expect(() => source().pick({ hidden: true } as any)).toThrow('Unrecognized key: "hidden"');
888
+
889
+ // promoting it would make a key the source ignores required
890
+ expect(
891
+ source()
892
+ .extend({ c: z.boolean() })
893
+ .safeParse({ b: 1, [sym]: true, c: true }).success
894
+ ).toBe(true);
895
+ });
896
+
897
+ test("shape helpers preserve a declared key", () => {
898
+ const shape = () =>
899
+ Object.fromEntries([
900
+ ["__proto__", z.string()],
901
+ ["value", z.string()],
902
+ ]) as Record<string, any>;
903
+ const protoMask = Object.fromEntries([["__proto__", true]]);
904
+ const valueMask = { value: true } as const;
905
+ const shapes = [
906
+ z.object(shape()).omit(valueMask).shape,
907
+ z.object(shape()).partial(protoMask as any).shape,
908
+ z.object(shape()).required(protoMask as any).shape,
909
+ ];
910
+
911
+ for (const next of shapes) {
912
+ expect(Object.getPrototypeOf(next)).toBe(Object.prototype);
913
+ expect(Object.prototype.hasOwnProperty.call(next, "__proto__")).toBe(true);
914
+ }
915
+ });
916
+
917
+ test("Object.prototype is untouched", () => {
918
+ z.object(makeShape()).parse(protoInput());
919
+ expect(({} as any).isAdmin).toBeUndefined();
920
+ });
921
+ });
922
+
923
+ test("object parsing still reads ordinary inherited properties", () => {
924
+ const input = Object.create({ value: "inherited" });
925
+ const schema = z.object({ value: z.string() });
926
+
927
+ expect(schema.parse(input)).toEqual({ value: "inherited" });
928
+ expect(schema.parse(input, { jitless: true } as any)).toEqual({ value: "inherited" });
929
+ });
930
+
931
+ describe("symbol keys in object shape", () => {
932
+ const SYM = Symbol("sym");
933
+ const OTHER = Symbol("other");
934
+
935
+ test("parses and validates a declared symbol key", () => {
936
+ const schema = z.object({ name: z.string(), [SYM]: z.number() });
937
+ expectTypeOf<z.infer<typeof schema>>().toEqualTypeOf<{ name: string; [SYM]: number }>();
938
+
939
+ for (const params of [undefined, { jitless: true } as any]) {
940
+ expect(schema.parse({ name: "alice", [SYM]: 42 }, params)).toEqual({ name: "alice", [SYM]: 42 });
941
+ expect(schema.safeParse({ name: "alice", [SYM]: "nope" }, params).success).toBe(false);
942
+ expect(schema.safeParse({ name: "alice" }, params).success).toBe(false);
943
+ }
944
+ });
945
+
946
+ test("reports an invalid symbol value at the symbol's own path", () => {
947
+ const schema = z.object({ [SYM]: z.number() });
948
+ const result = schema.safeParse({ [SYM]: "nope" });
949
+ expect(result.error!.issues[0].path).toEqual([SYM]);
950
+ });
951
+
952
+ test("honours optionality and defaults on a symbol key", () => {
953
+ expect(z.object({ [SYM]: z.number().optional() }).parse({})).toEqual({});
954
+ expect(z.object({ [SYM]: z.number().default(7) }).parse({})).toEqual({ [SYM]: 7 });
955
+ });
956
+
957
+ test("a declared symbol key survives strict and loose", () => {
958
+ expect(z.strictObject({ [SYM]: z.number() }).safeParse({ [SYM]: 1 }).success).toBe(true);
959
+ expect(z.strictObject({ [SYM]: z.number() }).safeParse({ [SYM]: 1, extra: 1 }).success).toBe(false);
960
+ expect(z.looseObject({ [SYM]: z.number() }).parse({ [SYM]: 1, extra: "e" })).toEqual({ [SYM]: 1, extra: "e" });
961
+ });
962
+
963
+ // Deliberate: hunting each input for undeclared symbols costs a `getOwnPropertySymbols` call on every parse of every strict/loose/catchall object, which measured +16-44% on `z.strictObject`. Declared keys are static and cost nothing, so only they are supported.
964
+ test("an undeclared symbol key is ignored, not passed through or flagged", () => {
965
+ expect(z.looseObject({ name: z.string() }).parse({ name: "a", [OTHER]: "x" })).toEqual({ name: "a" });
966
+ expect(z.strictObject({ name: z.string() }).safeParse({ name: "a", [OTHER]: "x" }).success).toBe(true);
967
+ });
968
+
969
+ test("builder methods reach symbol keys", () => {
970
+ const base = z.object({ a: z.string(), [SYM]: z.number() });
971
+ expect(base.partial().safeParse({ a: "x" }).success).toBe(true);
972
+ expect(base.partial().required().safeParse({ a: "x" }).success).toBe(false);
973
+ expect(Reflect.ownKeys(base.pick({ [SYM]: true }).shape)).toEqual([SYM]);
974
+ expect(Reflect.ownKeys(base.omit({ [SYM]: true }).shape)).toEqual(["a"]);
975
+ expect(Reflect.ownKeys(z.object({ a: z.string() }).extend({ [SYM]: z.number() }).shape)).toEqual(["a", SYM]);
976
+ });
977
+
978
+ test("a cycle through a symbol key is detected like a string-keyed one", () => {
979
+ const A: any = z.object({
980
+ name: z.string(),
981
+ get [SYM]() {
982
+ return A.optional();
983
+ },
984
+ });
985
+ const input: any = { name: "root" };
986
+ input[SYM] = input;
987
+ expect(A.safeParse(input).success).toBe(true);
988
+ expect(() => z.compile(A, { strict: true })).toThrow(/does not support/);
989
+ });
990
+
991
+ test("extend's refinement-overlap guard sees symbol keys", () => {
992
+ const refined = z.object({ a: z.string(), [SYM]: z.number() }).refine(() => true);
993
+ expect(() => refined.extend({ a: z.string() })).toThrow(/Cannot overwrite keys/);
994
+ expect(() => refined.extend({ [SYM]: z.string() })).toThrow(/Cannot overwrite keys/);
995
+ });
996
+
997
+ test("a symbol key is unrepresentable in JSON Schema", () => {
998
+ const schema = z.object({ a: z.string(), [SYM]: z.number() });
999
+ expect(() => z.toJSONSchema(schema)).toThrow(/Symbol keys cannot be represented/);
1000
+ expect(z.toJSONSchema(schema, { unrepresentable: "any" })).toMatchObject({ properties: { a: { type: "string" } } });
1001
+ });
1002
+
1003
+ test("rejects a non-schema value under a symbol key", () => {
1004
+ expect(() => z.object({ [SYM]: 123 as any }).parse({})).toThrow(/Invalid element at key "Symbol\(sym\)"/);
716
1005
  });
717
1006
  });