@decaf-ts/decorator-validation 1.15.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/lib/cjs/constants/errors.cjs +1 -0
  2. package/lib/cjs/constants/errors.cjs.map +1 -0
  3. package/lib/cjs/constants/index.cjs +1 -0
  4. package/lib/cjs/constants/index.cjs.map +1 -0
  5. package/lib/cjs/constants/validation.cjs +1 -0
  6. package/lib/cjs/constants/validation.cjs.map +1 -0
  7. package/lib/cjs/index.cjs +2 -1
  8. package/lib/cjs/index.cjs.map +1 -0
  9. package/lib/cjs/model/Builder.cjs +49 -48
  10. package/lib/cjs/model/Builder.cjs.map +1 -0
  11. package/lib/cjs/model/Model.cjs +31 -30
  12. package/lib/cjs/model/Model.cjs.map +1 -0
  13. package/lib/cjs/model/ModelErrorDefinition.cjs +1 -0
  14. package/lib/cjs/model/ModelErrorDefinition.cjs.map +1 -0
  15. package/lib/cjs/model/ModelRegistry.cjs +7 -6
  16. package/lib/cjs/model/ModelRegistry.cjs.map +1 -0
  17. package/lib/cjs/model/constants.cjs +2 -13
  18. package/lib/cjs/model/constants.cjs.map +1 -0
  19. package/lib/cjs/model/construction.cjs +5 -4
  20. package/lib/cjs/model/construction.cjs.map +1 -0
  21. package/lib/cjs/model/decorators.cjs +12 -11
  22. package/lib/cjs/model/decorators.cjs.map +1 -0
  23. package/lib/cjs/model/index.cjs +1 -0
  24. package/lib/cjs/model/index.cjs.map +1 -0
  25. package/lib/cjs/model/types.cjs +1 -0
  26. package/lib/cjs/model/types.cjs.map +1 -0
  27. package/lib/cjs/model/utils.cjs +1 -0
  28. package/lib/cjs/model/utils.cjs.map +1 -0
  29. package/lib/cjs/model/validation.cjs +33 -32
  30. package/lib/cjs/model/validation.cjs.map +1 -0
  31. package/lib/cjs/overrides/Metadata.cjs +1 -0
  32. package/lib/cjs/overrides/Metadata.cjs.map +1 -0
  33. package/lib/cjs/overrides/index.cjs +1 -0
  34. package/lib/cjs/overrides/index.cjs.map +1 -0
  35. package/lib/cjs/overrides/overrides.cjs +20 -19
  36. package/lib/cjs/overrides/overrides.cjs.map +1 -0
  37. package/lib/cjs/overrides/types.cjs +1 -0
  38. package/lib/cjs/overrides/types.cjs.map +1 -0
  39. package/lib/cjs/types/index.cjs +1 -0
  40. package/lib/cjs/types/index.cjs.map +1 -0
  41. package/lib/cjs/types/validation.cjs +1 -0
  42. package/lib/cjs/types/{validation.js.map → validation.cjs.map} +1 -1
  43. package/lib/cjs/utils/DateBuilder.cjs +1 -0
  44. package/lib/cjs/utils/DateBuilder.cjs.map +1 -0
  45. package/lib/cjs/utils/PathProxy.cjs +9 -8
  46. package/lib/cjs/utils/PathProxy.cjs.map +1 -0
  47. package/lib/cjs/utils/constants.cjs +2 -21
  48. package/lib/cjs/utils/constants.cjs.map +1 -0
  49. package/lib/cjs/utils/dates.cjs +9 -8
  50. package/lib/cjs/utils/dates.cjs.map +1 -0
  51. package/lib/cjs/utils/equality.cjs +1 -0
  52. package/lib/cjs/utils/equality.cjs.map +1 -0
  53. package/lib/cjs/utils/hashing.cjs +6 -3
  54. package/lib/cjs/utils/hashing.cjs.map +1 -0
  55. package/lib/cjs/utils/index.cjs +1 -0
  56. package/lib/cjs/utils/index.cjs.map +1 -0
  57. package/lib/cjs/utils/registry.cjs +1 -0
  58. package/lib/cjs/utils/registry.cjs.map +1 -0
  59. package/lib/cjs/utils/serialization.cjs +3 -2
  60. package/lib/cjs/utils/serialization.cjs.map +1 -0
  61. package/lib/cjs/utils/serializers.cjs +8 -7
  62. package/lib/cjs/utils/serializers.cjs.map +1 -0
  63. package/lib/cjs/utils/strings.cjs +1 -0
  64. package/lib/cjs/utils/strings.cjs.map +1 -0
  65. package/lib/cjs/utils/types.cjs +1 -0
  66. package/lib/cjs/utils/types.cjs.map +1 -0
  67. package/lib/cjs/validation/Validation.cjs +9 -8
  68. package/lib/cjs/validation/Validation.cjs.map +1 -0
  69. package/lib/cjs/validation/Validators/AsyncValidator.cjs +5 -4
  70. package/lib/cjs/validation/Validators/AsyncValidator.cjs.map +1 -0
  71. package/lib/cjs/validation/Validators/BaseValidator.cjs +8 -7
  72. package/lib/cjs/validation/Validators/BaseValidator.cjs.map +1 -0
  73. package/lib/cjs/validation/Validators/DateValidator.cjs +17 -11
  74. package/lib/cjs/validation/Validators/DateValidator.cjs.map +1 -0
  75. package/lib/cjs/validation/Validators/DiffValidator.cjs +21 -15
  76. package/lib/cjs/validation/Validators/DiffValidator.cjs.map +1 -0
  77. package/lib/cjs/validation/Validators/EmailValidator.cjs +18 -12
  78. package/lib/cjs/validation/Validators/EmailValidator.cjs.map +1 -0
  79. package/lib/cjs/validation/Validators/EqualsValidator.cjs +21 -15
  80. package/lib/cjs/validation/Validators/EqualsValidator.cjs.map +1 -0
  81. package/lib/cjs/validation/Validators/GreaterThanOrEqualValidator.cjs +24 -18
  82. package/lib/cjs/validation/Validators/GreaterThanOrEqualValidator.cjs.map +1 -0
  83. package/lib/cjs/validation/Validators/GreaterThanValidator.cjs +21 -15
  84. package/lib/cjs/validation/Validators/GreaterThanValidator.cjs.map +1 -0
  85. package/lib/cjs/validation/Validators/LessThanOrEqualValidator.cjs +24 -18
  86. package/lib/cjs/validation/Validators/LessThanOrEqualValidator.cjs.map +1 -0
  87. package/lib/cjs/validation/Validators/LessThanValidator.cjs +21 -15
  88. package/lib/cjs/validation/Validators/LessThanValidator.cjs.map +1 -0
  89. package/lib/cjs/validation/Validators/ListValidator.cjs +17 -11
  90. package/lib/cjs/validation/Validators/ListValidator.cjs.map +1 -0
  91. package/lib/cjs/validation/Validators/MaxLengthValidator.cjs +19 -13
  92. package/lib/cjs/validation/Validators/MaxLengthValidator.cjs.map +1 -0
  93. package/lib/cjs/validation/Validators/MaxValidator.cjs +17 -11
  94. package/lib/cjs/validation/Validators/MaxValidator.cjs.map +1 -0
  95. package/lib/cjs/validation/Validators/MinLengthValidator.cjs +19 -13
  96. package/lib/cjs/validation/Validators/MinLengthValidator.cjs.map +1 -0
  97. package/lib/cjs/validation/Validators/MinValidator.cjs +17 -11
  98. package/lib/cjs/validation/Validators/MinValidator.cjs.map +1 -0
  99. package/lib/cjs/validation/Validators/OptionValidator.cjs +17 -11
  100. package/lib/cjs/validation/Validators/OptionValidator.cjs.map +1 -0
  101. package/lib/cjs/validation/Validators/PasswordValidator.cjs +18 -12
  102. package/lib/cjs/validation/Validators/PasswordValidator.cjs.map +1 -0
  103. package/lib/cjs/validation/Validators/PatternValidator.cjs +17 -11
  104. package/lib/cjs/validation/Validators/PatternValidator.cjs.map +1 -0
  105. package/lib/cjs/validation/Validators/RequiredValidator.cjs +17 -11
  106. package/lib/cjs/validation/Validators/RequiredValidator.cjs.map +1 -0
  107. package/lib/cjs/validation/Validators/StepValidator.cjs +17 -11
  108. package/lib/cjs/validation/Validators/StepValidator.cjs.map +1 -0
  109. package/lib/cjs/validation/Validators/TypeValidator.cjs +23 -17
  110. package/lib/cjs/validation/Validators/TypeValidator.cjs.map +1 -0
  111. package/lib/cjs/validation/Validators/URLValidator.cjs +18 -12
  112. package/lib/cjs/validation/Validators/URLValidator.cjs.map +1 -0
  113. package/lib/cjs/validation/Validators/Validator.cjs +5 -4
  114. package/lib/cjs/validation/Validators/Validator.cjs.map +1 -0
  115. package/lib/cjs/validation/Validators/ValidatorRegistry.cjs +4 -3
  116. package/lib/cjs/validation/Validators/ValidatorRegistry.cjs.map +1 -0
  117. package/lib/cjs/validation/Validators/constants.cjs +3 -2
  118. package/lib/cjs/validation/Validators/constants.cjs.map +1 -0
  119. package/lib/cjs/validation/Validators/decorators.cjs +5 -4
  120. package/lib/cjs/validation/Validators/decorators.cjs.map +1 -0
  121. package/lib/cjs/validation/Validators/index.cjs +1 -0
  122. package/lib/cjs/validation/Validators/index.cjs.map +1 -0
  123. package/lib/cjs/validation/Validators/utils.cjs +14 -13
  124. package/lib/cjs/validation/Validators/utils.cjs.map +1 -0
  125. package/lib/cjs/validation/decorators.cjs +70 -69
  126. package/lib/cjs/validation/decorators.cjs.map +1 -0
  127. package/lib/cjs/validation/index.cjs +1 -0
  128. package/lib/cjs/validation/index.cjs.map +1 -0
  129. package/lib/cjs/validation/types.cjs +2 -1
  130. package/lib/cjs/validation/types.cjs.map +1 -0
  131. package/lib/esm/index.js +1 -1
  132. package/lib/types/constants/errors.d.cts +17 -0
  133. package/lib/types/constants/errors.d.mts +17 -0
  134. package/lib/types/constants/index.d.cts +2 -0
  135. package/lib/types/constants/index.d.mts +2 -0
  136. package/lib/types/constants/validation.d.cts +16 -0
  137. package/lib/types/constants/validation.d.mts +16 -0
  138. package/lib/types/index.d.cts +20 -0
  139. package/lib/types/index.d.mts +20 -0
  140. package/lib/types/index.d.ts +1 -1
  141. package/lib/types/model/Builder.d.cts +86 -0
  142. package/lib/types/model/Builder.d.mts +86 -0
  143. package/lib/types/model/Model.d.cts +286 -0
  144. package/lib/types/model/Model.d.mts +286 -0
  145. package/lib/types/model/ModelErrorDefinition.d.cts +22 -0
  146. package/lib/types/model/ModelErrorDefinition.d.mts +22 -0
  147. package/lib/types/model/ModelRegistry.d.cts +181 -0
  148. package/lib/types/model/ModelRegistry.d.mts +181 -0
  149. package/lib/types/model/constants.d.cts +65 -0
  150. package/lib/types/model/constants.d.mts +65 -0
  151. package/lib/types/model/construction.d.cts +46 -0
  152. package/lib/types/model/construction.d.mts +46 -0
  153. package/lib/types/model/decorators.d.cts +47 -0
  154. package/lib/types/model/decorators.d.mts +47 -0
  155. package/lib/types/model/index.d.cts +10 -0
  156. package/lib/types/model/index.d.mts +10 -0
  157. package/lib/types/model/types.d.cts +145 -0
  158. package/lib/types/model/types.d.mts +145 -0
  159. package/lib/types/model/utils.d.cts +13 -0
  160. package/lib/types/model/utils.d.mts +13 -0
  161. package/lib/types/model/validation.d.cts +92 -0
  162. package/lib/types/model/validation.d.mts +92 -0
  163. package/lib/types/overrides/Metadata.d.cts +132 -0
  164. package/lib/types/overrides/Metadata.d.mts +132 -0
  165. package/lib/types/overrides/index.d.cts +4 -0
  166. package/lib/types/overrides/index.d.mts +4 -0
  167. package/lib/types/overrides/overrides.d.cts +1 -0
  168. package/lib/types/overrides/overrides.d.mts +1 -0
  169. package/lib/types/overrides/types.d.cts +17 -0
  170. package/lib/types/overrides/types.d.mts +17 -0
  171. package/lib/types/types/index.d.cts +1 -0
  172. package/lib/types/types/index.d.mts +1 -0
  173. package/lib/types/types/validation.d.cts +28 -0
  174. package/lib/types/types/validation.d.mts +28 -0
  175. package/lib/types/utils/DateBuilder.d.cts +121 -0
  176. package/lib/types/utils/DateBuilder.d.mts +121 -0
  177. package/lib/types/utils/PathProxy.d.cts +43 -0
  178. package/lib/types/utils/PathProxy.d.mts +43 -0
  179. package/lib/types/utils/constants.d.cts +32 -0
  180. package/lib/types/utils/constants.d.mts +32 -0
  181. package/lib/types/utils/dates.d.cts +86 -0
  182. package/lib/types/utils/dates.d.mts +86 -0
  183. package/lib/types/utils/equality.d.cts +56 -0
  184. package/lib/types/utils/equality.d.mts +56 -0
  185. package/lib/types/utils/hashing.d.cts +82 -0
  186. package/lib/types/utils/hashing.d.mts +82 -0
  187. package/lib/types/utils/index.d.cts +11 -0
  188. package/lib/types/utils/index.d.mts +11 -0
  189. package/lib/types/utils/registry.d.cts +68 -0
  190. package/lib/types/utils/registry.d.mts +68 -0
  191. package/lib/types/utils/serialization.d.cts +12 -0
  192. package/lib/types/utils/serialization.d.mts +12 -0
  193. package/lib/types/utils/serializers.d.cts +41 -0
  194. package/lib/types/utils/serializers.d.mts +41 -0
  195. package/lib/types/utils/strings.d.cts +25 -0
  196. package/lib/types/utils/strings.d.mts +25 -0
  197. package/lib/types/utils/types.d.cts +35 -0
  198. package/lib/types/utils/types.d.mts +35 -0
  199. package/lib/types/validation/Validation.d.cts +53 -0
  200. package/lib/types/validation/Validation.d.mts +53 -0
  201. package/lib/types/validation/Validators/AsyncValidator.d.cts +72 -0
  202. package/lib/types/validation/Validators/AsyncValidator.d.mts +72 -0
  203. package/lib/types/validation/Validators/BaseValidator.d.cts +118 -0
  204. package/lib/types/validation/Validators/BaseValidator.d.mts +118 -0
  205. package/lib/types/validation/Validators/DateValidator.d.cts +60 -0
  206. package/lib/types/validation/Validators/DateValidator.d.mts +60 -0
  207. package/lib/types/validation/Validators/DiffValidator.d.cts +29 -0
  208. package/lib/types/validation/Validators/DiffValidator.d.mts +29 -0
  209. package/lib/types/validation/Validators/EmailValidator.d.cts +60 -0
  210. package/lib/types/validation/Validators/EmailValidator.d.mts +60 -0
  211. package/lib/types/validation/Validators/EqualsValidator.d.cts +29 -0
  212. package/lib/types/validation/Validators/EqualsValidator.d.mts +29 -0
  213. package/lib/types/validation/Validators/GreaterThanOrEqualValidator.d.cts +29 -0
  214. package/lib/types/validation/Validators/GreaterThanOrEqualValidator.d.mts +29 -0
  215. package/lib/types/validation/Validators/GreaterThanValidator.d.cts +29 -0
  216. package/lib/types/validation/Validators/GreaterThanValidator.d.mts +29 -0
  217. package/lib/types/validation/Validators/LessThanOrEqualValidator.d.cts +29 -0
  218. package/lib/types/validation/Validators/LessThanOrEqualValidator.d.mts +29 -0
  219. package/lib/types/validation/Validators/LessThanValidator.d.cts +29 -0
  220. package/lib/types/validation/Validators/LessThanValidator.d.mts +29 -0
  221. package/lib/types/validation/Validators/ListValidator.d.cts +66 -0
  222. package/lib/types/validation/Validators/ListValidator.d.mts +66 -0
  223. package/lib/types/validation/Validators/MaxLengthValidator.d.cts +29 -0
  224. package/lib/types/validation/Validators/MaxLengthValidator.d.mts +29 -0
  225. package/lib/types/validation/Validators/MaxValidator.d.cts +74 -0
  226. package/lib/types/validation/Validators/MaxValidator.d.mts +74 -0
  227. package/lib/types/validation/Validators/MinLengthValidator.d.cts +29 -0
  228. package/lib/types/validation/Validators/MinLengthValidator.d.mts +29 -0
  229. package/lib/types/validation/Validators/MinValidator.d.cts +74 -0
  230. package/lib/types/validation/Validators/MinValidator.d.mts +74 -0
  231. package/lib/types/validation/Validators/OptionValidator.d.cts +29 -0
  232. package/lib/types/validation/Validators/OptionValidator.d.mts +29 -0
  233. package/lib/types/validation/Validators/PasswordValidator.d.cts +28 -0
  234. package/lib/types/validation/Validators/PasswordValidator.d.mts +28 -0
  235. package/lib/types/validation/Validators/PatternValidator.d.cts +103 -0
  236. package/lib/types/validation/Validators/PatternValidator.d.mts +103 -0
  237. package/lib/types/validation/Validators/RequiredValidator.d.cts +74 -0
  238. package/lib/types/validation/Validators/RequiredValidator.d.mts +74 -0
  239. package/lib/types/validation/Validators/StepValidator.d.cts +29 -0
  240. package/lib/types/validation/Validators/StepValidator.d.mts +29 -0
  241. package/lib/types/validation/Validators/TypeValidator.d.cts +79 -0
  242. package/lib/types/validation/Validators/TypeValidator.d.mts +79 -0
  243. package/lib/types/validation/Validators/URLValidator.d.cts +61 -0
  244. package/lib/types/validation/Validators/URLValidator.d.mts +61 -0
  245. package/lib/types/validation/Validators/Validator.d.cts +65 -0
  246. package/lib/types/validation/Validators/Validator.d.mts +65 -0
  247. package/lib/types/validation/Validators/ValidatorRegistry.d.cts +41 -0
  248. package/lib/types/validation/Validators/ValidatorRegistry.d.mts +41 -0
  249. package/lib/types/validation/Validators/constants.d.cts +157 -0
  250. package/lib/types/validation/Validators/constants.d.mts +157 -0
  251. package/lib/types/validation/Validators/decorators.d.cts +12 -0
  252. package/lib/types/validation/Validators/decorators.d.mts +12 -0
  253. package/lib/types/validation/Validators/index.d.cts +26 -0
  254. package/lib/types/validation/Validators/index.d.mts +26 -0
  255. package/lib/types/validation/Validators/utils.d.cts +75 -0
  256. package/lib/types/validation/Validators/utils.d.mts +75 -0
  257. package/lib/types/validation/decorators.d.cts +313 -0
  258. package/lib/types/validation/decorators.d.mts +313 -0
  259. package/lib/types/validation/index.d.cts +9 -0
  260. package/lib/types/validation/index.d.mts +9 -0
  261. package/lib/types/validation/types.d.cts +309 -0
  262. package/lib/types/validation/types.d.mts +309 -0
  263. package/package.json +1 -1
  264. package/lib/cjs/constants/errors.js.map +0 -1
  265. package/lib/cjs/constants/index.js.map +0 -1
  266. package/lib/cjs/constants/validation.js.map +0 -1
  267. package/lib/cjs/index.js.map +0 -1
  268. package/lib/cjs/model/Builder.js.map +0 -1
  269. package/lib/cjs/model/Model.js.map +0 -1
  270. package/lib/cjs/model/ModelErrorDefinition.js.map +0 -1
  271. package/lib/cjs/model/ModelRegistry.js.map +0 -1
  272. package/lib/cjs/model/constants.js.map +0 -1
  273. package/lib/cjs/model/construction.js.map +0 -1
  274. package/lib/cjs/model/decorators.js.map +0 -1
  275. package/lib/cjs/model/index.js.map +0 -1
  276. package/lib/cjs/model/types.js.map +0 -1
  277. package/lib/cjs/model/utils.js.map +0 -1
  278. package/lib/cjs/model/validation.js.map +0 -1
  279. package/lib/cjs/overrides/Metadata.js.map +0 -1
  280. package/lib/cjs/overrides/index.js.map +0 -1
  281. package/lib/cjs/overrides/overrides.js.map +0 -1
  282. package/lib/cjs/overrides/types.js.map +0 -1
  283. package/lib/cjs/types/index.js.map +0 -1
  284. package/lib/cjs/utils/DateBuilder.js.map +0 -1
  285. package/lib/cjs/utils/PathProxy.js.map +0 -1
  286. package/lib/cjs/utils/constants.js.map +0 -1
  287. package/lib/cjs/utils/dates.js.map +0 -1
  288. package/lib/cjs/utils/equality.js.map +0 -1
  289. package/lib/cjs/utils/hashing.js.map +0 -1
  290. package/lib/cjs/utils/index.js.map +0 -1
  291. package/lib/cjs/utils/registry.js.map +0 -1
  292. package/lib/cjs/utils/serialization.js.map +0 -1
  293. package/lib/cjs/utils/serializers.js.map +0 -1
  294. package/lib/cjs/utils/strings.js.map +0 -1
  295. package/lib/cjs/utils/types.js.map +0 -1
  296. package/lib/cjs/validation/Validation.js.map +0 -1
  297. package/lib/cjs/validation/Validators/AsyncValidator.js.map +0 -1
  298. package/lib/cjs/validation/Validators/BaseValidator.js.map +0 -1
  299. package/lib/cjs/validation/Validators/DateValidator.js.map +0 -1
  300. package/lib/cjs/validation/Validators/DiffValidator.js.map +0 -1
  301. package/lib/cjs/validation/Validators/EmailValidator.js.map +0 -1
  302. package/lib/cjs/validation/Validators/EqualsValidator.js.map +0 -1
  303. package/lib/cjs/validation/Validators/GreaterThanOrEqualValidator.js.map +0 -1
  304. package/lib/cjs/validation/Validators/GreaterThanValidator.js.map +0 -1
  305. package/lib/cjs/validation/Validators/LessThanOrEqualValidator.js.map +0 -1
  306. package/lib/cjs/validation/Validators/LessThanValidator.js.map +0 -1
  307. package/lib/cjs/validation/Validators/ListValidator.js.map +0 -1
  308. package/lib/cjs/validation/Validators/MaxLengthValidator.js.map +0 -1
  309. package/lib/cjs/validation/Validators/MaxValidator.js.map +0 -1
  310. package/lib/cjs/validation/Validators/MinLengthValidator.js.map +0 -1
  311. package/lib/cjs/validation/Validators/MinValidator.js.map +0 -1
  312. package/lib/cjs/validation/Validators/OptionValidator.js.map +0 -1
  313. package/lib/cjs/validation/Validators/PasswordValidator.js.map +0 -1
  314. package/lib/cjs/validation/Validators/PatternValidator.js.map +0 -1
  315. package/lib/cjs/validation/Validators/RequiredValidator.js.map +0 -1
  316. package/lib/cjs/validation/Validators/StepValidator.js.map +0 -1
  317. package/lib/cjs/validation/Validators/TypeValidator.js.map +0 -1
  318. package/lib/cjs/validation/Validators/URLValidator.js.map +0 -1
  319. package/lib/cjs/validation/Validators/Validator.js.map +0 -1
  320. package/lib/cjs/validation/Validators/ValidatorRegistry.js.map +0 -1
  321. package/lib/cjs/validation/Validators/constants.js.map +0 -1
  322. package/lib/cjs/validation/Validators/decorators.js.map +0 -1
  323. package/lib/cjs/validation/Validators/index.js.map +0 -1
  324. package/lib/cjs/validation/Validators/utils.js.map +0 -1
  325. package/lib/cjs/validation/decorators.js.map +0 -1
  326. package/lib/cjs/validation/index.js.map +0 -1
  327. package/lib/cjs/validation/types.js.map +0 -1
