fullstacked 0.12.1-1358 → 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 (337) 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/build/build.ts +16 -12
  8. package/fullstacked_modules/build/sass.ts +28 -19
  9. package/fullstacked_modules/zod/README.md +4 -4
  10. package/fullstacked_modules/zod/index.cjs +2 -2
  11. package/fullstacked_modules/zod/index.d.cts +2 -2
  12. package/fullstacked_modules/zod/index.d.ts +2 -2
  13. package/fullstacked_modules/zod/index.js +2 -2
  14. package/fullstacked_modules/zod/locales/index.cjs +17 -0
  15. package/fullstacked_modules/zod/locales/index.d.cts +1 -0
  16. package/fullstacked_modules/zod/locales/index.d.ts +1 -0
  17. package/fullstacked_modules/zod/locales/index.js +1 -0
  18. package/fullstacked_modules/zod/locales/package.json +6 -0
  19. package/fullstacked_modules/zod/mini/index.cjs +17 -0
  20. package/fullstacked_modules/zod/mini/index.d.cts +1 -0
  21. package/fullstacked_modules/zod/mini/index.d.ts +1 -0
  22. package/fullstacked_modules/zod/mini/index.js +1 -0
  23. package/fullstacked_modules/zod/mini/package.json +6 -0
  24. package/fullstacked_modules/zod/package.json +29 -12
  25. package/fullstacked_modules/zod/src/index.ts +2 -2
  26. package/fullstacked_modules/zod/src/locales/index.ts +1 -0
  27. package/fullstacked_modules/zod/src/mini/index.ts +1 -0
  28. package/fullstacked_modules/zod/src/v3/ZodError.ts +1 -1
  29. package/fullstacked_modules/zod/src/v3/tests/object.test.ts +2 -2
  30. package/fullstacked_modules/zod/src/v3/tests/string.test.ts +2 -2
  31. package/fullstacked_modules/zod/src/v3/types.ts +3 -1
  32. package/fullstacked_modules/zod/src/v4/classic/checks.ts +1 -0
  33. package/fullstacked_modules/zod/src/v4/classic/compat.ts +4 -0
  34. package/fullstacked_modules/zod/src/v4/classic/errors.ts +9 -2
  35. package/fullstacked_modules/zod/src/v4/classic/external.ts +1 -1
  36. package/fullstacked_modules/zod/src/v4/classic/parse.ts +49 -0
  37. package/fullstacked_modules/zod/src/v4/classic/schemas.ts +224 -81
  38. package/fullstacked_modules/zod/src/v4/classic/tests/array.test.ts +6 -6
  39. package/fullstacked_modules/zod/src/v4/classic/tests/catch.test.ts +29 -5
  40. package/fullstacked_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  41. package/fullstacked_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  42. package/fullstacked_modules/zod/src/v4/classic/tests/continuability.test.ts +1 -1
  43. package/fullstacked_modules/zod/src/v4/classic/tests/datetime.test.ts +6 -0
  44. package/fullstacked_modules/zod/src/v4/classic/tests/default.test.ts +52 -0
  45. package/fullstacked_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +42 -0
  46. package/fullstacked_modules/zod/src/v4/classic/tests/error-utils.test.ts +70 -2
  47. package/fullstacked_modules/zod/src/v4/classic/tests/file.test.ts +9 -4
  48. package/fullstacked_modules/zod/src/v4/classic/tests/firstparty.test.ts +4 -0
  49. package/fullstacked_modules/zod/src/v4/classic/tests/function.test.ts +71 -31
  50. package/fullstacked_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  51. package/fullstacked_modules/zod/src/v4/classic/tests/index.test.ts +15 -0
  52. package/fullstacked_modules/zod/src/v4/classic/tests/literal.test.ts +25 -0
  53. package/fullstacked_modules/zod/src/v4/classic/tests/nonoptional.test.ts +15 -0
  54. package/fullstacked_modules/zod/src/v4/classic/tests/number.test.ts +23 -0
  55. package/fullstacked_modules/zod/src/v4/classic/tests/object.test.ts +48 -2
  56. package/fullstacked_modules/zod/src/v4/classic/tests/optional.test.ts +13 -0
  57. package/fullstacked_modules/zod/src/v4/classic/tests/partial.test.ts +193 -0
  58. package/fullstacked_modules/zod/src/v4/classic/tests/pickomit.test.ts +5 -5
  59. package/fullstacked_modules/zod/src/v4/classic/tests/pipe.test.ts +25 -5
  60. package/fullstacked_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
  61. package/fullstacked_modules/zod/src/v4/classic/tests/preprocess.test.ts +5 -21
  62. package/fullstacked_modules/zod/src/v4/classic/tests/record.test.ts +15 -1
  63. package/fullstacked_modules/zod/src/v4/classic/tests/recursive-types.test.ts +226 -0
  64. package/fullstacked_modules/zod/src/v4/classic/tests/refine.test.ts +78 -5
  65. package/fullstacked_modules/zod/src/v4/classic/tests/set.test.ts +5 -3
  66. package/fullstacked_modules/zod/src/v4/classic/tests/string-formats.test.ts +16 -0
  67. package/fullstacked_modules/zod/src/v4/classic/tests/string.test.ts +204 -5
  68. package/fullstacked_modules/zod/src/v4/classic/tests/stringbool.test.ts +40 -0
  69. package/fullstacked_modules/zod/src/v4/classic/tests/template-literal.test.ts +14 -9
  70. package/fullstacked_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +315 -7
  71. package/fullstacked_modules/zod/src/v4/classic/tests/transform.test.ts +111 -0
  72. package/fullstacked_modules/zod/src/v4/classic/tests/tuple.test.ts +2 -2
  73. package/fullstacked_modules/zod/src/v4/classic/tests/union.test.ts +90 -3
  74. package/fullstacked_modules/zod/src/v4/core/api.ts +160 -133
  75. package/fullstacked_modules/zod/src/v4/core/checks.ts +6 -2
  76. package/fullstacked_modules/zod/src/v4/core/core.ts +9 -28
  77. package/fullstacked_modules/zod/src/v4/core/doc.ts +2 -2
  78. package/fullstacked_modules/zod/src/v4/core/errors.ts +49 -60
  79. package/fullstacked_modules/zod/src/v4/core/index.ts +0 -1
  80. package/fullstacked_modules/zod/src/v4/core/json-schema.ts +7 -3
  81. package/fullstacked_modules/zod/src/v4/core/parse.ts +101 -0
  82. package/fullstacked_modules/zod/src/v4/core/regexes.ts +56 -14
  83. package/fullstacked_modules/zod/src/v4/core/registries.ts +5 -4
  84. package/fullstacked_modules/zod/src/v4/core/schemas.ts +705 -230
  85. package/fullstacked_modules/zod/src/v4/core/tests/extend.test.ts +18 -0
  86. package/fullstacked_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  87. package/fullstacked_modules/zod/src/v4/core/to-json-schema.ts +100 -33
  88. package/fullstacked_modules/zod/src/v4/core/util.ts +237 -102
  89. package/fullstacked_modules/zod/src/v4/core/versions.ts +2 -2
  90. package/fullstacked_modules/zod/src/v4/locales/bg.ts +136 -0
  91. package/fullstacked_modules/zod/src/v4/locales/da.ts +141 -0
  92. package/fullstacked_modules/zod/src/v4/locales/es.ts +44 -10
  93. package/fullstacked_modules/zod/src/v4/locales/index.ts +8 -0
  94. package/fullstacked_modules/zod/src/v4/locales/is.ts +127 -0
  95. package/fullstacked_modules/zod/src/v4/locales/ka.ts +138 -0
  96. package/fullstacked_modules/zod/src/v4/locales/kh.ts +3 -122
  97. package/fullstacked_modules/zod/src/v4/locales/km.ts +126 -0
  98. package/fullstacked_modules/zod/src/v4/locales/lt.ts +265 -0
  99. package/fullstacked_modules/zod/src/v4/locales/ua.ts +3 -122
  100. package/fullstacked_modules/zod/src/v4/locales/uk.ts +126 -0
  101. package/fullstacked_modules/zod/src/v4/locales/yo.ts +131 -0
  102. package/fullstacked_modules/zod/src/v4/mini/external.ts +1 -1
  103. package/fullstacked_modules/zod/src/v4/mini/parse.ts +14 -1
  104. package/fullstacked_modules/zod/src/v4/mini/schemas.ts +186 -40
  105. package/fullstacked_modules/zod/src/v4/mini/tests/assignability.test.ts +1 -1
  106. package/fullstacked_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  107. package/fullstacked_modules/zod/src/v4/mini/tests/computed.test.ts +1 -1
  108. package/fullstacked_modules/zod/src/v4/mini/tests/error.test.ts +1 -1
  109. package/fullstacked_modules/zod/src/v4/mini/tests/index.test.ts +29 -1
  110. package/fullstacked_modules/zod/src/v4/mini/tests/number.test.ts +1 -1
  111. package/fullstacked_modules/zod/src/v4/mini/tests/object.test.ts +16 -1
  112. package/fullstacked_modules/zod/src/v4/mini/tests/prototypes.test.ts +1 -1
  113. package/fullstacked_modules/zod/src/v4/mini/tests/recursive-types.test.ts +1 -1
  114. package/fullstacked_modules/zod/src/v4/mini/tests/string.test.ts +17 -1
  115. package/fullstacked_modules/zod/v3/ZodError.cjs +1 -1
  116. package/fullstacked_modules/zod/v3/ZodError.d.cts +6 -6
  117. package/fullstacked_modules/zod/v3/ZodError.d.ts +6 -6
  118. package/fullstacked_modules/zod/v3/ZodError.js +1 -1
  119. package/fullstacked_modules/zod/v3/locales/en.cjs +1 -0
  120. package/fullstacked_modules/zod/v3/locales/en.d.cts +1 -1
  121. package/fullstacked_modules/zod/v3/package.json +6 -0
  122. package/fullstacked_modules/zod/v3/types.cjs +2 -0
  123. package/fullstacked_modules/zod/v3/types.d.cts +4 -1
  124. package/fullstacked_modules/zod/v3/types.d.ts +4 -1
  125. package/fullstacked_modules/zod/v3/types.js +2 -0
  126. package/fullstacked_modules/zod/v4/classic/checks.d.cts +1 -1
  127. package/fullstacked_modules/zod/v4/classic/checks.d.ts +1 -1
  128. package/fullstacked_modules/zod/v4/classic/compat.cjs +5 -1
  129. package/fullstacked_modules/zod/v4/classic/compat.d.cts +4 -0
  130. package/fullstacked_modules/zod/v4/classic/compat.d.ts +4 -0
  131. package/fullstacked_modules/zod/v4/classic/compat.js +4 -0
  132. package/fullstacked_modules/zod/v4/classic/errors.cjs +9 -2
  133. package/fullstacked_modules/zod/v4/classic/errors.js +9 -2
  134. package/fullstacked_modules/zod/v4/classic/external.cjs +2 -2
  135. package/fullstacked_modules/zod/v4/classic/external.d.cts +1 -1
  136. package/fullstacked_modules/zod/v4/classic/external.d.ts +1 -1
  137. package/fullstacked_modules/zod/v4/classic/external.js +1 -1
  138. package/fullstacked_modules/zod/v4/classic/package.json +6 -0
  139. package/fullstacked_modules/zod/v4/classic/parse.cjs +10 -1
  140. package/fullstacked_modules/zod/v4/classic/parse.d.cts +8 -0
  141. package/fullstacked_modules/zod/v4/classic/parse.d.ts +8 -0
  142. package/fullstacked_modules/zod/v4/classic/parse.js +9 -0
  143. package/fullstacked_modules/zod/v4/classic/schemas.cjs +90 -48
  144. package/fullstacked_modules/zod/v4/classic/schemas.d.cts +70 -27
  145. package/fullstacked_modules/zod/v4/classic/schemas.d.ts +70 -27
  146. package/fullstacked_modules/zod/v4/classic/schemas.js +81 -47
  147. package/fullstacked_modules/zod/v4/core/api.cjs +52 -31
  148. package/fullstacked_modules/zod/v4/core/api.d.cts +87 -76
  149. package/fullstacked_modules/zod/v4/core/api.d.ts +87 -76
  150. package/fullstacked_modules/zod/v4/core/api.js +50 -31
  151. package/fullstacked_modules/zod/v4/core/checks.cjs +4 -0
  152. package/fullstacked_modules/zod/v4/core/checks.d.cts +2 -2
  153. package/fullstacked_modules/zod/v4/core/checks.d.ts +2 -2
  154. package/fullstacked_modules/zod/v4/core/checks.js +4 -0
  155. package/fullstacked_modules/zod/v4/core/core.cjs +8 -1
  156. package/fullstacked_modules/zod/v4/core/core.d.cts +5 -2
  157. package/fullstacked_modules/zod/v4/core/core.d.ts +5 -2
  158. package/fullstacked_modules/zod/v4/core/core.js +6 -0
  159. package/fullstacked_modules/zod/v4/core/doc.d.cts +1 -1
  160. package/fullstacked_modules/zod/v4/core/doc.d.ts +1 -1
  161. package/fullstacked_modules/zod/v4/core/errors.cjs +6 -19
  162. package/fullstacked_modules/zod/v4/core/errors.d.cts +24 -22
  163. package/fullstacked_modules/zod/v4/core/errors.d.ts +24 -22
  164. package/fullstacked_modules/zod/v4/core/errors.js +6 -19
  165. package/fullstacked_modules/zod/v4/core/index.cjs +0 -1
  166. package/fullstacked_modules/zod/v4/core/index.d.cts +0 -1
  167. package/fullstacked_modules/zod/v4/core/index.d.ts +0 -1
  168. package/fullstacked_modules/zod/v4/core/index.js +0 -1
  169. package/fullstacked_modules/zod/v4/core/json-schema.d.cts +4 -3
  170. package/fullstacked_modules/zod/v4/core/json-schema.d.ts +4 -3
  171. package/fullstacked_modules/zod/v4/core/package.json +6 -0
  172. package/fullstacked_modules/zod/v4/core/parse.cjs +45 -1
  173. package/fullstacked_modules/zod/v4/core/parse.d.cts +24 -0
  174. package/fullstacked_modules/zod/v4/core/parse.d.ts +24 -0
  175. package/fullstacked_modules/zod/v4/core/parse.js +36 -0
  176. package/fullstacked_modules/zod/v4/core/regexes.cjs +49 -16
  177. package/fullstacked_modules/zod/v4/core/regexes.d.cts +18 -2
  178. package/fullstacked_modules/zod/v4/core/regexes.d.ts +18 -2
  179. package/fullstacked_modules/zod/v4/core/regexes.js +46 -14
  180. package/fullstacked_modules/zod/v4/core/registries.cjs +4 -3
  181. package/fullstacked_modules/zod/v4/core/registries.d.cts +2 -2
  182. package/fullstacked_modules/zod/v4/core/registries.d.ts +2 -2
  183. package/fullstacked_modules/zod/v4/core/registries.js +4 -3
  184. package/fullstacked_modules/zod/v4/core/schemas.cjs +409 -171
  185. package/fullstacked_modules/zod/v4/core/schemas.d.cts +88 -16
  186. package/fullstacked_modules/zod/v4/core/schemas.d.ts +88 -16
  187. package/fullstacked_modules/zod/v4/core/schemas.js +408 -170
  188. package/fullstacked_modules/zod/v4/core/to-json-schema.cjs +97 -31
  189. package/fullstacked_modules/zod/v4/core/to-json-schema.d.cts +5 -3
  190. package/fullstacked_modules/zod/v4/core/to-json-schema.d.ts +5 -3
  191. package/fullstacked_modules/zod/v4/core/to-json-schema.js +97 -31
  192. package/fullstacked_modules/zod/v4/core/util.cjs +220 -101
  193. package/fullstacked_modules/zod/v4/core/util.d.cts +14 -0
  194. package/fullstacked_modules/zod/v4/core/util.d.ts +14 -0
  195. package/fullstacked_modules/zod/v4/core/util.js +209 -101
  196. package/fullstacked_modules/zod/v4/core/versions.cjs +2 -2
  197. package/fullstacked_modules/zod/v4/core/versions.d.cts +1 -1
  198. package/fullstacked_modules/zod/v4/core/versions.d.ts +1 -1
  199. package/fullstacked_modules/zod/v4/core/versions.js +2 -2
  200. package/fullstacked_modules/zod/v4/locales/ar.cjs +1 -0
  201. package/fullstacked_modules/zod/v4/locales/ar.d.cts +2 -1
  202. package/fullstacked_modules/zod/v4/locales/az.cjs +1 -0
  203. package/fullstacked_modules/zod/v4/locales/az.d.cts +2 -1
  204. package/fullstacked_modules/zod/v4/locales/be.cjs +1 -0
  205. package/fullstacked_modules/zod/v4/locales/be.d.cts +2 -1
  206. package/fullstacked_modules/zod/v4/locales/bg.cjs +156 -0
  207. package/fullstacked_modules/zod/v4/locales/bg.d.cts +5 -0
  208. package/fullstacked_modules/zod/v4/locales/bg.d.ts +5 -0
  209. package/fullstacked_modules/zod/v4/locales/bg.js +128 -0
  210. package/fullstacked_modules/zod/v4/locales/ca.cjs +1 -0
  211. package/fullstacked_modules/zod/v4/locales/ca.d.cts +2 -1
  212. package/fullstacked_modules/zod/v4/locales/cs.cjs +1 -0
  213. package/fullstacked_modules/zod/v4/locales/cs.d.cts +2 -1
  214. package/fullstacked_modules/zod/v4/locales/da.cjs +158 -0
  215. package/fullstacked_modules/zod/v4/locales/da.d.cts +5 -0
  216. package/fullstacked_modules/zod/v4/locales/da.d.ts +4 -0
  217. package/fullstacked_modules/zod/v4/locales/da.js +131 -0
  218. package/fullstacked_modules/zod/v4/locales/de.cjs +1 -0
  219. package/fullstacked_modules/zod/v4/locales/de.d.cts +2 -1
  220. package/fullstacked_modules/zod/v4/locales/es.cjs +43 -10
  221. package/fullstacked_modules/zod/v4/locales/es.d.cts +2 -1
  222. package/fullstacked_modules/zod/v4/locales/es.js +42 -10
  223. package/fullstacked_modules/zod/v4/locales/fa.cjs +1 -0
  224. package/fullstacked_modules/zod/v4/locales/fa.d.cts +2 -1
  225. package/fullstacked_modules/zod/v4/locales/fi.cjs +1 -0
  226. package/fullstacked_modules/zod/v4/locales/fi.d.cts +2 -1
  227. package/fullstacked_modules/zod/v4/locales/fr-CA.cjs +1 -0
  228. package/fullstacked_modules/zod/v4/locales/fr-CA.d.cts +2 -1
  229. package/fullstacked_modules/zod/v4/locales/fr.cjs +1 -0
  230. package/fullstacked_modules/zod/v4/locales/fr.d.cts +2 -1
  231. package/fullstacked_modules/zod/v4/locales/he.cjs +1 -0
  232. package/fullstacked_modules/zod/v4/locales/he.d.cts +2 -1
  233. package/fullstacked_modules/zod/v4/locales/hu.cjs +1 -0
  234. package/fullstacked_modules/zod/v4/locales/hu.d.cts +2 -1
  235. package/fullstacked_modules/zod/v4/locales/id.cjs +1 -0
  236. package/fullstacked_modules/zod/v4/locales/id.d.cts +2 -1
  237. package/fullstacked_modules/zod/v4/locales/index.cjs +17 -1
  238. package/fullstacked_modules/zod/v4/locales/index.d.cts +8 -0
  239. package/fullstacked_modules/zod/v4/locales/index.d.ts +8 -0
  240. package/fullstacked_modules/zod/v4/locales/index.js +8 -0
  241. package/fullstacked_modules/zod/v4/locales/is.cjs +145 -0
  242. package/fullstacked_modules/zod/v4/locales/is.d.cts +5 -0
  243. package/fullstacked_modules/zod/v4/locales/is.d.ts +5 -0
  244. package/fullstacked_modules/zod/v4/locales/is.js +117 -0
  245. package/fullstacked_modules/zod/v4/locales/it.cjs +1 -0
  246. package/fullstacked_modules/zod/v4/locales/it.d.cts +2 -1
  247. package/fullstacked_modules/zod/v4/locales/ja.cjs +1 -0
  248. package/fullstacked_modules/zod/v4/locales/ja.d.cts +2 -1
  249. package/fullstacked_modules/zod/v4/locales/ka.cjs +153 -0
  250. package/fullstacked_modules/zod/v4/locales/ka.d.cts +5 -0
  251. package/fullstacked_modules/zod/v4/locales/ka.d.ts +5 -0
  252. package/fullstacked_modules/zod/v4/locales/ka.js +125 -0
  253. package/fullstacked_modules/zod/v4/locales/kh.cjs +6 -137
  254. package/fullstacked_modules/zod/v4/locales/kh.d.cts +2 -1
  255. package/fullstacked_modules/zod/v4/locales/kh.d.ts +1 -0
  256. package/fullstacked_modules/zod/v4/locales/kh.js +3 -115
  257. package/fullstacked_modules/zod/v4/locales/km.cjs +144 -0
  258. package/fullstacked_modules/zod/v4/locales/km.d.cts +5 -0
  259. package/fullstacked_modules/zod/v4/locales/km.d.ts +4 -0
  260. package/fullstacked_modules/zod/v4/locales/km.js +117 -0
  261. package/fullstacked_modules/zod/v4/locales/ko.cjs +1 -0
  262. package/fullstacked_modules/zod/v4/locales/ko.d.cts +2 -1
  263. package/fullstacked_modules/zod/v4/locales/lt.cjs +258 -0
  264. package/fullstacked_modules/zod/v4/locales/lt.d.cts +5 -0
  265. package/fullstacked_modules/zod/v4/locales/lt.d.ts +5 -0
  266. package/fullstacked_modules/zod/v4/locales/lt.js +230 -0
  267. package/fullstacked_modules/zod/v4/locales/mk.cjs +1 -0
  268. package/fullstacked_modules/zod/v4/locales/mk.d.cts +2 -1
  269. package/fullstacked_modules/zod/v4/locales/ms.cjs +1 -0
  270. package/fullstacked_modules/zod/v4/locales/ms.d.cts +2 -1
  271. package/fullstacked_modules/zod/v4/locales/nl.cjs +1 -0
  272. package/fullstacked_modules/zod/v4/locales/nl.d.cts +2 -1
  273. package/fullstacked_modules/zod/v4/locales/no.cjs +1 -0
  274. package/fullstacked_modules/zod/v4/locales/no.d.cts +2 -1
  275. package/fullstacked_modules/zod/v4/locales/ota.cjs +1 -0
  276. package/fullstacked_modules/zod/v4/locales/ota.d.cts +2 -1
  277. package/fullstacked_modules/zod/v4/locales/package.json +6 -0
  278. package/fullstacked_modules/zod/v4/locales/pl.cjs +1 -0
  279. package/fullstacked_modules/zod/v4/locales/pl.d.cts +2 -1
  280. package/fullstacked_modules/zod/v4/locales/ps.cjs +1 -0
  281. package/fullstacked_modules/zod/v4/locales/ps.d.cts +2 -1
  282. package/fullstacked_modules/zod/v4/locales/pt.cjs +1 -0
  283. package/fullstacked_modules/zod/v4/locales/pt.d.cts +2 -1
  284. package/fullstacked_modules/zod/v4/locales/ru.cjs +1 -0
  285. package/fullstacked_modules/zod/v4/locales/ru.d.cts +2 -1
  286. package/fullstacked_modules/zod/v4/locales/sl.cjs +1 -0
  287. package/fullstacked_modules/zod/v4/locales/sl.d.cts +2 -1
  288. package/fullstacked_modules/zod/v4/locales/sv.cjs +1 -0
  289. package/fullstacked_modules/zod/v4/locales/sv.d.cts +2 -1
  290. package/fullstacked_modules/zod/v4/locales/ta.cjs +1 -0
  291. package/fullstacked_modules/zod/v4/locales/ta.d.cts +2 -1
  292. package/fullstacked_modules/zod/v4/locales/th.cjs +1 -0
  293. package/fullstacked_modules/zod/v4/locales/th.d.cts +2 -1
  294. package/fullstacked_modules/zod/v4/locales/ua.cjs +6 -137
  295. package/fullstacked_modules/zod/v4/locales/ua.d.cts +2 -1
  296. package/fullstacked_modules/zod/v4/locales/ua.d.ts +1 -0
  297. package/fullstacked_modules/zod/v4/locales/ua.js +3 -115
  298. package/fullstacked_modules/zod/v4/locales/uk.cjs +144 -0
  299. package/fullstacked_modules/zod/v4/locales/uk.d.cts +5 -0
  300. package/fullstacked_modules/zod/v4/locales/uk.d.ts +4 -0
  301. package/fullstacked_modules/zod/v4/locales/uk.js +117 -0
  302. package/fullstacked_modules/zod/v4/locales/ur.cjs +1 -0
  303. package/fullstacked_modules/zod/v4/locales/ur.d.cts +2 -1
  304. package/fullstacked_modules/zod/v4/locales/vi.cjs +1 -0
  305. package/fullstacked_modules/zod/v4/locales/vi.d.cts +2 -1
  306. package/fullstacked_modules/zod/v4/locales/yo.cjs +142 -0
  307. package/fullstacked_modules/zod/v4/locales/yo.d.cts +5 -0
  308. package/fullstacked_modules/zod/v4/locales/yo.d.ts +4 -0
  309. package/fullstacked_modules/zod/v4/locales/yo.js +115 -0
  310. package/fullstacked_modules/zod/v4/locales/zh-CN.cjs +1 -0
  311. package/fullstacked_modules/zod/v4/locales/zh-CN.d.cts +2 -1
  312. package/fullstacked_modules/zod/v4/locales/zh-TW.cjs +1 -0
  313. package/fullstacked_modules/zod/v4/locales/zh-TW.d.cts +2 -1
  314. package/fullstacked_modules/zod/v4/mini/external.cjs +2 -2
  315. package/fullstacked_modules/zod/v4/mini/external.d.cts +1 -1
  316. package/fullstacked_modules/zod/v4/mini/external.d.ts +1 -1
  317. package/fullstacked_modules/zod/v4/mini/external.js +1 -1
  318. package/fullstacked_modules/zod/v4/mini/package.json +6 -0
  319. package/fullstacked_modules/zod/v4/mini/parse.cjs +9 -1
  320. package/fullstacked_modules/zod/v4/mini/parse.d.cts +1 -1
  321. package/fullstacked_modules/zod/v4/mini/parse.d.ts +1 -1
  322. package/fullstacked_modules/zod/v4/mini/parse.js +1 -1
  323. package/fullstacked_modules/zod/v4/mini/schemas.cjs +77 -24
  324. package/fullstacked_modules/zod/v4/mini/schemas.d.cts +56 -5
  325. package/fullstacked_modules/zod/v4/mini/schemas.d.ts +56 -5
  326. package/fullstacked_modules/zod/v4/mini/schemas.js +66 -23
  327. package/fullstacked_modules/zod/v4/package.json +6 -0
  328. package/fullstacked_modules/zod/v4-mini/package.json +6 -0
  329. package/index.js +20 -12
  330. package/package.json +1 -1
  331. package/fullstacked_modules/@fullstacked/ai-agent/story.txt +0 -7
  332. package/fullstacked_modules/@fullstacked/ai-agent/summary.txt +0 -7
  333. package/fullstacked_modules/zod/src/v4/core/function.ts +0 -176
  334. package/fullstacked_modules/zod/v4/core/function.cjs +0 -102
  335. package/fullstacked_modules/zod/v4/core/function.d.cts +0 -52
  336. package/fullstacked_modules/zod/v4/core/function.d.ts +0 -52
  337. package/fullstacked_modules/zod/v4/core/function.js +0 -75
