@warlock.js/seal 4.0.48 → 4.0.59

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 (733) hide show
  1. package/cjs/config.d.ts +48 -0
  2. package/cjs/config.d.ts.map +1 -0
  3. package/cjs/config.js +42 -0
  4. package/cjs/config.js.map +1 -0
  5. package/cjs/factory/index.d.ts +3 -0
  6. package/cjs/factory/index.d.ts.map +1 -0
  7. package/cjs/factory/validate.d.ts +8 -0
  8. package/cjs/factory/validate.d.ts.map +1 -0
  9. package/cjs/factory/validate.js +23 -0
  10. package/cjs/factory/validate.js.map +1 -0
  11. package/cjs/factory/validators.d.ts +41 -0
  12. package/cjs/factory/validators.d.ts.map +1 -0
  13. package/cjs/factory/validators.js +45 -0
  14. package/cjs/factory/validators.js.map +1 -0
  15. package/cjs/helpers/date-helpers.d.ts +16 -0
  16. package/cjs/helpers/date-helpers.d.ts.map +1 -0
  17. package/cjs/helpers/date-helpers.js +20 -0
  18. package/cjs/helpers/date-helpers.js.map +1 -0
  19. package/cjs/helpers/file.utils.d.ts +8 -0
  20. package/cjs/helpers/file.utils.d.ts.map +1 -0
  21. package/cjs/helpers/file.utils.js +29 -0
  22. package/cjs/helpers/file.utils.js.map +1 -0
  23. package/cjs/helpers/get-field-value.d.ts +37 -0
  24. package/cjs/helpers/get-field-value.d.ts.map +1 -0
  25. package/cjs/helpers/get-field-value.js +40 -0
  26. package/cjs/helpers/get-field-value.js.map +1 -0
  27. package/cjs/helpers/index.d.ts +6 -0
  28. package/cjs/helpers/index.d.ts.map +1 -0
  29. package/cjs/helpers/is-empty-value.d.ts +2 -0
  30. package/cjs/helpers/is-empty-value.d.ts.map +1 -0
  31. package/cjs/helpers/is-empty-value.js +3 -0
  32. package/cjs/helpers/is-empty-value.js.map +1 -0
  33. package/cjs/helpers/path-helpers.d.ts +5 -0
  34. package/cjs/helpers/path-helpers.d.ts.map +1 -0
  35. package/cjs/helpers/path-helpers.js +8 -0
  36. package/cjs/helpers/path-helpers.js.map +1 -0
  37. package/cjs/helpers/validation-helpers.d.ts +4 -0
  38. package/cjs/helpers/validation-helpers.d.ts.map +1 -0
  39. package/cjs/helpers/validation-helpers.js +48 -0
  40. package/cjs/helpers/validation-helpers.js.map +1 -0
  41. package/cjs/index.d.ts +29 -0
  42. package/cjs/index.d.ts.map +1 -0
  43. package/cjs/index.js +1 -63
  44. package/cjs/index.js.map +1 -1
  45. package/cjs/mutators/array-mutators.d.ts +12 -0
  46. package/cjs/mutators/array-mutators.d.ts.map +1 -0
  47. package/cjs/mutators/array-mutators.js +37 -0
  48. package/cjs/mutators/array-mutators.js.map +1 -0
  49. package/cjs/mutators/date-mutators.d.ts +39 -0
  50. package/cjs/mutators/date-mutators.d.ts.map +1 -0
  51. package/cjs/mutators/date-mutators.js +120 -0
  52. package/cjs/mutators/date-mutators.js.map +1 -0
  53. package/cjs/mutators/index.d.ts +7 -0
  54. package/cjs/mutators/index.d.ts.map +1 -0
  55. package/cjs/mutators/number-mutators.d.ts +9 -0
  56. package/cjs/mutators/number-mutators.d.ts.map +1 -0
  57. package/cjs/mutators/number-mutators.js +23 -0
  58. package/cjs/mutators/number-mutators.js.map +1 -0
  59. package/cjs/mutators/object-mutators.d.ts +8 -0
  60. package/cjs/mutators/object-mutators.d.ts.map +1 -0
  61. package/cjs/mutators/object-mutators.js +50 -0
  62. package/cjs/mutators/object-mutators.js.map +1 -0
  63. package/cjs/mutators/scalar-mutators.d.ts +3 -0
  64. package/cjs/mutators/scalar-mutators.d.ts.map +1 -0
  65. package/cjs/mutators/scalar-mutators.js +6 -0
  66. package/cjs/mutators/scalar-mutators.js.map +1 -0
  67. package/cjs/mutators/string-mutators.d.ts +72 -0
  68. package/cjs/mutators/string-mutators.d.ts.map +1 -0
  69. package/cjs/mutators/string-mutators.js +193 -0
  70. package/cjs/mutators/string-mutators.js.map +1 -0
  71. package/cjs/plugins/index.d.ts +7 -0
  72. package/cjs/plugins/index.d.ts.map +1 -0
  73. package/cjs/plugins/plugin-system.d.ts +71 -0
  74. package/cjs/plugins/plugin-system.d.ts.map +1 -0
  75. package/cjs/plugins/plugin-system.js +68 -0
  76. package/cjs/plugins/plugin-system.js.map +1 -0
  77. package/cjs/rules/array/array-rules.d.ts +12 -0
  78. package/cjs/rules/array/array-rules.d.ts.map +1 -0
  79. package/cjs/rules/array/array-rules.js +44 -0
  80. package/cjs/rules/array/array-rules.js.map +1 -0
  81. package/cjs/rules/array/index.d.ts +2 -0
  82. package/cjs/rules/array/index.d.ts.map +1 -0
  83. package/cjs/rules/color/color-rules.d.ts +30 -0
  84. package/cjs/rules/color/color-rules.d.ts.map +1 -0
  85. package/cjs/rules/color/color-rules.js +120 -0
  86. package/cjs/rules/color/color-rules.js.map +1 -0
  87. package/cjs/rules/color/index.d.ts +2 -0
  88. package/cjs/rules/color/index.d.ts.map +1 -0
  89. package/cjs/rules/common/enum.d.ts +26 -0
  90. package/cjs/rules/common/enum.d.ts.map +1 -0
  91. package/cjs/rules/common/enum.js +55 -0
  92. package/cjs/rules/common/enum.js.map +1 -0
  93. package/cjs/rules/common/equals-field-rules.d.ts +18 -0
  94. package/cjs/rules/common/equals-field-rules.d.ts.map +1 -0
  95. package/cjs/rules/common/equals-field-rules.js +38 -0
  96. package/cjs/rules/common/equals-field-rules.js.map +1 -0
  97. package/cjs/rules/common/index.d.ts +5 -0
  98. package/cjs/rules/common/index.d.ts.map +1 -0
  99. package/cjs/rules/common/type-rules.d.ts +34 -0
  100. package/cjs/rules/common/type-rules.d.ts.map +1 -0
  101. package/cjs/rules/common/type-rules.js +104 -0
  102. package/cjs/rules/common/type-rules.js.map +1 -0
  103. package/cjs/rules/common/unknown-key.d.ts +9 -0
  104. package/cjs/rules/common/unknown-key.d.ts.map +1 -0
  105. package/cjs/rules/common/unknown-key.js +18 -0
  106. package/cjs/rules/common/unknown-key.js.map +1 -0
  107. package/cjs/rules/conditional/forbidden-if-rules.d.ts +54 -0
  108. package/cjs/rules/conditional/forbidden-if-rules.d.ts.map +1 -0
  109. package/cjs/rules/conditional/forbidden-if-rules.js +112 -0
  110. package/cjs/rules/conditional/forbidden-if-rules.js.map +1 -0
  111. package/cjs/rules/conditional/index.d.ts +10 -0
  112. package/cjs/rules/conditional/index.d.ts.map +1 -0
  113. package/cjs/rules/conditional/present-if-rules.d.ts +45 -0
  114. package/cjs/rules/conditional/present-if-rules.d.ts.map +1 -0
  115. package/cjs/rules/conditional/present-if-rules.js +98 -0
  116. package/cjs/rules/conditional/present-if-rules.js.map +1 -0
  117. package/cjs/rules/conditional/present-unless-rules.d.ts +11 -0
  118. package/cjs/rules/conditional/present-unless-rules.d.ts.map +1 -0
  119. package/cjs/rules/conditional/present-unless-rules.js +20 -0
  120. package/cjs/rules/conditional/present-unless-rules.js.map +1 -0
  121. package/cjs/rules/conditional/present-with-rules.d.ts +26 -0
  122. package/cjs/rules/conditional/present-with-rules.d.ts.map +1 -0
  123. package/cjs/rules/conditional/present-with-rules.js +63 -0
  124. package/cjs/rules/conditional/present-with-rules.js.map +1 -0
  125. package/cjs/rules/conditional/present-without-rules.d.ts +26 -0
  126. package/cjs/rules/conditional/present-without-rules.d.ts.map +1 -0
  127. package/cjs/rules/conditional/present-without-rules.js +63 -0
  128. package/cjs/rules/conditional/present-without-rules.js.map +1 -0
  129. package/cjs/rules/conditional/required-if-rules.d.ts +45 -0
  130. package/cjs/rules/conditional/required-if-rules.d.ts.map +1 -0
  131. package/cjs/rules/conditional/required-if-rules.js +98 -0
  132. package/cjs/rules/conditional/required-if-rules.js.map +1 -0
  133. package/cjs/rules/conditional/required-unless-rules.d.ts +11 -0
  134. package/cjs/rules/conditional/required-unless-rules.d.ts.map +1 -0
  135. package/cjs/rules/conditional/required-unless-rules.js +20 -0
  136. package/cjs/rules/conditional/required-unless-rules.js.map +1 -0
  137. package/cjs/rules/conditional/required-with-rules.d.ts +26 -0
  138. package/cjs/rules/conditional/required-with-rules.d.ts.map +1 -0
  139. package/cjs/rules/conditional/required-with-rules.js +63 -0
  140. package/cjs/rules/conditional/required-with-rules.js.map +1 -0
  141. package/cjs/rules/conditional/required-without-rules.d.ts +26 -0
  142. package/cjs/rules/conditional/required-without-rules.d.ts.map +1 -0
  143. package/cjs/rules/conditional/required-without-rules.js +63 -0
  144. package/cjs/rules/conditional/required-without-rules.js.map +1 -0
  145. package/cjs/rules/core/equal.d.ts +8 -0
  146. package/cjs/rules/core/equal.d.ts.map +1 -0
  147. package/cjs/rules/core/equal.js +13 -0
  148. package/cjs/rules/core/equal.js.map +1 -0
  149. package/cjs/rules/core/forbidden.d.ts +6 -0
  150. package/cjs/rules/core/forbidden.d.ts.map +1 -0
  151. package/cjs/rules/core/forbidden.js +13 -0
  152. package/cjs/rules/core/forbidden.js.map +1 -0
  153. package/cjs/rules/core/index.d.ts +6 -0
  154. package/cjs/rules/core/index.d.ts.map +1 -0
  155. package/cjs/rules/core/required.d.ts +11 -0
  156. package/cjs/rules/core/required.d.ts.map +1 -0
  157. package/cjs/rules/core/required.js +31 -0
  158. package/cjs/rules/core/required.js.map +1 -0
  159. package/cjs/rules/core/union.d.ts +9 -0
  160. package/cjs/rules/core/union.d.ts.map +1 -0
  161. package/cjs/rules/core/union.js +40 -0
  162. package/cjs/rules/core/union.js.map +1 -0
  163. package/cjs/rules/core/when.d.ts +6 -0
  164. package/cjs/rules/core/when.d.ts.map +1 -0
  165. package/cjs/rules/core/when.js +40 -0
  166. package/cjs/rules/core/when.js.map +1 -0
  167. package/cjs/rules/date/date-comparison-rules.d.ts +25 -0
  168. package/cjs/rules/date/date-comparison-rules.d.ts.map +1 -0
  169. package/cjs/rules/date/date-comparison-rules.js +78 -0
  170. package/cjs/rules/date/date-comparison-rules.js.map +1 -0
  171. package/cjs/rules/date/date-day-rules.d.ts +21 -0
  172. package/cjs/rules/date/date-day-rules.d.ts.map +1 -0
  173. package/cjs/rules/date/date-day-rules.js +65 -0
  174. package/cjs/rules/date/date-day-rules.js.map +1 -0
  175. package/cjs/rules/date/date-field-comparison-rules.d.ts +28 -0
  176. package/cjs/rules/date/date-field-comparison-rules.d.ts.map +1 -0
  177. package/cjs/rules/date/date-field-comparison-rules.js +90 -0
  178. package/cjs/rules/date/date-field-comparison-rules.js.map +1 -0
  179. package/cjs/rules/date/date-period-rules.d.ts +108 -0
  180. package/cjs/rules/date/date-period-rules.d.ts.map +1 -0
  181. package/cjs/rules/date/date-period-rules.js +566 -0
  182. package/cjs/rules/date/date-period-rules.js.map +1 -0
  183. package/cjs/rules/date/date-relative-rules.d.ts +20 -0
  184. package/cjs/rules/date/date-relative-rules.d.ts.map +1 -0
  185. package/cjs/rules/date/date-relative-rules.js +57 -0
  186. package/cjs/rules/date/date-relative-rules.js.map +1 -0
  187. package/cjs/rules/date/date-special-rules.d.ts +20 -0
  188. package/cjs/rules/date/date-special-rules.d.ts.map +1 -0
  189. package/cjs/rules/date/date-special-rules.js +72 -0
  190. package/cjs/rules/date/date-special-rules.js.map +1 -0
  191. package/cjs/rules/date/date.d.ts +93 -0
  192. package/cjs/rules/date/date.d.ts.map +1 -0
  193. package/cjs/rules/date/date.js +279 -0
  194. package/cjs/rules/date/date.js.map +1 -0
  195. package/cjs/rules/date/index.d.ts +8 -0
  196. package/cjs/rules/date/index.d.ts.map +1 -0
  197. package/cjs/rules/file/dimensions.d.ts +26 -0
  198. package/cjs/rules/file/dimensions.d.ts.map +1 -0
  199. package/cjs/rules/file/dimensions.js +56 -0
  200. package/cjs/rules/file/dimensions.js.map +1 -0
  201. package/cjs/rules/file/file-size.d.ts +14 -0
  202. package/cjs/rules/file/file-size.d.ts.map +1 -0
  203. package/cjs/rules/file/file-size.js +48 -0
  204. package/cjs/rules/file/file-size.js.map +1 -0
  205. package/cjs/rules/file/index.d.ts +11 -0
  206. package/cjs/rules/file/index.d.ts.map +1 -0
  207. package/cjs/rules/index.d.ts +19 -0
  208. package/cjs/rules/index.d.ts.map +1 -0
  209. package/cjs/rules/length/index.d.ts +2 -0
  210. package/cjs/rules/length/index.d.ts.map +1 -0
  211. package/cjs/rules/length/length-rules.d.ts +49 -0
  212. package/cjs/rules/length/length-rules.d.ts.map +1 -0
  213. package/cjs/rules/length/length-rules.js +116 -0
  214. package/cjs/rules/length/length-rules.js.map +1 -0
  215. package/cjs/rules/number/index.d.ts +2 -0
  216. package/cjs/rules/number/index.d.ts.map +1 -0
  217. package/cjs/rules/number/number-rules.d.ts +65 -0
  218. package/cjs/rules/number/number-rules.d.ts.map +1 -0
  219. package/cjs/rules/number/number-rules.js +234 -0
  220. package/cjs/rules/number/number-rules.js.map +1 -0
  221. package/cjs/rules/scalar/accepted-rule.d.ts +39 -0
  222. package/cjs/rules/scalar/accepted-rule.d.ts.map +1 -0
  223. package/cjs/rules/scalar/accepted-rule.js +110 -0
  224. package/cjs/rules/scalar/accepted-rule.js.map +1 -0
  225. package/cjs/rules/scalar/declined-rule.d.ts +39 -0
  226. package/cjs/rules/scalar/declined-rule.d.ts.map +1 -0
  227. package/cjs/rules/scalar/declined-rule.js +110 -0
  228. package/cjs/rules/scalar/declined-rule.js.map +1 -0
  229. package/cjs/rules/scalar/index.d.ts +3 -0
  230. package/cjs/rules/scalar/index.d.ts.map +1 -0
  231. package/cjs/rules/string/alpha.d.ts +14 -0
  232. package/cjs/rules/string/alpha.d.ts.map +1 -0
  233. package/cjs/rules/string/alpha.js +39 -0
  234. package/cjs/rules/string/alpha.js.map +1 -0
  235. package/cjs/rules/string/credit-card.d.ts +6 -0
  236. package/cjs/rules/string/credit-card.d.ts.map +1 -0
  237. package/cjs/rules/string/credit-card.js +31 -0
  238. package/cjs/rules/string/credit-card.js.map +1 -0
  239. package/cjs/rules/string/email.d.ts +6 -0
  240. package/cjs/rules/string/email.d.ts.map +1 -0
  241. package/cjs/rules/string/email.js +13 -0
  242. package/cjs/rules/string/email.js.map +1 -0
  243. package/cjs/rules/string/index.d.ts +17 -0
  244. package/cjs/rules/string/index.d.ts.map +1 -0
  245. package/cjs/rules/string/ip.d.ts +14 -0
  246. package/cjs/rules/string/ip.d.ts.map +1 -0
  247. package/cjs/rules/string/ip.js +39 -0
  248. package/cjs/rules/string/ip.js.map +1 -0
  249. package/cjs/rules/string/matches.d.ts +8 -0
  250. package/cjs/rules/string/matches.d.ts.map +1 -0
  251. package/cjs/rules/string/matches.js +14 -0
  252. package/cjs/rules/string/matches.js.map +1 -0
  253. package/cjs/rules/string/pattern.d.ts +8 -0
  254. package/cjs/rules/string/pattern.d.ts.map +1 -0
  255. package/cjs/rules/string/pattern.js +13 -0
  256. package/cjs/rules/string/pattern.js.map +1 -0
  257. package/cjs/rules/string/string-comparison.d.ts +26 -0
  258. package/cjs/rules/string/string-comparison.d.ts.map +1 -0
  259. package/cjs/rules/string/string-comparison.js +52 -0
  260. package/cjs/rules/string/string-comparison.js.map +1 -0
  261. package/cjs/rules/string/strong-password-rule.d.ts +14 -0
  262. package/cjs/rules/string/strong-password-rule.d.ts.map +1 -0
  263. package/cjs/rules/string/strong-password-rule.js +38 -0
  264. package/cjs/rules/string/strong-password-rule.js.map +1 -0
  265. package/cjs/rules/string/url.d.ts +6 -0
  266. package/cjs/rules/string/url.d.ts.map +1 -0
  267. package/cjs/rules/string/url.js +16 -0
  268. package/cjs/rules/string/url.js.map +1 -0
  269. package/cjs/rules/string/without-whitespace.d.ts +6 -0
  270. package/cjs/rules/string/without-whitespace.d.ts.map +1 -0
  271. package/cjs/rules/string/without-whitespace.js +13 -0
  272. package/cjs/rules/string/without-whitespace.js.map +1 -0
  273. package/cjs/types/conditional-types.d.ts +15 -0
  274. package/cjs/types/conditional-types.d.ts.map +1 -0
  275. package/cjs/types/context-types.d.ts +48 -0
  276. package/cjs/types/context-types.d.ts.map +1 -0
  277. package/cjs/types/data-transformer-types.d.ts +25 -0
  278. package/cjs/types/data-transformer-types.d.ts.map +1 -0
  279. package/cjs/types/date-types.d.ts +9 -0
  280. package/cjs/types/date-types.d.ts.map +1 -0
  281. package/cjs/types/date-types.js +12 -0
  282. package/cjs/types/date-types.js.map +1 -0
  283. package/cjs/types/file.types.d.ts +5 -0
  284. package/cjs/types/file.types.d.ts.map +1 -0
  285. package/cjs/types/index.d.ts +11 -0
  286. package/cjs/types/index.d.ts.map +1 -0
  287. package/cjs/types/inference-types.d.ts +27 -0
  288. package/cjs/types/inference-types.d.ts.map +1 -0
  289. package/cjs/types/mutator-types.d.ts +27 -0
  290. package/cjs/types/mutator-types.d.ts.map +1 -0
  291. package/cjs/types/result-types.d.ts +19 -0
  292. package/cjs/types/result-types.d.ts.map +1 -0
  293. package/cjs/types/rule-types.d.ts +54 -0
  294. package/cjs/types/rule-types.d.ts.map +1 -0
  295. package/cjs/types/schema-types.d.ts +6 -0
  296. package/cjs/types/schema-types.d.ts.map +1 -0
  297. package/cjs/validators/any-validator.d.ts +7 -0
  298. package/cjs/validators/any-validator.d.ts.map +1 -0
  299. package/cjs/validators/any-validator.js +5 -0
  300. package/cjs/validators/any-validator.js.map +1 -0
  301. package/cjs/validators/array-validator.d.ts +59 -0
  302. package/cjs/validators/array-validator.d.ts.map +1 -0
  303. package/cjs/validators/array-validator.js +134 -0
  304. package/cjs/validators/array-validator.js.map +1 -0
  305. package/cjs/validators/base-validator.d.ts +610 -0
  306. package/cjs/validators/base-validator.d.ts.map +1 -0
  307. package/cjs/validators/base-validator.js +1160 -0
  308. package/cjs/validators/base-validator.js.map +1 -0
  309. package/cjs/validators/boolean-validator.d.ts +47 -0
  310. package/cjs/validators/boolean-validator.d.ts.map +1 -0
  311. package/cjs/validators/boolean-validator.js +54 -0
  312. package/cjs/validators/boolean-validator.js.map +1 -0
  313. package/cjs/validators/computed-validator.d.ts +64 -0
  314. package/cjs/validators/computed-validator.d.ts.map +1 -0
  315. package/cjs/validators/computed-validator.js +109 -0
  316. package/cjs/validators/computed-validator.js.map +1 -0
  317. package/cjs/validators/date-validator.d.ts +307 -0
  318. package/cjs/validators/date-validator.d.ts.map +1 -0
  319. package/cjs/validators/date-validator.js +645 -0
  320. package/cjs/validators/date-validator.js.map +1 -0
  321. package/cjs/validators/float-validator.d.ts +8 -0
  322. package/cjs/validators/float-validator.d.ts.map +1 -0
  323. package/cjs/validators/float-validator.js +9 -0
  324. package/cjs/validators/float-validator.js.map +1 -0
  325. package/cjs/validators/index.d.ts +26 -0
  326. package/cjs/validators/index.d.ts.map +1 -0
  327. package/cjs/validators/int-validator.d.ts +8 -0
  328. package/cjs/validators/int-validator.d.ts.map +1 -0
  329. package/cjs/validators/int-validator.js +9 -0
  330. package/cjs/validators/int-validator.js.map +1 -0
  331. package/cjs/validators/managed-validator.d.ts +38 -0
  332. package/cjs/validators/managed-validator.d.ts.map +1 -0
  333. package/cjs/validators/managed-validator.js +34 -0
  334. package/cjs/validators/managed-validator.js.map +1 -0
  335. package/cjs/validators/number-validator.d.ts +113 -0
  336. package/cjs/validators/number-validator.d.ts.map +1 -0
  337. package/cjs/validators/number-validator.js +192 -0
  338. package/cjs/validators/number-validator.js.map +1 -0
  339. package/cjs/validators/numeric-validator.d.ts +15 -0
  340. package/cjs/validators/numeric-validator.d.ts.map +1 -0
  341. package/cjs/validators/numeric-validator.js +18 -0
  342. package/cjs/validators/numeric-validator.js.map +1 -0
  343. package/cjs/validators/object-validator.d.ts +187 -0
  344. package/cjs/validators/object-validator.d.ts.map +1 -0
  345. package/cjs/validators/object-validator.js +416 -0
  346. package/cjs/validators/object-validator.js.map +1 -0
  347. package/cjs/validators/record-validator.d.ts +33 -0
  348. package/cjs/validators/record-validator.d.ts.map +1 -0
  349. package/cjs/validators/record-validator.js +70 -0
  350. package/cjs/validators/record-validator.js.map +1 -0
  351. package/cjs/validators/scalar-validator.d.ts +82 -0
  352. package/cjs/validators/scalar-validator.d.ts.map +1 -0
  353. package/cjs/validators/scalar-validator.js +160 -0
  354. package/cjs/validators/scalar-validator.js.map +1 -0
  355. package/cjs/validators/string-validator.d.ts +191 -0
  356. package/cjs/validators/string-validator.d.ts.map +1 -0
  357. package/cjs/validators/string-validator.js +410 -0
  358. package/cjs/validators/string-validator.js.map +1 -0
  359. package/cjs/validators/tuple-validator.d.ts +34 -0
  360. package/cjs/validators/tuple-validator.d.ts.map +1 -0
  361. package/cjs/validators/tuple-validator.js +79 -0
  362. package/cjs/validators/tuple-validator.js.map +1 -0
  363. package/cjs/validators/union-validator.d.ts +42 -0
  364. package/cjs/validators/union-validator.d.ts.map +1 -0
  365. package/cjs/validators/union-validator.js +44 -0
  366. package/cjs/validators/union-validator.js.map +1 -0
  367. package/esm/config.d.ts +48 -0
  368. package/esm/config.d.ts.map +1 -0
  369. package/esm/config.js +42 -0
  370. package/esm/config.js.map +1 -0
  371. package/esm/factory/index.d.ts +3 -0
  372. package/esm/factory/index.d.ts.map +1 -0
  373. package/esm/factory/validate.d.ts +8 -0
  374. package/esm/factory/validate.d.ts.map +1 -0
  375. package/esm/factory/validate.js +23 -0
  376. package/esm/factory/validate.js.map +1 -0
  377. package/esm/factory/validators.d.ts +41 -0
  378. package/esm/factory/validators.d.ts.map +1 -0
  379. package/esm/factory/validators.js +45 -0
  380. package/esm/factory/validators.js.map +1 -0
  381. package/esm/helpers/date-helpers.d.ts +16 -0
  382. package/esm/helpers/date-helpers.d.ts.map +1 -0
  383. package/esm/helpers/date-helpers.js +20 -0
  384. package/esm/helpers/date-helpers.js.map +1 -0
  385. package/esm/helpers/file.utils.d.ts +8 -0
  386. package/esm/helpers/file.utils.d.ts.map +1 -0
  387. package/esm/helpers/file.utils.js +29 -0
  388. package/esm/helpers/file.utils.js.map +1 -0
  389. package/esm/helpers/get-field-value.d.ts +37 -0
  390. package/esm/helpers/get-field-value.d.ts.map +1 -0
  391. package/esm/helpers/get-field-value.js +40 -0
  392. package/esm/helpers/get-field-value.js.map +1 -0
  393. package/esm/helpers/index.d.ts +6 -0
  394. package/esm/helpers/index.d.ts.map +1 -0
  395. package/esm/helpers/is-empty-value.d.ts +2 -0
  396. package/esm/helpers/is-empty-value.d.ts.map +1 -0
  397. package/esm/helpers/is-empty-value.js +3 -0
  398. package/esm/helpers/is-empty-value.js.map +1 -0
  399. package/esm/helpers/path-helpers.d.ts +5 -0
  400. package/esm/helpers/path-helpers.d.ts.map +1 -0
  401. package/esm/helpers/path-helpers.js +8 -0
  402. package/esm/helpers/path-helpers.js.map +1 -0
  403. package/esm/helpers/validation-helpers.d.ts +4 -0
  404. package/esm/helpers/validation-helpers.d.ts.map +1 -0
  405. package/esm/helpers/validation-helpers.js +48 -0
  406. package/esm/helpers/validation-helpers.js.map +1 -0
  407. package/esm/index.d.ts +29 -0
  408. package/esm/index.d.ts.map +1 -0
  409. package/esm/index.js +1 -10
  410. package/esm/index.js.map +1 -1
  411. package/esm/mutators/array-mutators.d.ts +12 -0
  412. package/esm/mutators/array-mutators.d.ts.map +1 -0
  413. package/esm/mutators/array-mutators.js +37 -0
  414. package/esm/mutators/array-mutators.js.map +1 -0
  415. package/esm/mutators/date-mutators.d.ts +39 -0
  416. package/esm/mutators/date-mutators.d.ts.map +1 -0
  417. package/esm/mutators/date-mutators.js +120 -0
  418. package/esm/mutators/date-mutators.js.map +1 -0
  419. package/esm/mutators/index.d.ts +7 -0
  420. package/esm/mutators/index.d.ts.map +1 -0
  421. package/esm/mutators/number-mutators.d.ts +9 -0
  422. package/esm/mutators/number-mutators.d.ts.map +1 -0
  423. package/esm/mutators/number-mutators.js +23 -0
  424. package/esm/mutators/number-mutators.js.map +1 -0
  425. package/esm/mutators/object-mutators.d.ts +8 -0
  426. package/esm/mutators/object-mutators.d.ts.map +1 -0
  427. package/esm/mutators/object-mutators.js +50 -0
  428. package/esm/mutators/object-mutators.js.map +1 -0
  429. package/esm/mutators/scalar-mutators.d.ts +3 -0
  430. package/esm/mutators/scalar-mutators.d.ts.map +1 -0
  431. package/esm/mutators/scalar-mutators.js +6 -0
  432. package/esm/mutators/scalar-mutators.js.map +1 -0
  433. package/esm/mutators/string-mutators.d.ts +72 -0
  434. package/esm/mutators/string-mutators.d.ts.map +1 -0
  435. package/esm/mutators/string-mutators.js +193 -0
  436. package/esm/mutators/string-mutators.js.map +1 -0
  437. package/esm/plugins/index.d.ts +7 -0
  438. package/esm/plugins/index.d.ts.map +1 -0
  439. package/esm/plugins/plugin-system.d.ts +71 -0
  440. package/esm/plugins/plugin-system.d.ts.map +1 -0
  441. package/esm/plugins/plugin-system.js +68 -0
  442. package/esm/plugins/plugin-system.js.map +1 -0
  443. package/esm/rules/array/array-rules.d.ts +12 -0
  444. package/esm/rules/array/array-rules.d.ts.map +1 -0
  445. package/esm/rules/array/array-rules.js +44 -0
  446. package/esm/rules/array/array-rules.js.map +1 -0
  447. package/esm/rules/array/index.d.ts +2 -0
  448. package/esm/rules/array/index.d.ts.map +1 -0
  449. package/esm/rules/color/color-rules.d.ts +30 -0
  450. package/esm/rules/color/color-rules.d.ts.map +1 -0
  451. package/esm/rules/color/color-rules.js +120 -0
  452. package/esm/rules/color/color-rules.js.map +1 -0
  453. package/esm/rules/color/index.d.ts +2 -0
  454. package/esm/rules/color/index.d.ts.map +1 -0
  455. package/esm/rules/common/enum.d.ts +26 -0
  456. package/esm/rules/common/enum.d.ts.map +1 -0
  457. package/esm/rules/common/enum.js +55 -0
  458. package/esm/rules/common/enum.js.map +1 -0
  459. package/esm/rules/common/equals-field-rules.d.ts +18 -0
  460. package/esm/rules/common/equals-field-rules.d.ts.map +1 -0
  461. package/esm/rules/common/equals-field-rules.js +38 -0
  462. package/esm/rules/common/equals-field-rules.js.map +1 -0
  463. package/esm/rules/common/index.d.ts +5 -0
  464. package/esm/rules/common/index.d.ts.map +1 -0
  465. package/esm/rules/common/type-rules.d.ts +34 -0
  466. package/esm/rules/common/type-rules.d.ts.map +1 -0
  467. package/esm/rules/common/type-rules.js +104 -0
  468. package/esm/rules/common/type-rules.js.map +1 -0
  469. package/esm/rules/common/unknown-key.d.ts +9 -0
  470. package/esm/rules/common/unknown-key.d.ts.map +1 -0
  471. package/esm/rules/common/unknown-key.js +18 -0
  472. package/esm/rules/common/unknown-key.js.map +1 -0
  473. package/esm/rules/conditional/forbidden-if-rules.d.ts +54 -0
  474. package/esm/rules/conditional/forbidden-if-rules.d.ts.map +1 -0
  475. package/esm/rules/conditional/forbidden-if-rules.js +112 -0
  476. package/esm/rules/conditional/forbidden-if-rules.js.map +1 -0
  477. package/esm/rules/conditional/index.d.ts +10 -0
  478. package/esm/rules/conditional/index.d.ts.map +1 -0
  479. package/esm/rules/conditional/present-if-rules.d.ts +45 -0
  480. package/esm/rules/conditional/present-if-rules.d.ts.map +1 -0
  481. package/esm/rules/conditional/present-if-rules.js +98 -0
  482. package/esm/rules/conditional/present-if-rules.js.map +1 -0
  483. package/esm/rules/conditional/present-unless-rules.d.ts +11 -0
  484. package/esm/rules/conditional/present-unless-rules.d.ts.map +1 -0
  485. package/esm/rules/conditional/present-unless-rules.js +20 -0
  486. package/esm/rules/conditional/present-unless-rules.js.map +1 -0
  487. package/esm/rules/conditional/present-with-rules.d.ts +26 -0
  488. package/esm/rules/conditional/present-with-rules.d.ts.map +1 -0
  489. package/esm/rules/conditional/present-with-rules.js +63 -0
  490. package/esm/rules/conditional/present-with-rules.js.map +1 -0
  491. package/esm/rules/conditional/present-without-rules.d.ts +26 -0
  492. package/esm/rules/conditional/present-without-rules.d.ts.map +1 -0
  493. package/esm/rules/conditional/present-without-rules.js +63 -0
  494. package/esm/rules/conditional/present-without-rules.js.map +1 -0
  495. package/esm/rules/conditional/required-if-rules.d.ts +45 -0
  496. package/esm/rules/conditional/required-if-rules.d.ts.map +1 -0
  497. package/esm/rules/conditional/required-if-rules.js +98 -0
  498. package/esm/rules/conditional/required-if-rules.js.map +1 -0
  499. package/esm/rules/conditional/required-unless-rules.d.ts +11 -0
  500. package/esm/rules/conditional/required-unless-rules.d.ts.map +1 -0
  501. package/esm/rules/conditional/required-unless-rules.js +20 -0
  502. package/esm/rules/conditional/required-unless-rules.js.map +1 -0
  503. package/esm/rules/conditional/required-with-rules.d.ts +26 -0
  504. package/esm/rules/conditional/required-with-rules.d.ts.map +1 -0
  505. package/esm/rules/conditional/required-with-rules.js +63 -0
  506. package/esm/rules/conditional/required-with-rules.js.map +1 -0
  507. package/esm/rules/conditional/required-without-rules.d.ts +26 -0
  508. package/esm/rules/conditional/required-without-rules.d.ts.map +1 -0
  509. package/esm/rules/conditional/required-without-rules.js +63 -0
  510. package/esm/rules/conditional/required-without-rules.js.map +1 -0
  511. package/esm/rules/core/equal.d.ts +8 -0
  512. package/esm/rules/core/equal.d.ts.map +1 -0
  513. package/esm/rules/core/equal.js +13 -0
  514. package/esm/rules/core/equal.js.map +1 -0
  515. package/esm/rules/core/forbidden.d.ts +6 -0
  516. package/esm/rules/core/forbidden.d.ts.map +1 -0
  517. package/esm/rules/core/forbidden.js +13 -0
  518. package/esm/rules/core/forbidden.js.map +1 -0
  519. package/esm/rules/core/index.d.ts +6 -0
  520. package/esm/rules/core/index.d.ts.map +1 -0
  521. package/esm/rules/core/required.d.ts +11 -0
  522. package/esm/rules/core/required.d.ts.map +1 -0
  523. package/esm/rules/core/required.js +31 -0
  524. package/esm/rules/core/required.js.map +1 -0
  525. package/esm/rules/core/union.d.ts +9 -0
  526. package/esm/rules/core/union.d.ts.map +1 -0
  527. package/esm/rules/core/union.js +40 -0
  528. package/esm/rules/core/union.js.map +1 -0
  529. package/esm/rules/core/when.d.ts +6 -0
  530. package/esm/rules/core/when.d.ts.map +1 -0
  531. package/esm/rules/core/when.js +40 -0
  532. package/esm/rules/core/when.js.map +1 -0
  533. package/esm/rules/date/date-comparison-rules.d.ts +25 -0
  534. package/esm/rules/date/date-comparison-rules.d.ts.map +1 -0
  535. package/esm/rules/date/date-comparison-rules.js +78 -0
  536. package/esm/rules/date/date-comparison-rules.js.map +1 -0
  537. package/esm/rules/date/date-day-rules.d.ts +21 -0
  538. package/esm/rules/date/date-day-rules.d.ts.map +1 -0
  539. package/esm/rules/date/date-day-rules.js +65 -0
  540. package/esm/rules/date/date-day-rules.js.map +1 -0
  541. package/esm/rules/date/date-field-comparison-rules.d.ts +28 -0
  542. package/esm/rules/date/date-field-comparison-rules.d.ts.map +1 -0
  543. package/esm/rules/date/date-field-comparison-rules.js +90 -0
  544. package/esm/rules/date/date-field-comparison-rules.js.map +1 -0
  545. package/esm/rules/date/date-period-rules.d.ts +108 -0
  546. package/esm/rules/date/date-period-rules.d.ts.map +1 -0
  547. package/esm/rules/date/date-period-rules.js +566 -0
  548. package/esm/rules/date/date-period-rules.js.map +1 -0
  549. package/esm/rules/date/date-relative-rules.d.ts +20 -0
  550. package/esm/rules/date/date-relative-rules.d.ts.map +1 -0
  551. package/esm/rules/date/date-relative-rules.js +57 -0
  552. package/esm/rules/date/date-relative-rules.js.map +1 -0
  553. package/esm/rules/date/date-special-rules.d.ts +20 -0
  554. package/esm/rules/date/date-special-rules.d.ts.map +1 -0
  555. package/esm/rules/date/date-special-rules.js +72 -0
  556. package/esm/rules/date/date-special-rules.js.map +1 -0
  557. package/esm/rules/date/date.d.ts +93 -0
  558. package/esm/rules/date/date.d.ts.map +1 -0
  559. package/esm/rules/date/date.js +279 -0
  560. package/esm/rules/date/date.js.map +1 -0
  561. package/esm/rules/date/index.d.ts +8 -0
  562. package/esm/rules/date/index.d.ts.map +1 -0
  563. package/esm/rules/file/dimensions.d.ts +26 -0
  564. package/esm/rules/file/dimensions.d.ts.map +1 -0
  565. package/esm/rules/file/dimensions.js +56 -0
  566. package/esm/rules/file/dimensions.js.map +1 -0
  567. package/esm/rules/file/file-size.d.ts +14 -0
  568. package/esm/rules/file/file-size.d.ts.map +1 -0
  569. package/esm/rules/file/file-size.js +48 -0
  570. package/esm/rules/file/file-size.js.map +1 -0
  571. package/esm/rules/file/index.d.ts +11 -0
  572. package/esm/rules/file/index.d.ts.map +1 -0
  573. package/esm/rules/index.d.ts +19 -0
  574. package/esm/rules/index.d.ts.map +1 -0
  575. package/esm/rules/length/index.d.ts +2 -0
  576. package/esm/rules/length/index.d.ts.map +1 -0
  577. package/esm/rules/length/length-rules.d.ts +49 -0
  578. package/esm/rules/length/length-rules.d.ts.map +1 -0
  579. package/esm/rules/length/length-rules.js +116 -0
  580. package/esm/rules/length/length-rules.js.map +1 -0
  581. package/esm/rules/number/index.d.ts +2 -0
  582. package/esm/rules/number/index.d.ts.map +1 -0
  583. package/esm/rules/number/number-rules.d.ts +65 -0
  584. package/esm/rules/number/number-rules.d.ts.map +1 -0
  585. package/esm/rules/number/number-rules.js +234 -0
  586. package/esm/rules/number/number-rules.js.map +1 -0
  587. package/esm/rules/scalar/accepted-rule.d.ts +39 -0
  588. package/esm/rules/scalar/accepted-rule.d.ts.map +1 -0
  589. package/esm/rules/scalar/accepted-rule.js +110 -0
  590. package/esm/rules/scalar/accepted-rule.js.map +1 -0
  591. package/esm/rules/scalar/declined-rule.d.ts +39 -0
  592. package/esm/rules/scalar/declined-rule.d.ts.map +1 -0
  593. package/esm/rules/scalar/declined-rule.js +110 -0
  594. package/esm/rules/scalar/declined-rule.js.map +1 -0
  595. package/esm/rules/scalar/index.d.ts +3 -0
  596. package/esm/rules/scalar/index.d.ts.map +1 -0
  597. package/esm/rules/string/alpha.d.ts +14 -0
  598. package/esm/rules/string/alpha.d.ts.map +1 -0
  599. package/esm/rules/string/alpha.js +39 -0
  600. package/esm/rules/string/alpha.js.map +1 -0
  601. package/esm/rules/string/credit-card.d.ts +6 -0
  602. package/esm/rules/string/credit-card.d.ts.map +1 -0
  603. package/esm/rules/string/credit-card.js +31 -0
  604. package/esm/rules/string/credit-card.js.map +1 -0
  605. package/esm/rules/string/email.d.ts +6 -0
  606. package/esm/rules/string/email.d.ts.map +1 -0
  607. package/esm/rules/string/email.js +13 -0
  608. package/esm/rules/string/email.js.map +1 -0
  609. package/esm/rules/string/index.d.ts +17 -0
  610. package/esm/rules/string/index.d.ts.map +1 -0
  611. package/esm/rules/string/ip.d.ts +14 -0
  612. package/esm/rules/string/ip.d.ts.map +1 -0
  613. package/esm/rules/string/ip.js +39 -0
  614. package/esm/rules/string/ip.js.map +1 -0
  615. package/esm/rules/string/matches.d.ts +8 -0
  616. package/esm/rules/string/matches.d.ts.map +1 -0
  617. package/esm/rules/string/matches.js +14 -0
  618. package/esm/rules/string/matches.js.map +1 -0
  619. package/esm/rules/string/pattern.d.ts +8 -0
  620. package/esm/rules/string/pattern.d.ts.map +1 -0
  621. package/esm/rules/string/pattern.js +13 -0
  622. package/esm/rules/string/pattern.js.map +1 -0
  623. package/esm/rules/string/string-comparison.d.ts +26 -0
  624. package/esm/rules/string/string-comparison.d.ts.map +1 -0
  625. package/esm/rules/string/string-comparison.js +52 -0
  626. package/esm/rules/string/string-comparison.js.map +1 -0
  627. package/esm/rules/string/strong-password-rule.d.ts +14 -0
  628. package/esm/rules/string/strong-password-rule.d.ts.map +1 -0
  629. package/esm/rules/string/strong-password-rule.js +38 -0
  630. package/esm/rules/string/strong-password-rule.js.map +1 -0
  631. package/esm/rules/string/url.d.ts +6 -0
  632. package/esm/rules/string/url.d.ts.map +1 -0
  633. package/esm/rules/string/url.js +16 -0
  634. package/esm/rules/string/url.js.map +1 -0
  635. package/esm/rules/string/without-whitespace.d.ts +6 -0
  636. package/esm/rules/string/without-whitespace.d.ts.map +1 -0
  637. package/esm/rules/string/without-whitespace.js +13 -0
  638. package/esm/rules/string/without-whitespace.js.map +1 -0
  639. package/esm/types/conditional-types.d.ts +15 -0
  640. package/esm/types/conditional-types.d.ts.map +1 -0
  641. package/esm/types/context-types.d.ts +48 -0
  642. package/esm/types/context-types.d.ts.map +1 -0
  643. package/esm/types/data-transformer-types.d.ts +25 -0
  644. package/esm/types/data-transformer-types.d.ts.map +1 -0
  645. package/esm/types/date-types.d.ts +9 -0
  646. package/esm/types/date-types.d.ts.map +1 -0
  647. package/esm/types/date-types.js +12 -0
  648. package/esm/types/date-types.js.map +1 -0
  649. package/esm/types/file.types.d.ts +5 -0
  650. package/esm/types/file.types.d.ts.map +1 -0
  651. package/esm/types/index.d.ts +11 -0
  652. package/esm/types/index.d.ts.map +1 -0
  653. package/esm/types/inference-types.d.ts +27 -0
  654. package/esm/types/inference-types.d.ts.map +1 -0
  655. package/esm/types/mutator-types.d.ts +27 -0
  656. package/esm/types/mutator-types.d.ts.map +1 -0
  657. package/esm/types/result-types.d.ts +19 -0
  658. package/esm/types/result-types.d.ts.map +1 -0
  659. package/esm/types/rule-types.d.ts +54 -0
  660. package/esm/types/rule-types.d.ts.map +1 -0
  661. package/esm/types/schema-types.d.ts +6 -0
  662. package/esm/types/schema-types.d.ts.map +1 -0
  663. package/esm/validators/any-validator.d.ts +7 -0
  664. package/esm/validators/any-validator.d.ts.map +1 -0
  665. package/esm/validators/any-validator.js +5 -0
  666. package/esm/validators/any-validator.js.map +1 -0
  667. package/esm/validators/array-validator.d.ts +59 -0
  668. package/esm/validators/array-validator.d.ts.map +1 -0
  669. package/esm/validators/array-validator.js +134 -0
  670. package/esm/validators/array-validator.js.map +1 -0
  671. package/esm/validators/base-validator.d.ts +610 -0
  672. package/esm/validators/base-validator.d.ts.map +1 -0
  673. package/esm/validators/base-validator.js +1160 -0
  674. package/esm/validators/base-validator.js.map +1 -0
  675. package/esm/validators/boolean-validator.d.ts +47 -0
  676. package/esm/validators/boolean-validator.d.ts.map +1 -0
  677. package/esm/validators/boolean-validator.js +54 -0
  678. package/esm/validators/boolean-validator.js.map +1 -0
  679. package/esm/validators/computed-validator.d.ts +64 -0
  680. package/esm/validators/computed-validator.d.ts.map +1 -0
  681. package/esm/validators/computed-validator.js +109 -0
  682. package/esm/validators/computed-validator.js.map +1 -0
  683. package/esm/validators/date-validator.d.ts +307 -0
  684. package/esm/validators/date-validator.d.ts.map +1 -0
  685. package/esm/validators/date-validator.js +645 -0
  686. package/esm/validators/date-validator.js.map +1 -0
  687. package/esm/validators/float-validator.d.ts +8 -0
  688. package/esm/validators/float-validator.d.ts.map +1 -0
  689. package/esm/validators/float-validator.js +9 -0
  690. package/esm/validators/float-validator.js.map +1 -0
  691. package/esm/validators/index.d.ts +26 -0
  692. package/esm/validators/index.d.ts.map +1 -0
  693. package/esm/validators/int-validator.d.ts +8 -0
  694. package/esm/validators/int-validator.d.ts.map +1 -0
  695. package/esm/validators/int-validator.js +9 -0
  696. package/esm/validators/int-validator.js.map +1 -0
  697. package/esm/validators/managed-validator.d.ts +38 -0
  698. package/esm/validators/managed-validator.d.ts.map +1 -0
  699. package/esm/validators/managed-validator.js +34 -0
  700. package/esm/validators/managed-validator.js.map +1 -0
  701. package/esm/validators/number-validator.d.ts +113 -0
  702. package/esm/validators/number-validator.d.ts.map +1 -0
  703. package/esm/validators/number-validator.js +192 -0
  704. package/esm/validators/number-validator.js.map +1 -0
  705. package/esm/validators/numeric-validator.d.ts +15 -0
  706. package/esm/validators/numeric-validator.d.ts.map +1 -0
  707. package/esm/validators/numeric-validator.js +18 -0
  708. package/esm/validators/numeric-validator.js.map +1 -0
  709. package/esm/validators/object-validator.d.ts +187 -0
  710. package/esm/validators/object-validator.d.ts.map +1 -0
  711. package/esm/validators/object-validator.js +416 -0
  712. package/esm/validators/object-validator.js.map +1 -0
  713. package/esm/validators/record-validator.d.ts +33 -0
  714. package/esm/validators/record-validator.d.ts.map +1 -0
  715. package/esm/validators/record-validator.js +70 -0
  716. package/esm/validators/record-validator.js.map +1 -0
  717. package/esm/validators/scalar-validator.d.ts +82 -0
  718. package/esm/validators/scalar-validator.d.ts.map +1 -0
  719. package/esm/validators/scalar-validator.js +160 -0
  720. package/esm/validators/scalar-validator.js.map +1 -0
  721. package/esm/validators/string-validator.d.ts +191 -0
  722. package/esm/validators/string-validator.d.ts.map +1 -0
  723. package/esm/validators/string-validator.js +410 -0
  724. package/esm/validators/string-validator.js.map +1 -0
  725. package/esm/validators/tuple-validator.d.ts +34 -0
  726. package/esm/validators/tuple-validator.d.ts.map +1 -0
  727. package/esm/validators/tuple-validator.js +79 -0
  728. package/esm/validators/tuple-validator.js.map +1 -0
  729. package/esm/validators/union-validator.d.ts +42 -0
  730. package/esm/validators/union-validator.d.ts.map +1 -0
  731. package/esm/validators/union-validator.js +44 -0
  732. package/esm/validators/union-validator.js.map +1 -0
  733. package/package.json +47 -36