@@ -0,0 +1,309 @@
1
+ import { Constructor } from "@decaf-ts/decoration";
2
+ import { ValidationKeys, Validator } from "./Validators/index.cjs";
3
+ import { IRegistry } from "../utils/index.cjs";
4
+ /**
5
+ * @description Type definition for metadata used by validation decorators
6
+ * @summary Defines the structure of metadata attached to properties by validation decorators.
7
+ * This metadata is used during validation to determine validation rules and error messages.
8
+ *
9
+ * @property {any[]} [args] - Optional arguments for the validator
10
+ * @property {string} message - Error message to display when validation fails
11
+ * @property {string[]} [types] - Array of type names that the property can have
12
+ * @property {boolean} async - Indicates whether the validator associated with the decorator performs asynchronous validation logic.
13
+ * Use `true` when the validator returns a Promise, and `false` when the validation is synchronous.
14
+ *
15
+ * @typedef {Object} ValidationMetadata
16
+ * @memberOf module:decorator-validation
17
+ * @category Validation
18
+ */
19
+ export type ValidationMetadata = {
20
+ [indexer: string]: any;
21
+ args?: any[];
22
+ message: string;
23
+ types?: string[];
24
+ async: boolean;
25
+ };
26
+ /**
27
+ * @description Type definition for property-level validation decorator configuration
28
+ * @summary Defines the structure that associates a property with its validation decorators.
29
+ * This type is used to track which decorators are applied to a specific property during validation.
30
+ *
31
+ * @property {string|symbol} prop - The property name or symbol that the decorators are applied to
32
+ * @property {ValidationDecoratorDefinition[]} decorators - Array of decorator definitions applied to the property
33
+ *
34
+ * @typedef {Object} ValidationPropertyDecoratorDefinition
35
+ * @memberOf module:decorator-validation
36
+ * @category Validation
37
+ */
38
+ export type ValidationPropertyDecoratorDefinition = {
39
+ prop: string | symbol;
40
+ decorators: ValidationDecoratorDefinition[];
41
+ async?: boolean;
42
+ };
43
+ /**
44
+ * @description Type definition for individual validation decorator metadata
45
+ * @summary Extends the base DecoratorMetadata type with validation-specific properties.
46
+ * This type represents the metadata for a single validation decorator applied to a property.
47
+ *
48
+ * @property {ValidationElementDefinition} props - The validation element properties and configuration
49
+ *
50
+ * @typedef {Object} ValidationDecoratorDefinition
51
+ * @memberOf module:decorator-validation
52
+ * @category Validation
53
+ */
54
+ export type ValidationDecoratorDefinition = {
55
+ props: ValidationElementDefinition;
56
+ async?: boolean;
57
+ };
58
+ /**
59
+ * @summary Type for a validator element metadata
60
+ * @memberOf module:decorator-validation
61
+ * @category Validation
62
+ */
63
+ export type ValidationElementDefinition = {
64
+ [indexer: string]: any;
65
+ value?: string | number;
66
+ message: string;
67
+ description: string;
68
+ };
69
+ /**
70
+ * @summary Type for a model errors
71
+ * @memberOf module:decorator-validation
72
+ * @category Validation
73
+ */
74
+ export type ModelErrors = Record<string, Record<string, string | undefined>>;
75
+ /**
76
+ * @summary Util type for {@link Validator} configuration
77
+ * @memberOf module:decorator-validation
78
+ * @category Validation
79
+ */
80
+ export type ValidatorDefinition = {
81
+ validator: Constructor<Validator>;
82
+ validationKey: string;
83
+ save: boolean;
84
+ };
85
+ /**
86
+ * @description Interface for a registry that manages validator instances
87
+ * @summary Defines the contract for a registry that stores and retrieves validators.
88
+ * The registry is responsible for maintaining a collection of validators and providing
89
+ * access to them by key.
90
+ *
91
+ * @interface IValidatorRegistry
92
+ * @template T Type of validator, must extend Validator
93
+ * @extends IRegistry<T>
94
+ * @memberOf module:decorator-validation
95
+ * @category Validation
96
+ */
97
+ export interface IValidatorRegistry<T extends Validator> extends IRegistry<T> {
98
+ /**
99
+ * @description Retrieves custom validation keys defined in the registry
100
+ * @summary Returns a mapping of custom validation keys to their corresponding standard keys.
101
+ * This allows for aliasing validation keys for specific use cases.
102
+ *
103
+ * @return {Record<string, string>} Object mapping custom keys to standard validation keys
104
+ */
105
+ getCustomKeys(): Record<string, string>;
106
+ /**
107
+ * @description Gets all registered validator keys
108
+ * @summary Returns an array of all validation keys that have registered validators.
109
+ *
110
+ * @return {string[]} Array of registered validator keys
111
+ */
112
+ getKeys(): string[];
113
+ /**
114
+ * @description Registers one or more validators with the registry
115
+ * @summary Adds validators to the registry, making them available for validation operations.
116
+ * Validators can be provided as instances or as validator definitions.
117
+ *
118
+ * @param {...(T|ValidatorDefinition)} validator - Validator instances or definitions to register
119
+ * @return {void}
120
+ */
121
+ register<T extends Validator>(...validator: (T | ValidatorDefinition)[]): void;
122
+ /**
123
+ * @description Retrieves a validator by its key
124
+ * @summary Looks up a validator in the registry using its validation key.
125
+ * Returns the validator if found, or undefined if no validator is registered for the key.
126
+ *
127
+ * @param {string} key - The validation key to look up, typically one of the {@link ValidationKeys}
128
+ * @return {T|undefined} The registered validator or undefined if none matches the provided key
129
+ */
130
+ get<T extends Validator>(key: string): T | undefined;
131
+ }
132
+ /**
133
+ * @description Base options type for all validators
134
+ * @summary Defines the common properties available to all validators
135
+ * @interface ValidatorOptions
136
+ * @property {string} [message] - Custom error message to display when validation fails
137
+ * @property {boolean} async - Indicates whether the validator associated with the decorator performs asynchronous validation logic.
138
+ * Use `true` when the validator returns a Promise, and `false` when the validation is synchronous.
139
+ * @category Validation
140
+ */
141
+ export interface ValidatorOptions {
142
+ message?: string;
143
+ description?: string;
144
+ async?: boolean;
145
+ }
146
+ /**
147
+ * @description URL validation options interface
148
+ * @summary Defines options for URL validation, including allowed URL types
149
+ * @interface URLValidatorOptions
150
+ * @property {(string|string[]|{ name: string })} types - Specifies the allowed URL types or patterns
151
+ * @category Validation
152
+ */
153
+ export interface URLValidatorOptions extends ValidatorOptions {
154
+ types: string | string[] | {
155
+ name: string;
156
+ };
157
+ }
158
+ /**
159
+ * @description Type validation options interface
160
+ * @summary Defines options for type validation, specifying allowed types
161
+ * @interface TypeValidatorOptions
162
+ * @property {(string|string[]|{ name: string })} type - Specifies the allowed data types
163
+ * @memberOf module:decorator-validation
164
+ * @category Validation
165
+ */
166
+ export interface TypeValidatorOptions extends ValidatorOptions {
167
+ type: string | string[] | {
168
+ name: string;
169
+ };
170
+ customTypes?: (string | (() => string))[];
171
+ }
172
+ /**
173
+ * @description Step validation options interface
174
+ * @summary Defines options for step validation, specifying the step increment
175
+ * @interface StepValidatorOptions
176
+ * @property {(number|string)} [ValidationKeys.STEP] - The step value for numerical validation
177
+ * @memberOf module:decorator-validation
178
+ * @category Validation
179
+ */
180
+ export interface StepValidatorOptions extends ValidatorOptions {
181
+ [ValidationKeys.STEP]: number | string;
182
+ types?: string[];
183
+ }
184
+ /**
185
+ * @description Pattern validation options interface
186
+ * @summary Defines options for pattern validation using regular expressions
187
+ * @interface PatternValidatorOptions
188
+ * @property {(RegExp|string)} [ValidationKeys.PATTERN] - The pattern to match against
189
+ * @memberOf module:decorator-validation
190
+ * @category Validation
191
+ */
192
+ export interface PatternValidatorOptions extends ValidatorOptions {
193
+ [ValidationKeys.PATTERN]?: RegExp | string;
194
+ types?: string[];
195
+ }
196
+ /**
197
+ * @description Minimum value validation options interface
198
+ * @summary Defines options for minimum value validation
199
+ * @interface MinValidatorOptions
200
+ * @property {(number|Date|string)} [ValidationKeys.MIN] - The minimum allowed value
201
+ * @memberOf module:decorator-validation
202
+ * @category Validation
203
+ */
204
+ export interface MinValidatorOptions extends ValidatorOptions {
205
+ [ValidationKeys.MIN]: number | Date | string;
206
+ types?: string[];
207
+ }
208
+ /**
209
+ * @description Minimum length validation options interface
210
+ * @summary Defines options for minimum length validation
211
+ * @interface MinLengthValidatorOptions
212
+ * @property {number} [ValidationKeys.MIN_LENGTH] - The minimum allowed length
213
+ * @memberOf module:decorator-validation
214
+ * @category Validation
215
+ */
216
+ export interface MinLengthValidatorOptions extends ValidatorOptions {
217
+ [ValidationKeys.MIN_LENGTH]: number;
218
+ types?: string[];
219
+ }
220
+ /**
221
+ * @description Maximum value validation options interface
222
+ * @summary Defines options for maximum value validation
223
+ * @interface MaxValidatorOptions
224
+ * @property {(number|Date|string)} [ValidationKeys.MAX] - The maximum allowed value
225
+ * @memberOf module:decorator-validation
226
+ * @category Validation
227
+ */
228
+ export interface MaxValidatorOptions extends ValidatorOptions {
229
+ [ValidationKeys.MAX]: number | Date | string;
230
+ types?: string[];
231
+ }
232
+ /**
233
+ * @description Maximum length validation options interface
234
+ * @summary Defines options for maximum length validation
235
+ * @interface MaxLengthValidatorOptions
236
+ * @property {number} [ValidationKeys.MAX_LENGTH] - The maximum allowed length
237
+ * @memberOf module:decorator-validation
238
+ * @category Validation
239
+ */
240
+ export interface MaxLengthValidatorOptions extends ValidatorOptions {
241
+ [ValidationKeys.MAX_LENGTH]: number;
242
+ types?: string[];
243
+ }
244
+ /**
245
+ * @description List validation options interface
246
+ * @summary Defines options for list validation
247
+ * @interface ListValidatorOptions
248
+ * @property {string[]} clazz - Array of allowed class names or types
249
+ * @memberOf module:decorator-validation
250
+ * @category Validation
251
+ */
252
+ export interface ListValidatorOptions extends ValidatorOptions {
253
+ clazz: (Constructor<any> | (() => Constructor<any>))[];
254
+ }
255
+ /**
256
+ * @description Unique validation options interface
257
+ * @summary Defines options for unique validation
258
+ * @interface UniqueValidatorOptions
259
+ * @property {string[]} unique - Array of allowed class names or types
260
+ * @memberOf module:decorator-validation
261
+ * @category Validation
262
+ */
263
+ export interface UniqueValidatorOptions extends ValidatorOptions {
264
+ [ValidationKeys.UNIQUE]: string[];
265
+ }
266
+ /**
267
+ * @description Date validation options interface
268
+ * @summary Defines options for date validation
269
+ * @interface DateValidatorOptions
270
+ * @property {string} [ValidationKeys.FORMAT] - The expected date format pattern
271
+ * @memberOf module:decorator-validation
272
+ * @category Validation
273
+ */
274
+ export interface DateValidatorOptions extends ValidatorOptions {
275
+ [ValidationKeys.FORMAT]?: string;
276
+ }
277
+ export interface ComparisonValidatorOptions extends ValidatorOptions {
278
+ label?: string;
279
+ }
280
+ export interface EqualsValidatorOptions extends ComparisonValidatorOptions {
281
+ [ValidationKeys.EQUALS]: string;
282
+ }
283
+ export interface DiffValidatorOptions extends ComparisonValidatorOptions {
284
+ [ValidationKeys.DIFF]: string;
285
+ }
286
+ export interface LessThanValidatorOptions extends ComparisonValidatorOptions {
287
+ [ValidationKeys.LESS_THAN]: string;
288
+ }
289
+ export interface LessThanOrEqualValidatorOptions extends ComparisonValidatorOptions {
290
+ [ValidationKeys.LESS_THAN_OR_EQUAL]: string;
291
+ }
292
+ export interface GreaterThanValidatorOptions extends ComparisonValidatorOptions {
293
+ [ValidationKeys.GREATER_THAN]: string;
294
+ }
295
+ export interface GreaterThanOrEqualValidatorOptions extends ComparisonValidatorOptions {
296
+ [ValidationKeys.GREATER_THAN_OR_EQUAL]: string;
297
+ }
298
+ /**
299
+ * @description Enum validation options interface
300
+ * @summary Defines options for enum validation
301
+ * @interface EnumValidatorOptions
302
+ * @property {any[] | Record<any, any>} [ValidationKeys.ENUM] - List of values or a record
303
+ * @memberOf module:decorator-validation
304
+ * @category Validation
305
+ */
306
+ export interface EnumValidatorOptions extends ValidatorOptions {
307
+ [ValidationKeys.ENUM]: any[] | Record<any, any>;
308
+ types?: string[];
309
+ }
@@ -0,0 +1,309 @@
1
+ import { Constructor } from "@decaf-ts/decoration";
2
+ import { ValidationKeys, Validator } from "./Validators/index.js";
3
+ import { IRegistry } from "../utils/index.js";
4
+ /**
5
+ * @description Type definition for metadata used by validation decorators
6
+ * @summary Defines the structure of metadata attached to properties by validation decorators.
7
+ * This metadata is used during validation to determine validation rules and error messages.
8
+ *
9
+ * @property {any[]} [args] - Optional arguments for the validator
10
+ * @property {string} message - Error message to display when validation fails
11
+ * @property {string[]} [types] - Array of type names that the property can have
12
+ * @property {boolean} async - Indicates whether the validator associated with the decorator performs asynchronous validation logic.
13
+ * Use `true` when the validator returns a Promise, and `false` when the validation is synchronous.
14
+ *
15
+ * @typedef {Object} ValidationMetadata
16
+ * @memberOf module:decorator-validation
17
+ * @category Validation
18
+ */
19
+ export type ValidationMetadata = {
20
+ [indexer: string]: any;
21
+ args?: any[];
22
+ message: string;
23
+ types?: string[];
24
+ async: boolean;
25
+ };
26
+ /**
27
+ * @description Type definition for property-level validation decorator configuration
28
+ * @summary Defines the structure that associates a property with its validation decorators.
29
+ * This type is used to track which decorators are applied to a specific property during validation.
30
+ *
31
+ * @property {string|symbol} prop - The property name or symbol that the decorators are applied to
32
+ * @property {ValidationDecoratorDefinition[]} decorators - Array of decorator definitions applied to the property
33
+ *
34
+ * @typedef {Object} ValidationPropertyDecoratorDefinition
35
+ * @memberOf module:decorator-validation
36
+ * @category Validation
37
+ */
38
+ export type ValidationPropertyDecoratorDefinition = {
39
+ prop: string | symbol;
40
+ decorators: ValidationDecoratorDefinition[];
41
+ async?: boolean;
42
+ };
43
+ /**
44
+ * @description Type definition for individual validation decorator metadata
45
+ * @summary Extends the base DecoratorMetadata type with validation-specific properties.
46
+ * This type represents the metadata for a single validation decorator applied to a property.
47
+ *
48
+ * @property {ValidationElementDefinition} props - The validation element properties and configuration
49
+ *
50
+ * @typedef {Object} ValidationDecoratorDefinition
51
+ * @memberOf module:decorator-validation
52
+ * @category Validation
53
+ */
54
+ export type ValidationDecoratorDefinition = {
55
+ props: ValidationElementDefinition;
56
+ async?: boolean;
57
+ };
58
+ /**
59
+ * @summary Type for a validator element metadata
60
+ * @memberOf module:decorator-validation
61
+ * @category Validation
62
+ */
63
+ export type ValidationElementDefinition = {
64
+ [indexer: string]: any;
65
+ value?: string | number;
66
+ message: string;
67
+ description: string;
68
+ };
69
+ /**
70
+ * @summary Type for a model errors
71
+ * @memberOf module:decorator-validation
72
+ * @category Validation
73
+ */
74
+ export type ModelErrors = Record<string, Record<string, string | undefined>>;
75
+ /**
76
+ * @summary Util type for {@link Validator} configuration
77
+ * @memberOf module:decorator-validation
78
+ * @category Validation
79
+ */
80
+ export type ValidatorDefinition = {
81
+ validator: Constructor<Validator>;
82
+ validationKey: string;
83
+ save: boolean;
84
+ };
85
+ /**
86
+ * @description Interface for a registry that manages validator instances
87
+ * @summary Defines the contract for a registry that stores and retrieves validators.
88
+ * The registry is responsible for maintaining a collection of validators and providing
89
+ * access to them by key.
90
+ *
91
+ * @interface IValidatorRegistry
92
+ * @template T Type of validator, must extend Validator
93
+ * @extends IRegistry<T>
94
+ * @memberOf module:decorator-validation
95
+ * @category Validation
96
+ */
97
+ export interface IValidatorRegistry<T extends Validator> extends IRegistry<T> {
98
+ /**
99
+ * @description Retrieves custom validation keys defined in the registry
100
+ * @summary Returns a mapping of custom validation keys to their corresponding standard keys.
101
+ * This allows for aliasing validation keys for specific use cases.
102
+ *
103
+ * @return {Record<string, string>} Object mapping custom keys to standard validation keys
104
+ */
105
+ getCustomKeys(): Record<string, string>;
106
+ /**
107
+ * @description Gets all registered validator keys
108
+ * @summary Returns an array of all validation keys that have registered validators.
109
+ *
110
+ * @return {string[]} Array of registered validator keys
111
+ */
112
+ getKeys(): string[];
113
+ /**
114
+ * @description Registers one or more validators with the registry
115
+ * @summary Adds validators to the registry, making them available for validation operations.
116
+ * Validators can be provided as instances or as validator definitions.
117
+ *
118
+ * @param {...(T|ValidatorDefinition)} validator - Validator instances or definitions to register
119
+ * @return {void}
120
+ */
121
+ register<T extends Validator>(...validator: (T | ValidatorDefinition)[]): void;
122
+ /**
123
+ * @description Retrieves a validator by its key
124
+ * @summary Looks up a validator in the registry using its validation key.
125
+ * Returns the validator if found, or undefined if no validator is registered for the key.
126
+ *
127
+ * @param {string} key - The validation key to look up, typically one of the {@link ValidationKeys}
128
+ * @return {T|undefined} The registered validator or undefined if none matches the provided key
129
+ */
130
+ get<T extends Validator>(key: string): T | undefined;
131
+ }
132
+ /**
133
+ * @description Base options type for all validators
134
+ * @summary Defines the common properties available to all validators
135
+ * @interface ValidatorOptions
136
+ * @property {string} [message] - Custom error message to display when validation fails
137
+ * @property {boolean} async - Indicates whether the validator associated with the decorator performs asynchronous validation logic.
138
+ * Use `true` when the validator returns a Promise, and `false` when the validation is synchronous.
139
+ * @category Validation
140
+ */
141
+ export interface ValidatorOptions {
142
+ message?: string;
143
+ description?: string;
144
+ async?: boolean;
145
+ }
146
+ /**
147
+ * @description URL validation options interface
148
+ * @summary Defines options for URL validation, including allowed URL types
149
+ * @interface URLValidatorOptions
150
+ * @property {(string|string[]|{ name: string })} types - Specifies the allowed URL types or patterns
151
+ * @category Validation
152
+ */
153
+ export interface URLValidatorOptions extends ValidatorOptions {
154
+ types: string | string[] | {
155
+ name: string;
156
+ };
157
+ }
158
+ /**
159
+ * @description Type validation options interface
160
+ * @summary Defines options for type validation, specifying allowed types
161
+ * @interface TypeValidatorOptions
162
+ * @property {(string|string[]|{ name: string })} type - Specifies the allowed data types
163
+ * @memberOf module:decorator-validation
164
+ * @category Validation
165
+ */
166
+ export interface TypeValidatorOptions extends ValidatorOptions {
167
+ type: string | string[] | {
168
+ name: string;
169
+ };
170
+ customTypes?: (string | (() => string))[];
171
+ }
172
+ /**
173
+ * @description Step validation options interface
174
+ * @summary Defines options for step validation, specifying the step increment
175
+ * @interface StepValidatorOptions
176
+ * @property {(number|string)} [ValidationKeys.STEP] - The step value for numerical validation
177
+ * @memberOf module:decorator-validation
178
+ * @category Validation
179
+ */
180
+ export interface StepValidatorOptions extends ValidatorOptions {
181
+ [ValidationKeys.STEP]: number | string;
182
+ types?: string[];
183
+ }
184
+ /**
185
+ * @description Pattern validation options interface
186
+ * @summary Defines options for pattern validation using regular expressions
187
+ * @interface PatternValidatorOptions
188
+ * @property {(RegExp|string)} [ValidationKeys.PATTERN] - The pattern to match against
189
+ * @memberOf module:decorator-validation
190
+ * @category Validation
191
+ */
192
+ export interface PatternValidatorOptions extends ValidatorOptions {
193
+ [ValidationKeys.PATTERN]?: RegExp | string;
194
+ types?: string[];
195
+ }
196
+ /**
197
+ * @description Minimum value validation options interface
198
+ * @summary Defines options for minimum value validation
199
+ * @interface MinValidatorOptions
200
+ * @property {(number|Date|string)} [ValidationKeys.MIN] - The minimum allowed value
201
+ * @memberOf module:decorator-validation
202
+ * @category Validation
203
+ */
204
+ export interface MinValidatorOptions extends ValidatorOptions {
205
+ [ValidationKeys.MIN]: number | Date | string;
206
+ types?: string[];
207
+ }
208
+ /**
209
+ * @description Minimum length validation options interface
210
+ * @summary Defines options for minimum length validation
211
+ * @interface MinLengthValidatorOptions
212
+ * @property {number} [ValidationKeys.MIN_LENGTH] - The minimum allowed length
213
+ * @memberOf module:decorator-validation
214
+ * @category Validation
215
+ */
216
+ export interface MinLengthValidatorOptions extends ValidatorOptions {
217
+ [ValidationKeys.MIN_LENGTH]: number;
218
+ types?: string[];
219
+ }
220
+ /**
221
+ * @description Maximum value validation options interface
222
+ * @summary Defines options for maximum value validation
223
+ * @interface MaxValidatorOptions
224
+ * @property {(number|Date|string)} [ValidationKeys.MAX] - The maximum allowed value
225
+ * @memberOf module:decorator-validation
226
+ * @category Validation
227
+ */
228
+ export interface MaxValidatorOptions extends ValidatorOptions {
229
+ [ValidationKeys.MAX]: number | Date | string;
230
+ types?: string[];
231
+ }
232
+ /**
233
+ * @description Maximum length validation options interface
234
+ * @summary Defines options for maximum length validation
235
+ * @interface MaxLengthValidatorOptions
236
+ * @property {number} [ValidationKeys.MAX_LENGTH] - The maximum allowed length
237
+ * @memberOf module:decorator-validation
238
+ * @category Validation
239
+ */
240
+ export interface MaxLengthValidatorOptions extends ValidatorOptions {
241
+ [ValidationKeys.MAX_LENGTH]: number;
242
+ types?: string[];
243
+ }
244
+ /**
245
+ * @description List validation options interface
246
+ * @summary Defines options for list validation
247
+ * @interface ListValidatorOptions
248
+ * @property {string[]} clazz - Array of allowed class names or types
249
+ * @memberOf module:decorator-validation
250
+ * @category Validation
251
+ */
252
+ export interface ListValidatorOptions extends ValidatorOptions {
253
+ clazz: (Constructor<any> | (() => Constructor<any>))[];
254
+ }
255
+ /**
256
+ * @description Unique validation options interface
257
+ * @summary Defines options for unique validation
258
+ * @interface UniqueValidatorOptions
259
+ * @property {string[]} unique - Array of allowed class names or types
260
+ * @memberOf module:decorator-validation
261
+ * @category Validation
262
+ */
263
+ export interface UniqueValidatorOptions extends ValidatorOptions {
264
+ [ValidationKeys.UNIQUE]: string[];
265
+ }
266
+ /**
267
+ * @description Date validation options interface
268
+ * @summary Defines options for date validation
269
+ * @interface DateValidatorOptions
270
+ * @property {string} [ValidationKeys.FORMAT] - The expected date format pattern
271
+ * @memberOf module:decorator-validation
272
+ * @category Validation
273
+ */
274
+ export interface DateValidatorOptions extends ValidatorOptions {
275
+ [ValidationKeys.FORMAT]?: string;
276
+ }
277
+ export interface ComparisonValidatorOptions extends ValidatorOptions {
278
+ label?: string;
279
+ }
280
+ export interface EqualsValidatorOptions extends ComparisonValidatorOptions {
281
+ [ValidationKeys.EQUALS]: string;
282
+ }
283
+ export interface DiffValidatorOptions extends ComparisonValidatorOptions {
284
+ [ValidationKeys.DIFF]: string;
285
+ }
286
+ export interface LessThanValidatorOptions extends ComparisonValidatorOptions {
287
+ [ValidationKeys.LESS_THAN]: string;
288
+ }
289
+ export interface LessThanOrEqualValidatorOptions extends ComparisonValidatorOptions {
290
+ [ValidationKeys.LESS_THAN_OR_EQUAL]: string;
291
+ }
292
+ export interface GreaterThanValidatorOptions extends ComparisonValidatorOptions {
293
+ [ValidationKeys.GREATER_THAN]: string;
294
+ }
295
+ export interface GreaterThanOrEqualValidatorOptions extends ComparisonValidatorOptions {
296
+ [ValidationKeys.GREATER_THAN_OR_EQUAL]: string;
297
+ }
298
+ /**
299
+ * @description Enum validation options interface
300
+ * @summary Defines options for enum validation
301
+ * @interface EnumValidatorOptions
302
+ * @property {any[] | Record<any, any>} [ValidationKeys.ENUM] - List of values or a record
303
+ * @memberOf module:decorator-validation
304
+ * @category Validation
305
+ */
306
+ export interface EnumValidatorOptions extends ValidatorOptions {
307
+ [ValidationKeys.ENUM]: any[] | Record<any, any>;
308
+ types?: string[];
309
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/decorator-validation",
3
- "version": "1.15.0",
3
+ "version": "1.16.0",
4
4
  "description": "simple decorator based validation engine",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/constants/errors.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACU,QAAA,yBAAyB,GAAG;IACvC,YAAY,EACV,sEAAsE;IACxE,6BAA6B,EAC3B,uFAAuF;IACzF,gBAAgB,EACd,0EAA0E;IAC5E,kBAAkB,EAAE,wDAAwD;IAC5E,4BAA4B,EAC1B,mDAAmD;IACrD,4BAA4B,EAC1B,kDAAkD;IACpD,uBAAuB,EAAE,yCAAyC;IAClE,wBAAwB,EACtB,wDAAwD;IAC1D,cAAc,EAAE,yCAAyC;CAC1D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAAyB;AACzB,mDAA6B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/constants/validation.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACU,QAAA,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAEvD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,qDAAgD;AAEhD,wDAA4B;AAC5B,wDAA4B;AAC5B,oDAAwB;AACxB,oDAAwB;AACxB,yDAA6B;AAC7B,oDAAwB;AAExB;;;;;GAKG;AACU,QAAA,OAAO,GAAG,aAAa,CAAC;AAErC;;;;;GAKG;AACU,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C,qBAAQ,CAAC,eAAe,CAAC,oBAAY,EAAE,eAAO,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../src/model/Builder.ts"],"names":[],"mappings":"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"}