fullstacked 0.12.1-1359 → 0.12.1-1364

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 (335) hide show
  1. package/fullstacked_modules/@fullstacked/ai-agent/ai-agent.js +55352 -53576
  2. package/fullstacked_modules/@fullstacked/ai-agent/index.ts +0 -1
  3. package/fullstacked_modules/@fullstacked/ai-agent/lock.json +157 -152
  4. package/fullstacked_modules/@fullstacked/ai-agent/package.json +13 -13
  5. package/fullstacked_modules/@fullstacked/ai-agent/src/providers/ollama.ts +2 -2
  6. package/fullstacked_modules/@fullstacked/ui/index.js +6 -1
  7. package/fullstacked_modules/zod/README.md +4 -4
  8. package/fullstacked_modules/zod/index.cjs +2 -2
  9. package/fullstacked_modules/zod/index.d.cts +2 -2
  10. package/fullstacked_modules/zod/index.d.ts +2 -2
  11. package/fullstacked_modules/zod/index.js +2 -2
  12. package/fullstacked_modules/zod/locales/index.cjs +17 -0
  13. package/fullstacked_modules/zod/locales/index.d.cts +1 -0
  14. package/fullstacked_modules/zod/locales/index.d.ts +1 -0
  15. package/fullstacked_modules/zod/locales/index.js +1 -0
  16. package/fullstacked_modules/zod/locales/package.json +6 -0
  17. package/fullstacked_modules/zod/mini/index.cjs +17 -0
  18. package/fullstacked_modules/zod/mini/index.d.cts +1 -0
  19. package/fullstacked_modules/zod/mini/index.d.ts +1 -0
  20. package/fullstacked_modules/zod/mini/index.js +1 -0
  21. package/fullstacked_modules/zod/mini/package.json +6 -0
  22. package/fullstacked_modules/zod/package.json +29 -12
  23. package/fullstacked_modules/zod/src/index.ts +2 -2
  24. package/fullstacked_modules/zod/src/locales/index.ts +1 -0
  25. package/fullstacked_modules/zod/src/mini/index.ts +1 -0
  26. package/fullstacked_modules/zod/src/v3/ZodError.ts +1 -1
  27. package/fullstacked_modules/zod/src/v3/tests/object.test.ts +2 -2
  28. package/fullstacked_modules/zod/src/v3/tests/string.test.ts +2 -2
  29. package/fullstacked_modules/zod/src/v3/types.ts +3 -1
  30. package/fullstacked_modules/zod/src/v4/classic/checks.ts +1 -0
  31. package/fullstacked_modules/zod/src/v4/classic/compat.ts +4 -0
  32. package/fullstacked_modules/zod/src/v4/classic/errors.ts +9 -2
  33. package/fullstacked_modules/zod/src/v4/classic/external.ts +1 -1
  34. package/fullstacked_modules/zod/src/v4/classic/parse.ts +49 -0
  35. package/fullstacked_modules/zod/src/v4/classic/schemas.ts +224 -81
  36. package/fullstacked_modules/zod/src/v4/classic/tests/array.test.ts +6 -6
  37. package/fullstacked_modules/zod/src/v4/classic/tests/catch.test.ts +29 -5
  38. package/fullstacked_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  39. package/fullstacked_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  40. package/fullstacked_modules/zod/src/v4/classic/tests/continuability.test.ts +1 -1
  41. package/fullstacked_modules/zod/src/v4/classic/tests/datetime.test.ts +6 -0
  42. package/fullstacked_modules/zod/src/v4/classic/tests/default.test.ts +52 -0
  43. package/fullstacked_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +42 -0
  44. package/fullstacked_modules/zod/src/v4/classic/tests/error-utils.test.ts +70 -2
  45. package/fullstacked_modules/zod/src/v4/classic/tests/file.test.ts +9 -4
  46. package/fullstacked_modules/zod/src/v4/classic/tests/firstparty.test.ts +4 -0
  47. package/fullstacked_modules/zod/src/v4/classic/tests/function.test.ts +71 -31
  48. package/fullstacked_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  49. package/fullstacked_modules/zod/src/v4/classic/tests/index.test.ts +15 -0
  50. package/fullstacked_modules/zod/src/v4/classic/tests/literal.test.ts +25 -0
  51. package/fullstacked_modules/zod/src/v4/classic/tests/nonoptional.test.ts +15 -0
  52. package/fullstacked_modules/zod/src/v4/classic/tests/number.test.ts +23 -0
  53. package/fullstacked_modules/zod/src/v4/classic/tests/object.test.ts +48 -2
  54. package/fullstacked_modules/zod/src/v4/classic/tests/optional.test.ts +13 -0
  55. package/fullstacked_modules/zod/src/v4/classic/tests/partial.test.ts +193 -0
  56. package/fullstacked_modules/zod/src/v4/classic/tests/pickomit.test.ts +5 -5
  57. package/fullstacked_modules/zod/src/v4/classic/tests/pipe.test.ts +25 -5
  58. package/fullstacked_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
  59. package/fullstacked_modules/zod/src/v4/classic/tests/preprocess.test.ts +5 -21
  60. package/fullstacked_modules/zod/src/v4/classic/tests/record.test.ts +15 -1
  61. package/fullstacked_modules/zod/src/v4/classic/tests/recursive-types.test.ts +226 -0
  62. package/fullstacked_modules/zod/src/v4/classic/tests/refine.test.ts +78 -5
  63. package/fullstacked_modules/zod/src/v4/classic/tests/set.test.ts +5 -3
  64. package/fullstacked_modules/zod/src/v4/classic/tests/string-formats.test.ts +16 -0
  65. package/fullstacked_modules/zod/src/v4/classic/tests/string.test.ts +204 -5
  66. package/fullstacked_modules/zod/src/v4/classic/tests/stringbool.test.ts +40 -0
  67. package/fullstacked_modules/zod/src/v4/classic/tests/template-literal.test.ts +14 -9
  68. package/fullstacked_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +315 -7
  69. package/fullstacked_modules/zod/src/v4/classic/tests/transform.test.ts +111 -0
  70. package/fullstacked_modules/zod/src/v4/classic/tests/tuple.test.ts +2 -2
  71. package/fullstacked_modules/zod/src/v4/classic/tests/union.test.ts +90 -3
  72. package/fullstacked_modules/zod/src/v4/core/api.ts +160 -133
  73. package/fullstacked_modules/zod/src/v4/core/checks.ts +6 -2
  74. package/fullstacked_modules/zod/src/v4/core/core.ts +9 -28
  75. package/fullstacked_modules/zod/src/v4/core/doc.ts +2 -2
  76. package/fullstacked_modules/zod/src/v4/core/errors.ts +49 -60
  77. package/fullstacked_modules/zod/src/v4/core/index.ts +0 -1
  78. package/fullstacked_modules/zod/src/v4/core/json-schema.ts +7 -3
  79. package/fullstacked_modules/zod/src/v4/core/parse.ts +101 -0
  80. package/fullstacked_modules/zod/src/v4/core/regexes.ts +56 -14
  81. package/fullstacked_modules/zod/src/v4/core/registries.ts +5 -4
  82. package/fullstacked_modules/zod/src/v4/core/schemas.ts +705 -230
  83. package/fullstacked_modules/zod/src/v4/core/tests/extend.test.ts +18 -0
  84. package/fullstacked_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  85. package/fullstacked_modules/zod/src/v4/core/to-json-schema.ts +100 -33
  86. package/fullstacked_modules/zod/src/v4/core/util.ts +237 -102
  87. package/fullstacked_modules/zod/src/v4/core/versions.ts +2 -2
  88. package/fullstacked_modules/zod/src/v4/locales/bg.ts +136 -0
  89. package/fullstacked_modules/zod/src/v4/locales/da.ts +141 -0
  90. package/fullstacked_modules/zod/src/v4/locales/es.ts +44 -10
  91. package/fullstacked_modules/zod/src/v4/locales/index.ts +8 -0
  92. package/fullstacked_modules/zod/src/v4/locales/is.ts +127 -0
  93. package/fullstacked_modules/zod/src/v4/locales/ka.ts +138 -0
  94. package/fullstacked_modules/zod/src/v4/locales/kh.ts +3 -122
  95. package/fullstacked_modules/zod/src/v4/locales/km.ts +126 -0
  96. package/fullstacked_modules/zod/src/v4/locales/lt.ts +265 -0
  97. package/fullstacked_modules/zod/src/v4/locales/ua.ts +3 -122
  98. package/fullstacked_modules/zod/src/v4/locales/uk.ts +126 -0
  99. package/fullstacked_modules/zod/src/v4/locales/yo.ts +131 -0
  100. package/fullstacked_modules/zod/src/v4/mini/external.ts +1 -1
  101. package/fullstacked_modules/zod/src/v4/mini/parse.ts +14 -1
  102. package/fullstacked_modules/zod/src/v4/mini/schemas.ts +186 -40
  103. package/fullstacked_modules/zod/src/v4/mini/tests/assignability.test.ts +1 -1
  104. package/fullstacked_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  105. package/fullstacked_modules/zod/src/v4/mini/tests/computed.test.ts +1 -1
  106. package/fullstacked_modules/zod/src/v4/mini/tests/error.test.ts +1 -1
  107. package/fullstacked_modules/zod/src/v4/mini/tests/index.test.ts +29 -1
  108. package/fullstacked_modules/zod/src/v4/mini/tests/number.test.ts +1 -1
  109. package/fullstacked_modules/zod/src/v4/mini/tests/object.test.ts +16 -1
  110. package/fullstacked_modules/zod/src/v4/mini/tests/prototypes.test.ts +1 -1
  111. package/fullstacked_modules/zod/src/v4/mini/tests/recursive-types.test.ts +1 -1
  112. package/fullstacked_modules/zod/src/v4/mini/tests/string.test.ts +17 -1
  113. package/fullstacked_modules/zod/v3/ZodError.cjs +1 -1
  114. package/fullstacked_modules/zod/v3/ZodError.d.cts +6 -6
  115. package/fullstacked_modules/zod/v3/ZodError.d.ts +6 -6
  116. package/fullstacked_modules/zod/v3/ZodError.js +1 -1
  117. package/fullstacked_modules/zod/v3/locales/en.cjs +1 -0
  118. package/fullstacked_modules/zod/v3/locales/en.d.cts +1 -1
  119. package/fullstacked_modules/zod/v3/package.json +6 -0
  120. package/fullstacked_modules/zod/v3/types.cjs +2 -0
  121. package/fullstacked_modules/zod/v3/types.d.cts +4 -1
  122. package/fullstacked_modules/zod/v3/types.d.ts +4 -1
  123. package/fullstacked_modules/zod/v3/types.js +2 -0
  124. package/fullstacked_modules/zod/v4/classic/checks.d.cts +1 -1
  125. package/fullstacked_modules/zod/v4/classic/checks.d.ts +1 -1
  126. package/fullstacked_modules/zod/v4/classic/compat.cjs +5 -1
  127. package/fullstacked_modules/zod/v4/classic/compat.d.cts +4 -0
  128. package/fullstacked_modules/zod/v4/classic/compat.d.ts +4 -0
  129. package/fullstacked_modules/zod/v4/classic/compat.js +4 -0
  130. package/fullstacked_modules/zod/v4/classic/errors.cjs +9 -2
  131. package/fullstacked_modules/zod/v4/classic/errors.js +9 -2
  132. package/fullstacked_modules/zod/v4/classic/external.cjs +2 -2
  133. package/fullstacked_modules/zod/v4/classic/external.d.cts +1 -1
  134. package/fullstacked_modules/zod/v4/classic/external.d.ts +1 -1
  135. package/fullstacked_modules/zod/v4/classic/external.js +1 -1
  136. package/fullstacked_modules/zod/v4/classic/package.json +6 -0
  137. package/fullstacked_modules/zod/v4/classic/parse.cjs +10 -1
  138. package/fullstacked_modules/zod/v4/classic/parse.d.cts +8 -0
  139. package/fullstacked_modules/zod/v4/classic/parse.d.ts +8 -0
  140. package/fullstacked_modules/zod/v4/classic/parse.js +9 -0
  141. package/fullstacked_modules/zod/v4/classic/schemas.cjs +90 -48
  142. package/fullstacked_modules/zod/v4/classic/schemas.d.cts +70 -27
  143. package/fullstacked_modules/zod/v4/classic/schemas.d.ts +70 -27
  144. package/fullstacked_modules/zod/v4/classic/schemas.js +81 -47
  145. package/fullstacked_modules/zod/v4/core/api.cjs +52 -31
  146. package/fullstacked_modules/zod/v4/core/api.d.cts +87 -76
  147. package/fullstacked_modules/zod/v4/core/api.d.ts +87 -76
  148. package/fullstacked_modules/zod/v4/core/api.js +50 -31
  149. package/fullstacked_modules/zod/v4/core/checks.cjs +4 -0
  150. package/fullstacked_modules/zod/v4/core/checks.d.cts +2 -2
  151. package/fullstacked_modules/zod/v4/core/checks.d.ts +2 -2
  152. package/fullstacked_modules/zod/v4/core/checks.js +4 -0
  153. package/fullstacked_modules/zod/v4/core/core.cjs +8 -1
  154. package/fullstacked_modules/zod/v4/core/core.d.cts +5 -2
  155. package/fullstacked_modules/zod/v4/core/core.d.ts +5 -2
  156. package/fullstacked_modules/zod/v4/core/core.js +6 -0
  157. package/fullstacked_modules/zod/v4/core/doc.d.cts +1 -1
  158. package/fullstacked_modules/zod/v4/core/doc.d.ts +1 -1
  159. package/fullstacked_modules/zod/v4/core/errors.cjs +6 -19
  160. package/fullstacked_modules/zod/v4/core/errors.d.cts +24 -22
  161. package/fullstacked_modules/zod/v4/core/errors.d.ts +24 -22
  162. package/fullstacked_modules/zod/v4/core/errors.js +6 -19
  163. package/fullstacked_modules/zod/v4/core/index.cjs +0 -1
  164. package/fullstacked_modules/zod/v4/core/index.d.cts +0 -1
  165. package/fullstacked_modules/zod/v4/core/index.d.ts +0 -1
  166. package/fullstacked_modules/zod/v4/core/index.js +0 -1
  167. package/fullstacked_modules/zod/v4/core/json-schema.d.cts +4 -3
  168. package/fullstacked_modules/zod/v4/core/json-schema.d.ts +4 -3
  169. package/fullstacked_modules/zod/v4/core/package.json +6 -0
  170. package/fullstacked_modules/zod/v4/core/parse.cjs +45 -1
  171. package/fullstacked_modules/zod/v4/core/parse.d.cts +24 -0
  172. package/fullstacked_modules/zod/v4/core/parse.d.ts +24 -0
  173. package/fullstacked_modules/zod/v4/core/parse.js +36 -0
  174. package/fullstacked_modules/zod/v4/core/regexes.cjs +49 -16
  175. package/fullstacked_modules/zod/v4/core/regexes.d.cts +18 -2
  176. package/fullstacked_modules/zod/v4/core/regexes.d.ts +18 -2
  177. package/fullstacked_modules/zod/v4/core/regexes.js +46 -14
  178. package/fullstacked_modules/zod/v4/core/registries.cjs +4 -3
  179. package/fullstacked_modules/zod/v4/core/registries.d.cts +2 -2
  180. package/fullstacked_modules/zod/v4/core/registries.d.ts +2 -2
  181. package/fullstacked_modules/zod/v4/core/registries.js +4 -3
  182. package/fullstacked_modules/zod/v4/core/schemas.cjs +409 -171
  183. package/fullstacked_modules/zod/v4/core/schemas.d.cts +88 -16
  184. package/fullstacked_modules/zod/v4/core/schemas.d.ts +88 -16
  185. package/fullstacked_modules/zod/v4/core/schemas.js +408 -170
  186. package/fullstacked_modules/zod/v4/core/to-json-schema.cjs +97 -31
  187. package/fullstacked_modules/zod/v4/core/to-json-schema.d.cts +5 -3
  188. package/fullstacked_modules/zod/v4/core/to-json-schema.d.ts +5 -3
  189. package/fullstacked_modules/zod/v4/core/to-json-schema.js +97 -31
  190. package/fullstacked_modules/zod/v4/core/util.cjs +220 -101
  191. package/fullstacked_modules/zod/v4/core/util.d.cts +14 -0
  192. package/fullstacked_modules/zod/v4/core/util.d.ts +14 -0
  193. package/fullstacked_modules/zod/v4/core/util.js +209 -101
  194. package/fullstacked_modules/zod/v4/core/versions.cjs +2 -2
  195. package/fullstacked_modules/zod/v4/core/versions.d.cts +1 -1
  196. package/fullstacked_modules/zod/v4/core/versions.d.ts +1 -1
  197. package/fullstacked_modules/zod/v4/core/versions.js +2 -2
  198. package/fullstacked_modules/zod/v4/locales/ar.cjs +1 -0
  199. package/fullstacked_modules/zod/v4/locales/ar.d.cts +2 -1
  200. package/fullstacked_modules/zod/v4/locales/az.cjs +1 -0
  201. package/fullstacked_modules/zod/v4/locales/az.d.cts +2 -1
  202. package/fullstacked_modules/zod/v4/locales/be.cjs +1 -0
  203. package/fullstacked_modules/zod/v4/locales/be.d.cts +2 -1
  204. package/fullstacked_modules/zod/v4/locales/bg.cjs +156 -0
  205. package/fullstacked_modules/zod/v4/locales/bg.d.cts +5 -0
  206. package/fullstacked_modules/zod/v4/locales/bg.d.ts +5 -0
  207. package/fullstacked_modules/zod/v4/locales/bg.js +128 -0
  208. package/fullstacked_modules/zod/v4/locales/ca.cjs +1 -0
  209. package/fullstacked_modules/zod/v4/locales/ca.d.cts +2 -1
  210. package/fullstacked_modules/zod/v4/locales/cs.cjs +1 -0
  211. package/fullstacked_modules/zod/v4/locales/cs.d.cts +2 -1
  212. package/fullstacked_modules/zod/v4/locales/da.cjs +158 -0
  213. package/fullstacked_modules/zod/v4/locales/da.d.cts +5 -0
  214. package/fullstacked_modules/zod/v4/locales/da.d.ts +4 -0
  215. package/fullstacked_modules/zod/v4/locales/da.js +131 -0
  216. package/fullstacked_modules/zod/v4/locales/de.cjs +1 -0
  217. package/fullstacked_modules/zod/v4/locales/de.d.cts +2 -1
  218. package/fullstacked_modules/zod/v4/locales/es.cjs +43 -10
  219. package/fullstacked_modules/zod/v4/locales/es.d.cts +2 -1
  220. package/fullstacked_modules/zod/v4/locales/es.js +42 -10
  221. package/fullstacked_modules/zod/v4/locales/fa.cjs +1 -0
  222. package/fullstacked_modules/zod/v4/locales/fa.d.cts +2 -1
  223. package/fullstacked_modules/zod/v4/locales/fi.cjs +1 -0
  224. package/fullstacked_modules/zod/v4/locales/fi.d.cts +2 -1
  225. package/fullstacked_modules/zod/v4/locales/fr-CA.cjs +1 -0
  226. package/fullstacked_modules/zod/v4/locales/fr-CA.d.cts +2 -1
  227. package/fullstacked_modules/zod/v4/locales/fr.cjs +1 -0
  228. package/fullstacked_modules/zod/v4/locales/fr.d.cts +2 -1
  229. package/fullstacked_modules/zod/v4/locales/he.cjs +1 -0
  230. package/fullstacked_modules/zod/v4/locales/he.d.cts +2 -1
  231. package/fullstacked_modules/zod/v4/locales/hu.cjs +1 -0
  232. package/fullstacked_modules/zod/v4/locales/hu.d.cts +2 -1
  233. package/fullstacked_modules/zod/v4/locales/id.cjs +1 -0
  234. package/fullstacked_modules/zod/v4/locales/id.d.cts +2 -1
  235. package/fullstacked_modules/zod/v4/locales/index.cjs +17 -1
  236. package/fullstacked_modules/zod/v4/locales/index.d.cts +8 -0
  237. package/fullstacked_modules/zod/v4/locales/index.d.ts +8 -0
  238. package/fullstacked_modules/zod/v4/locales/index.js +8 -0
  239. package/fullstacked_modules/zod/v4/locales/is.cjs +145 -0
  240. package/fullstacked_modules/zod/v4/locales/is.d.cts +5 -0
  241. package/fullstacked_modules/zod/v4/locales/is.d.ts +5 -0
  242. package/fullstacked_modules/zod/v4/locales/is.js +117 -0
  243. package/fullstacked_modules/zod/v4/locales/it.cjs +1 -0
  244. package/fullstacked_modules/zod/v4/locales/it.d.cts +2 -1
  245. package/fullstacked_modules/zod/v4/locales/ja.cjs +1 -0
  246. package/fullstacked_modules/zod/v4/locales/ja.d.cts +2 -1
  247. package/fullstacked_modules/zod/v4/locales/ka.cjs +153 -0
  248. package/fullstacked_modules/zod/v4/locales/ka.d.cts +5 -0
  249. package/fullstacked_modules/zod/v4/locales/ka.d.ts +5 -0
  250. package/fullstacked_modules/zod/v4/locales/ka.js +125 -0
  251. package/fullstacked_modules/zod/v4/locales/kh.cjs +6 -137
  252. package/fullstacked_modules/zod/v4/locales/kh.d.cts +2 -1
  253. package/fullstacked_modules/zod/v4/locales/kh.d.ts +1 -0
  254. package/fullstacked_modules/zod/v4/locales/kh.js +3 -115
  255. package/fullstacked_modules/zod/v4/locales/km.cjs +144 -0
  256. package/fullstacked_modules/zod/v4/locales/km.d.cts +5 -0
  257. package/fullstacked_modules/zod/v4/locales/km.d.ts +4 -0
  258. package/fullstacked_modules/zod/v4/locales/km.js +117 -0
  259. package/fullstacked_modules/zod/v4/locales/ko.cjs +1 -0
  260. package/fullstacked_modules/zod/v4/locales/ko.d.cts +2 -1
  261. package/fullstacked_modules/zod/v4/locales/lt.cjs +258 -0
  262. package/fullstacked_modules/zod/v4/locales/lt.d.cts +5 -0
  263. package/fullstacked_modules/zod/v4/locales/lt.d.ts +5 -0
  264. package/fullstacked_modules/zod/v4/locales/lt.js +230 -0
  265. package/fullstacked_modules/zod/v4/locales/mk.cjs +1 -0
  266. package/fullstacked_modules/zod/v4/locales/mk.d.cts +2 -1
  267. package/fullstacked_modules/zod/v4/locales/ms.cjs +1 -0
  268. package/fullstacked_modules/zod/v4/locales/ms.d.cts +2 -1
  269. package/fullstacked_modules/zod/v4/locales/nl.cjs +1 -0
  270. package/fullstacked_modules/zod/v4/locales/nl.d.cts +2 -1
  271. package/fullstacked_modules/zod/v4/locales/no.cjs +1 -0
  272. package/fullstacked_modules/zod/v4/locales/no.d.cts +2 -1
  273. package/fullstacked_modules/zod/v4/locales/ota.cjs +1 -0
  274. package/fullstacked_modules/zod/v4/locales/ota.d.cts +2 -1
  275. package/fullstacked_modules/zod/v4/locales/package.json +6 -0
  276. package/fullstacked_modules/zod/v4/locales/pl.cjs +1 -0
  277. package/fullstacked_modules/zod/v4/locales/pl.d.cts +2 -1
  278. package/fullstacked_modules/zod/v4/locales/ps.cjs +1 -0
  279. package/fullstacked_modules/zod/v4/locales/ps.d.cts +2 -1
  280. package/fullstacked_modules/zod/v4/locales/pt.cjs +1 -0
  281. package/fullstacked_modules/zod/v4/locales/pt.d.cts +2 -1
  282. package/fullstacked_modules/zod/v4/locales/ru.cjs +1 -0
  283. package/fullstacked_modules/zod/v4/locales/ru.d.cts +2 -1
  284. package/fullstacked_modules/zod/v4/locales/sl.cjs +1 -0
  285. package/fullstacked_modules/zod/v4/locales/sl.d.cts +2 -1
  286. package/fullstacked_modules/zod/v4/locales/sv.cjs +1 -0
  287. package/fullstacked_modules/zod/v4/locales/sv.d.cts +2 -1
  288. package/fullstacked_modules/zod/v4/locales/ta.cjs +1 -0
  289. package/fullstacked_modules/zod/v4/locales/ta.d.cts +2 -1
  290. package/fullstacked_modules/zod/v4/locales/th.cjs +1 -0
  291. package/fullstacked_modules/zod/v4/locales/th.d.cts +2 -1
  292. package/fullstacked_modules/zod/v4/locales/ua.cjs +6 -137
  293. package/fullstacked_modules/zod/v4/locales/ua.d.cts +2 -1
  294. package/fullstacked_modules/zod/v4/locales/ua.d.ts +1 -0
  295. package/fullstacked_modules/zod/v4/locales/ua.js +3 -115
  296. package/fullstacked_modules/zod/v4/locales/uk.cjs +144 -0
  297. package/fullstacked_modules/zod/v4/locales/uk.d.cts +5 -0
  298. package/fullstacked_modules/zod/v4/locales/uk.d.ts +4 -0
  299. package/fullstacked_modules/zod/v4/locales/uk.js +117 -0
  300. package/fullstacked_modules/zod/v4/locales/ur.cjs +1 -0
  301. package/fullstacked_modules/zod/v4/locales/ur.d.cts +2 -1
  302. package/fullstacked_modules/zod/v4/locales/vi.cjs +1 -0
  303. package/fullstacked_modules/zod/v4/locales/vi.d.cts +2 -1
  304. package/fullstacked_modules/zod/v4/locales/yo.cjs +142 -0
  305. package/fullstacked_modules/zod/v4/locales/yo.d.cts +5 -0
  306. package/fullstacked_modules/zod/v4/locales/yo.d.ts +4 -0
  307. package/fullstacked_modules/zod/v4/locales/yo.js +115 -0
  308. package/fullstacked_modules/zod/v4/locales/zh-CN.cjs +1 -0
  309. package/fullstacked_modules/zod/v4/locales/zh-CN.d.cts +2 -1
  310. package/fullstacked_modules/zod/v4/locales/zh-TW.cjs +1 -0
  311. package/fullstacked_modules/zod/v4/locales/zh-TW.d.cts +2 -1
  312. package/fullstacked_modules/zod/v4/mini/external.cjs +2 -2
  313. package/fullstacked_modules/zod/v4/mini/external.d.cts +1 -1
  314. package/fullstacked_modules/zod/v4/mini/external.d.ts +1 -1
  315. package/fullstacked_modules/zod/v4/mini/external.js +1 -1
  316. package/fullstacked_modules/zod/v4/mini/package.json +6 -0
  317. package/fullstacked_modules/zod/v4/mini/parse.cjs +9 -1
  318. package/fullstacked_modules/zod/v4/mini/parse.d.cts +1 -1
  319. package/fullstacked_modules/zod/v4/mini/parse.d.ts +1 -1
  320. package/fullstacked_modules/zod/v4/mini/parse.js +1 -1
  321. package/fullstacked_modules/zod/v4/mini/schemas.cjs +77 -24
  322. package/fullstacked_modules/zod/v4/mini/schemas.d.cts +56 -5
  323. package/fullstacked_modules/zod/v4/mini/schemas.d.ts +56 -5
  324. package/fullstacked_modules/zod/v4/mini/schemas.js +66 -23
  325. package/fullstacked_modules/zod/v4/package.json +6 -0
  326. package/fullstacked_modules/zod/v4-mini/package.json +6 -0
  327. package/index.js +1 -1
  328. package/package.json +1 -1
  329. package/fullstacked_modules/@fullstacked/ai-agent/story.txt +0 -7
  330. package/fullstacked_modules/@fullstacked/ai-agent/summary.txt +0 -7
  331. package/fullstacked_modules/zod/src/v4/core/function.ts +0 -176
  332. package/fullstacked_modules/zod/v4/core/function.cjs +0 -102
  333. package/fullstacked_modules/zod/v4/core/function.d.cts +0 -52
  334. package/fullstacked_modules/zod/v4/core/function.d.ts +0 -52
  335. package/fullstacked_modules/zod/v4/core/function.js +0 -75
