@willaimg/yatsp 4.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (830) hide show
  1. package/README.md +22 -0
  2. package/compile.cjs +96 -0
  3. package/compile.d.cts +1 -0
  4. package/compile.d.ts +1 -0
  5. package/compile.js +52 -0
  6. package/index.cjs +52 -0
  7. package/index.d.cts +3 -0
  8. package/index.d.ts +3 -0
  9. package/index.js +7 -0
  10. package/locales/index.cjs +36 -0
  11. package/locales/index.d.cts +1 -0
  12. package/locales/index.d.ts +1 -0
  13. package/locales/index.js +1 -0
  14. package/mini/index.cjs +51 -0
  15. package/mini/index.d.cts +3 -0
  16. package/mini/index.d.ts +3 -0
  17. package/mini/index.js +3 -0
  18. package/package.json +142 -0
  19. package/src/compile.ts +56 -0
  20. package/src/index.ts +7 -0
  21. package/src/locales/index.ts +1 -0
  22. package/src/mini/index.ts +3 -0
  23. package/src/v3/YatspError.ts +340 -0
  24. package/src/v3/benchmarks/datetime.ts +58 -0
  25. package/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  26. package/src/v3/benchmarks/index.ts +59 -0
  27. package/src/v3/benchmarks/ipv4.ts +57 -0
  28. package/src/v3/benchmarks/object.ts +69 -0
  29. package/src/v3/benchmarks/primitives.ts +162 -0
  30. package/src/v3/benchmarks/realworld.ts +63 -0
  31. package/src/v3/benchmarks/string.ts +55 -0
  32. package/src/v3/benchmarks/union.ts +80 -0
  33. package/src/v3/errors.ts +13 -0
  34. package/src/v3/external.ts +6 -0
  35. package/src/v3/helpers/enumUtil.ts +17 -0
  36. package/src/v3/helpers/errorUtil.ts +8 -0
  37. package/src/v3/helpers/parseUtil.ts +176 -0
  38. package/src/v3/helpers/partialUtil.ts +34 -0
  39. package/src/v3/helpers/typeAliases.ts +2 -0
  40. package/src/v3/helpers/util.ts +224 -0
  41. package/src/v3/index.ts +4 -0
  42. package/src/v3/locales/en.ts +124 -0
  43. package/src/v3/standard-schema.ts +113 -0
  44. package/src/v3/tests/Mocker.ts +54 -0
  45. package/src/v3/tests/all-errors.test.ts +157 -0
  46. package/src/v3/tests/anyunknown.test.ts +28 -0
  47. package/src/v3/tests/array.test.ts +71 -0
  48. package/src/v3/tests/async-parsing.test.ts +388 -0
  49. package/src/v3/tests/async-refinements.test.ts +46 -0
  50. package/src/v3/tests/base.test.ts +29 -0
  51. package/src/v3/tests/bigint.test.ts +55 -0
  52. package/src/v3/tests/branded.test.ts +53 -0
  53. package/src/v3/tests/catch.test.ts +220 -0
  54. package/src/v3/tests/coerce.test.ts +133 -0
  55. package/src/v3/tests/complex.test.ts +70 -0
  56. package/src/v3/tests/custom.test.ts +31 -0
  57. package/src/v3/tests/date.test.ts +32 -0
  58. package/src/v3/tests/deepmasking.test.ts +186 -0
  59. package/src/v3/tests/default.test.ts +112 -0
  60. package/src/v3/tests/description.test.ts +33 -0
  61. package/src/v3/tests/discriminated-unions.test.ts +315 -0
  62. package/src/v3/tests/enum.test.ts +80 -0
  63. package/src/v3/tests/error.test.ts +586 -0
  64. package/src/v3/tests/firstparty.test.ts +87 -0
  65. package/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  66. package/src/v3/tests/function.test.ts +261 -0
  67. package/src/v3/tests/generics.test.ts +48 -0
  68. package/src/v3/tests/instanceof.test.ts +37 -0
  69. package/src/v3/tests/intersection.test.ts +128 -0
  70. package/src/v3/tests/language-server.source.ts +76 -0
  71. package/src/v3/tests/language-server.test.ts +206 -0
  72. package/src/v3/tests/literal.test.ts +36 -0
  73. package/src/v3/tests/map.test.ts +110 -0
  74. package/src/v3/tests/masking.test.ts +4 -0
  75. package/src/v3/tests/mocker.test.ts +19 -0
  76. package/src/v3/tests/nan.test.ts +24 -0
  77. package/src/v3/tests/nativeEnum.test.ts +87 -0
  78. package/src/v3/tests/nullable.test.ts +42 -0
  79. package/src/v3/tests/number.test.ts +176 -0
  80. package/src/v3/tests/object-augmentation.test.ts +29 -0
  81. package/src/v3/tests/object-in-es5-env.test.ts +29 -0
  82. package/src/v3/tests/object.test.ts +431 -0
  83. package/src/v3/tests/optional.test.ts +42 -0
  84. package/src/v3/tests/parseUtil.test.ts +23 -0
  85. package/src/v3/tests/parser.test.ts +41 -0
  86. package/src/v3/tests/partials.test.ts +243 -0
  87. package/src/v3/tests/pickomit.test.ts +111 -0
  88. package/src/v3/tests/pipeline.test.ts +29 -0
  89. package/src/v3/tests/preprocess.test.ts +186 -0
  90. package/src/v3/tests/primitive.test.ts +440 -0
  91. package/src/v3/tests/promise.test.ts +90 -0
  92. package/src/v3/tests/readonly.test.ts +114 -0
  93. package/src/v3/tests/record.test.ts +171 -0
  94. package/src/v3/tests/recursive.test.ts +197 -0
  95. package/src/v3/tests/refine.test.ts +313 -0
  96. package/src/v3/tests/safeparse.test.ts +27 -0
  97. package/src/v3/tests/set.test.ts +142 -0
  98. package/src/v3/tests/standard-schema.test.ts +83 -0
  99. package/src/v3/tests/string.test.ts +922 -0
  100. package/src/v3/tests/transformer.test.ts +233 -0
  101. package/src/v3/tests/tuple.test.ts +90 -0
  102. package/src/v3/tests/unions.test.ts +57 -0
  103. package/src/v3/tests/validations.test.ts +133 -0
  104. package/src/v3/tests/void.test.ts +15 -0
  105. package/src/v3/types.ts +5162 -0
  106. package/src/v4/classic/checks.ts +33 -0
  107. package/src/v4/classic/coerce.ts +27 -0
  108. package/src/v4/classic/compat.ts +78 -0
  109. package/src/v4/classic/deep-partial.ts +76 -0
  110. package/src/v4/classic/errors.ts +97 -0
  111. package/src/v4/classic/external.ts +57 -0
  112. package/src/v4/classic/from-json-schema.ts +944 -0
  113. package/src/v4/classic/in-out.ts +45 -0
  114. package/src/v4/classic/index.ts +5 -0
  115. package/src/v4/classic/iso.ts +20 -0
  116. package/src/v4/classic/parse.ts +88 -0
  117. package/src/v4/classic/schemas.ts +2994 -0
  118. package/src/v4/classic/tests/anyunknown.test.ts +26 -0
  119. package/src/v4/classic/tests/apply.test.ts +86 -0
  120. package/src/v4/classic/tests/array.test.ts +264 -0
  121. package/src/v4/classic/tests/assignability.test.ts +402 -0
  122. package/src/v4/classic/tests/async-parsing.test.ts +381 -0
  123. package/src/v4/classic/tests/async-refinements.test.ts +68 -0
  124. package/src/v4/classic/tests/base.test.ts +7 -0
  125. package/src/v4/classic/tests/bigint.test.ts +89 -0
  126. package/src/v4/classic/tests/brand.test.ts +106 -0
  127. package/src/v4/classic/tests/catch.test.ts +604 -0
  128. package/src/v4/classic/tests/coalesce.test.ts +20 -0
  129. package/src/v4/classic/tests/codec-examples.test.ts +572 -0
  130. package/src/v4/classic/tests/codec.test.ts +704 -0
  131. package/src/v4/classic/tests/coerce.test.ts +160 -0
  132. package/src/v4/classic/tests/continuability.test.ts +374 -0
  133. package/src/v4/classic/tests/credit-card.test.ts +76 -0
  134. package/src/v4/classic/tests/custom.test.ts +40 -0
  135. package/src/v4/classic/tests/cyclic-data.test.ts +985 -0
  136. package/src/v4/classic/tests/date.test.ts +92 -0
  137. package/src/v4/classic/tests/datetime.test.ts +316 -0
  138. package/src/v4/classic/tests/deep-partial.test.ts +380 -0
  139. package/src/v4/classic/tests/default-locale.test.ts +32 -0
  140. package/src/v4/classic/tests/default.test.ts +455 -0
  141. package/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  142. package/src/v4/classic/tests/description.test.ts +32 -0
  143. package/src/v4/classic/tests/detached-methods.test.ts +226 -0
  144. package/src/v4/classic/tests/discriminated-unions.test.ts +942 -0
  145. package/src/v4/classic/tests/enum.test.ts +305 -0
  146. package/src/v4/classic/tests/error-utils.test.ts +917 -0
  147. package/src/v4/classic/tests/error.test.ts +1108 -0
  148. package/src/v4/classic/tests/file.test.ts +96 -0
  149. package/src/v4/classic/tests/firstparty.test.ts +179 -0
  150. package/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  151. package/src/v4/classic/tests/from-json-schema.test.ts +1467 -0
  152. package/src/v4/classic/tests/function.test.ts +391 -0
  153. package/src/v4/classic/tests/generics.test.ts +72 -0
  154. package/src/v4/classic/tests/global-config.test.ts +32 -0
  155. package/src/v4/classic/tests/hash.test.ts +67 -0
  156. package/src/v4/classic/tests/iban.test.ts +81 -0
  157. package/src/v4/classic/tests/in-out.test.ts +159 -0
  158. package/src/v4/classic/tests/index.test.ts +958 -0
  159. package/src/v4/classic/tests/instance-footprint.test.ts +319 -0
  160. package/src/v4/classic/tests/instanceof.test.ts +127 -0
  161. package/src/v4/classic/tests/intersection.test.ts +334 -0
  162. package/src/v4/classic/tests/issue-schema.test.ts +215 -0
  163. package/src/v4/classic/tests/jitless-allows-eval.test.ts +39 -0
  164. package/src/v4/classic/tests/json.test.ts +109 -0
  165. package/src/v4/classic/tests/lazy.test.ts +262 -0
  166. package/src/v4/classic/tests/literal.test.ts +128 -0
  167. package/src/v4/classic/tests/locales_ka.test.ts +29 -0
  168. package/src/v4/classic/tests/locales_ro.test.ts +24 -0
  169. package/src/v4/classic/tests/map.test.ts +342 -0
  170. package/src/v4/classic/tests/nan.test.ts +21 -0
  171. package/src/v4/classic/tests/nested-refine.test.ts +168 -0
  172. package/src/v4/classic/tests/nonoptional.test.ts +101 -0
  173. package/src/v4/classic/tests/nullable.test.ts +22 -0
  174. package/src/v4/classic/tests/number.test.ts +401 -0
  175. package/src/v4/classic/tests/object.test.ts +1006 -0
  176. package/src/v4/classic/tests/optin-ladder.test.ts +235 -0
  177. package/src/v4/classic/tests/optional.test.ts +366 -0
  178. package/src/v4/classic/tests/partial.test.ts +497 -0
  179. package/src/v4/classic/tests/pickomit.test.ts +211 -0
  180. package/src/v4/classic/tests/pipe.test.ts +101 -0
  181. package/src/v4/classic/tests/prefault.test.ts +144 -0
  182. package/src/v4/classic/tests/preprocess-types.test.ts +44 -0
  183. package/src/v4/classic/tests/preprocess.test.ts +351 -0
  184. package/src/v4/classic/tests/primitive.test.ts +175 -0
  185. package/src/v4/classic/tests/promise.test.ts +81 -0
  186. package/src/v4/classic/tests/properties.test.ts +141 -0
  187. package/src/v4/classic/tests/prototypes.test.ts +23 -0
  188. package/src/v4/classic/tests/readonly.test.ts +184 -0
  189. package/src/v4/classic/tests/record.test.ts +885 -0
  190. package/src/v4/classic/tests/recursive-types.test.ts +707 -0
  191. package/src/v4/classic/tests/redos.test.ts +68 -0
  192. package/src/v4/classic/tests/refine.test.ts +693 -0
  193. package/src/v4/classic/tests/registries.test.ts +243 -0
  194. package/src/v4/classic/tests/set.test.ts +190 -0
  195. package/src/v4/classic/tests/standard-schema.test.ts +153 -0
  196. package/src/v4/classic/tests/string-formats.test.ts +125 -0
  197. package/src/v4/classic/tests/string.test.ts +1440 -0
  198. package/src/v4/classic/tests/stringbool.test.ts +124 -0
  199. package/src/v4/classic/tests/template-literal.test.ts +814 -0
  200. package/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  201. package/src/v4/classic/tests/to-json-schema.test.ts +4733 -0
  202. package/src/v4/classic/tests/transform.test.ts +378 -0
  203. package/src/v4/classic/tests/tuple.test.ts +511 -0
  204. package/src/v4/classic/tests/union.test.ts +310 -0
  205. package/src/v4/classic/tests/url.test.ts +13 -0
  206. package/src/v4/classic/tests/validate.test.ts +645 -0
  207. package/src/v4/classic/tests/validations.test.ts +283 -0
  208. package/src/v4/classic/tests/void.test.ts +12 -0
  209. package/src/v4/core/api.ts +1913 -0
  210. package/src/v4/core/checks.ts +1274 -0
  211. package/src/v4/core/compile.ts +2315 -0
  212. package/src/v4/core/core.ts +230 -0
  213. package/src/v4/core/doc.ts +52 -0
  214. package/src/v4/core/errors.ts +546 -0
  215. package/src/v4/core/index.ts +19 -0
  216. package/src/v4/core/json-schema-generator.ts +131 -0
  217. package/src/v4/core/json-schema-processors.ts +934 -0
  218. package/src/v4/core/json-schema.ts +148 -0
  219. package/src/v4/core/memoizer.ts +331 -0
  220. package/src/v4/core/parse.ts +309 -0
  221. package/src/v4/core/regexes.ts +217 -0
  222. package/src/v4/core/registries.ts +109 -0
  223. package/src/v4/core/schemas.ts +5295 -0
  224. package/src/v4/core/standard-schema.ts +159 -0
  225. package/src/v4/core/tests/cached.test.ts +54 -0
  226. package/src/v4/core/tests/compile-differential.test.ts +1004 -0
  227. package/src/v4/core/tests/compile-generative.test.ts +445 -0
  228. package/src/v4/core/tests/compile-global.test.ts +89 -0
  229. package/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
  230. package/src/v4/core/tests/compile-stats.test.ts +34 -0
  231. package/src/v4/core/tests/compile.test.ts +2040 -0
  232. package/src/v4/core/tests/email-regex.test.ts +140 -0
  233. package/src/v4/core/tests/extend.test.ts +59 -0
  234. package/src/v4/core/tests/index.test.ts +46 -0
  235. package/src/v4/core/tests/locales/be.test.ts +124 -0
  236. package/src/v4/core/tests/locales/el.test.ts +214 -0
  237. package/src/v4/core/tests/locales/en.test.ts +22 -0
  238. package/src/v4/core/tests/locales/es.test.ts +180 -0
  239. package/src/v4/core/tests/locales/fr.test.ts +72 -0
  240. package/src/v4/core/tests/locales/he.test.ts +379 -0
  241. package/src/v4/core/tests/locales/hr.test.ts +163 -0
  242. package/src/v4/core/tests/locales/nl.test.ts +46 -0
  243. package/src/v4/core/tests/locales/parity.test.ts +42 -0
  244. package/src/v4/core/tests/locales/ru.test.ts +128 -0
  245. package/src/v4/core/tests/locales/tg.test.ts +85 -0
  246. package/src/v4/core/tests/locales/tk.test.ts +69 -0
  247. package/src/v4/core/tests/locales/tr.test.ts +69 -0
  248. package/src/v4/core/tests/locales/uz.test.ts +105 -0
  249. package/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  250. package/src/v4/core/tests/record-constructor.test.ts +125 -0
  251. package/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  252. package/src/v4/core/tests/treeshake.test.ts +51 -0
  253. package/src/v4/core/tests/url-no-canparse.test.ts +133 -0
  254. package/src/v4/core/to-json-schema.ts +857 -0
  255. package/src/v4/core/util.ts +1284 -0
  256. package/src/v4/core/versions.ts +5 -0
  257. package/src/v4/core/visit.ts +193 -0
  258. package/src/v4/core/zsf.ts +323 -0
  259. package/src/v4/index.ts +4 -0
  260. package/src/v4/locales/ar.ts +120 -0
  261. package/src/v4/locales/az.ts +116 -0
  262. package/src/v4/locales/be.ts +188 -0
  263. package/src/v4/locales/bg.ts +133 -0
  264. package/src/v4/locales/bn.ts +123 -0
  265. package/src/v4/locales/ca.ts +121 -0
  266. package/src/v4/locales/ckb.ts +140 -0
  267. package/src/v4/locales/cs.ts +123 -0
  268. package/src/v4/locales/da.ts +128 -0
  269. package/src/v4/locales/de.ts +121 -0
  270. package/src/v4/locales/el.ts +124 -0
  271. package/src/v4/locales/en.ts +136 -0
  272. package/src/v4/locales/eo.ts +123 -0
  273. package/src/v4/locales/es.ts +145 -0
  274. package/src/v4/locales/fa.ts +131 -0
  275. package/src/v4/locales/fi.ts +126 -0
  276. package/src/v4/locales/fr-CA.ts +121 -0
  277. package/src/v4/locales/fr.ts +139 -0
  278. package/src/v4/locales/gu.ts +123 -0
  279. package/src/v4/locales/he.ts +253 -0
  280. package/src/v4/locales/hi.ts +126 -0
  281. package/src/v4/locales/hr.ts +135 -0
  282. package/src/v4/locales/hu.ts +122 -0
  283. package/src/v4/locales/hy.ts +175 -0
  284. package/src/v4/locales/id.ts +120 -0
  285. package/src/v4/locales/index.ts +63 -0
  286. package/src/v4/locales/is.ts +124 -0
  287. package/src/v4/locales/it.ts +121 -0
  288. package/src/v4/locales/ja.ts +119 -0
  289. package/src/v4/locales/ka.ts +128 -0
  290. package/src/v4/locales/kh.ts +7 -0
  291. package/src/v4/locales/km.ts +124 -0
  292. package/src/v4/locales/kn.ts +126 -0
  293. package/src/v4/locales/ko.ts +126 -0
  294. package/src/v4/locales/lt.ts +243 -0
  295. package/src/v4/locales/mk.ts +123 -0
  296. package/src/v4/locales/ms.ts +120 -0
  297. package/src/v4/locales/ne.ts +128 -0
  298. package/src/v4/locales/nl.ts +126 -0
  299. package/src/v4/locales/nn.ts +121 -0
  300. package/src/v4/locales/no.ts +121 -0
  301. package/src/v4/locales/ota.ts +122 -0
  302. package/src/v4/locales/pl.ts +123 -0
  303. package/src/v4/locales/ps.ts +131 -0
  304. package/src/v4/locales/pt-BR.ts +161 -0
  305. package/src/v4/locales/pt.ts +159 -0
  306. package/src/v4/locales/ro.ts +132 -0
  307. package/src/v4/locales/ru.ts +188 -0
  308. package/src/v4/locales/sk.ts +123 -0
  309. package/src/v4/locales/sl.ts +123 -0
  310. package/src/v4/locales/sv.ts +124 -0
  311. package/src/v4/locales/ta.ts +123 -0
  312. package/src/v4/locales/tg.ts +135 -0
  313. package/src/v4/locales/th.ts +124 -0
  314. package/src/v4/locales/tk.ts +113 -0
  315. package/src/v4/locales/tr.ts +116 -0
  316. package/src/v4/locales/ua.ts +7 -0
  317. package/src/v4/locales/uk.ts +122 -0
  318. package/src/v4/locales/ur.ts +124 -0
  319. package/src/v4/locales/uz.ts +120 -0
  320. package/src/v4/locales/vi.ts +122 -0
  321. package/src/v4/locales/yo.ts +129 -0
  322. package/src/v4/locales/zh-CN.ts +121 -0
  323. package/src/v4/locales/zh-TW.ts +120 -0
  324. package/src/v4/mini/checks.ts +33 -0
  325. package/src/v4/mini/coerce.ts +27 -0
  326. package/src/v4/mini/deep-partial.ts +73 -0
  327. package/src/v4/mini/external.ts +52 -0
  328. package/src/v4/mini/in-out.ts +45 -0
  329. package/src/v4/mini/index.ts +3 -0
  330. package/src/v4/mini/iso.ts +66 -0
  331. package/src/v4/mini/parse.ts +16 -0
  332. package/src/v4/mini/schemas.ts +2093 -0
  333. package/src/v4/mini/tests/apply.test.ts +57 -0
  334. package/src/v4/mini/tests/assignability.test.ts +190 -0
  335. package/src/v4/mini/tests/brand.test.ts +94 -0
  336. package/src/v4/mini/tests/checks.test.ts +158 -0
  337. package/src/v4/mini/tests/codec.test.ts +582 -0
  338. package/src/v4/mini/tests/computed.test.ts +30 -0
  339. package/src/v4/mini/tests/cyclic-data.test.ts +84 -0
  340. package/src/v4/mini/tests/deep-partial.test.ts +54 -0
  341. package/src/v4/mini/tests/error.test.ts +41 -0
  342. package/src/v4/mini/tests/functions.test.ts +14 -0
  343. package/src/v4/mini/tests/index.test.ts +1148 -0
  344. package/src/v4/mini/tests/number.test.ts +109 -0
  345. package/src/v4/mini/tests/object.test.ts +292 -0
  346. package/src/v4/mini/tests/prototypes.test.ts +43 -0
  347. package/src/v4/mini/tests/recursive-types.test.ts +341 -0
  348. package/src/v4/mini/tests/standard-schema.test.ts +50 -0
  349. package/src/v4/mini/tests/string.test.ts +396 -0
  350. package/src/v4-mini/index.ts +3 -0
  351. package/v3/YatspError.cjs +167 -0
  352. package/v3/YatspError.d.cts +164 -0
  353. package/v3/YatspError.d.ts +164 -0
  354. package/v3/YatspError.js +143 -0
  355. package/v3/errors.cjs +36 -0
  356. package/v3/errors.d.cts +5 -0
  357. package/v3/errors.d.ts +5 -0
  358. package/v3/errors.js +9 -0
  359. package/v3/external.cjs +41 -0
  360. package/v3/external.d.cts +6 -0
  361. package/v3/external.d.ts +6 -0
  362. package/v3/external.js +6 -0
  363. package/v3/helpers/enumUtil.cjs +21 -0
  364. package/v3/helpers/enumUtil.d.cts +8 -0
  365. package/v3/helpers/enumUtil.d.ts +8 -0
  366. package/v3/helpers/enumUtil.js +1 -0
  367. package/v3/helpers/errorUtil.cjs +28 -0
  368. package/v3/helpers/errorUtil.d.cts +9 -0
  369. package/v3/helpers/errorUtil.d.ts +9 -0
  370. package/v3/helpers/errorUtil.js +6 -0
  371. package/v3/helpers/parseUtil.cjs +143 -0
  372. package/v3/helpers/parseUtil.d.cts +78 -0
  373. package/v3/helpers/parseUtil.d.ts +78 -0
  374. package/v3/helpers/parseUtil.js +109 -0
  375. package/v3/helpers/partialUtil.cjs +21 -0
  376. package/v3/helpers/partialUtil.d.cts +8 -0
  377. package/v3/helpers/partialUtil.d.ts +8 -0
  378. package/v3/helpers/partialUtil.js +1 -0
  379. package/v3/helpers/typeAliases.cjs +21 -0
  380. package/v3/helpers/typeAliases.d.cts +2 -0
  381. package/v3/helpers/typeAliases.d.ts +2 -0
  382. package/v3/helpers/typeAliases.js +1 -0
  383. package/v3/helpers/util.cjs +156 -0
  384. package/v3/helpers/util.d.cts +85 -0
  385. package/v3/helpers/util.d.ts +85 -0
  386. package/v3/helpers/util.js +133 -0
  387. package/v3/index.cjs +52 -0
  388. package/v3/index.d.cts +4 -0
  389. package/v3/index.d.ts +4 -0
  390. package/v3/index.js +4 -0
  391. package/v3/locales/en.cjs +112 -0
  392. package/v3/locales/en.d.cts +3 -0
  393. package/v3/locales/en.d.ts +3 -0
  394. package/v3/locales/en.js +109 -0
  395. package/v3/standard-schema.cjs +21 -0
  396. package/v3/standard-schema.d.cts +102 -0
  397. package/v3/standard-schema.d.ts +102 -0
  398. package/v3/standard-schema.js +1 -0
  399. package/v3/types.cjs +3798 -0
  400. package/v3/types.d.cts +1034 -0
  401. package/v3/types.d.ts +1034 -0
  402. package/v3/types.js +3697 -0
  403. package/v4/classic/checks.cjs +53 -0
  404. package/v4/classic/checks.d.cts +1 -0
  405. package/v4/classic/checks.d.ts +1 -0
  406. package/v4/classic/checks.js +1 -0
  407. package/v4/classic/coerce.cjs +66 -0
  408. package/v4/classic/coerce.d.cts +17 -0
  409. package/v4/classic/coerce.d.ts +17 -0
  410. package/v4/classic/coerce.js +17 -0
  411. package/v4/classic/compat.cjs +80 -0
  412. package/v4/classic/compat.d.cts +48 -0
  413. package/v4/classic/compat.d.ts +48 -0
  414. package/v4/classic/compat.js +31 -0
  415. package/v4/classic/deep-partial.cjs +58 -0
  416. package/v4/classic/deep-partial.d.cts +14 -0
  417. package/v4/classic/deep-partial.d.ts +14 -0
  418. package/v4/classic/deep-partial.js +13 -0
  419. package/v4/classic/errors.cjs +102 -0
  420. package/v4/classic/errors.d.cts +29 -0
  421. package/v4/classic/errors.d.ts +29 -0
  422. package/v4/classic/errors.js +57 -0
  423. package/v4/classic/external.cjs +97 -0
  424. package/v4/classic/external.d.cts +19 -0
  425. package/v4/classic/external.d.ts +19 -0
  426. package/v4/classic/external.js +17 -0
  427. package/v4/classic/from-json-schema.cjs +926 -0
  428. package/v4/classic/from-json-schema.d.cts +12 -0
  429. package/v4/classic/from-json-schema.d.ts +12 -0
  430. package/v4/classic/from-json-schema.js +881 -0
  431. package/v4/classic/in-out.cjs +82 -0
  432. package/v4/classic/in-out.d.cts +8 -0
  433. package/v4/classic/in-out.d.ts +8 -0
  434. package/v4/classic/in-out.js +36 -0
  435. package/v4/classic/index.cjs +52 -0
  436. package/v4/classic/index.d.cts +3 -0
  437. package/v4/classic/index.d.ts +3 -0
  438. package/v4/classic/index.js +4 -0
  439. package/v4/classic/iso.cjs +68 -0
  440. package/v4/classic/iso.d.cts +7 -0
  441. package/v4/classic/iso.d.ts +7 -0
  442. package/v4/classic/iso.js +15 -0
  443. package/v4/classic/parse.cjs +63 -0
  444. package/v4/classic/parse.d.cts +44 -0
  445. package/v4/classic/parse.d.ts +44 -0
  446. package/v4/classic/parse.js +16 -0
  447. package/v4/classic/schemas.cjs +1676 -0
  448. package/v4/classic/schemas.d.cts +816 -0
  449. package/v4/classic/schemas.d.ts +816 -0
  450. package/v4/classic/schemas.js +1535 -0
  451. package/v4/core/api.cjs +1269 -0
  452. package/v4/core/api.d.cts +335 -0
  453. package/v4/core/api.d.ts +335 -0
  454. package/v4/core/api.js +1107 -0
  455. package/v4/core/checks.cjs +561 -0
  456. package/v4/core/checks.d.cts +294 -0
  457. package/v4/core/checks.d.ts +294 -0
  458. package/v4/core/checks.js +516 -0
  459. package/v4/core/compile.cjs +1908 -0
  460. package/v4/core/compile.d.cts +65 -0
  461. package/v4/core/compile.d.ts +65 -0
  462. package/v4/core/compile.js +1858 -0
  463. package/v4/core/core.cjs +167 -0
  464. package/v4/core/core.d.cts +82 -0
  465. package/v4/core/core.d.ts +82 -0
  466. package/v4/core/core.js +141 -0
  467. package/v4/core/doc.cjs +61 -0
  468. package/v4/core/doc.d.cts +16 -0
  469. package/v4/core/doc.d.ts +16 -0
  470. package/v4/core/doc.js +38 -0
  471. package/v4/core/errors.cjs +317 -0
  472. package/v4/core/errors.d.cts +225 -0
  473. package/v4/core/errors.d.ts +225 -0
  474. package/v4/core/errors.js +267 -0
  475. package/v4/core/index.cjs +70 -0
  476. package/v4/core/index.d.cts +19 -0
  477. package/v4/core/index.d.ts +19 -0
  478. package/v4/core/index.js +19 -0
  479. package/v4/core/json-schema-generator.cjs +122 -0
  480. package/v4/core/json-schema-generator.d.cts +65 -0
  481. package/v4/core/json-schema-generator.d.ts +65 -0
  482. package/v4/core/json-schema-generator.js +99 -0
  483. package/v4/core/json-schema-processors.cjs +929 -0
  484. package/v4/core/json-schema-processors.d.cts +65 -0
  485. package/v4/core/json-schema-processors.d.ts +65 -0
  486. package/v4/core/json-schema-processors.js +843 -0
  487. package/v4/core/json-schema.cjs +21 -0
  488. package/v4/core/json-schema.d.cts +89 -0
  489. package/v4/core/json-schema.d.ts +89 -0
  490. package/v4/core/json-schema.js +1 -0
  491. package/v4/core/memoizer.cjs +360 -0
  492. package/v4/core/memoizer.d.cts +15 -0
  493. package/v4/core/memoizer.d.ts +15 -0
  494. package/v4/core/memoizer.js +311 -0
  495. package/v4/core/parse.cjs +233 -0
  496. package/v4/core/parse.d.cts +52 -0
  497. package/v4/core/parse.d.ts +52 -0
  498. package/v4/core/parse.js +175 -0
  499. package/v4/core/regexes.cjs +209 -0
  500. package/v4/core/regexes.d.cts +90 -0
  501. package/v4/core/regexes.d.ts +90 -0
  502. package/v4/core/regexes.js +156 -0
  503. package/v4/core/registries.cjs +76 -0
  504. package/v4/core/registries.d.cts +35 -0
  505. package/v4/core/registries.d.ts +35 -0
  506. package/v4/core/registries.js +52 -0
  507. package/v4/core/schemas.cjs +2669 -0
  508. package/v4/core/schemas.d.cts +1273 -0
  509. package/v4/core/schemas.d.ts +1273 -0
  510. package/v4/core/schemas.js +2606 -0
  511. package/v4/core/standard-schema.cjs +21 -0
  512. package/v4/core/standard-schema.d.cts +126 -0
  513. package/v4/core/standard-schema.d.ts +126 -0
  514. package/v4/core/standard-schema.js +1 -0
  515. package/v4/core/to-json-schema.cjs +681 -0
  516. package/v4/core/to-json-schema.d.cts +154 -0
  517. package/v4/core/to-json-schema.d.ts +154 -0
  518. package/v4/core/to-json-schema.js +651 -0
  519. package/v4/core/util.cjs +949 -0
  520. package/v4/core/util.d.cts +278 -0
  521. package/v4/core/util.d.ts +278 -0
  522. package/v4/core/util.js +859 -0
  523. package/v4/core/versions.cjs +27 -0
  524. package/v4/core/versions.d.cts +5 -0
  525. package/v4/core/versions.d.ts +5 -0
  526. package/v4/core/versions.js +5 -0
  527. package/v4/core/visit.cjs +214 -0
  528. package/v4/core/visit.d.cts +30 -0
  529. package/v4/core/visit.d.ts +30 -0
  530. package/v4/core/visit.js +169 -0
  531. package/v4/index.cjs +51 -0
  532. package/v4/index.d.cts +3 -0
  533. package/v4/index.d.ts +3 -0
  534. package/v4/index.js +4 -0
  535. package/v4/locales/ar.cjs +138 -0
  536. package/v4/locales/ar.d.cts +5 -0
  537. package/v4/locales/ar.d.ts +4 -0
  538. package/v4/locales/ar.js +111 -0
  539. package/v4/locales/az.cjs +137 -0
  540. package/v4/locales/az.d.cts +5 -0
  541. package/v4/locales/az.d.ts +4 -0
  542. package/v4/locales/az.js +110 -0
  543. package/v4/locales/be.cjs +195 -0
  544. package/v4/locales/be.d.cts +5 -0
  545. package/v4/locales/be.d.ts +4 -0
  546. package/v4/locales/be.js +168 -0
  547. package/v4/locales/bg.cjs +152 -0
  548. package/v4/locales/bg.d.cts +5 -0
  549. package/v4/locales/bg.d.ts +4 -0
  550. package/v4/locales/bg.js +125 -0
  551. package/v4/locales/bn.cjs +140 -0
  552. package/v4/locales/bn.d.cts +5 -0
  553. package/v4/locales/bn.d.ts +4 -0
  554. package/v4/locales/bn.js +113 -0
  555. package/v4/locales/ca.cjs +139 -0
  556. package/v4/locales/ca.d.cts +5 -0
  557. package/v4/locales/ca.d.ts +4 -0
  558. package/v4/locales/ca.js +112 -0
  559. package/v4/locales/ckb.cjs +160 -0
  560. package/v4/locales/ckb.d.cts +5 -0
  561. package/v4/locales/ckb.d.ts +4 -0
  562. package/v4/locales/ckb.js +133 -0
  563. package/v4/locales/cs.cjs +143 -0
  564. package/v4/locales/cs.d.cts +5 -0
  565. package/v4/locales/cs.d.ts +4 -0
  566. package/v4/locales/cs.js +116 -0
  567. package/v4/locales/da.cjs +147 -0
  568. package/v4/locales/da.d.cts +5 -0
  569. package/v4/locales/da.d.ts +4 -0
  570. package/v4/locales/da.js +120 -0
  571. package/v4/locales/de.cjs +140 -0
  572. package/v4/locales/de.d.cts +5 -0
  573. package/v4/locales/de.d.ts +4 -0
  574. package/v4/locales/de.js +113 -0
  575. package/v4/locales/el.cjs +139 -0
  576. package/v4/locales/el.d.cts +5 -0
  577. package/v4/locales/el.d.ts +4 -0
  578. package/v4/locales/el.js +112 -0
  579. package/v4/locales/en.cjs +152 -0
  580. package/v4/locales/en.d.cts +5 -0
  581. package/v4/locales/en.d.ts +4 -0
  582. package/v4/locales/en.js +125 -0
  583. package/v4/locales/eo.cjs +141 -0
  584. package/v4/locales/eo.d.cts +5 -0
  585. package/v4/locales/eo.d.ts +4 -0
  586. package/v4/locales/eo.js +114 -0
  587. package/v4/locales/es.cjs +163 -0
  588. package/v4/locales/es.d.cts +5 -0
  589. package/v4/locales/es.d.ts +4 -0
  590. package/v4/locales/es.js +136 -0
  591. package/v4/locales/fa.cjs +146 -0
  592. package/v4/locales/fa.d.cts +5 -0
  593. package/v4/locales/fa.d.ts +4 -0
  594. package/v4/locales/fa.js +119 -0
  595. package/v4/locales/fi.cjs +144 -0
  596. package/v4/locales/fi.d.cts +5 -0
  597. package/v4/locales/fi.d.ts +4 -0
  598. package/v4/locales/fi.js +117 -0
  599. package/v4/locales/fr-CA.cjs +139 -0
  600. package/v4/locales/fr-CA.d.cts +5 -0
  601. package/v4/locales/fr-CA.d.ts +4 -0
  602. package/v4/locales/fr-CA.js +112 -0
  603. package/v4/locales/fr.cjs +156 -0
  604. package/v4/locales/fr.d.cts +5 -0
  605. package/v4/locales/fr.d.ts +4 -0
  606. package/v4/locales/fr.js +129 -0
  607. package/v4/locales/gu.cjs +140 -0
  608. package/v4/locales/gu.d.cts +5 -0
  609. package/v4/locales/gu.d.ts +4 -0
  610. package/v4/locales/gu.js +113 -0
  611. package/v4/locales/he.cjs +248 -0
  612. package/v4/locales/he.d.cts +5 -0
  613. package/v4/locales/he.d.ts +4 -0
  614. package/v4/locales/he.js +221 -0
  615. package/v4/locales/hi.cjs +138 -0
  616. package/v4/locales/hi.d.cts +5 -0
  617. package/v4/locales/hi.d.ts +4 -0
  618. package/v4/locales/hi.js +111 -0
  619. package/v4/locales/hr.cjs +153 -0
  620. package/v4/locales/hr.d.cts +5 -0
  621. package/v4/locales/hr.d.ts +4 -0
  622. package/v4/locales/hr.js +126 -0
  623. package/v4/locales/hu.cjs +140 -0
  624. package/v4/locales/hu.d.cts +5 -0
  625. package/v4/locales/hu.d.ts +4 -0
  626. package/v4/locales/hu.js +113 -0
  627. package/v4/locales/hy.cjs +185 -0
  628. package/v4/locales/hy.d.cts +5 -0
  629. package/v4/locales/hy.d.ts +4 -0
  630. package/v4/locales/hy.js +158 -0
  631. package/v4/locales/id.cjs +138 -0
  632. package/v4/locales/id.d.cts +5 -0
  633. package/v4/locales/id.d.ts +4 -0
  634. package/v4/locales/id.js +111 -0
  635. package/v4/locales/index.cjs +152 -0
  636. package/v4/locales/index.d.cts +63 -0
  637. package/v4/locales/index.d.ts +63 -0
  638. package/v4/locales/index.js +63 -0
  639. package/v4/locales/is.cjs +141 -0
  640. package/v4/locales/is.d.cts +5 -0
  641. package/v4/locales/is.d.ts +4 -0
  642. package/v4/locales/is.js +114 -0
  643. package/v4/locales/it.cjs +140 -0
  644. package/v4/locales/it.d.cts +5 -0
  645. package/v4/locales/it.d.ts +4 -0
  646. package/v4/locales/it.js +113 -0
  647. package/v4/locales/ja.cjs +139 -0
  648. package/v4/locales/ja.d.cts +5 -0
  649. package/v4/locales/ja.d.ts +4 -0
  650. package/v4/locales/ja.js +112 -0
  651. package/v4/locales/ka.cjs +144 -0
  652. package/v4/locales/ka.d.cts +5 -0
  653. package/v4/locales/ka.d.ts +4 -0
  654. package/v4/locales/ka.js +117 -0
  655. package/v4/locales/kh.cjs +12 -0
  656. package/v4/locales/kh.d.cts +5 -0
  657. package/v4/locales/kh.d.ts +5 -0
  658. package/v4/locales/kh.js +5 -0
  659. package/v4/locales/km.cjs +142 -0
  660. package/v4/locales/km.d.cts +5 -0
  661. package/v4/locales/km.d.ts +4 -0
  662. package/v4/locales/km.js +115 -0
  663. package/v4/locales/kn.cjs +143 -0
  664. package/v4/locales/kn.d.cts +5 -0
  665. package/v4/locales/kn.d.ts +4 -0
  666. package/v4/locales/kn.js +116 -0
  667. package/v4/locales/ko.cjs +143 -0
  668. package/v4/locales/ko.d.cts +5 -0
  669. package/v4/locales/ko.d.ts +4 -0
  670. package/v4/locales/ko.js +116 -0
  671. package/v4/locales/lt.cjs +234 -0
  672. package/v4/locales/lt.d.cts +5 -0
  673. package/v4/locales/lt.d.ts +4 -0
  674. package/v4/locales/lt.js +207 -0
  675. package/v4/locales/mk.cjs +141 -0
  676. package/v4/locales/mk.d.cts +5 -0
  677. package/v4/locales/mk.d.ts +4 -0
  678. package/v4/locales/mk.js +114 -0
  679. package/v4/locales/ms.cjs +139 -0
  680. package/v4/locales/ms.d.cts +5 -0
  681. package/v4/locales/ms.d.ts +4 -0
  682. package/v4/locales/ms.js +112 -0
  683. package/v4/locales/ne.cjs +138 -0
  684. package/v4/locales/ne.d.cts +5 -0
  685. package/v4/locales/ne.d.ts +4 -0
  686. package/v4/locales/ne.js +111 -0
  687. package/v4/locales/nl.cjs +142 -0
  688. package/v4/locales/nl.d.cts +5 -0
  689. package/v4/locales/nl.d.ts +4 -0
  690. package/v4/locales/nl.js +115 -0
  691. package/v4/locales/nn.cjs +140 -0
  692. package/v4/locales/nn.d.cts +5 -0
  693. package/v4/locales/nn.d.ts +4 -0
  694. package/v4/locales/nn.js +113 -0
  695. package/v4/locales/no.cjs +140 -0
  696. package/v4/locales/no.d.cts +5 -0
  697. package/v4/locales/no.d.ts +4 -0
  698. package/v4/locales/no.js +113 -0
  699. package/v4/locales/ota.cjs +141 -0
  700. package/v4/locales/ota.d.cts +5 -0
  701. package/v4/locales/ota.d.ts +4 -0
  702. package/v4/locales/ota.js +114 -0
  703. package/v4/locales/pl.cjs +141 -0
  704. package/v4/locales/pl.d.cts +5 -0
  705. package/v4/locales/pl.d.ts +4 -0
  706. package/v4/locales/pl.js +114 -0
  707. package/v4/locales/ps.cjs +146 -0
  708. package/v4/locales/ps.d.cts +5 -0
  709. package/v4/locales/ps.d.ts +4 -0
  710. package/v4/locales/ps.js +119 -0
  711. package/v4/locales/pt-BR.cjs +170 -0
  712. package/v4/locales/pt-BR.d.cts +5 -0
  713. package/v4/locales/pt-BR.d.ts +4 -0
  714. package/v4/locales/pt-BR.js +143 -0
  715. package/v4/locales/pt.cjs +169 -0
  716. package/v4/locales/pt.d.cts +5 -0
  717. package/v4/locales/pt.d.ts +4 -0
  718. package/v4/locales/pt.js +142 -0
  719. package/v4/locales/ro.cjs +149 -0
  720. package/v4/locales/ro.d.cts +5 -0
  721. package/v4/locales/ro.d.ts +4 -0
  722. package/v4/locales/ro.js +122 -0
  723. package/v4/locales/ru.cjs +195 -0
  724. package/v4/locales/ru.d.cts +5 -0
  725. package/v4/locales/ru.d.ts +4 -0
  726. package/v4/locales/ru.js +168 -0
  727. package/v4/locales/sk.cjs +143 -0
  728. package/v4/locales/sk.d.cts +5 -0
  729. package/v4/locales/sk.d.ts +4 -0
  730. package/v4/locales/sk.js +116 -0
  731. package/v4/locales/sl.cjs +141 -0
  732. package/v4/locales/sl.d.cts +5 -0
  733. package/v4/locales/sl.d.ts +4 -0
  734. package/v4/locales/sl.js +114 -0
  735. package/v4/locales/sv.cjs +142 -0
  736. package/v4/locales/sv.d.cts +5 -0
  737. package/v4/locales/sv.d.ts +4 -0
  738. package/v4/locales/sv.js +115 -0
  739. package/v4/locales/ta.cjs +142 -0
  740. package/v4/locales/ta.d.cts +5 -0
  741. package/v4/locales/ta.d.ts +4 -0
  742. package/v4/locales/ta.js +115 -0
  743. package/v4/locales/tg.cjs +144 -0
  744. package/v4/locales/tg.d.cts +5 -0
  745. package/v4/locales/tg.d.ts +4 -0
  746. package/v4/locales/tg.js +117 -0
  747. package/v4/locales/th.cjs +142 -0
  748. package/v4/locales/th.d.cts +5 -0
  749. package/v4/locales/th.d.ts +4 -0
  750. package/v4/locales/th.js +115 -0
  751. package/v4/locales/tk.cjs +134 -0
  752. package/v4/locales/tk.d.cts +5 -0
  753. package/v4/locales/tk.d.ts +4 -0
  754. package/v4/locales/tk.js +107 -0
  755. package/v4/locales/tr.cjs +137 -0
  756. package/v4/locales/tr.d.cts +5 -0
  757. package/v4/locales/tr.d.ts +4 -0
  758. package/v4/locales/tr.js +110 -0
  759. package/v4/locales/ua.cjs +12 -0
  760. package/v4/locales/ua.d.cts +5 -0
  761. package/v4/locales/ua.d.ts +5 -0
  762. package/v4/locales/ua.js +5 -0
  763. package/v4/locales/uk.cjs +140 -0
  764. package/v4/locales/uk.d.cts +5 -0
  765. package/v4/locales/uk.d.ts +4 -0
  766. package/v4/locales/uk.js +113 -0
  767. package/v4/locales/ur.cjs +142 -0
  768. package/v4/locales/ur.d.cts +5 -0
  769. package/v4/locales/ur.d.ts +4 -0
  770. package/v4/locales/ur.js +115 -0
  771. package/v4/locales/uz.cjs +140 -0
  772. package/v4/locales/uz.d.cts +5 -0
  773. package/v4/locales/uz.d.ts +4 -0
  774. package/v4/locales/uz.js +113 -0
  775. package/v4/locales/vi.cjs +140 -0
  776. package/v4/locales/vi.d.cts +5 -0
  777. package/v4/locales/vi.d.ts +4 -0
  778. package/v4/locales/vi.js +113 -0
  779. package/v4/locales/yo.cjs +139 -0
  780. package/v4/locales/yo.d.cts +5 -0
  781. package/v4/locales/yo.d.ts +4 -0
  782. package/v4/locales/yo.js +112 -0
  783. package/v4/locales/zh-CN.cjs +141 -0
  784. package/v4/locales/zh-CN.d.cts +5 -0
  785. package/v4/locales/zh-CN.d.ts +4 -0
  786. package/v4/locales/zh-CN.js +114 -0
  787. package/v4/locales/zh-TW.cjs +139 -0
  788. package/v4/locales/zh-TW.d.cts +5 -0
  789. package/v4/locales/zh-TW.d.ts +4 -0
  790. package/v4/locales/zh-TW.js +112 -0
  791. package/v4/mini/checks.cjs +54 -0
  792. package/v4/mini/checks.d.cts +1 -0
  793. package/v4/mini/checks.d.ts +1 -0
  794. package/v4/mini/checks.js +1 -0
  795. package/v4/mini/coerce.cjs +71 -0
  796. package/v4/mini/coerce.d.cts +7 -0
  797. package/v4/mini/coerce.d.ts +7 -0
  798. package/v4/mini/coerce.js +22 -0
  799. package/v4/mini/deep-partial.cjs +58 -0
  800. package/v4/mini/deep-partial.d.cts +14 -0
  801. package/v4/mini/deep-partial.d.ts +14 -0
  802. package/v4/mini/deep-partial.js +13 -0
  803. package/v4/mini/external.cjs +95 -0
  804. package/v4/mini/external.d.cts +16 -0
  805. package/v4/mini/external.d.ts +16 -0
  806. package/v4/mini/external.js +16 -0
  807. package/v4/mini/in-out.cjs +82 -0
  808. package/v4/mini/in-out.d.cts +8 -0
  809. package/v4/mini/in-out.d.ts +8 -0
  810. package/v4/mini/in-out.js +36 -0
  811. package/v4/mini/index.cjs +51 -0
  812. package/v4/mini/index.d.cts +3 -0
  813. package/v4/mini/index.d.ts +3 -0
  814. package/v4/mini/index.js +3 -0
  815. package/v4/mini/iso.cjs +83 -0
  816. package/v4/mini/iso.d.cts +22 -0
  817. package/v4/mini/iso.d.ts +22 -0
  818. package/v4/mini/iso.js +34 -0
  819. package/v4/mini/parse.cjs +37 -0
  820. package/v4/mini/parse.d.cts +1 -0
  821. package/v4/mini/parse.d.ts +1 -0
  822. package/v4/mini/parse.js +1 -0
  823. package/v4/mini/schemas.cjs +1149 -0
  824. package/v4/mini/schemas.d.cts +480 -0
  825. package/v4/mini/schemas.d.ts +480 -0
  826. package/v4/mini/schemas.js +1004 -0
  827. package/v4-mini/index.cjs +51 -0
  828. package/v4-mini/index.d.cts +3 -0
  829. package/v4-mini/index.d.ts +3 -0
  830. package/v4-mini/index.js +3 -0
