ima2-gen 3.19.0 → 3.20.0

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 (384) hide show
  1. package/docs/migration/runtime-test-inventory.md +2 -1
  2. package/lib/oauthLauncher.js +10 -5
  3. package/node_modules/zod/README.md +2 -2
  4. package/node_modules/zod/compile.cjs +19 -0
  5. package/node_modules/zod/index.cjs +19 -0
  6. package/node_modules/zod/locales/index.cjs +19 -0
  7. package/node_modules/zod/mini/index.cjs +19 -0
  8. package/node_modules/zod/package.json +8 -7
  9. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  10. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  11. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  12. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  13. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  14. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  15. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  16. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  17. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  18. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  19. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  20. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  21. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  22. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  23. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  24. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  25. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  26. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  27. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  28. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  29. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  30. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  31. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  32. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  33. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  34. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  35. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  36. package/node_modules/zod/src/v4/core/api.ts +44 -28
  37. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  38. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  39. package/node_modules/zod/src/v4/core/core.ts +1 -3
  40. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  41. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  42. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  43. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  44. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  45. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  46. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  47. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  48. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  49. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  50. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  51. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  52. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  53. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  54. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  55. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  56. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  57. package/node_modules/zod/src/v4/core/util.ts +218 -147
  58. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  59. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  60. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  61. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  62. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  63. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  64. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  65. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  66. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  67. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  68. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  69. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  70. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  71. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  72. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  73. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  74. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  75. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  76. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  77. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  78. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  79. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  80. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  81. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  82. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  83. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  84. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  85. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  86. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  87. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  88. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  89. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  90. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  91. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  92. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  93. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  94. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  95. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  96. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  97. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  98. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  99. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  100. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  101. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  102. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  103. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  104. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  105. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  106. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  107. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  108. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  109. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  110. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  111. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  112. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  113. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  114. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  115. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  116. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  117. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  118. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  119. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  120. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  121. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  122. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  123. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  124. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  125. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  126. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  127. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  128. package/node_modules/zod/v3/ZodError.cjs +19 -0
  129. package/node_modules/zod/v3/errors.cjs +19 -0
  130. package/node_modules/zod/v3/external.cjs +19 -0
  131. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  132. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  133. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  134. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  135. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  136. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  137. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  138. package/node_modules/zod/v3/index.cjs +19 -0
  139. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  140. package/node_modules/zod/v3/types.cjs +19 -0
  141. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  142. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  143. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  144. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  145. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  146. package/node_modules/zod/v4/classic/external.cjs +22 -1
  147. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  148. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  149. package/node_modules/zod/v4/classic/external.js +1 -1
  150. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  151. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  152. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  153. package/node_modules/zod/v4/classic/index.cjs +19 -0
  154. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  155. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  156. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  157. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  158. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  159. package/node_modules/zod/v4/classic/schemas.js +77 -33
  160. package/node_modules/zod/v4/core/api.cjs +45 -22
  161. package/node_modules/zod/v4/core/api.d.cts +12 -6
  162. package/node_modules/zod/v4/core/api.d.ts +12 -6
  163. package/node_modules/zod/v4/core/api.js +25 -22
  164. package/node_modules/zod/v4/core/checks.cjs +51 -97
  165. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  166. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  167. package/node_modules/zod/v4/core/checks.js +31 -96
  168. package/node_modules/zod/v4/core/compile.cjs +173 -78
  169. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  170. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  171. package/node_modules/zod/v4/core/compile.js +154 -79
  172. package/node_modules/zod/v4/core/core.cjs +20 -1
  173. package/node_modules/zod/v4/core/core.js +1 -1
  174. package/node_modules/zod/v4/core/doc.cjs +26 -2
  175. package/node_modules/zod/v4/core/doc.js +7 -2
  176. package/node_modules/zod/v4/core/errors.cjs +21 -5
  177. package/node_modules/zod/v4/core/errors.js +2 -5
  178. package/node_modules/zod/v4/core/index.cjs +19 -0
  179. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  180. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  181. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  182. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  183. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  184. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  185. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  186. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  187. package/node_modules/zod/v4/core/memoizer.js +69 -23
  188. package/node_modules/zod/v4/core/parse.cjs +56 -16
  189. package/node_modules/zod/v4/core/parse.js +37 -16
  190. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  191. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  192. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  193. package/node_modules/zod/v4/core/regexes.js +10 -4
  194. package/node_modules/zod/v4/core/registries.cjs +19 -0
  195. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  196. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  197. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  198. package/node_modules/zod/v4/core/schemas.js +279 -113
  199. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  200. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  201. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  202. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  203. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  204. package/node_modules/zod/v4/core/util.cjs +177 -143
  205. package/node_modules/zod/v4/core/util.d.cts +25 -4
  206. package/node_modules/zod/v4/core/util.d.ts +25 -4
  207. package/node_modules/zod/v4/core/util.js +156 -143
  208. package/node_modules/zod/v4/core/versions.cjs +21 -2
  209. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  210. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  211. package/node_modules/zod/v4/core/versions.js +2 -2
  212. package/node_modules/zod/v4/core/visit.cjs +19 -0
  213. package/node_modules/zod/v4/index.cjs +19 -0
  214. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  215. package/node_modules/zod/v4/locales/ar.js +2 -0
  216. package/node_modules/zod/v4/locales/az.cjs +2 -0
  217. package/node_modules/zod/v4/locales/az.js +2 -0
  218. package/node_modules/zod/v4/locales/be.cjs +2 -0
  219. package/node_modules/zod/v4/locales/be.js +2 -0
  220. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  221. package/node_modules/zod/v4/locales/bg.js +2 -0
  222. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  223. package/node_modules/zod/v4/locales/bn.js +2 -0
  224. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  225. package/node_modules/zod/v4/locales/ca.js +2 -0
  226. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  227. package/node_modules/zod/v4/locales/ckb.js +2 -0
  228. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  229. package/node_modules/zod/v4/locales/cs.js +2 -0
  230. package/node_modules/zod/v4/locales/da.cjs +2 -0
  231. package/node_modules/zod/v4/locales/da.js +2 -0
  232. package/node_modules/zod/v4/locales/de.cjs +2 -0
  233. package/node_modules/zod/v4/locales/de.js +2 -0
  234. package/node_modules/zod/v4/locales/el.cjs +2 -0
  235. package/node_modules/zod/v4/locales/el.js +2 -0
  236. package/node_modules/zod/v4/locales/en.cjs +2 -0
  237. package/node_modules/zod/v4/locales/en.js +2 -0
  238. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  239. package/node_modules/zod/v4/locales/eo.js +2 -0
  240. package/node_modules/zod/v4/locales/es.cjs +2 -0
  241. package/node_modules/zod/v4/locales/es.js +2 -0
  242. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  243. package/node_modules/zod/v4/locales/fa.js +2 -0
  244. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  245. package/node_modules/zod/v4/locales/fi.js +2 -0
  246. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  247. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  248. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  249. package/node_modules/zod/v4/locales/fr.js +2 -0
  250. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  251. package/node_modules/zod/v4/locales/gu.js +2 -0
  252. package/node_modules/zod/v4/locales/he.cjs +2 -0
  253. package/node_modules/zod/v4/locales/he.js +2 -0
  254. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  255. package/node_modules/zod/v4/locales/hi.js +2 -0
  256. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  257. package/node_modules/zod/v4/locales/hr.js +2 -0
  258. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  259. package/node_modules/zod/v4/locales/hu.js +2 -0
  260. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  261. package/node_modules/zod/v4/locales/hy.js +2 -0
  262. package/node_modules/zod/v4/locales/id.cjs +2 -0
  263. package/node_modules/zod/v4/locales/id.js +2 -0
  264. package/node_modules/zod/v4/locales/index.cjs +22 -1
  265. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  266. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  267. package/node_modules/zod/v4/locales/index.js +1 -0
  268. package/node_modules/zod/v4/locales/is.cjs +2 -0
  269. package/node_modules/zod/v4/locales/is.js +2 -0
  270. package/node_modules/zod/v4/locales/it.cjs +2 -0
  271. package/node_modules/zod/v4/locales/it.js +2 -0
  272. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  273. package/node_modules/zod/v4/locales/ja.js +2 -0
  274. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  275. package/node_modules/zod/v4/locales/ka.js +2 -0
  276. package/node_modules/zod/v4/locales/km.cjs +2 -0
  277. package/node_modules/zod/v4/locales/km.js +2 -0
  278. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  279. package/node_modules/zod/v4/locales/kn.js +2 -0
  280. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  281. package/node_modules/zod/v4/locales/ko.js +2 -0
  282. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  283. package/node_modules/zod/v4/locales/lt.js +2 -0
  284. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  285. package/node_modules/zod/v4/locales/mk.js +2 -0
  286. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  287. package/node_modules/zod/v4/locales/ms.js +2 -0
  288. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  289. package/node_modules/zod/v4/locales/ne.js +2 -0
  290. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  291. package/node_modules/zod/v4/locales/nl.js +2 -0
  292. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  293. package/node_modules/zod/v4/locales/nn.js +2 -0
  294. package/node_modules/zod/v4/locales/no.cjs +2 -0
  295. package/node_modules/zod/v4/locales/no.js +2 -0
  296. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  297. package/node_modules/zod/v4/locales/ota.js +2 -0
  298. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  299. package/node_modules/zod/v4/locales/pl.js +2 -0
  300. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  301. package/node_modules/zod/v4/locales/ps.js +2 -0
  302. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  303. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  304. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  305. package/node_modules/zod/v4/locales/pt.js +2 -0
  306. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  307. package/node_modules/zod/v4/locales/ro.js +2 -0
  308. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  309. package/node_modules/zod/v4/locales/ru.js +2 -0
  310. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  311. package/node_modules/zod/v4/locales/sk.js +2 -0
  312. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  313. package/node_modules/zod/v4/locales/sl.js +2 -0
  314. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  315. package/node_modules/zod/v4/locales/sv.js +2 -0
  316. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  317. package/node_modules/zod/v4/locales/ta.js +2 -0
  318. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  319. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  320. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  321. package/node_modules/zod/v4/locales/tg.js +117 -0
  322. package/node_modules/zod/v4/locales/th.cjs +2 -0
  323. package/node_modules/zod/v4/locales/th.js +2 -0
  324. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  325. package/node_modules/zod/v4/locales/tk.js +2 -0
  326. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  327. package/node_modules/zod/v4/locales/tr.js +2 -0
  328. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  329. package/node_modules/zod/v4/locales/uk.js +2 -0
  330. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  331. package/node_modules/zod/v4/locales/ur.js +2 -0
  332. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  333. package/node_modules/zod/v4/locales/uz.js +2 -0
  334. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  335. package/node_modules/zod/v4/locales/vi.js +2 -0
  336. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  337. package/node_modules/zod/v4/locales/yo.js +2 -0
  338. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  339. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  340. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  341. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  342. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  343. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  344. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  345. package/node_modules/zod/v4/mini/external.cjs +22 -1
  346. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  347. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  348. package/node_modules/zod/v4/mini/external.js +1 -1
  349. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  350. package/node_modules/zod/v4/mini/index.cjs +19 -0
  351. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  352. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  353. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  354. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  355. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  356. package/node_modules/zod/v4/mini/schemas.js +21 -6
  357. package/node_modules/zod/v4-mini/index.cjs +19 -0
  358. package/package.json +6 -6
  359. package/routes/health.js +10 -1
  360. package/ui/dist/.vite/manifest.json +64 -64
  361. package/ui/dist/assets/{AgentWorkspace-C6ke6Eo4.js → AgentWorkspace-CENfXAob.js} +1 -1
  362. package/ui/dist/assets/{App-pMN1OjNW.js → App-B9y6oVuL.js} +8 -8
  363. package/ui/dist/assets/{AssetGenWorkspace-DzEfpUy_.js → AssetGenWorkspace-fL2MjYj9.js} +2 -2
  364. package/ui/dist/assets/{AssetMediaLightbox-Bx0azN0S.js → AssetMediaLightbox-Be4arnGs.js} +1 -1
  365. package/ui/dist/assets/{AssetsWorkspace-CHw1u9VC.js → AssetsWorkspace-7z4wyfp0.js} +1 -1
  366. package/ui/dist/assets/{CardNewsWorkspace-DsjqhaYO.js → CardNewsWorkspace-DSldDpsl.js} +1 -1
  367. package/ui/dist/assets/{GenerationRequestLogPanel-EYEiHIr9.js → GenerationRequestLogPanel-CcQKi89f.js} +1 -1
  368. package/ui/dist/assets/{HomeWorkspace-DbnY1YF2.js → HomeWorkspace-BZDk2X1U.js} +1 -1
  369. package/ui/dist/assets/{KeyingPanel-8J_RMrxg.js → KeyingPanel-snhXKnA3.js} +1 -1
  370. package/ui/dist/assets/{NodeCanvas-DmjbNcTa.js → NodeCanvas-CJQXsS0r.js} +1 -1
  371. package/ui/dist/assets/{PromptBuilderPanel-CL34Jpso.js → PromptBuilderPanel-B-YP1ph5.js} +1 -1
  372. package/ui/dist/assets/{PromptImportDialog-B24cvEkK.js → PromptImportDialog-ssPMxE4j.js} +2 -2
  373. package/ui/dist/assets/{PromptImportDiscoverySection-Bbw1_J_3.js → PromptImportDiscoverySection-CvOgGTOs.js} +1 -1
  374. package/ui/dist/assets/{PromptImportFolderSection-CMpxuE8e.js → PromptImportFolderSection-CxR9qxbi.js} +1 -1
  375. package/ui/dist/assets/{PromptLibraryPanel-Ct98TJ61.js → PromptLibraryPanel-DjYgbXes.js} +2 -2
  376. package/ui/dist/assets/{SettingsWorkspace-DL9Tm90P.js → SettingsWorkspace-BtruYb6g.js} +1 -1
  377. package/ui/dist/assets/{SpriteRecipeWorkspace-BJUH1ddP.js → SpriteRecipeWorkspace-DBrYOYOK.js} +1 -1
  378. package/ui/dist/assets/{index-D_LpLGWV.js → index-CWFgCqE1.js} +3 -3
  379. package/ui/dist/assets/{index-CHeVGnoy.js → index-va83o9G5.js} +12 -12
  380. package/ui/dist/assets/{pptxgen.es-s4xfPXLT.js → pptxgen.es-D-kntoLD.js} +1 -1
  381. package/ui/dist/assets/{promptBuilderStore-DQR29LwN.js → promptBuilderStore-BdGPLEra.js} +1 -1
  382. package/ui/dist/assets/useAgentDialogFocus-BDdVl-nq.js +1 -0
  383. package/ui/dist/index.html +1 -1
  384. package/ui/dist/assets/useAgentDialogFocus-DAeS9IWG.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import { Validator } from "@seriousme/openapi-schema-validator";