@@ -0,0 +1,187 @@
1
+ import type { Schema, SchemaContext, ValidationResult } from "../types";
2
+ import { BaseValidator } from "./base-validator";
3
+ /**
4
+ * Object validator class with generic schema type for proper type inference
5
+ */
6
+ export declare class ObjectValidator<TSchema extends Schema = Schema> extends BaseValidator {
7
+ schema: TSchema;
8
+ protected shouldAllowUnknown: boolean;
9
+ protected allowedKeys: string[];
10
+ constructor(schema: TSchema, errorMessage?: string);
11
+ /**
12
+ * Check if value is an object type (plain object, not array or date)
13
+ */
14
+ matchesType(value: any): boolean;
15
+ /** Strip unknown keys from the data */
16
+ stripUnknown(): this;
17
+ /** Add list of allowed keys that could be in the data but not necessarily validated */
18
+ allow(...keys: string[]): this;
19
+ /** Trim values of the object properties */
20
+ trim(recursive?: boolean): this;
21
+ /** Whether to allow unknown properties
22
+ * Please note it will allow only unknown direct children keys, not nested children keys
23
+ */
24
+ allowUnknown(allow?: boolean): this;
25
+ /**
26
+ * Create a copy of this object validator with the same configuration
27
+ * Copies schema, rules, mutators, transformers, and object-specific settings
28
+ *
29
+ * @returns A new ObjectValidator instance with copied configuration
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const baseUser = v.object({ name: v.string() }).allowUnknown();
34
+ * const userCopy = baseUser.clone();
35
+ * // userCopy has the same schema and allowUnknown setting
36
+ * ```
37
+ */
38
+ clone(keys?: string[]): this;
39
+ /**
40
+ * Extend this schema with additional fields
41
+ * Clones the current validator and adds new fields to the schema
42
+ * **Keeps original configuration** (allowUnknown, stripUnknown, etc.)
43
+ *
44
+ * If an ObjectValidator is provided, only its schema is used - its configuration is ignored.
45
+ * This is useful for creating reusable field collections that can be added to different schemas.
46
+ *
47
+ * @param schemaOrValidator - Plain schema object or ObjectValidator to extend with
48
+ * @returns A new ObjectValidator with merged schema and original configuration
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * // Extend with plain schema
53
+ * const baseUser = v.object({
54
+ * name: v.string().required(),
55
+ * email: v.string().email().required()
56
+ * }).allowUnknown();
57
+ *
58
+ * const adminUser = baseUser.extend({
59
+ * role: v.string().in(['admin', 'superadmin']).required()
60
+ * });
61
+ * // adminUser has: name, email, role
62
+ * // adminUser keeps: allowUnknown() from base ✅
63
+ *
64
+ * // Extend with ObjectValidator (only schema is used)
65
+ * const auditFields = v.object({
66
+ * createdAt: v.date().required(),
67
+ * updatedAt: v.date().required()
68
+ * }).stripUnknown(); // This config is ignored!
69
+ *
70
+ * const fullUser = baseUser.extend(auditFields);
71
+ * // fullUser has: name, email, createdAt, updatedAt
72
+ * // fullUser keeps: allowUnknown() from base (NOT stripUnknown from auditFields) ✅
73
+ *
74
+ * // Chain multiple extends
75
+ * const complexSchema = baseUser
76
+ * .extend(auditFields)
77
+ * .extend({ metadata: v.object({}) });
78
+ * ```
79
+ */
80
+ extend<TExtension extends Schema>(schemaOrValidator: TExtension | ObjectValidator<TExtension>): ObjectValidator<TSchema & TExtension>;
81
+ /**
82
+ * Merge with another ObjectValidator
83
+ * Clones current validator, merges schemas, and **overrides configuration** with other validator's config
84
+ *
85
+ * Unlike extend(), merge() combines both schemas AND configurations.
86
+ * The other validator's configuration (allowUnknown, stripUnknown, etc.) takes precedence.
87
+ *
88
+ * @param validator - Another ObjectValidator to merge with
89
+ * @returns A new ObjectValidator with merged schema and configuration
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * const baseUser = v.object({
94
+ * name: v.string().required()
95
+ * }).allowUnknown();
96
+ *
97
+ * const timestamps = v.object({
98
+ * createdAt: v.date().required(),
99
+ * updatedAt: v.date().required()
100
+ * }).stripUnknown();
101
+ *
102
+ * const merged = baseUser.merge(timestamps);
103
+ * // merged has: name, createdAt, updatedAt
104
+ * // merged config: stripUnknown() from timestamps (overrides allowUnknown) ✅
105
+ *
106
+ * // Chain multiple merges
107
+ * const full = baseUser.merge(timestamps).merge(softDeleteSchema);
108
+ * ```
109
+ */
110
+ merge<TMerge extends Schema>(validator: ObjectValidator<TMerge>): ObjectValidator<TSchema & TMerge>;
111
+ /**
112
+ * Create a new schema with only the specified fields
113
+ * Clones the current validator and keeps only the selected fields
114
+ * **Preserves all configuration** (allowUnknown, stripUnknown, etc.)
115
+ *
116
+ * @param keys - Field names to keep in the schema
117
+ * @returns A new ObjectValidator with only the picked fields
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * const fullUser = v.object({
122
+ * id: v.int().required(),
123
+ * name: v.string().required(),
124
+ * email: v.string().email().required(),
125
+ * password: v.string().required(),
126
+ * role: v.string()
127
+ * }).allowUnknown();
128
+ *
129
+ * // For login - only need email and password
130
+ * const loginSchema = fullUser.pick('email', 'password');
131
+ * // loginSchema has: { email, password }
132
+ * // loginSchema keeps: allowUnknown() ✅
133
+ *
134
+ * // For public profile
135
+ * const publicSchema = fullUser.pick('id', 'name', 'role');
136
+ * // publicSchema has: { id, name, role }
137
+ * ```
138
+ */
139
+ pick<K extends keyof TSchema>(...keys: K[]): ObjectValidator<Pick<TSchema, K>>;
140
+ /**
141
+ * Create a new schema excluding the specified fields
142
+ * Clones the current validator and removes the specified fields
143
+ * **Preserves all configuration** (allowUnknown, stripUnknown, etc.)
144
+ *
145
+ * @param keys - Field names to exclude from the schema
146
+ * @returns A new ObjectValidator without the excluded fields
147
+ *
148
+ * @example
149
+ * ```ts
150
+ * const fullUser = v.object({
151
+ * id: v.int().required(),
152
+ * name: v.string().required(),
153
+ * email: v.string().email().required(),
154
+ * password: v.string().required(),
155
+ * role: v.string()
156
+ * }).allowUnknown();
157
+ *
158
+ * // For updates - exclude id
159
+ * const updateSchema = fullUser.without('id');
160
+ * // updateSchema has: { name, email, password, role }
161
+ * // updateSchema keeps: allowUnknown() ✅
162
+ *
163
+ * // For public API - exclude sensitive fields
164
+ * const publicSchema = fullUser.without('password', 'role');
165
+ * // publicSchema has: { id, name, email }
166
+ *
167
+ * // Combine with other methods
168
+ * const patchSchema = fullUser.without('id', 'password');
169
+ * // patchSchema has: { name, email, role }
170
+ * ```
171
+ */
172
+ without<K extends keyof TSchema>(...keys: K[]): ObjectValidator<Omit<TSchema, K>>;
173
+ /** Mutate the data */
174
+ mutate(data: any, context: SchemaContext): any;
175
+ /** Validate the data */
176
+ validate(data: any, context: SchemaContext): Promise<ValidationResult>;
177
+ /**
178
+ * Check if a validator is a computed or managed field
179
+ * ManagedValidator extends ComputedValidator, so instanceof catches both
180
+ */
181
+ private isComputedValidator;
182
+ /**
183
+ * Get all computed/managed fields from the schema
184
+ */
185
+ private getComputedFields;
186
+ }
187
+ //# sourceMappingURL=object-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-validator.d.ts","sourceRoot":"","sources":["../../src/validators/object-validator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD;;GAEG;AACH,qBAAa,eAAe,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,aAAa;IAKxE,MAAM,EAAE,OAAO;IAJxB,SAAS,CAAC,kBAAkB,UAAS;IACrC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;gBAG5B,MAAM,EAAE,OAAO,EACtB,YAAY,CAAC,EAAE,MAAM;IAMvB;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIvC,uCAAuC;IAChC,YAAY;IAWnB,uFAAuF;IAChF,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE;IAK9B,2CAA2C;IACpC,IAAI,CAAC,SAAS,UAAO;IAK5B;;OAEG;IACI,YAAY,CAAC,KAAK,UAAO;IAKhC;;;;;;;;;;;;OAYG;IACa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAoB5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACI,MAAM,CAAC,UAAU,SAAS,MAAM,EACrC,iBAAiB,EAAE,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,GAC1D,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC;IAgBxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACI,KAAK,CAAC,MAAM,SAAS,MAAM,EAChC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,GACjC,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC;IAgCpC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAiBrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACI,OAAO,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAiBxF,sBAAsB;IACf,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa;IAK/C,wBAAwB;IACX,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0HnF;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}
@@ -0,0 +1,416 @@
1
+ 'use strict';var reinforcements=require('@mongez/reinforcements'),supportiveIs=require('@mongez/supportive-is'),pathHelpers=require('../helpers/path-helpers.js');require('dayjs');var objectMutators=require('../mutators/object-mutators.js');require('net');var typeRules=require('../rules/common/type-rules.js'),unknownKey=require('../rules/common/unknown-key.js'),baseValidator=require('./base-validator.js'),computedValidator=require('./computed-validator.js');/**
2
+ * Object validator class with generic schema type for proper type inference
3
+ */
4
+ class ObjectValidator extends baseValidator.BaseValidator {
5
+ schema;
6
+ shouldAllowUnknown = false;
7
+ allowedKeys = [];
8
+ constructor(schema, errorMessage) {
9
+ super();
10
+ this.schema = schema;
11
+ this.addRule(typeRules.objectRule, errorMessage);
12
+ }
13
+ /**
14
+ * Check if value is an object type (plain object, not array or date)
15
+ */
16
+ matchesType(value) {
17
+ return supportiveIs.isPlainObject(value);
18
+ }
19
+ /** Strip unknown keys from the data */
20
+ stripUnknown() {
21
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
22
+ const validator = this;
23
+ this.addMutator(objectMutators.stripUnknownMutator, {
24
+ get allowedKeys() {
25
+ return validator.allowedKeys;
26
+ },
27
+ });
28
+ return this;
29
+ }
30
+ /** Add list of allowed keys that could be in the data but not necessarily validated */
31
+ allow(...keys) {
32
+ this.allowedKeys.push(...keys);
33
+ return this;
34
+ }
35
+ /** Trim values of the object properties */
36
+ trim(recursive = true) {
37
+ this.addMutator(objectMutators.objectTrimMutator, { recursive });
38
+ return this;
39
+ }
40
+ /** Whether to allow unknown properties
41
+ * Please note it will allow only unknown direct children keys, not nested children keys
42
+ */
43
+ allowUnknown(allow = true) {
44
+ this.shouldAllowUnknown = allow;
45
+ return this;
46
+ }
47
+ /**
48
+ * Create a copy of this object validator with the same configuration
49
+ * Copies schema, rules, mutators, transformers, and object-specific settings
50
+ *
51
+ * @returns A new ObjectValidator instance with copied configuration
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const baseUser = v.object({ name: v.string() }).allowUnknown();
56
+ * const userCopy = baseUser.clone();
57
+ * // userCopy has the same schema and allowUnknown setting
58
+ * ```
59
+ */
60
+ clone(keys) {
61
+ // Get cloned instance with all BaseValidator properties
62
+ const cloned = super.clone();
63
+ // Clone schema with deep copy of validators
64
+ const newSchema = {};
65
+ for (const key in this.schema) {
66
+ if (keys && !keys.includes(key))
67
+ continue;
68
+ newSchema[key] = this.schema[key].clone();
69
+ }
70
+ cloned.schema = newSchema;
71
+ // Add ObjectValidator-specific properties
72
+ cloned.shouldAllowUnknown = this.shouldAllowUnknown;
73
+ cloned.allowedKeys = [...this.allowedKeys];
74
+ return cloned;
75
+ }
76
+ /**
77
+ * Extend this schema with additional fields
78
+ * Clones the current validator and adds new fields to the schema
79
+ * **Keeps original configuration** (allowUnknown, stripUnknown, etc.)
80
+ *
81
+ * If an ObjectValidator is provided, only its schema is used - its configuration is ignored.
82
+ * This is useful for creating reusable field collections that can be added to different schemas.
83
+ *
84
+ * @param schemaOrValidator - Plain schema object or ObjectValidator to extend with
85
+ * @returns A new ObjectValidator with merged schema and original configuration
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * // Extend with plain schema
90
+ * const baseUser = v.object({
91
+ * name: v.string().required(),
92
+ * email: v.string().email().required()
93
+ * }).allowUnknown();
94
+ *
95
+ * const adminUser = baseUser.extend({
96
+ * role: v.string().in(['admin', 'superadmin']).required()
97
+ * });
98
+ * // adminUser has: name, email, role
99
+ * // adminUser keeps: allowUnknown() from base ✅
100
+ *
101
+ * // Extend with ObjectValidator (only schema is used)
102
+ * const auditFields = v.object({
103
+ * createdAt: v.date().required(),
104
+ * updatedAt: v.date().required()
105
+ * }).stripUnknown(); // This config is ignored!
106
+ *
107
+ * const fullUser = baseUser.extend(auditFields);
108
+ * // fullUser has: name, email, createdAt, updatedAt
109
+ * // fullUser keeps: allowUnknown() from base (NOT stripUnknown from auditFields) ✅
110
+ *
111
+ * // Chain multiple extends
112
+ * const complexSchema = baseUser
113
+ * .extend(auditFields)
114
+ * .extend({ metadata: v.object({}) });
115
+ * ```
116
+ */
117
+ extend(schemaOrValidator) {
118
+ // Clone current validator to preserve original
119
+ const extended = this.clone();
120
+ // Extract schema from parameter
121
+ const schemaToAdd = schemaOrValidator instanceof ObjectValidator ? schemaOrValidator.schema : schemaOrValidator;
122
+ // Merge schemas with cloned validators (later fields override earlier ones)
123
+ for (const key in schemaToAdd) {
124
+ extended.schema[key] = schemaToAdd[key].clone();
125
+ }
126
+ return extended;
127
+ }
128
+ /**
129
+ * Merge with another ObjectValidator
130
+ * Clones current validator, merges schemas, and **overrides configuration** with other validator's config
131
+ *
132
+ * Unlike extend(), merge() combines both schemas AND configurations.
133
+ * The other validator's configuration (allowUnknown, stripUnknown, etc.) takes precedence.
134
+ *
135
+ * @param validator - Another ObjectValidator to merge with
136
+ * @returns A new ObjectValidator with merged schema and configuration
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * const baseUser = v.object({
141
+ * name: v.string().required()
142
+ * }).allowUnknown();
143
+ *
144
+ * const timestamps = v.object({
145
+ * createdAt: v.date().required(),
146
+ * updatedAt: v.date().required()
147
+ * }).stripUnknown();
148
+ *
149
+ * const merged = baseUser.merge(timestamps);
150
+ * // merged has: name, createdAt, updatedAt
151
+ * // merged config: stripUnknown() from timestamps (overrides allowUnknown) ✅
152
+ *
153
+ * // Chain multiple merges
154
+ * const full = baseUser.merge(timestamps).merge(softDeleteSchema);
155
+ * ```
156
+ */
157
+ merge(validator) {
158
+ // Clone current validator
159
+ const merged = this.clone();
160
+ // Merge schemas with cloned validators (later fields override earlier ones)
161
+ for (const key in validator.schema) {
162
+ merged.schema[key] = validator.schema[key].clone();
163
+ }
164
+ // Override configuration with other validator's config
165
+ merged.shouldAllowUnknown = validator.shouldAllowUnknown;
166
+ merged.allowedKeys = [...merged.allowedKeys, ...validator.allowedKeys];
167
+ // Append rules, mutators, transformers from other validator
168
+ merged.rules.push(...validator.rules);
169
+ merged.mutators.push(...validator.mutators);
170
+ merged.dataTransformers.push(...validator.dataTransformers);
171
+ // Merge attributes text (later wins)
172
+ merged.attributesText = {
173
+ ...merged.attributesText,
174
+ ...validator.attributesText,
175
+ };
176
+ merged.translatedAttributes = {
177
+ ...merged.translatedAttributes,
178
+ ...validator.translatedAttributes,
179
+ };
180
+ return merged;
181
+ }
182
+ /**
183
+ * Create a new schema with only the specified fields
184
+ * Clones the current validator and keeps only the selected fields
185
+ * **Preserves all configuration** (allowUnknown, stripUnknown, etc.)
186
+ *
187
+ * @param keys - Field names to keep in the schema
188
+ * @returns A new ObjectValidator with only the picked fields
189
+ *
190
+ * @example
191
+ * ```ts
192
+ * const fullUser = v.object({
193
+ * id: v.int().required(),
194
+ * name: v.string().required(),
195
+ * email: v.string().email().required(),
196
+ * password: v.string().required(),
197
+ * role: v.string()
198
+ * }).allowUnknown();
199
+ *
200
+ * // For login - only need email and password
201
+ * const loginSchema = fullUser.pick('email', 'password');
202
+ * // loginSchema has: { email, password }
203
+ * // loginSchema keeps: allowUnknown() ✅
204
+ *
205
+ * // For public profile
206
+ * const publicSchema = fullUser.pick('id', 'name', 'role');
207
+ * // publicSchema has: { id, name, role }
208
+ * ```
209
+ */
210
+ pick(...keys) {
211
+ // Clone current validator
212
+ const picked = this.clone();
213
+ // Create new schema with only picked keys
214
+ const newSchema = {};
215
+ for (const key of keys) {
216
+ if (key in picked.schema) {
217
+ newSchema[key] = picked.schema[key];
218
+ }
219
+ }
220
+ picked.schema = newSchema;
221
+ return picked;
222
+ }
223
+ /**
224
+ * Create a new schema excluding the specified fields
225
+ * Clones the current validator and removes the specified fields
226
+ * **Preserves all configuration** (allowUnknown, stripUnknown, etc.)
227
+ *
228
+ * @param keys - Field names to exclude from the schema
229
+ * @returns A new ObjectValidator without the excluded fields
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * const fullUser = v.object({
234
+ * id: v.int().required(),
235
+ * name: v.string().required(),
236
+ * email: v.string().email().required(),
237
+ * password: v.string().required(),
238
+ * role: v.string()
239
+ * }).allowUnknown();
240
+ *
241
+ * // For updates - exclude id
242
+ * const updateSchema = fullUser.without('id');
243
+ * // updateSchema has: { name, email, password, role }
244
+ * // updateSchema keeps: allowUnknown() ✅
245
+ *
246
+ * // For public API - exclude sensitive fields
247
+ * const publicSchema = fullUser.without('password', 'role');
248
+ * // publicSchema has: { id, name, email }
249
+ *
250
+ * // Combine with other methods
251
+ * const patchSchema = fullUser.without('id', 'password');
252
+ * // patchSchema has: { name, email, role }
253
+ * ```
254
+ */
255
+ without(...keys) {
256
+ // Clone current validator
257
+ const filtered = this.clone();
258
+ // Create new schema excluding specified keys
259
+ const newSchema = {};
260
+ for (const key in filtered.schema) {
261
+ if (!keys.includes(key)) {
262
+ newSchema[key] = filtered.schema[key];
263
+ }
264
+ }
265
+ filtered.schema = newSchema;
266
+ return filtered;
267
+ }
268
+ /** Mutate the data */
269
+ mutate(data, context) {
270
+ if (!supportiveIs.isPlainObject(data))
271
+ return data;
272
+ return super.mutate({ ...data }, context);
273
+ }
274
+ /** Validate the data */
275
+ async validate(data, context) {
276
+ context.schema = this.schema;
277
+ const mutatedData = await this.mutate(data, context);
278
+ // Check for unknown properties
279
+ if (this.shouldAllowUnknown === false) {
280
+ const rule = this.addRule(unknownKey.unknownKeyRule);
281
+ rule.context.options.allowedKeys = this.allowedKeys;
282
+ rule.context.options.schema = this.schema;
283
+ this.setRuleAttributesList(rule);
284
+ }
285
+ const result = await super.validate(mutatedData, context);
286
+ if (result.isValid === false)
287
+ return result;
288
+ if (data === undefined)
289
+ return result;
290
+ // ═══════════════════════════════════════════════════════════
291
+ // PHASE 1: Validate user input fields (skip computed/managed)
292
+ // ═══════════════════════════════════════════════════════════
293
+ const errors = [];
294
+ const validatedData = {};
295
+ const userInputKeys = Object.keys(this.schema).filter((key) => !this.isComputedValidator(this.schema[key]));
296
+ const validationPromises = userInputKeys.map(async (key) => {
297
+ const validator = this.schema[key];
298
+ const value = mutatedData?.[key] !== undefined ? mutatedData[key] : validator.getDefaultValue();
299
+ const childContext = {
300
+ ...context,
301
+ parent: mutatedData,
302
+ value,
303
+ key,
304
+ path: pathHelpers.setKeyPath(context.path, key),
305
+ };
306
+ const childResult = await validator.validate(value, childContext);
307
+ // Only include in validated data if not omitted
308
+ if (childResult.data !== undefined && !validator.isOmitted()) {
309
+ validatedData[key] = childResult.data;
310
+ }
311
+ if (childResult.isValid === false) {
312
+ errors.push(...childResult.errors);
313
+ }
314
+ });
315
+ await Promise.all(validationPromises);
316
+ // If Phase 1 failed, return early
317
+ if (errors.length > 0) {
318
+ return {
319
+ isValid: false,
320
+ errors,
321
+ data: undefined,
322
+ };
323
+ }
324
+ // ═══════════════════════════════════════════════════════════
325
+ // PHASE 2: Execute computed/managed fields with validated data
326
+ // ═══════════════════════════════════════════════════════════
327
+ const computedFields = this.getComputedFields();
328
+ const computedPromises = Object.keys(computedFields).map(async (key) => {
329
+ const validator = computedFields[key];
330
+ const childContext = {
331
+ ...context,
332
+ parent: validatedData,
333
+ value: undefined, // Computed fields don't have input value
334
+ };
335
+ // Execute computed callback with validated data
336
+ const childResult = await validator.validate(validatedData, childContext);
337
+ // Only include in final data if not omitted
338
+ if (childResult.data !== undefined && !validator.isOmitted()) {
339
+ validatedData[key] = childResult.data;
340
+ }
341
+ if (childResult.isValid === false) {
342
+ errors.push(...childResult.errors);
343
+ }
344
+ });
345
+ await Promise.all(computedPromises);
346
+ // If Phase 2 failed, return early
347
+ if (errors.length > 0) {
348
+ return {
349
+ isValid: false,
350
+ errors,
351
+ data: undefined,
352
+ };
353
+ }
354
+ // Remove undefined values
355
+ const cleanedData = removeUndefinedValues(validatedData);
356
+ const transformedData = await this.startTransformationPipeline(cleanedData, context);
357
+ const output = this.shouldAllowUnknown === false
358
+ ? transformedData
359
+ : {
360
+ ...transformedData,
361
+ ...reinforcements.except(mutatedData, Object.keys(this.schema)),
362
+ };
363
+ return {
364
+ isValid: true,
365
+ errors: [],
366
+ data: output,
367
+ };
368
+ }
369
+ /**
370
+ * Check if a validator is a computed or managed field
371
+ * ManagedValidator extends ComputedValidator, so instanceof catches both
372
+ */
373
+ isComputedValidator(validator) {
374
+ return validator instanceof computedValidator.ComputedValidator;
375
+ }
376
+ /**
377
+ * Get all computed/managed fields from the schema
378
+ */
379
+ getComputedFields() {
380
+ const computed = {};
381
+ for (const [key, validator] of Object.entries(this.schema)) {
382
+ if (validator instanceof computedValidator.ComputedValidator) {
383
+ computed[key] = validator;
384
+ }
385
+ }
386
+ return computed;
387
+ }
388
+ }
389
+ /** Recursively remove undefined values from an object */
390
+ function removeUndefinedValues(obj, visited = new WeakMap()) {
391
+ // Handle primitives and null
392
+ if (obj === null) {
393
+ return obj;
394
+ }
395
+ // Handle arrays
396
+ if (Array.isArray(obj)) {
397
+ return obj.map((item) => removeUndefinedValues(item, visited));
398
+ }
399
+ // Skip non-plain objects (class instances, Dates, Buffers, etc.)
400
+ if (!supportiveIs.isPlainObject(obj)) {
401
+ return obj;
402
+ }
403
+ // Handle circular references - return already processed result
404
+ if (visited.has(obj)) {
405
+ return visited.get(obj);
406
+ }
407
+ // Process plain objects
408
+ const result = {};
409
+ visited.set(obj, result); // Mark as processing BEFORE recursion
410
+ for (const [key, value] of Object.entries(obj)) {
411
+ if (value !== undefined) {
412
+ result[key] = removeUndefinedValues(value, visited);
413
+ }
414
+ }
415
+ return result;
416
+ }exports.ObjectValidator=ObjectValidator;//# sourceMappingURL=object-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-validator.js","sources":["../../src/validators/object-validator.ts"],"sourcesContent":[null],"names":["BaseValidator","objectRule","isPlainObject","stripUnknownMutator","objectTrimMutator","unknownKeyRule","setKeyPath","except","ComputedValidator"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { SchemaContext, ValidationResult } from "../types";
2
+ import { BaseValidator } from "./base-validator";
3
+ /**
4
+ * Record validator class - validates objects with dynamic keys and consistent value types
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * // Translations object
9
+ * v.record(v.string())
10
+ * // Valid: { en: "Hello", ar: "مرحبا", fr: "Bonjour" }
11
+ *
12
+ * // User preferences
13
+ * v.record(v.union([v.string(), v.number(), v.boolean()]))
14
+ * // Valid: { theme: "dark", fontSize: 16, notifications: true }
15
+ * ```
16
+ */
17
+ export declare class RecordValidator extends BaseValidator {
18
+ valueValidator: BaseValidator;
19
+ constructor(valueValidator: BaseValidator, errorMessage?: string);
20
+ /**
21
+ * Check if value is a plain object type
22
+ */
23
+ matchesType(value: any): boolean;
24
+ /**
25
+ * Clone the validator
26
+ */
27
+ clone(): this;
28
+ /**
29
+ * Validate record - iterate all keys and validate each value
30
+ */
31
+ validate(data: any, context: SchemaContext): Promise<ValidationResult>;
32
+ }
33
+ //# sourceMappingURL=record-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-validator.d.ts","sourceRoot":"","sources":["../../src/validators/record-validator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAEvC,cAAc,EAAE,aAAa;gBAA7B,cAAc,EAAE,aAAa,EACpC,YAAY,CAAC,EAAE,MAAM;IAMvB;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIvC;;OAEG;IACa,KAAK,IAAI,IAAI;IAM7B;;OAEG;IACU,QAAQ,CACnB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,gBAAgB,CAAC;CAyC7B"}