@@ -0,0 +1,546 @@
1
+ import type { $YatspCheck, $YatspStringFormats } from "./checks.js";
2
+ import { $constructor } from "./core.js";
3
+ import type { $YatspType } from "./schemas.js";
4
+ import type { StandardSchemaV1 } from "./standard-schema.js";
5
+ import * as util from "./util.js";
6
+
7
+ ///////////////////////////
8
+ //// base type ////
9
+ ///////////////////////////
10
+ export interface $YatspIssueBase {
11
+ readonly code?: string;
12
+ readonly input?: unknown;
13
+ readonly path: PropertyKey[];
14
+ readonly message: string;
15
+ }
16
+
17
+ ////////////////////////////////
18
+ //// issue subtypes ////
19
+ ////////////////////////////////
20
+ export type $YatspInvalidTypeExpected =
21
+ | "string"
22
+ | "number"
23
+ | "int"
24
+ | "boolean"
25
+ | "bigint"
26
+ | "symbol"
27
+ | "undefined"
28
+ | "null"
29
+ | "never"
30
+ | "void"
31
+ | "date"
32
+ | "array"
33
+ | "object"
34
+ | "tuple"
35
+ | "record"
36
+ | "map"
37
+ | "set"
38
+ | "file"
39
+ | "nonoptional"
40
+ | "nan"
41
+ | "function"
42
+ | (string & {}); // class names for instanceof
43
+
44
+ export interface $YatspIssueInvalidType<Input = unknown> extends $YatspIssueBase {
45
+ readonly code: "invalid_type";
46
+ readonly expected: $YatspInvalidTypeExpected;
47
+ readonly input?: Input;
48
+ }
49
+
50
+ export interface $YatspIssueTooBig<Input = unknown> extends $YatspIssueBase {
51
+ readonly code: "too_big";
52
+ readonly origin: "number" | "int" | "bigint" | "date" | "string" | "array" | "set" | "file" | (string & {});
53
+ readonly maximum: number | bigint;
54
+ readonly inclusive?: boolean;
55
+ readonly exact?: boolean;
56
+ readonly input?: Input;
57
+ }
58
+
59
+ export interface $YatspIssueTooSmall<Input = unknown> extends $YatspIssueBase {
60
+ readonly code: "too_small";
61
+ readonly origin: "number" | "int" | "bigint" | "date" | "string" | "array" | "set" | "file" | (string & {});
62
+ readonly minimum: number | bigint;
63
+ /** True if the allowable range includes the minimum */
64
+ readonly inclusive?: boolean;
65
+ /** True if the allowed value is fixed (e.g.` z.length(5)`), not a range (`z.minLength(5)`) */
66
+ readonly exact?: boolean;
67
+ readonly input?: Input;
68
+ }
69
+
70
+ export interface $YatspIssueInvalidStringFormat extends $YatspIssueBase {
71
+ readonly code: "invalid_format";
72
+ readonly format: $YatspStringFormats | (string & {});
73
+ readonly pattern?: string;
74
+ readonly input?: string;
75
+ }
76
+
77
+ export interface $YatspIssueNotMultipleOf<Input extends number | bigint = number | bigint> extends $YatspIssueBase {
78
+ readonly code: "not_multiple_of";
79
+ readonly divisor: number;
80
+ readonly input?: Input;
81
+ }
82
+
83
+ export interface $YatspIssueUnrecognizedKeys extends $YatspIssueBase {
84
+ readonly code: "unrecognized_keys";
85
+ readonly keys: string[];
86
+ readonly input?: Record<string, unknown>;
87
+ }
88
+
89
+ interface $YatspIssueInvalidUnionNoMatch extends $YatspIssueBase {
90
+ readonly code: "invalid_union";
91
+ readonly errors: $YatspIssue[][];
92
+ readonly input?: unknown;
93
+ readonly discriminator?: string | undefined;
94
+ readonly options?: util.Primitive[];
95
+ readonly inclusive?: true;
96
+ }
97
+
98
+ interface $YatspIssueInvalidUnionMultipleMatch extends $YatspIssueBase {
99
+ readonly code: "invalid_union";
100
+ readonly errors: [];
101
+ readonly input?: unknown;
102
+ readonly discriminator?: string | undefined;
103
+ readonly inclusive: false;
104
+ /** Indices of the options that matched */
105
+ readonly matches: number[];
106
+ }
107
+
108
+ export type $YatspIssueInvalidUnion = $YatspIssueInvalidUnionNoMatch | $YatspIssueInvalidUnionMultipleMatch;
109
+
110
+ export interface $YatspIssueInvalidKey<Input = unknown> extends $YatspIssueBase {
111
+ readonly code: "invalid_key";
112
+ readonly origin: "map" | "record";
113
+ readonly issues: $YatspIssue[];
114
+ readonly input?: Input;
115
+ }
116
+
117
+ export interface $YatspIssueInvalidElement<Input = unknown> extends $YatspIssueBase {
118
+ readonly code: "invalid_element";
119
+ readonly origin: "map" | "set";
120
+ readonly key: unknown;
121
+ readonly issues: $YatspIssue[];
122
+ readonly input?: Input;
123
+ }
124
+
125
+ export interface $YatspIssueInvalidValue<Input = unknown> extends $YatspIssueBase {
126
+ readonly code: "invalid_value";
127
+ readonly values: util.Primitive[];
128
+ readonly input?: Input;
129
+ }
130
+
131
+ export interface $YatspIssueCustom extends $YatspIssueBase {
132
+ readonly code: "custom";
133
+ readonly params?: Record<string, any> | undefined;
134
+ readonly input?: unknown;
135
+ }
136
+
137
+ ////////////////////////////////////////////
138
+ //// first-party string formats ////
139
+ ////////////////////////////////////////////
140
+
141
+ export interface $YatspIssueStringCommonFormats extends $YatspIssueInvalidStringFormat {
142
+ format: Exclude<$YatspStringFormats, "regex" | "jwt" | "starts_with" | "ends_with" | "includes">;
143
+ }
144
+
145
+ export interface $YatspIssueStringInvalidRegex extends $YatspIssueInvalidStringFormat {
146
+ format: "regex";
147
+ pattern: string;
148
+ }
149
+
150
+ export interface $YatspIssueStringInvalidJWT extends $YatspIssueInvalidStringFormat {
151
+ format: "jwt";
152
+ algorithm?: string;
153
+ }
154
+
155
+ export interface $YatspIssueStringStartsWith extends $YatspIssueInvalidStringFormat {
156
+ format: "starts_with";
157
+ prefix: string;
158
+ }
159
+
160
+ export interface $YatspIssueStringEndsWith extends $YatspIssueInvalidStringFormat {
161
+ format: "ends_with";
162
+ suffix: string;
163
+ }
164
+
165
+ export interface $YatspIssueStringIncludes extends $YatspIssueInvalidStringFormat {
166
+ format: "includes";
167
+ includes: string;
168
+ }
169
+
170
+ export type $YatspStringFormatIssues =
171
+ | $YatspIssueStringCommonFormats
172
+ | $YatspIssueStringInvalidRegex
173
+ | $YatspIssueStringInvalidJWT
174
+ | $YatspIssueStringStartsWith
175
+ | $YatspIssueStringEndsWith
176
+ | $YatspIssueStringIncludes;
177
+
178
+ ////////////////////////
179
+ //// utils /////
180
+ ////////////////////////
181
+
182
+ export type $YatspIssue =
183
+ | $YatspIssueInvalidType
184
+ | $YatspIssueTooBig
185
+ | $YatspIssueTooSmall
186
+ | $YatspIssueInvalidStringFormat
187
+ | $YatspIssueNotMultipleOf
188
+ | $YatspIssueUnrecognizedKeys
189
+ | $YatspIssueInvalidUnion
190
+ | $YatspIssueInvalidKey
191
+ | $YatspIssueInvalidElement
192
+ | $YatspIssueInvalidValue
193
+ | $YatspIssueCustom;
194
+
195
+ export type $YatspIssueCode = $YatspIssue["code"];
196
+
197
+ export type $YatspInternalIssue<T extends $YatspIssueBase = $YatspIssue> = T extends any ? RawIssue<T> : never;
198
+ type RawIssue<T extends $YatspIssueBase> = T extends any
199
+ ? util.Flatten<
200
+ util.MakePartial<T, "message" | "path"> & {
201
+ /** The input data */
202
+ readonly input: unknown;
203
+ /** The schema or check that originated this issue. */
204
+ readonly inst?: $YatspType | $YatspCheck;
205
+ /** The schema that owns the issue. Equal to `inst` when a schema originated the issue, and the schema the check was attached to when a check did. */
206
+ readonly schema?: $YatspType | undefined;
207
+ /** If `true`, Yatsp will continue executing checks/refinements after this issue. */
208
+ readonly continue?: boolean | undefined;
209
+ } & Record<string, unknown>
210
+ >
211
+ : never;
212
+
213
+ export type $YatspRawIssue<T extends $YatspIssueBase = $YatspIssue> = $YatspInternalIssue<T>;
214
+
215
+ export interface $YatspErrorMap<T extends $YatspIssueBase = $YatspIssue> {
216
+ // biome-ignore lint/style/useShorthandFunctionType: interface form is public API
217
+ (issue: $YatspRawIssue<T>): { message: string } | string | undefined | null;
218
+ }
219
+
220
+ //////////////////////// ERROR CLASS ////////////////////////
221
+
222
+ // const YATSP_ERROR: symbol = Symbol.for("{{yatsp.error}}");
223
+ export interface $YatspError<T = unknown> extends Error {
224
+ type: T;
225
+ issues: $YatspIssue[];
226
+ _yatsp: {
227
+ output: T;
228
+ def: $YatspIssue[];
229
+ };
230
+ stack?: string;
231
+ name: string;
232
+ }
233
+
234
+ /* Computing the message eagerly is expensive (pretty-printed JSON of all
235
+ * issues), so defer it until first read. The accessor functions and
236
+ * descriptors are shared across instances to keep error construction
237
+ * cheap; the computed message is cached on the internals object. The
238
+ * setter preserves plain assignment semantics for consumers that
239
+ * overwrite `message`. */
240
+ function _getMessage(this: $YatspError): string {
241
+ const internals = this._yatsp as { def: $YatspIssue[]; message?: string };
242
+ internals.message ??= JSON.stringify(internals.def, util.jsonStringifyReplacer, 2);
243
+ return internals.message;
244
+ }
245
+ function _setMessage(this: $YatspError, value: string): void {
246
+ (this._yatsp as { message?: string }).message = value;
247
+ }
248
+ const _messageDesc: PropertyDescriptor = {
249
+ get: _getMessage,
250
+ set: _setMessage,
251
+ enumerable: true,
252
+ configurable: true,
253
+ };
254
+ const _issuesDesc: PropertyDescriptor = { value: undefined, enumerable: false };
255
+
256
+ /* Prototypes that already carry the lazy `toString`. Seeded with the
257
+ * intrinsics so that `init` on a foreign object — it accepts any object —
258
+ * can never install an accessor onto a prototype we do not own. */
259
+ const _installedToString = /* @__PURE__ */ new WeakSet<object>([Object.prototype, Error.prototype]);
260
+
261
+ const initializer = (inst: $YatspError, def: $YatspIssue[]): void => {
262
+ inst.name = "$YatspError";
263
+ // `_yatsp` is already non-enumerable: $constructor's init defined it with this same descriptor
264
+ _issuesDesc.value = def;
265
+ Object.defineProperty(inst, "issues", _issuesDesc);
266
+ // Clear the shared slot; a retained `value` pins the last error's issues.
267
+ _issuesDesc.value = undefined;
268
+ Object.defineProperty(inst, "message", _messageDesc);
269
+
270
+ /* `toString` lives as a non-enumerable lazy getter on the shared
271
+ * prototype; on first access it caches a per-instance closure so
272
+ * detached usage still works. */
273
+ const proto = Object.getPrototypeOf(inst);
274
+ if (!_installedToString.has(proto)) {
275
+ _installedToString.add(proto);
276
+ Object.defineProperty(proto, "toString", {
277
+ configurable: true,
278
+ enumerable: false,
279
+ get(this: $YatspError) {
280
+ const value = () => this.message;
281
+ Object.defineProperty(this, "toString", { value, configurable: true, writable: true });
282
+ return value;
283
+ },
284
+ set(this: $YatspError, value: unknown) {
285
+ Object.defineProperty(this, "toString", { value, configurable: true, writable: true });
286
+ },
287
+ });
288
+ }
289
+ };
290
+
291
+ export const $YatspError: $constructor<$YatspError> = $constructor("$YatspError", initializer);
292
+ interface $YatspRealError<T = any> extends $YatspError<T> {}
293
+ export const $YatspRealError: $constructor<$YatspRealError> = $constructor("$YatspError", initializer, undefined, {
294
+ Parent: Error,
295
+ });
296
+
297
+ /////////////////// ERROR UTILITIES ////////////////////////
298
+
299
+ // flatten
300
+ export type $YatspFlattenedError<T, U = string> = _FlattenedError<T, U>;
301
+ type _FlattenedError<T, U = string> = {
302
+ formErrors: U[];
303
+ fieldErrors: {
304
+ [P in keyof T]?: U[];
305
+ };
306
+ };
307
+
308
+ /** Get-or-create `obj[key]` as an own data property. A path segment naming an inherited member
309
+ * ("toString", "constructor") would otherwise read through to the prototype, and assigning
310
+ * "__proto__" would hit the setter instead of creating a key. */
311
+ function node<T>(obj: any, key: PropertyKey, make: () => T): T {
312
+ if (!Object.prototype.hasOwnProperty.call(obj, key)) {
313
+ if (key === "__proto__") {
314
+ Object.defineProperty(obj, key, { value: make(), writable: true, enumerable: true, configurable: true });
315
+ } else {
316
+ obj[key] = make();
317
+ }
318
+ }
319
+ return obj[key];
320
+ }
321
+
322
+ export function flattenError<T>(error: $YatspError<T>): _FlattenedError<T>;
323
+ export function flattenError<T, U>(error: $YatspError<T>, mapper?: (issue: $YatspIssue) => U): _FlattenedError<T, U>;
324
+ export function flattenError<T, U>(error: $YatspError<T>, mapper = (issue: $YatspIssue) => issue.message as U) {
325
+ const fieldErrors: Record<PropertyKey, any> = {};
326
+ const formErrors: U[] = [];
327
+ for (const sub of error.issues) {
328
+ if (sub.path.length > 0) {
329
+ node<U[]>(fieldErrors, sub.path[0]!, () => []).push(mapper(sub));
330
+ } else {
331
+ formErrors.push(mapper(sub));
332
+ }
333
+ }
334
+ return { formErrors, fieldErrors };
335
+ }
336
+
337
+ type _YatspFormattedError<T, U = string> = T extends [any, ...any[]]
338
+ ? { [K in keyof T]?: $YatspFormattedError<T[K], U> }
339
+ : T extends any[]
340
+ ? { [k: number]: $YatspFormattedError<T[number], U> }
341
+ : T extends object
342
+ ? util.Flatten<{ [K in keyof T]?: $YatspFormattedError<T[K], U> }>
343
+ : any;
344
+
345
+ export type $YatspFormattedError<T, U = string> = {
346
+ _errors: U[];
347
+ } & util.Flatten<_YatspFormattedError<T, U>>;
348
+
349
+ export function formatError<T>(error: $YatspError<T>): $YatspFormattedError<T>;
350
+ export function formatError<T, U>(
351
+ error: $YatspError<T>,
352
+ mapper?: (issue: $YatspIssue) => U
353
+ ): $YatspFormattedError<T, U>;
354
+ export function formatError<T, U>(error: $YatspError<T>, mapper = (issue: $YatspIssue) => issue.message as U) {
355
+ const fieldErrors: $YatspFormattedError<T> = { _errors: [] } as any;
356
+ const processError = (error: { issues: $YatspIssue[] }, path: PropertyKey[] = []) => {
357
+ for (const issue of error.issues) {
358
+ if (issue.code === "invalid_union" && issue.errors.length) {
359
+ issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));
360
+ } else if (issue.code === "invalid_key") {
361
+ processError({ issues: issue.issues }, [...path, ...issue.path]);
362
+ } else if (issue.code === "invalid_element") {
363
+ processError({ issues: issue.issues }, [...path, ...issue.path]);
364
+ } else {
365
+ const fullpath = [...path, ...issue.path];
366
+ if (fullpath.length === 0) {
367
+ (fieldErrors as any)._errors.push(mapper(issue));
368
+ } else {
369
+ let curr: any = fieldErrors;
370
+ let i = 0;
371
+ while (i < fullpath.length) {
372
+ const el = fullpath[i]!;
373
+ const terminal = i === fullpath.length - 1;
374
+
375
+ // `_errors` is reserved by this legacy format, so merge a matching path segment into the current node instead of treating its array as a child.
376
+ if (el === "_errors") {
377
+ if (terminal) curr._errors.push(mapper(issue));
378
+ i++;
379
+ continue;
380
+ }
381
+
382
+ // A path element may collide with an inherited property name such as
383
+ // "__proto__" or "constructor". Truthiness checks read the prototype
384
+ // (so no node is created, then ._errors.push throws), and bracket
385
+ // assignment of "__proto__" hits the setter instead of creating an
386
+ // own key. Guard the read with hasOwnProperty and create the node
387
+ // with defineProperty so any path element becomes a real own key.
388
+ if (!Object.prototype.hasOwnProperty.call(curr, el)) {
389
+ Object.defineProperty(curr, el, {
390
+ value: { _errors: [] },
391
+ enumerable: true,
392
+ writable: true,
393
+ configurable: true,
394
+ });
395
+ }
396
+ const node = curr[el];
397
+ if (terminal) {
398
+ node._errors.push(mapper(issue));
399
+ }
400
+ curr = node;
401
+ i++;
402
+ }
403
+ }
404
+ }
405
+ }
406
+ };
407
+ processError(error);
408
+ return fieldErrors;
409
+ }
410
+
411
+ export type $YatspErrorTree<T, U = string> = T extends util.Primitive
412
+ ? { errors: U[] }
413
+ : T extends [any, ...any[]]
414
+ ? { errors: U[]; items?: { [K in keyof T]?: $YatspErrorTree<T[K], U> } }
415
+ : T extends any[]
416
+ ? { errors: U[]; items?: Array<$YatspErrorTree<T[number], U>> }
417
+ : T extends object
418
+ ? {
419
+ errors: U[];
420
+ properties?: { [K in keyof T]?: $YatspErrorTree<T[K], U> };
421
+ }
422
+ : { errors: U[] };
423
+
424
+ export function treeifyError<T>(error: $YatspError<T>): $YatspErrorTree<T>;
425
+ export function treeifyError<T, U>(error: $YatspError<T>, mapper?: (issue: $YatspIssue) => U): $YatspErrorTree<T, U>;
426
+ export function treeifyError<T, U>(error: $YatspError<T>, mapper = (issue: $YatspIssue) => issue.message as U) {
427
+ const result: $YatspErrorTree<T, U> = { errors: [] } as any;
428
+ const processError = (error: { issues: $YatspIssue[] }, path: PropertyKey[] = []) => {
429
+ for (const issue of error.issues) {
430
+ if (issue.code === "invalid_union" && issue.errors.length) {
431
+ // regular union error
432
+ issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));
433
+ } else if (issue.code === "invalid_key") {
434
+ processError({ issues: issue.issues }, [...path, ...issue.path]);
435
+ } else if (issue.code === "invalid_element") {
436
+ processError({ issues: issue.issues }, [...path, ...issue.path]);
437
+ } else {
438
+ const fullpath = [...path, ...issue.path];
439
+ if (fullpath.length === 0) {
440
+ result.errors.push(mapper(issue));
441
+ continue;
442
+ }
443
+
444
+ let curr: any = result;
445
+ let i = 0;
446
+ while (i < fullpath.length) {
447
+ const el = fullpath[i]!;
448
+
449
+ const terminal = i === fullpath.length - 1;
450
+ if (typeof el === "string") {
451
+ curr.properties ??= {};
452
+ // el may collide with an inherited property name ("__proto__",
453
+ // "constructor", ...); ??= reads the prototype so the node is never
454
+ // created and curr.errors.push throws. Guard with hasOwnProperty and
455
+ // create the node with defineProperty so "__proto__" becomes a real
456
+ // own key rather than invoking the prototype setter.
457
+ if (!Object.prototype.hasOwnProperty.call(curr.properties, el)) {
458
+ Object.defineProperty(curr.properties, el, {
459
+ value: { errors: [] },
460
+ enumerable: true,
461
+ writable: true,
462
+ configurable: true,
463
+ });
464
+ }
465
+ curr = curr.properties[el];
466
+ } else {
467
+ curr.items ??= [];
468
+ curr.items[el] ??= { errors: [] };
469
+ curr = curr.items[el];
470
+ }
471
+
472
+ if (terminal) {
473
+ curr.errors.push(mapper(issue));
474
+ }
475
+
476
+ i++;
477
+ }
478
+ }
479
+ }
480
+ };
481
+ processError(error);
482
+ return result;
483
+ }
484
+
485
+ /** Format a YatspError as a human-readable string in the following form.
486
+ *
487
+ * From
488
+ *
489
+ * ```ts
490
+ * YatspError {
491
+ * issues: [
492
+ * {
493
+ * expected: 'string',
494
+ * code: 'invalid_type',
495
+ * path: [ 'username' ],
496
+ * message: 'Invalid input: expected string'
497
+ * },
498
+ * {
499
+ * expected: 'number',
500
+ * code: 'invalid_type',
501
+ * path: [ 'favoriteNumbers', 1 ],
502
+ * message: 'Invalid input: expected number'
503
+ * }
504
+ * ];
505
+ * }
506
+ * ```
507
+ *
508
+ * to
509
+ *
510
+ * ```
511
+ * username
512
+ * ✖ Expected number, received string at "username
513
+ * favoriteNumbers[0]
514
+ * ✖ Invalid input: expected number
515
+ * ```
516
+ */
517
+ export function toDotPath(_path: readonly (string | number | symbol | StandardSchemaV1.PathSegment)[]): string {
518
+ const segs: string[] = [];
519
+ const path: PropertyKey[] = _path.map((seg: any) => (typeof seg === "object" ? seg.key : seg));
520
+ for (const seg of path) {
521
+ if (typeof seg === "number") segs.push(`[${seg}]`);
522
+ else if (typeof seg === "symbol") segs.push(`[${JSON.stringify(String(seg))}]`);
523
+ else if (/[^\w$]/.test(seg)) segs.push(`[${JSON.stringify(seg)}]`);
524
+ else {
525
+ if (segs.length) segs.push(".");
526
+ segs.push(seg);
527
+ }
528
+ }
529
+
530
+ return segs.join("");
531
+ }
532
+
533
+ export function prettifyError(error: StandardSchemaV1.FailureResult): string {
534
+ const lines: string[] = [];
535
+ // sort by path length
536
+ const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);
537
+
538
+ // Process each issue
539
+ for (const issue of issues) {
540
+ lines.push(`✖ ${issue.message}`);
541
+ if (issue.path?.length) lines.push(` → at ${toDotPath(issue.path)}`);
542
+ }
543
+
544
+ // Convert Map to formatted string
545
+ return lines.join("\n");
546
+ }
@@ -0,0 +1,19 @@
1
+ export * from "./core.js";
2
+ export * from "./parse.js";
3
+ export * from "./errors.js";
4
+ export * from "./schemas.js";
5
+ export * from "./memoizer.js";
6
+ export * from "./checks.js";
7
+ export * from "./versions.js";
8
+ export * as util from "./util.js";
9
+ export { toYatsp } from "./util.js";
10
+ export * as regexes from "./regexes.js";
11
+ export * as locales from "../locales/index.js";
12
+ export * from "./registries.js";
13
+ export * from "./doc.js";
14
+ export * from "./compile.js";
15
+ export * from "./api.js";
16
+ export * from "./to-json-schema.js";
17
+ export { toJSONSchema } from "./json-schema-processors.js";
18
+ export { JSONSchemaGenerator } from "./json-schema-generator.js";
19
+ export * as JSONSchema from "./json-schema.js";
@@ -0,0 +1,131 @@
1
+ import { allProcessors } from "./json-schema-processors.js";
2
+ import type * as JSONSchema from "./json-schema.js";
3
+ import type { $YatspRegistry } from "./registries.js";
4
+ import type * as schemas from "./schemas.js";
5
+ import {
6
+ type JSONSchemaGeneratorParams,
7
+ type ProcessParams,
8
+ type Seen,
9
+ type ToJSONSchemaContext,
10
+ extractDefs,
11
+ finalize,
12
+ initializeContext,
13
+ processSchema,
14
+ } from "./to-json-schema.js";
15
+
16
+ /**
17
+ * Parameters for the emit method of JSONSchemaGenerator.
18
+ * @deprecated Use toJSONSchema function instead
19
+ */
20
+ export type EmitParams = Pick<JSONSchemaGeneratorParams, "cycles" | "reused" | "external">;
21
+
22
+ /**
23
+ * Parameters for JSONSchemaGenerator constructor.
24
+ * @deprecated Use toJSONSchema function instead
25
+ */
26
+ type JSONSchemaGeneratorConstructorParams = Pick<
27
+ JSONSchemaGeneratorParams,
28
+ "metadata" | "target" | "unrepresentable" | "override" | "io"
29
+ >;
30
+
31
+ /**
32
+ * Legacy class-based interface for JSON Schema generation.
33
+ * This class wraps the new functional implementation to provide backward compatibility.
34
+ *
35
+ * @deprecated Use the `toJSONSchema` function instead for new code.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // Legacy usage (still supported)
40
+ * const gen = new JSONSchemaGenerator({ target: "draft-07" });
41
+ * gen.process(schema);
42
+ * const result = gen.emit(schema);
43
+ *
44
+ * // Preferred modern usage
45
+ * const result = toJSONSchema(schema, { target: "draft-07" });
46
+ * ```
47
+ */
48
+ export class JSONSchemaGenerator {
49
+ private ctx: ToJSONSchemaContext;
50
+
51
+ /** @deprecated Access via ctx instead */
52
+ get metadataRegistry(): $YatspRegistry<Record<string, any>> {
53
+ return this.ctx.metadataRegistry;
54
+ }
55
+ /** @deprecated Access via ctx instead */
56
+ get target() {
57
+ return this.ctx.target;
58
+ }
59
+ // annotated so the .d.cts emits an indexed access rather than an inline `import()` of an ESM path
60
+ /** @deprecated Access via ctx instead */
61
+ get unrepresentable(): ToJSONSchemaContext["unrepresentable"] {
62
+ return this.ctx.unrepresentable;
63
+ }
64
+ /** @deprecated Access via ctx instead */
65
+ get override() {
66
+ return this.ctx.override;
67
+ }
68
+ /** @deprecated Access via ctx instead */
69
+ get io() {
70
+ return this.ctx.io;
71
+ }
72
+ /** @deprecated Access via ctx instead */
73
+ get counter() {
74
+ return this.ctx.counter;
75
+ }
76
+ set counter(value: number) {
77
+ this.ctx.counter = value;
78
+ }
79
+ /** @deprecated Access via ctx instead */
80
+ get seen(): Map<schemas.$YatspType, Seen> {
81
+ return this.ctx.seen;
82
+ }
83
+
84
+ constructor(params?: JSONSchemaGeneratorConstructorParams) {
85
+ // Normalize target for internal context
86
+ let normalizedTarget: ToJSONSchemaContext["target"] = params?.target ?? "draft-2020-12";
87
+ if (normalizedTarget === "draft-4") normalizedTarget = "draft-04";
88
+ if (normalizedTarget === "draft-7") normalizedTarget = "draft-07";
89
+
90
+ this.ctx = initializeContext({
91
+ processors: allProcessors,
92
+ target: normalizedTarget,
93
+ ...(params?.metadata && { metadata: params.metadata }),
94
+ ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),
95
+ ...(params?.override && { override: params.override as any }),
96
+ ...(params?.io && { io: params.io }),
97
+ });
98
+ }
99
+
100
+ /**
101
+ * Process a schema to prepare it for JSON Schema generation.
102
+ * This must be called before emit().
103
+ */
104
+ process(schema: schemas.$YatspType, _params: ProcessParams = { path: [], schemaPath: [] }): JSONSchema.BaseSchema {
105
+ return processSchema(schema, this.ctx, _params);
106
+ }
107
+
108
+ /**
109
+ * Emit the final JSON Schema after processing.
110
+ * Must call process() first.
111
+ */
112
+ emit(schema: schemas.$YatspType, _params?: EmitParams): JSONSchema.BaseSchema {
113
+ // Apply emit params to the context
114
+ if (_params) {
115
+ if (_params.cycles) this.ctx.cycles = _params.cycles;
116
+ if (_params.reused) this.ctx.reused = _params.reused;
117
+ if (_params.external) this.ctx.external = _params.external;
118
+ }
119
+
120
+ // extractDefs/finalize skip their whole-map passes when they have already run for this `external`, but they also branch on `cycles`, `reused`, `seen.count` and the metadata registry — any of which can change between emits, including with no params at all. Drop the guards so the passes re-run. The registry conversion calls extractDefs/finalize directly and never routes through here, so it keeps skipping them.
121
+ this.ctx.sharedDefsExtractedFor = undefined;
122
+ this.ctx.sharedEmitDoneFor = undefined;
123
+
124
+ extractDefs(this.ctx, schema);
125
+ const result = finalize(this.ctx, schema);
126
+
127
+ // Strip ~standard property to match old implementation's return type
128
+ const { "~standard": _, ...plainResult } = result as any;
129
+ return plainResult as JSONSchema.BaseSchema;
130
+ }
131
+ }