2
- import { describe, expect, test } from "vitest";
2
+ import { describe, expect, test, vi } from "vitest";
3
3
  import * as z from "zod";
4
4
  // import * as zCore from "zod/v4/core";
5
5
 
@@ -79,7 +79,7 @@ describe("toJSONSchema", () => {
79
79
  {
80
80
  "$schema": "https://json-schema.org/draft/2020-12/schema",
81
81
  "format": "email",
82
- "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
82
+ "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
83
83
  "type": "string",
84
84
  }
85
85
  `);
@@ -218,6 +218,15 @@ describe("toJSONSchema", () => {
218
218
  "type": "string",
219
219
  }
220
220
  `);
221
+ expect(z.toJSONSchema(z.base64url())).toMatchInlineSnapshot(`
222
+ {
223
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
224
+ "contentEncoding": "base64url",
225
+ "format": "base64url",
226
+ "pattern": "^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$",
227
+ "type": "string",
228
+ }
229
+ `);
221
230
  expect(z.toJSONSchema(z.cuid())).toMatchInlineSnapshot(`
222
231
  {
223
232
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -231,7 +240,7 @@ describe("toJSONSchema", () => {
231
240
  {
232
241
  "$schema": "https://json-schema.org/draft/2020-12/schema",
233
242
  "format": "emoji",
234
- "pattern": "^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$",
243
+ "pattern": "^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$",
235
244
  "type": "string",
236
245
  }
237
246
  `);
@@ -356,7 +365,7 @@ describe("toJSONSchema", () => {
356
365
  {
357
366
  "$schema": "https://json-schema.org/draft/2020-12/schema",
358
367
  "format": "email",
359
- "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
368
+ "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
360
369
  "type": "string",
361
370
  }
362
371
  `);
@@ -482,6 +491,30 @@ describe("toJSONSchema", () => {
482
491
  `);
483
492
  });