@@ -1,7 +1,34 @@
1
+ import { Validator } from "@seriousme/openapi-schema-validator";
1
2
  import { describe, expect, test } from "vitest";
2
3
  import * as z from "zod/v4";
3
4
  // import * as zCore from "zod/v4/core";
4
5
 
6
+ const openAPI30Validator = new Validator();
7
+ /** @see https://github.com/colinhacks/zod/issues/5147 */
8
+ const validateOpenAPI30Schema = async (zodJSONSchema: Record<string, unknown>): Promise<true> => {
9
+ const res = await openAPI30Validator.validate({
10
+ openapi: "3.0.0",
11
+ info: {
12
+ title: "SampleApi",
13
+ description: "Sample backend service",
14
+ version: "1.0.0",
15
+ },
16
+ components: { schemas: { test: zodJSONSchema } },
17
+ paths: {},
18
+ });
19
+
20
+ if (!res.valid) {
21
+ // `console.error` should make `vitest` trow an unhandled error
22
+ // printing the validation messages in consoles
23
+ console.error(
24
+ `OpenAPI schema is not valid against ${openAPI30Validator.version}`,
25
+ JSON.stringify(res.errors, null, 2)
26
+ );
27
+ }
28
+
29
+ return true;
30
+ };
31
+
5
32
  describe("toJSONSchema", () => {
6
33
  test("primitive types", () => {
7
34
  expect(z.toJSONSchema(z.string())).toMatchInlineSnapshot(`
@@ -101,7 +128,7 @@ describe("toJSONSchema", () => {
101
128
  {
102
129
  "$schema": "https://json-schema.org/draft/2020-12/schema",
103
130
  "format": "ipv6",
104
- "pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$",
131
+ "pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$",
105
132
  "type": "string",
106
133
  }
107
134
  `);
@@ -109,7 +136,7 @@ describe("toJSONSchema", () => {
109
136
  {
110
137
  "$schema": "https://json-schema.org/draft/2020-12/schema",
111
138
  "format": "uuid",
112
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$",
139
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
113
140
  "type": "string",
114
141
  }
115
142
  `);
@@ -269,7 +296,7 @@ describe("toJSONSchema", () => {
269
296
  {
270
297
  "$schema": "https://json-schema.org/draft/2020-12/schema",
271
298
  "format": "uuid",
272
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$",
299
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
273
300
  "type": "string",
274
301
  }
275
302
  `);
@@ -325,7 +352,7 @@ describe("toJSONSchema", () => {
325
352
  {
326
353
  "$schema": "https://json-schema.org/draft/2020-12/schema",
327
354
  "format": "ipv6",
328
- "pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$",
355
+ "pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$",
329
356
  "type": "string",
330
357
  }
331
358
  `);
@@ -539,6 +566,68 @@ describe("toJSONSchema", () => {
539
566
  `);
540
567
  });
541
568
 
569
+ test("number constraints draft-4", () => {
570
+ expect(z.toJSONSchema(z.number().gt(5).lt(10), { target: "draft-4" })).toMatchInlineSnapshot(`
571
+ {
572
+ "$schema": "http://json-schema.org/draft-04/schema#",
573
+ "exclusiveMaximum": true,
574
+ "exclusiveMinimum": true,
575
+ "maximum": 10,
576
+ "minimum": 5,
577
+ "type": "number",
578
+ }
579
+ `);
580
+ });
581
+
582
+ test("nullable openapi-3.0", () => {
583
+ const schema = z.string().nullable();
584
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
585
+ validateOpenAPI30Schema(jsonSchema);
586
+ expect(jsonSchema).toMatchInlineSnapshot(`
587
+ {
588
+ "nullable": true,
589
+ "type": "string",
590
+ }
591
+ `);
592
+ });
593
+
594
+ test("union with null openapi-3.0", () => {
595
+ const schema = z.union([z.string(), z.null()]);
596
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
597
+ validateOpenAPI30Schema(jsonSchema);
598
+ expect(jsonSchema).toMatchInlineSnapshot(`
599
+ {
600
+ "anyOf": [
601
+ {
602
+ "type": "string",
603
+ },
604
+ {
605
+ "enum": [
606
+ null,
607
+ ],
608
+ "nullable": true,
609
+ "type": "string",
610
+ },
611
+ ],
612
+ }
613
+ `);
614
+ });
615
+
616
+ test("number with exclusive min-max openapi-3.0", () => {
617
+ const schema = z.number().lt(100).gt(1);
618
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
619
+ validateOpenAPI30Schema(jsonSchema);
620
+ expect(jsonSchema).toMatchInlineSnapshot(`
621
+ {
622
+ "exclusiveMaximum": true,
623
+ "exclusiveMinimum": true,
624
+ "maximum": 100,
625
+ "minimum": 1,
626
+ "type": "number",
627
+ }
628
+ `);
629
+ });
630
+
542
631
  test("arrays", () => {
543
632
  expect(z.toJSONSchema(z.array(z.string()))).toMatchInlineSnapshot(`
544
633
  {
@@ -620,7 +709,39 @@ describe("toJSONSchema", () => {
620
709
  `);
621
710
  });
622
711
 
712
+ test("record openapi-3.0", () => {
713
+ const schema = z.record(z.string(), z.boolean());
714
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
715
+ validateOpenAPI30Schema(jsonSchema);
716
+ expect(jsonSchema).toMatchInlineSnapshot(`
717
+ {
718
+ "additionalProperties": {
719
+ "type": "boolean",
720
+ },
721
+ "type": "object",
722
+ }
723
+ `);
724
+ });
725
+
623
726
  test("tuple", () => {
727
+ const schema = z.tuple([z.string(), z.number()]);
728
+ expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
729
+ {
730
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
731
+ "prefixItems": [
732
+ {
733
+ "type": "string",
734
+ },
735
+ {
736
+ "type": "number",
737
+ },
738
+ ],
739
+ "type": "array",
740
+ }
741
+ `);
742
+ });
743
+
744
+ test("tuple with rest", () => {
624
745
  const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
625
746
  expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
626
747
  {
@@ -641,6 +762,173 @@ describe("toJSONSchema", () => {
641
762
  `);
642
763
  });
643
764
 
765
+ test("tuple openapi-3.0", () => {
766
+ const schema = z.tuple([z.string(), z.number()]);
767
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
768
+ validateOpenAPI30Schema(jsonSchema);
769
+ expect(jsonSchema).toMatchInlineSnapshot(`
770
+ {
771
+ "items": {
772
+ "anyOf": [
773
+ {
774
+ "type": "string",
775
+ },
776
+ {
777
+ "type": "number",
778
+ },
779
+ ],
780
+ },
781
+ "maxItems": 2,
782
+ "minItems": 2,
783
+ "type": "array",
784
+ }
785
+ `);
786
+ });
787
+
788
+ test("tuple with rest openapi-3.0", () => {
789
+ const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
790
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
791
+ validateOpenAPI30Schema(jsonSchema);
792
+ expect(jsonSchema).toMatchInlineSnapshot(`
793
+ {
794
+ "items": {
795
+ "anyOf": [
796
+ {
797
+ "type": "string",
798
+ },
799
+ {
800
+ "type": "number",
801
+ },
802
+ {
803
+ "type": "boolean",
804
+ },
805
+ ],
806
+ },
807
+ "minItems": 3,
808
+ "type": "array",
809
+ }
810
+ `);
811
+ });
812
+
813
+ test("tuple with null openapi-3.0", () => {
814
+ const schema = z.tuple([z.string(), z.number(), z.null()]);
815
+ const jsonSchema = z.toJSONSchema(schema, { target: "openapi-3.0" });
816
+ validateOpenAPI30Schema(jsonSchema);
817
+ expect(jsonSchema).toMatchInlineSnapshot(`
818
+ {
819
+ "items": {
820
+ "anyOf": [
821
+ {
822
+ "type": "string",
823
+ },
824
+ {
825
+ "type": "number",
826
+ },
827
+ {
828
+ "enum": [
829
+ null,
830
+ ],
831
+ "nullable": true,
832
+ "type": "string",
833
+ },
834
+ ],
835
+ },
836
+ "maxItems": 3,
837
+ "minItems": 3,
838
+ "type": "array",
839
+ }
840
+ `);
841
+ });
842
+
843
+ test("tuple draft-7", () => {
844
+ const schema = z.tuple([z.string(), z.number()]);
845
+ expect(z.toJSONSchema(schema, { target: "draft-7", io: "input" })).toMatchInlineSnapshot(`
846
+ {
847
+ "$schema": "http://json-schema.org/draft-07/schema#",
848
+ "items": [
849
+ {
850
+ "type": "string",
851
+ },
852
+ {
853
+ "type": "number",
854
+ },
855
+ ],
856
+ "type": "array",
857
+ }
858
+ `);
859
+ });
860
+
861
+ test("tuple with rest draft-7", () => {
862
+ const schema = z.tuple([z.string(), z.number()]).rest(z.boolean());
863
+ expect(z.toJSONSchema(schema, { target: "draft-7", io: "input" })).toMatchInlineSnapshot(`
864
+ {
865
+ "$schema": "http://json-schema.org/draft-07/schema#",
866
+ "additionalItems": {
867
+ "type": "boolean",
868
+ },
869
+ "items": [
870
+ {
871
+ "type": "string",
872
+ },
873
+ {
874
+ "type": "number",
875
+ },
876
+ ],
877
+ "type": "array",
878
+ }
879
+ `);
880
+ });
881
+
882
+ test("tuple with rest draft-7 - issue #5151 regression test", () => {
883
+ // This test addresses issue #5151: tuple with rest elements and ids
884
+ // in draft-7 had incorrect internal path handling affecting complex scenarios
885
+ const primarySchema = z.string().meta({ id: "primary" });
886
+ const restSchema = z.number().meta({ id: "rest" });
887
+ const testSchema = z.tuple([primarySchema], restSchema);
888
+
889
+ // Test both final output structure AND internal path handling
890
+ const capturedPaths: string[] = [];
891
+ const result = z.toJSONSchema(testSchema, {
892
+ target: "draft-7",
893
+ override: (ctx) => capturedPaths.push(ctx.path.join("/")),
894
+ });
895
+
896
+ // Verify correct draft-7 structure with metadata extraction
897
+ expect(result).toMatchInlineSnapshot(`
898
+ {
899
+ "$schema": "http://json-schema.org/draft-07/schema#",
900
+ "additionalItems": {
901
+ "$ref": "#/definitions/rest",
902
+ },
903
+ "definitions": {
904
+ "primary": {
905
+ "id": "primary",
906
+ "type": "string",
907
+ },
908
+ "rest": {
909
+ "id": "rest",
910
+ "type": "number",
911
+ },
912
+ },
913
+ "items": [
914
+ {
915
+ "$ref": "#/definitions/primary",
916
+ },
917
+ ],
918
+ "type": "array",
919
+ }
920
+ `);
921
+
922
+ // Verify internal paths are correct (this was the actual bug)
923
+ expect(capturedPaths).toContain("items/0"); // prefix items should use "items" path
924
+ expect(capturedPaths).toContain("additionalItems"); // rest should use "additionalItems" path
925
+ expect(capturedPaths).not.toContain("prefixItems/0"); // should not use draft-2020-12 paths
926
+
927
+ // Structural validations
928
+ expect(Array.isArray(result.items)).toBe(true);
929
+ expect(result.additionalItems).toBeDefined();
930
+ });
931
+
644
932
  test("promise", () => {
645
933
  const schema = z.promise(z.string());
646
934
  expect(z.toJSONSchema(schema)).toMatchInlineSnapshot(`
@@ -745,6 +1033,19 @@ describe("toJSONSchema", () => {
745
1033
  `);
746
1034
  });
747
1035
 
1036
+ test("literal draft-4", () => {
1037
+ const a = z.literal("hello");
1038
+ expect(z.toJSONSchema(a, { target: "draft-4" })).toMatchInlineSnapshot(`
1039
+ {
1040
+ "$schema": "http://json-schema.org/draft-04/schema#",
1041
+ "enum": [
1042
+ "hello",
1043
+ ],
1044
+ "type": "string",
1045
+ }
1046
+ `);
1047
+ });
1048
+
748
1049
  // pipe
749
1050
  test("pipe", () => {
750
1051
  const schema = z
@@ -1451,7 +1752,9 @@ test("unrepresentable literal values are ignored", () => {
1451
1752
  }
1452
1753
  `);
1453
1754
 
1454
- const b = z.z.toJSONSchema(z.literal([undefined, null, 5, BigInt(1324)]), { unrepresentable: "any" });
1755
+ const b = z.z.toJSONSchema(z.literal([undefined, null, 5, BigInt(1324)]), {
1756
+ unrepresentable: "any",
1757
+ });
1455
1758
  expect(b).toMatchInlineSnapshot(`
1456
1759
  {
1457
1760
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -1463,7 +1766,9 @@ test("unrepresentable literal values are ignored", () => {
1463
1766
  }
1464
1767
  `);
1465
1768
 
1466
- const c = z.z.toJSONSchema(z.literal([undefined]), { unrepresentable: "any" });
1769
+ const c = z.z.toJSONSchema(z.literal([undefined]), {
1770
+ unrepresentable: "any",
1771
+ });
1467
1772
  expect(c).toMatchInlineSnapshot(`
1468
1773
  {
1469
1774
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -1746,7 +2051,9 @@ test("basic registry", () => {
1746
2051
  myRegistry.add(User, { id: "User" });
1747
2052
  myRegistry.add(Post, { id: "Post" });
1748
2053
 
1749
- const result = z.z.toJSONSchema(myRegistry, { uri: (id) => `https://example.com/${id}.json` });
2054
+ const result = z.z.toJSONSchema(myRegistry, {
2055
+ uri: (id) => `https://example.com/${id}.json`,
2056
+ });
1750
2057
  expect(result).toMatchInlineSnapshot(`
1751
2058
  {
1752
2059
  "schemas": {
@@ -1952,6 +2259,7 @@ test("input type", () => {
1952
2259
  "required": [
1953
2260
  "a",
1954
2261
  "d",
2262
+ "f",
1955
2263
  "g",
1956
2264
  ],
1957
2265
  "type": "object",
@@ -248,3 +248,114 @@ test("async short circuit on dirty", async () => {
248
248
  ]]
249
249
  `);
250
250
  });
251
+
252
+ test("do not continue by default", () => {
253
+ const A = z
254
+ .string()
255
+ .transform((val, ctx) => {
256
+ ctx.addIssue({
257
+ code: "custom",
258
+ message: `custom error`,
259
+ });
260
+ ctx.addIssue({
261
+ code: "custom",
262
+ message: `custom error`,
263
+ });
264
+ return val;
265
+ })
266
+ .pipe(z.number() as any);
267
+ expect(A.safeParse("asdf")).toMatchInlineSnapshot(`
268
+ {
269
+ "error": [ZodError: [
270
+ {
271
+ "code": "custom",
272
+ "message": "custom error",
273
+ "path": []
274
+ },
275
+ {
276
+ "code": "custom",
277
+ "message": "custom error",
278
+ "path": []
279
+ }
280
+ ]],
281
+ "success": false,
282
+ }
283
+ `);
284
+
285
+ const B = z
286
+ .string()
287
+ .transform((val, ctx) => {
288
+ ctx.issues.push({
289
+ code: "custom",
290
+ message: `custom error`,
291
+ input: val,
292
+ });
293
+ ctx.issues.push({
294
+ code: "custom",
295
+ message: `custom error`,
296
+ input: val,
297
+ });
298
+ return val;
299
+ })
300
+ .pipe(z.number() as any);
301
+ expect(B.safeParse("asdf")).toMatchInlineSnapshot(`
302
+ {
303
+ "error": [ZodError: [
304
+ {
305
+ "code": "custom",
306
+ "message": "custom error",
307
+ "path": []
308
+ },
309
+ {
310
+ "code": "custom",
311
+ "message": "custom error",
312
+ "path": []
313
+ }
314
+ ]],
315
+ "success": false,
316
+ }
317
+ `);
318
+
319
+ const C = z
320
+ .string()
321
+ .transform((val, ctx) => {
322
+ ctx.issues.push({
323
+ code: "custom",
324
+ message: `custom error`,
325
+ input: val,
326
+ continue: true,
327
+ });
328
+ ctx.issues.push({
329
+ code: "custom",
330
+ message: `custom error`,
331
+ input: val,
332
+ continue: true,
333
+ });
334
+ return val;
335
+ })
336
+ .pipe(z.number() as any);
337
+ expect(C.safeParse("asdf")).toMatchInlineSnapshot(`
338
+ {
339
+ "error": [ZodError: [
340
+ {
341
+ "code": "custom",
342
+ "message": "custom error",
343
+ "path": []
344
+ },
345
+ {
346
+ "code": "custom",
347
+ "message": "custom error",
348
+ "path": []
349
+ }
350
+ ]],
351
+ "success": false,
352
+ }
353
+ `);
354
+ });
355
+
356
+ test("encode error", () => {
357
+ const schema = z.string().transform((val) => val.length);
358
+ expect(() => z.encode(schema, 1234)).toThrowErrorMatchingInlineSnapshot(
359
+ `[ZodEncodeError: Encountered unidirectional transform during encode: ZodTransform]`
360
+ );
361
+ });
@@ -28,9 +28,9 @@ test("successful validation", () => {
28
28
  expect(r2.error!).toMatchInlineSnapshot(`
29
29
  [ZodError: [
30
30
  {
31
- "origin": "array",
32
31
  "code": "too_big",
33
32
  "maximum": 2,
33
+ "origin": "array",
34
34
  "path": [],
35
35
  "message": "Too big: expected array to have <2 items"
36
36
  }
@@ -80,9 +80,9 @@ test("async validation", async () => {
80
80
  expect(r2.error!).toMatchInlineSnapshot(`
81
81
  [ZodError: [
82
82
  {
83
- "origin": "array",
84
83
  "code": "too_big",
85
84
  "maximum": 2,
85
+ "origin": "array",
86
86
  "path": [],
87
87
  "message": "Too big: expected array to have <2 items"
88
88
  }
@@ -27,7 +27,7 @@ test("return valid over invalid", () => {
27
27
  });
28
28
 
29
29
  test("return errors from both union arms", () => {
30
- const result = z.union([z.number(), z.string().refine(() => false)]).safeParse("a");
30
+ const result = z.union([z.number(), z.boolean()]).safeParse("a");
31
31
  expect(result.success).toEqual(false);
32
32
  if (!result.success) {
33
33
  expect(result.error.issues).toMatchInlineSnapshot(`
@@ -45,8 +45,9 @@ test("return errors from both union arms", () => {
45
45
  ],
46
46
  [
47
47
  {
48
- "code": "custom",
49
- "message": "Invalid input",
48
+ "code": "invalid_type",
49
+ "expected": "boolean",
50
+ "message": "Invalid input: expected boolean, received string",
50
51
  "path": [],
51
52
  },
52
53
  ],
@@ -92,3 +93,89 @@ test("union values", () => {
92
93
  }
93
94
  `);
94
95
  });
96
+
97
+ test("non-aborted errors", () => {
98
+ const zItemTest = z.union([
99
+ z.object({
100
+ date: z.number(),
101
+ startDate: z.optional(z.null()),
102
+ endDate: z.optional(z.null()),
103
+ }),
104
+ z
105
+ .object({
106
+ date: z.optional(z.null()),
107
+ startDate: z.number(),
108
+ endDate: z.number(),
109
+ })
110
+ .refine((data) => data.startDate !== data.endDate, {
111
+ error: "startDate and endDate must be different",
112
+ path: ["endDate"],
113
+ }),
114
+ ]);
115
+
116
+ const res = zItemTest.safeParse({
117
+ date: null,
118
+ startDate: 1,
119
+ endDate: 1,
120
+ });
121
+
122
+ expect(res).toMatchInlineSnapshot(`
123
+ {
124
+ "error": [ZodError: [
125
+ {
126
+ "code": "custom",
127
+ "path": [
128
+ "endDate"
129
+ ],
130
+ "message": "startDate and endDate must be different"
131
+ }
132
+ ]],
133
+ "success": false,
134
+ }
135
+ `);
136
+ });
137
+
138
+ test("surface continuable errors only if they exist", () => {
139
+ const schema = z.union([z.boolean(), z.uuid(), z.jwt()]);
140
+
141
+ expect(schema.safeParse("asdf")).toMatchInlineSnapshot(`
142
+ {
143
+ "error": [ZodError: [
144
+ {
145
+ "code": "invalid_union",
146
+ "errors": [
147
+ [
148
+ {
149
+ "expected": "boolean",
150
+ "code": "invalid_type",
151
+ "path": [],
152
+ "message": "Invalid input: expected boolean, received string"
153
+ }
154
+ ],
155
+ [
156
+ {
157
+ "origin": "string",
158
+ "code": "invalid_format",
159
+ "format": "uuid",
160
+ "pattern": "/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/",
161
+ "path": [],
162
+ "message": "Invalid UUID"
163
+ }
164
+ ],
165
+ [
166
+ {
167
+ "code": "invalid_format",
168
+ "format": "jwt",
169
+ "path": [],
170
+ "message": "Invalid JWT"
171
+ }
172
+ ]
173
+ ],
174
+ "path": [],
175
+ "message": "Invalid input"
176
+ }
177
+ ]],
178
+ "success": false,
179
+ }
180
+ `);
181
+ });