@@ -321,7 +321,7 @@ test("all errors", () => {
321
321
  });
322
322
 
323
323
  const schema = z.strictObject({
324
- username: z.string(),
324
+ username: z.string().brand<"username">(),
325
325
  favoriteNumbers: z.array(z.number()),
326
326
  nesting: z.object({
327
327
  a: z.string(),
@@ -336,8 +336,33 @@ const result = schema.safeParse({
336
336
  extra: 1234,
337
337
  });
338
338
 
339
+ const tree = z.treeifyError(result.error!);
340
+
341
+ expectTypeOf(tree).toEqualTypeOf<{
342
+ errors: string[];
343
+ properties?: {
344
+ username?: {
345
+ errors: string[];
346
+ };
347
+ favoriteNumbers?: {
348
+ errors: string[];
349
+ items?: {
350
+ errors: string[];
351
+ }[];
352
+ };
353
+ nesting?: {
354
+ errors: string[];
355
+ properties?: {
356
+ a?: {
357
+ errors: string[];
358
+ };
359
+ };
360
+ };
361
+ };
362
+ }>();
363
+
339
364
  test("z.treeifyError", () => {
340
- expect(z.treeifyError(result.error!)).toMatchInlineSnapshot(`
365
+ expect(tree).toMatchInlineSnapshot(`
341
366
  {
342
367
  "errors": [
343
368
  "Unrecognized key: "extra"",
@@ -525,3 +550,46 @@ test("disc union treeify/format", () => {
525
550
  }
526
551
  `);
527
552
  });
553
+
554
+ test("update message after adding issues", () => {
555
+ const e = new z.ZodError([]);
556
+ e.addIssue({
557
+ code: "custom",
558
+ message: "message",
559
+ input: "asdf",
560
+ path: [],
561
+ });
562
+ expect(e.message).toMatchInlineSnapshot(`
563
+ "[
564
+ {
565
+ "code": "custom",
566
+ "message": "message",
567
+ "input": "asdf",
568
+ "path": []
569
+ }
570
+ ]"
571
+ `);
572
+
573
+ e.addIssue({
574
+ code: "custom",
575
+ message: "message",
576
+ input: "asdf",
577
+ path: [],
578
+ });
579
+ expect(e.message).toMatchInlineSnapshot(`
580
+ "[
581
+ {
582
+ "code": "custom",
583
+ "message": "message",
584
+ "input": "asdf",
585
+ "path": []
586
+ },
587
+ {
588
+ "code": "custom",
589
+ "message": "message",
590
+ "input": "asdf",
591
+ "path": []
592
+ }
593
+ ]"
594
+ `);
595
+ });
@@ -1,7 +1,6 @@
1
- // @ts-ignore
2
1
  import { File as WebFile } from "@web-std/file";
3
2
 
4
- import { afterEach, beforeEach, expect, test } from "vitest";
3
+ import { afterEach, beforeEach, expect, expectTypeOf, test } from "vitest";
5
4
 
6
5
  import * as z from "zod/v4";
7
6
 
@@ -27,6 +26,10 @@ test("passing validations", () => {
27
26
  expect(() => mimeCheck.parse(new File([""], "test.txt", { type: "text/csv" }))).toThrow();
28
27
  });
29
28
 
29
+ test("types", () => {
30
+ expectTypeOf(z.file().parse(new File([], "test.txt"))).toEqualTypeOf(new File([], "test.txt"));
31
+ });
32
+
30
33
  test("failing validations", () => {
31
34
  expect(minCheck.safeParse(new File(["1234"], "test.txt"))).toMatchInlineSnapshot(`
32
35
  {
@@ -35,8 +38,9 @@ test("failing validations", () => {
35
38
  "origin": "file",
36
39
  "code": "too_small",
37
40
  "minimum": 5,
41
+ "inclusive": true,
38
42
  "path": [],
39
- "message": "Too small: expected file to have >5 bytes"
43
+ "message": "Too small: expected file to have >=5 bytes"
40
44
  }
41
45
  ]],
42
46
  "success": false,
@@ -49,8 +53,9 @@ test("failing validations", () => {
49
53
  "origin": "file",
50
54
  "code": "too_big",
51
55
  "maximum": 8,
56
+ "inclusive": true,
52
57
  "path": [],
53
- "message": "Too big: expected file to have <8 bytes"
58
+ "message": "Too big: expected file to have <=8 bytes"
54
59
  }
55
60
  ]],
56
61
  "success": false,
@@ -82,6 +82,8 @@ test("first party switch", () => {
82
82
  break;
83
83
  case "lazy":
84
84
  break;
85
+ case "function":
86
+ break;
85
87
  default:
86
88
  expectTypeOf(def).toEqualTypeOf<never>();
87
89
  }
@@ -168,6 +170,8 @@ test("$ZodSchemaTypes", () => {
168
170
  break;
169
171
  case "lazy":
170
172
  break;
173
+ case "function":
174
+ break;
171
175
 
172
176
  default:
173
177
  expectTypeOf(type).toEqualTypeOf<never>();
@@ -32,38 +32,38 @@ test("function inference 1", () => {
32
32
  expectTypeOf<func1>().toEqualTypeOf<(k: string) => number>();
33
33
  });
34
34
 
35
- // test("method parsing", () => {
36
- // const methodObject = z.object({
37
- // property: z.number(),
38
- // method: z
39
- // .function()
40
- // .input(z.tuple([z.string()]))
41
- // .output(z.number()),
42
- // });
43
- // const methodInstance = {
44
- // property: 3,
45
- // method: function (s: string) {
46
- // return s.length + this.property;
47
- // },
48
- // };
49
- // const parsed = methodObject.parse(methodInstance);
50
- // expect(parsed.method("length=8")).toBe(11); // 8 length + 3 property
51
- // });
35
+ test("method parsing", () => {
36
+ const methodObject = z.object({
37
+ property: z.number(),
38
+ method: z
39
+ .function()
40
+ .input(z.tuple([z.string()]))
41
+ .output(z.number()),
42
+ });
43
+ const methodInstance = {
44
+ property: 3,
45
+ method: function (s: string) {
46
+ return s.length + this.property;
47
+ },
48
+ };
49
+ const parsed = methodObject.parse(methodInstance);
50
+ expect(parsed.method("length=8")).toBe(11); // 8 length + 3 property
51
+ });
52
52
 
53
- // test("async method parsing", async () => {
54
- // const methodObject = z.object({
55
- // property: z.number(),
56
- // method: z.function().input(z.string()).output(z.promise(z.number())),
57
- // });
58
- // const methodInstance = {
59
- // property: 3,
60
- // method: async function (s: string) {
61
- // return s.length + this.property;
62
- // },
63
- // };
64
- // const parsed = methodObject.parse(methodInstance);
65
- // expect(await parsed.method("length=8")).toBe(11); // 8 length + 3 property
66
- // });
53
+ test("async method parsing", async () => {
54
+ const methodObject = z.object({
55
+ property: z.number(),
56
+ method: z.function().input([z.string()]).output(z.promise(z.number())),
57
+ });
58
+ const methodInstance = {
59
+ property: 3,
60
+ method: async function (s: string) {
61
+ return s.length + this.property;
62
+ },
63
+ };
64
+ const parsed = methodObject.parse(methodInstance);
65
+ expect(await parsed.method("length=8")).toBe(11); // 8 length + 3 property
66
+ });
67
67
 
68
68
  test("args method", () => {
69
69
  const t1 = z.function();
@@ -130,6 +130,46 @@ test("valid function run", () => {
130
130
  });
131
131
  });
132
132
 
133
+ const args3 = [
134
+ z.object({
135
+ f1: z.number(),
136
+ f2: z.string().nullable(),
137
+ f3: z.array(z.boolean().optional()).optional(),
138
+ }),
139
+ ] as const;
140
+ const returns3 = z.union([z.string(), z.number()]);
141
+
142
+ const func3 = z.function({
143
+ input: args3,
144
+ output: returns3,
145
+ });
146
+
147
+ test("function inference 3", () => {
148
+ type func3 = (typeof func3)["_input"];
149
+
150
+ expectTypeOf<func3>().toEqualTypeOf<
151
+ (arg: {
152
+ f3?: (boolean | undefined)[] | undefined;
153
+ f1: number;
154
+ f2: string | null;
155
+ }) => string | number
156
+ >();
157
+ });
158
+
159
+ test("valid function run", () => {
160
+ const validFunc3Instance = func3.implement((_x) => {
161
+ _x.f2;
162
+ _x.f3![0];
163
+ return "adf" as any;
164
+ });
165
+
166
+ validFunc3Instance({
167
+ f1: 21,
168
+ f2: "asdf",
169
+ f3: [true, false],
170
+ });
171
+ });
172
+
133
173
  test("input validation error", () => {
134
174
  const schema = z.function({
135
175
  input: z.tuple([z.string()]),
@@ -0,0 +1,68 @@
1
+ import { expect, expectTypeOf, test } from "vitest";
2
+ import { type ZodCustomStringFormat, hash } from "zod"; // adjust path as needed
3
+
4
+ test("hash() API — types and runtime across all alg/enc combinations", async () => {
5
+ const { createHash } = await import("node:crypto");
6
+
7
+ type Alg = "md5" | "sha1" | "sha256" | "sha384" | "sha512";
8
+ // type Enc = "hex" | "base64" | "base64url";
9
+
10
+ const toB64Url = (b64: string) => b64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
11
+
12
+ const makeDigests = (alg: Alg, input: string) => {
13
+ const buf = createHash(alg).update(input).digest();
14
+ const hex = buf.toString("hex");
15
+ const base64 = buf.toString("base64");
16
+ const base64url = toB64Url(base64);
17
+ return { hex, base64, base64url };
18
+ };
19
+
20
+ const algs: ReadonlyArray<Alg> = ["md5", "sha1", "sha256", "sha384", "sha512"];
21
+ const input = "zodasklfjaasdf";
22
+
23
+ // --- Type-level checks (ensure the literal format string is encoded in the return type)
24
+ expectTypeOf(hash("md5")).toEqualTypeOf<ZodCustomStringFormat<"md5_hex">>();
25
+ expectTypeOf(hash("sha1")).toEqualTypeOf<ZodCustomStringFormat<"sha1_hex">>();
26
+ expectTypeOf(hash("sha256", { enc: "base64" as const })).toEqualTypeOf<ZodCustomStringFormat<"sha256_base64">>();
27
+ expectTypeOf(hash("sha384", { enc: "base64url" as const })).toEqualTypeOf<
28
+ ZodCustomStringFormat<"sha384_base64url">
29
+ >();
30
+
31
+ // Test generic format types are correctly inferred and Enc defaults to "hex"
32
+ expectTypeOf(hash("sha256")).toEqualTypeOf<ZodCustomStringFormat<"sha256_hex">>();
33
+
34
+ // --- Runtime matrix (success + a few sharp-edged failures per combo)
35
+ for (const alg of algs) {
36
+ const { hex, base64, base64url } = makeDigests(alg, input);
37
+
38
+ // Success cases
39
+ expect(hash(alg).parse(hex)).toBe(hex); // default enc=hex
40
+ expect(hash(alg, { enc: "hex" }).parse(hex)).toBe(hex);
41
+ expect(hash(alg, { enc: "base64" }).parse(base64)).toBe(base64);
42
+ expect(hash(alg, { enc: "base64url" }).parse(base64url)).toBe(base64url);
43
+
44
+ // Failure cases (wrong encoding to schema)
45
+ expect(() => hash(alg, { enc: "hex" }).parse(base64)).toThrow();
46
+ expect(() => hash(alg, { enc: "base64" }).parse(hex)).toThrow();
47
+ expect(() => hash(alg, { enc: "base64url" }).parse(base64)).toThrow();
48
+
49
+ // Encoding-specific failures
50
+ // hex: uppercase allowed, wrong length should fail
51
+ hash(alg, { enc: "hex" }).parse(hex.toUpperCase());
52
+ expect(() => hash(alg, { enc: "hex" }).parse(hex.slice(0, -1))).toThrow();
53
+
54
+ // base64: missing required padding should fail (only for algorithms that require padding)
55
+ if (base64.includes("=")) {
56
+ const base64NoPad = base64.replace(/=+$/g, "");
57
+ expect(() => hash(alg, { enc: "base64" }).parse(base64NoPad)).toThrow();
58
+ }
59
+
60
+ // base64url: adding padding or using invalid characters should fail
61
+ expect(() => hash(alg, { enc: "base64url" }).parse(base64url + "=")).toThrow();
62
+ expect(() => hash(alg, { enc: "base64url" }).parse(base64url + "!")).toThrow();
63
+
64
+ // Param object present but enc omitted should still default to hex at runtime
65
+ const schemaWithEmptyParams = hash(alg, {} as any);
66
+ expect(schemaWithEmptyParams.parse(hex)).toBe(hex);
67
+ }
68
+ });
@@ -827,3 +827,18 @@ test("def typing", () => {
827
827
  z.string().catch("fallback").def.type satisfies "catch";
828
828
  z.file().def.type satisfies "file";
829
829
  });
830
+
831
+ test("runtime type property exists and returns correct values", () => {
832
+ const stringSchema = z.string();
833
+ expect(stringSchema.type).toBe("string");
834
+ });
835
+
836
+ test("type narrowing works with type property", () => {
837
+ type ArrayOrRecord = z.ZodArray<z.ZodString> | z.ZodRecord<z.ZodString, z.ZodAny>;
838
+ const arraySchema = z.array(z.string()) as ArrayOrRecord;
839
+
840
+ if (arraySchema.type === "array") {
841
+ expectTypeOf(arraySchema).toEqualTypeOf<z.ZodArray<z.ZodString>>();
842
+ expect(arraySchema.element).toBeDefined();
843
+ }
844
+ });
@@ -90,3 +90,28 @@ test("readonly", () => {
90
90
  const a = ["asdf"] as const;
91
91
  z.literal(a);
92
92
  });
93
+
94
+ test("literal pattern", () => {
95
+ expect(z.literal(1.1)._zod.pattern).toMatchInlineSnapshot(`/\\^\\(1\\\\\\.1\\)\\$/`);
96
+
97
+ expect(z.templateLiteral([z.literal(1.1)]).safeParse("1.1")).toMatchInlineSnapshot(`
98
+ {
99
+ "data": "1.1",
100
+ "success": true,
101
+ }
102
+ `);
103
+ expect(z.templateLiteral([z.literal(1.1)]).safeParse("1n1")).toMatchInlineSnapshot(`
104
+ {
105
+ "error": [ZodError: [
106
+ {
107
+ "code": "invalid_format",
108
+ "format": "template_literal",
109
+ "pattern": "^(1\\\\.1)$",
110
+ "path": [],
111
+ "message": "Invalid input"
112
+ }
113
+ ]],
114
+ "success": false,
115
+ }
116
+ `);
117
+ });
@@ -84,3 +84,18 @@ test("nonoptional in object", () => {
84
84
  ]]
85
85
  `);
86
86
  });
87
+
88
+ test("encoding", () => {
89
+ const schema = z.string().optional().nonoptional();
90
+ expect(z.encode(schema, "hello")).toEqual("hello");
91
+ expect(() => z.encode(schema, undefined as any)).toThrowErrorMatchingInlineSnapshot(`
92
+ [ZodError: [
93
+ {
94
+ "code": "invalid_type",
95
+ "expected": "nonoptional",
96
+ "path": [],
97
+ "message": "Invalid input: expected nonoptional, received undefined"
98
+ }
99
+ ]]
100
+ `);
101
+ });
@@ -114,6 +114,29 @@ test(".nonnegative() validation", () => {
114
114
  expect(() => schema.parse(-1)).toThrow();
115
115
  });
116
116
 
117
+ test("multipleOf", () => {
118
+ const numbers = {
119
+ number3: 5.123,
120
+ number6: 5.123456,
121
+ number7: 5.1234567,
122
+ number8: 5.12345678,
123
+ };
124
+
125
+ const schemas = {
126
+ schema6: z.number().multipleOf(0.000001),
127
+ schema7: z.number().multipleOf(0.0000001),
128
+ };
129
+
130
+ expect(() => schemas.schema6.parse(numbers.number3)).not.toThrow();
131
+ expect(() => schemas.schema6.parse(numbers.number6)).not.toThrow();
132
+ expect(() => schemas.schema6.parse(numbers.number7)).toThrow();
133
+ expect(() => schemas.schema6.parse(numbers.number8)).toThrow();
134
+ expect(() => schemas.schema7.parse(numbers.number3)).not.toThrow();
135
+ expect(() => schemas.schema7.parse(numbers.number6)).not.toThrow();
136
+ expect(() => schemas.schema7.parse(numbers.number7)).not.toThrow();
137
+ expect(() => schemas.schema7.parse(numbers.number8)).toThrow();
138
+ });
139
+
117
140
  test(".multipleOf() with positive divisor", () => {
118
141
  const schema = z.number().multipleOf(5);
119
142
  expect(schema.parse(15)).toEqual(15);
@@ -162,13 +162,13 @@ test("catchall overrides strict", () => {
162
162
  });
163
163
  });
164
164
 
165
- test("optional keys are unset", async () => {
165
+ test("optional keys are unset", () => {
166
166
  const SNamedEntity = z.object({
167
167
  id: z.string(),
168
168
  set: z.string().optional(),
169
169
  unset: z.string().optional(),
170
170
  });
171
- const result = await SNamedEntity.parse({
171
+ const result = SNamedEntity.parse({
172
172
  id: "asdf",
173
173
  set: undefined,
174
174
  });
@@ -261,6 +261,21 @@ test("inferred enum type", async () => {
261
261
  expectTypeOf<Enum>().toEqualTypeOf<"a" | "b">();
262
262
  });
263
263
 
264
+ test("z.keyof returns enum", () => {
265
+ const User = z.object({ name: z.string(), age: z.number() });
266
+ const keysSchema = z.keyof(User);
267
+ expect(keysSchema.enum).toEqual({
268
+ name: "name",
269
+ age: "age",
270
+ });
271
+ expect(keysSchema._zod.def.entries).toEqual({
272
+ name: "name",
273
+ age: "age",
274
+ });
275
+ type Keys = z.infer<typeof keysSchema>;
276
+ expectTypeOf<Keys>().toEqualTypeOf<"name" | "age">();
277
+ });
278
+
264
279
  test("inferred partial object type with optional properties", async () => {
265
280
  const Partial = z.object({ a: z.string(), b: z.string().optional() }).partial();
266
281
  type Partial = z.infer<typeof Partial>;
@@ -420,6 +435,17 @@ test("extend() should have power to override existing key", () => {
420
435
  expectTypeOf<PersonWithNumberAsLastName>().toEqualTypeOf<{ firstName: string; lastName: number }>();
421
436
  });
422
437
 
438
+ test("safeExtend() maintains refinements", () => {
439
+ const schema = z.object({ name: z.string().min(1) });
440
+ const extended = schema.safeExtend({ name: z.string().min(2) });
441
+ expect(() => extended.parse({ name: "" })).toThrow();
442
+ expect(extended.parse({ name: "ab" })).toEqual({ name: "ab" });
443
+ type Extended = z.infer<typeof extended>;
444
+ expectTypeOf<Extended>().toEqualTypeOf<{ name: string }>();
445
+ // @ts-expect-error
446
+ schema.safeExtend({ name: z.number() });
447
+ });
448
+
423
449
  test("passthrough index signature", () => {
424
450
  const a = z.object({ a: z.string() });
425
451
  type a = z.infer<typeof a>;
@@ -561,3 +587,23 @@ test("index signature in shape", () => {
561
587
 
562
588
  expectTypeOf<schema>().toEqualTypeOf<Record<string, string>>();
563
589
  });
590
+
591
+ test("extent() on object with refinements should throw", () => {
592
+ const schema = z
593
+ .object({
594
+ a: z.string(),
595
+ })
596
+ .refine(() => true);
597
+
598
+ expect(() => schema.extend({ b: z.string() })).toThrow();
599
+ });
600
+
601
+ test("safeExtend() on object with refinements should not throw", () => {
602
+ const schema = z
603
+ .object({
604
+ a: z.string(),
605
+ })
606
+ .refine(() => true);
607
+
608
+ expect(() => schema.safeExtend({ b: z.string() })).not.toThrow();
609
+ });
@@ -121,3 +121,16 @@ test("pipe optionality inside objects", () => {
121
121
  e: string;
122
122
  }>();
123
123
  });
124
+
125
+ test("optional prop with pipe", () => {
126
+ const schema = z.object({
127
+ id: z
128
+ .union([z.number(), z.string().nullish()])
129
+ .transform((val) => (val === null || val === undefined ? val : Number(val)))
130
+ .pipe(z.number())
131
+ .optional(),
132
+ });
133
+
134
+ schema.parse({});
135
+ schema.parse({}, { jitless: true });
136
+ });