484
493
 
494
+ test("base64url pattern agrees with parse", () => {
495
+ const schema = z.base64url();
496
+ const pattern = new RegExp(z.toJSONSchema(schema).pattern!);
497
+ // lengths 1 (mod 4) carry no whole byte; the emitted pattern must reject them like parse does
498
+ for (const s of ["", "A", "AA", "AAA", "AAAA", "AAAAA"]) {
499
+ expect(pattern.test(s)).toBe(schema.safeParse(s).success);
500
+ }
501
+ });
502
+
503
+ test("base64 pattern agrees with parse", () => {
504
+ const schema = z.base64();
505
+ const pattern = new RegExp(z.toJSONSchema(schema).pattern!);
506
+ // the runtime def.pattern is lax; the emitted pattern must still carry the block structure parse enforces
507
+ for (const s of ["", "A", "AA", "AAA", "AAAA", "AAAAA", "AA==", "AAA=", "A===", "=", "AAAA=="]) {
508
+ expect(pattern.test(s)).toBe(schema.safeParse(s).success);
509
+ }
510
+ });
511
+
512
+ test("looseRecord with a format key emits the exact pattern", () => {
513
+ // recordProcessor reads bag.patterns directly; it must apply the same lax-to-exact swap as stringProcessor
514
+ const json = z.toJSONSchema(z.looseRecord(z.base64url(), z.number()));
515
+ expect(Object.keys(json.patternProperties!)).toEqual([z.regexes.base64url.source]);
516
+ });
517
+
485
518
  test("string patterns", () => {
486
519
  expect(
487
520
  z.toJSONSchema(
@@ -724,6 +757,117 @@ describe("toJSONSchema", () => {
724
757
  `);
725
758
  });
726
759
 
760
+ test("number constraints order independence with int()", () => {
761
+ // .int() applied last should not overwrite the tighter bounds .min()/.max() already stored
762
+ expect(z.toJSONSchema(z.number().int().min(0).max(23))).toMatchInlineSnapshot(`
763
+ {
764
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
765
+ "maximum": 23,
766
+ "minimum": 0,
767
+ "type": "integer",
768
+ }
769
+ `);
770
+ expect(z.toJSONSchema(z.number().min(0).max(23).int())).toMatchInlineSnapshot(`
771
+ {
772
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
773
+ "maximum": 23,
774
+ "minimum": 0,
775
+ "type": "integer",
776
+ }
777
+ `);
778
+ });
779
+
780
+ test("chained multipleOf divisors emit the whole conjunction", () => {
781
+ // runtime rejects 4 (not a multiple of 3), so the emitted schema must too
782
+ expect(z.toJSONSchema(z.number().multipleOf(2).multipleOf(3))).toMatchInlineSnapshot(`
783
+ {
784
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
785
+ "allOf": [
786
+ {
787
+ "multipleOf": 3,
788
+ },
789
+ ],
790
+ "multipleOf": 2,
791
+ "type": "number",
792
+ }
793
+ `);
794
+ });
795
+
796
+ test("length() does not overwrite a tighter earlier bound", () => {
797
+ // min(8) + length(5) matches nothing at runtime; the emitted bounds stay honest about that
798
+ expect(z.toJSONSchema(z.string().min(8).length(5))).toMatchInlineSnapshot(`
799
+ {
800
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
801
+ "maxLength": 5,
802
+ "minLength": 8,
803
+ "type": "string",
804
+ }
805
+ `);
806
+ });
807
+
808
+ test("an integer format keeps the emitted type integer whatever format lands last", () => {
809
+ // runtime rejects 1.5 in both orders, so both must emit type integer
810
+ const after = z.number().int().check(z.float32());
811
+ expect(after.safeParse(1.5).success).toBe(false);
812
+ expect(z.toJSONSchema(after).type).toBe("integer");
813
+ expect(z.toJSONSchema(z.number().check(z.float32()).int()).type).toBe("integer");
814
+ });
815
+
816
+ test("disjoint mime checks emit a false schema, not an unconstrained file", () => {
817
+ const file = z.file().mime("image/png").mime("text/plain");
818
+ expect(z.toJSONSchema(file)).toMatchInlineSnapshot(`
819
+ {
820
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
821
+ "contentEncoding": "binary",
822
+ "format": "binary",
823
+ "not": {},
824
+ "type": "string",
825
+ }
826
+ `);
827
+ });
828
+
829
+ test("a custom mime narrowing via onattach intersects with built-in mime checks", () => {
830
+ const check = {
831
+ _zod: {
832
+ def: { check: "custom_mime" },
833
+ onattach: [
834
+ (inst: any) => {
835
+ inst._zod.bag.mime = ["text/plain"];
836
+ },
837
+ ],
838
+ check: () => {},
839
+ },
840
+ };
841
+ const file = z
842
+ .file()
843
+ .mime(["image/png", "text/plain"])
844
+ .check(check as any);
845
+ expect(z.toJSONSchema(file).contentMediaType).toBe("text/plain");
846
+ });
847
+
848
+ test("a custom check contributing via onattach still lands", () => {
849
+ // third-party checks have no converter handler; their bag writes are merged in as a fallback
850
+ const check = {
851
+ _zod: {
852
+ def: { check: "custom_range" },
853
+ onattach: [
854
+ (inst: any) => {
855
+ const bag = inst._zod.bag;
856
+ if (bag.minimum === undefined || 5 > bag.minimum) bag.minimum = 5;
857
+ },
858
+ ],
859
+ check: () => {},
860
+ },
861
+ };
862
+ expect(z.toJSONSchema(z.number().check(check as any))).toMatchInlineSnapshot(`
863
+ {
864
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
865
+ "minimum": 5,
866
+ "type": "number",
867
+ }
868
+ `);
869
+ });
870
+
727
871
  test("target normalization draft-04 and draft-07", () => {
728
872
  // Test that both old (draft-4, draft-7) and new (draft-04, draft-07) target formats work
729
873
 
@@ -3091,11 +3235,31 @@ test("basic registry", () => {
3091
3235
  `);
3092
3236
  });
3093
3237
 
3094
- test("large registry converts in linear time", () => {
3095
- const count = 2000;
3096
- const convert = (withIntersection: boolean) => {
3238
+ function countMapScanWork<T>(convert: () => T): { result: T; work: number } {
3239
+ const entries = Map.prototype.entries;
3240
+ const values = Map.prototype.values;
3241
+ let work = 0;
3242
+ const entriesSpy = vi.spyOn(Map.prototype, "entries").mockImplementation(function (this: Map<unknown, unknown>) {
3243
+ work += this.size;
3244
+ return entries.call(this);
3245
+ } as typeof Map.prototype.entries);
3246
+ const valuesSpy = vi.spyOn(Map.prototype, "values").mockImplementation(function (this: Map<unknown, unknown>) {
3247
+ work += this.size;
3248
+ return values.call(this);
3249
+ } as typeof Map.prototype.values);
3250
+ try {
3251
+ return { result: convert(), work };
3252
+ } finally {
3253
+ entriesSpy.mockRestore();
3254
+ valuesSpy.mockRestore();
3255
+ }
3256
+ }
3257
+
3258
+ test("large registry conversion performs linear map-scan work", () => {
3259
+ const count = 64;
3260
+ const convert = (size: number, withIntersection: boolean) => {
3097
3261
  const registry = z.registry<{ id: string }>();
3098
- for (let i = 0; i < count; i++) {
3262
+ for (let i = 0; i < size; i++) {
3099
3263
  registry.add(
3100
3264
  z.object({ id: z.string(), name: z.string(), count: z.number(), nested: z.object({ a: z.boolean() }) }),
3101
3265
  { id: `Type${i}` }
@@ -3103,55 +3267,53 @@ test("large registry converts in linear time", () => {
3103
3267
  }
3104
3268
  if (withIntersection) registry.add(z.object({ a: z.string() }).and(z.object({ b: z.string() })), { id: "Inter" });
3105
3269
 
3106
- const start = performance.now();
3107
- const { schemas } = z.toJSONSchema(registry, { uri: (id) => `https://example.com/${id}.json` });
3108
- return { schemas, elapsed: performance.now() - start };
3270
+ return countMapScanWork(() => z.toJSONSchema(registry, { uri: (id) => `https://example.com/${id}.json` }));
3109
3271
  };
3110
3272
 
3111
- const plain = convert(false);
3112
- expect(Object.keys(plain.schemas)).toHaveLength(count);
3113
- expect(plain.schemas.Type0).toMatchObject({
3273
+ const plain = convert(count, false);
3274
+ const plainDouble = convert(count * 2, false);
3275
+ expect(Object.keys(plain.result.schemas)).toHaveLength(count);
3276
+ expect(plain.result.schemas.Type0).toMatchObject({
3114
3277
  $id: "https://example.com/Type0.json",
3115
3278
  type: "object",
3116
3279
  properties: { nested: { type: "object" } },
3117
3280
  });
3118
- expect(plain.schemas[`Type${count - 1}`]!.$id).toBe(`https://example.com/Type${count - 1}.json`);
3281
+ expect(plain.result.schemas[`Type${count - 1}`]!.$id).toBe(`https://example.com/Type${count - 1}.json`);
3282
+ expect(plain.work).toBeGreaterThan(0);
3283
+ expect(plainDouble.work).toBeLessThanOrEqual(plain.work * 2);
3119
3284
 
3120
- // The whole-map passes in extractDefs/finalize used to re-run once per registered schema, which made this quadratic: ~9s of CPU at this size before the passes were hoisted, ~50ms after.
3121
- expect(plain.elapsed).toBeLessThan(5000);
3122
-
3123
- // The intersection fold walks the whole map as well, so it has to run inside the same guard. Hoisting it back out costs ~10x at this size. Comparing the two conversions rather than asserting a fixed budget keeps this independent of how fast the machine is.
3124
- const folded = convert(true);
3125
- expect(folded.schemas.Inter).toMatchObject({ type: "object", properties: { a: {}, b: {} } });
3126
- expect(folded.elapsed).toBeLessThan(plain.elapsed * 4 + 100);
3285
+ const folded = convert(count, true);
3286
+ const foldedDouble = convert(count * 2, true);
3287
+ expect(folded.result.schemas.Inter).toMatchObject({ type: "object", properties: { a: {}, b: {} } });
3288
+ expect(folded.work).toBeGreaterThan(0);
3289
+ expect(foldedDouble.work).toBeLessThanOrEqual(folded.work * 2);
3127
3290
  });
3128
3291
 
3129
- test("a registry of records with numeric keys converts in linear time", () => {
3130
- const count = 2000;
3131
- const convert = (key: (i: number) => z.core.$ZodType) => {
3292
+ test("a registry of records with numeric keys performs linear map-scan work", () => {
3293
+ const count = 64;
3294
+ const convert = (size: number, key: (i: number) => z.core.$ZodType) => {
3132
3295
  const registry = z.registry<{ id: string }>();
3133
- for (let i = 0; i < count; i++) {
3296
+ for (let i = 0; i < size; i++) {
3134
3297
  registry.add(z.object({ m: z.record(key(i) as z.core.$ZodRecordKey, z.boolean()) }), { id: `Type${i}` });
3135
3298
  }
3136
- const start = performance.now();
3137
- const { schemas } = z.toJSONSchema(registry, { uri: (id) => `https://example.com/${id}.json` });
3138
- return { schemas, elapsed: performance.now() - start };
3299
+ return countMapScanWork(() => z.toJSONSchema(registry, { uri: (id) => `https://example.com/${id}.json` }));
3139
3300
  };
3140
3301
 
3141
- const string = convert(() => z.string());
3142
- const numeric = convert(() => z.number());
3143
- expect(numeric.schemas.Type0).toMatchObject({
3302
+ const numeric = convert(count, () => z.number());
3303
+ const numericDouble = convert(count * 2, () => z.number());
3304
+ expect(numeric.result.schemas.Type0).toMatchObject({
3144
3305
  properties: { m: { propertyNames: { type: "string", pattern: "^-?\\d+(?:\\.\\d+)?$" } } },
3145
3306
  });
3307
+ expect(numeric.work).toBeGreaterThan(0);
3308
+ expect(numericDouble.work).toBeLessThanOrEqual(numeric.work * 2);
3146
3309
 
3147
- // The rewrite has to find every carrier the flatten copied `propertyNames` onto, which means a pass over the whole seen map. Running that once per record rather than once per conversion cost ~10x at this size. A string key needs no rewrite at all, so comparing against it keeps this independent of how fast the machine is.
3148
- expect(numeric.elapsed).toBeLessThan(string.elapsed * 2 + 50);
3149
-
3150
- // An extracted key resolves through a map built once per conversion rather than a search per reference. There is no stable timing control for that — extraction has its own $defs cost, which swamps the difference — so this only pins the shape.
3151
- const extracted = convert((i) => z.number().meta({ id: `Key${i}` }));
3152
- expect(extracted.schemas.Type0).toMatchObject({
3310
+ const extracted = convert(count, (i) => z.number().meta({ id: `Key${i}` }));
3311
+ const extractedDouble = convert(count * 2, (i) => z.number().meta({ id: `Key${i}` }));
3312
+ expect(extracted.result.schemas.Type0).toMatchObject({
3153
3313
  properties: { m: { propertyNames: { type: "string", pattern: "^-?\\d+(?:\\.\\d+)?$" } } },
3154
3314
  });
3315
+ expect(extracted.work).toBeGreaterThan(0);
3316
+ expect(extractedDouble.work).toBeLessThanOrEqual(extracted.work * 2);
3155
3317
  });
3156
3318
 
3157
3319
  test("registry extracts unregistered subschemas into __shared", () => {
@@ -3705,6 +3867,31 @@ test("input JSON schema resolves requiredness past transform and catch wrappers"
3705
3867
  expect(required(z.object({ a: z.transform((v: unknown) => String(v)).pipe(z.string()) }))).toEqual(["a"]);
3706
3868
  });
3707
3869
 
3870
+ test("object required keys preserve shape order and direction", () => {
3871
+ const symbol = Symbol("symbol");
3872
+ const shape: z.ZodRawShape = {
3873
+ 10: z.string(),
3874
+ 2: z.string().optional(),
3875
+ plain: z.string(),
3876
+ optional: z.string().optional(),
3877
+ defaulted: z.string().default("x"),
3878
+ caught: z.string().catch("x"),
3879
+ [symbol]: z.string(),
3880
+ };
3881
+ Object.defineProperty(shape, "__proto__", { value: z.string(), enumerable: true });
3882
+ Object.defineProperty(shape, "hidden", { value: z.string(), enumerable: false });
3883
+
3884
+ const input = z.toJSONSchema(z.object(shape), { io: "input", unrepresentable: "any" });
3885
+ const output = z.toJSONSchema(z.object(shape), { io: "output", unrepresentable: "any" });
3886
+
3887
+ expect(Object.keys(input.properties!)).toEqual(["2", "10", "plain", "optional", "defaulted", "caught", "__proto__"]);
3888
+ expect(input.required).toEqual(["10", "plain", "caught", "__proto__"]);
3889
+ expect(output.required).toEqual(["10", "plain", "defaulted", "caught", "__proto__"]);
3890
+ expect(Object.prototype.hasOwnProperty.call(input.properties!, "__proto__")).toBe(true);
3891
+ expect(input.properties).not.toHaveProperty("hidden");
3892
+ expect(Object.getOwnPropertySymbols(input.properties!)).toEqual([]);
3893
+ });
3894
+
3708
3895
  test("strip output-side examples from input JSON schema for codec", () => {
3709
3896
  const codec = z
3710
3897
  .codec(z.string(), z.number(), { decode: (s) => Number(s), encode: (n) => String(n) })
@@ -4535,3 +4722,12 @@ describe("intersection folding declines", () => {
4535
4722
  expect(allOf(schema)).toHaveLength(3);
4536
4723
  });
4537
4724
  });
4725
+
4726
+ test("currency code", () => {
4727
+ expect(z.toJSONSchema(z.currencyCode())).toEqual({
4728
+ $schema: "https://json-schema.org/draft/2020-12/schema",
4729
+ type: "string",
4730
+ format: "currency_code",
4731
+ pattern: z.regexes.currencyCode.source,
4732
+ });
4733
+ });