@decaf-ts/decorator-validation 1.6.2 → 1.6.4

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 (167) hide show
  1. package/dist/decorator-validation.cjs +1016 -1164
  2. package/dist/decorator-validation.esm.cjs +971 -1134
  3. package/lib/constants/index.cjs +18 -0
  4. package/lib/constants/index.d.ts +1 -0
  5. package/lib/constants/validation.cjs +14 -0
  6. package/lib/constants/validation.d.ts +10 -0
  7. package/lib/esm/constants/index.d.ts +1 -0
  8. package/lib/esm/constants/index.js +2 -0
  9. package/lib/esm/constants/validation.d.ts +10 -0
  10. package/lib/esm/constants/validation.js +11 -0
  11. package/lib/esm/index.d.ts +37 -5
  12. package/lib/esm/index.js +38 -6
  13. package/lib/esm/model/Model.d.ts +29 -100
  14. package/lib/esm/model/Model.js +37 -104
  15. package/lib/esm/model/constants.d.ts +3 -3
  16. package/lib/esm/model/constants.js +4 -4
  17. package/lib/esm/model/construction.d.ts +3 -3
  18. package/lib/esm/model/construction.js +4 -4
  19. package/lib/esm/model/decorators.d.ts +4 -4
  20. package/lib/esm/model/decorators.js +5 -6
  21. package/lib/esm/model/types.d.ts +11 -30
  22. package/lib/esm/model/types.js +1 -1
  23. package/lib/esm/model/validation.d.ts +2 -2
  24. package/lib/esm/model/validation.js +18 -7
  25. package/lib/esm/utils/constants.d.ts +9 -27
  26. package/lib/esm/utils/constants.js +10 -28
  27. package/lib/esm/utils/dates.d.ts +16 -26
  28. package/lib/esm/utils/dates.js +17 -27
  29. package/lib/esm/utils/decorators.d.ts +0 -41
  30. package/lib/esm/utils/decorators.js +1 -42
  31. package/lib/esm/utils/hashing.d.ts +6 -50
  32. package/lib/esm/utils/hashing.js +5 -49
  33. package/lib/esm/utils/index.d.ts +0 -1
  34. package/lib/esm/utils/index.js +1 -2
  35. package/lib/esm/utils/registry.d.ts +2 -2
  36. package/lib/esm/utils/registry.js +1 -1
  37. package/lib/esm/utils/serialization.d.ts +1 -1
  38. package/lib/esm/utils/serialization.js +2 -2
  39. package/lib/esm/utils/strings.d.ts +4 -4
  40. package/lib/esm/utils/strings.js +5 -5
  41. package/lib/esm/utils/types.d.ts +16 -123
  42. package/lib/esm/utils/types.js +1 -1
  43. package/lib/esm/validation/Validators/DateValidator.d.ts +8 -40
  44. package/lib/esm/validation/Validators/DateValidator.js +9 -41
  45. package/lib/esm/validation/Validators/DiffValidator.d.ts +27 -0
  46. package/lib/esm/validation/Validators/DiffValidator.js +58 -0
  47. package/lib/esm/validation/Validators/EmailValidator.d.ts +7 -39
  48. package/lib/esm/validation/Validators/EmailValidator.js +8 -40
  49. package/lib/esm/validation/Validators/EqualsValidator.d.ts +27 -0
  50. package/lib/esm/validation/Validators/EqualsValidator.js +63 -0
  51. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.d.ts +27 -0
  52. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +65 -0
  53. package/lib/esm/validation/Validators/GreaterThanValidator.d.ts +27 -0
  54. package/lib/esm/validation/Validators/GreaterThanValidator.js +62 -0
  55. package/lib/esm/validation/Validators/LessThanOrEqualValidator.d.ts +27 -0
  56. package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +65 -0
  57. package/lib/esm/validation/Validators/LessThanValidator.d.ts +27 -0
  58. package/lib/esm/validation/Validators/LessThanValidator.js +62 -0
  59. package/lib/esm/validation/Validators/ListValidator.d.ts +6 -44
  60. package/lib/esm/validation/Validators/ListValidator.js +7 -45
  61. package/lib/esm/validation/Validators/MaxValidator.d.ts +6 -52
  62. package/lib/esm/validation/Validators/MaxValidator.js +7 -53
  63. package/lib/esm/validation/Validators/MinValidator.d.ts +6 -52
  64. package/lib/esm/validation/Validators/MinValidator.js +7 -53
  65. package/lib/esm/validation/Validators/PatternValidator.d.ts +9 -75
  66. package/lib/esm/validation/Validators/PatternValidator.js +10 -76
  67. package/lib/esm/validation/Validators/RequiredValidator.d.ts +6 -52
  68. package/lib/esm/validation/Validators/RequiredValidator.js +7 -53
  69. package/lib/esm/validation/Validators/TypeValidator.d.ts +6 -60
  70. package/lib/esm/validation/Validators/TypeValidator.js +7 -69
  71. package/lib/esm/validation/Validators/URLValidator.d.ts +7 -41
  72. package/lib/esm/validation/Validators/URLValidator.js +8 -42
  73. package/lib/esm/validation/Validators/Validator.d.ts +17 -77
  74. package/lib/esm/validation/Validators/Validator.js +11 -68
  75. package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +7 -1
  76. package/lib/esm/validation/Validators/ValidatorRegistry.js +11 -4
  77. package/lib/esm/validation/Validators/constants.d.ts +41 -0
  78. package/lib/esm/validation/Validators/constants.js +43 -1
  79. package/lib/esm/validation/Validators/index.d.ts +7 -0
  80. package/lib/esm/validation/Validators/index.js +8 -1
  81. package/lib/esm/validation/Validators/utils.d.ts +52 -0
  82. package/lib/esm/validation/Validators/utils.js +174 -0
  83. package/lib/esm/validation/decorators.d.ts +124 -50
  84. package/lib/esm/validation/decorators.js +173 -102
  85. package/lib/esm/validation/types.d.ts +31 -146
  86. package/lib/esm/validation/types.js +1 -1
  87. package/lib/index.cjs +39 -7
  88. package/lib/index.d.ts +37 -5
  89. package/lib/model/Model.cjs +39 -104
  90. package/lib/model/Model.d.ts +29 -100
  91. package/lib/model/constants.cjs +4 -4
  92. package/lib/model/constants.d.ts +3 -3
  93. package/lib/model/construction.cjs +4 -4
  94. package/lib/model/construction.d.ts +3 -3
  95. package/lib/model/decorators.cjs +5 -6
  96. package/lib/model/decorators.d.ts +4 -4
  97. package/lib/model/types.cjs +1 -1
  98. package/lib/model/types.d.ts +11 -30
  99. package/lib/model/validation.cjs +25 -14
  100. package/lib/model/validation.d.ts +2 -2
  101. package/lib/utils/constants.cjs +11 -29
  102. package/lib/utils/constants.d.ts +9 -27
  103. package/lib/utils/dates.cjs +17 -27
  104. package/lib/utils/dates.d.ts +16 -26
  105. package/lib/utils/decorators.cjs +1 -42
  106. package/lib/utils/decorators.d.ts +0 -41
  107. package/lib/utils/hashing.cjs +5 -49
  108. package/lib/utils/hashing.d.ts +6 -50
  109. package/lib/utils/index.cjs +1 -2
  110. package/lib/utils/index.d.ts +0 -1
  111. package/lib/utils/registry.cjs +1 -1
  112. package/lib/utils/registry.d.ts +2 -2
  113. package/lib/utils/serialization.cjs +2 -2
  114. package/lib/utils/serialization.d.ts +1 -1
  115. package/lib/utils/strings.cjs +5 -5
  116. package/lib/utils/strings.d.ts +4 -4
  117. package/lib/utils/types.cjs +1 -1
  118. package/lib/utils/types.d.ts +16 -123
  119. package/lib/validation/Validators/DateValidator.cjs +9 -41
  120. package/lib/validation/Validators/DateValidator.d.ts +8 -40
  121. package/lib/validation/Validators/DiffValidator.cjs +61 -0
  122. package/lib/validation/Validators/DiffValidator.d.ts +27 -0
  123. package/lib/validation/Validators/EmailValidator.cjs +8 -40
  124. package/lib/validation/Validators/EmailValidator.d.ts +7 -39
  125. package/lib/validation/Validators/EqualsValidator.cjs +66 -0
  126. package/lib/validation/Validators/EqualsValidator.d.ts +27 -0
  127. package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +68 -0
  128. package/lib/validation/Validators/GreaterThanOrEqualValidator.d.ts +27 -0
  129. package/lib/validation/Validators/GreaterThanValidator.cjs +65 -0
  130. package/lib/validation/Validators/GreaterThanValidator.d.ts +27 -0
  131. package/lib/validation/Validators/LessThanOrEqualValidator.cjs +68 -0
  132. package/lib/validation/Validators/LessThanOrEqualValidator.d.ts +27 -0
  133. package/lib/validation/Validators/LessThanValidator.cjs +65 -0
  134. package/lib/validation/Validators/LessThanValidator.d.ts +27 -0
  135. package/lib/validation/Validators/ListValidator.cjs +7 -45
  136. package/lib/validation/Validators/ListValidator.d.ts +6 -44
  137. package/lib/validation/Validators/MaxValidator.cjs +7 -53
  138. package/lib/validation/Validators/MaxValidator.d.ts +6 -52
  139. package/lib/validation/Validators/MinValidator.cjs +7 -53
  140. package/lib/validation/Validators/MinValidator.d.ts +6 -52
  141. package/lib/validation/Validators/PatternValidator.cjs +10 -76
  142. package/lib/validation/Validators/PatternValidator.d.ts +9 -75
  143. package/lib/validation/Validators/RequiredValidator.cjs +7 -53
  144. package/lib/validation/Validators/RequiredValidator.d.ts +6 -52
  145. package/lib/validation/Validators/TypeValidator.cjs +7 -69
  146. package/lib/validation/Validators/TypeValidator.d.ts +6 -60
  147. package/lib/validation/Validators/URLValidator.cjs +8 -42
  148. package/lib/validation/Validators/URLValidator.d.ts +7 -41
  149. package/lib/validation/Validators/Validator.cjs +11 -68
  150. package/lib/validation/Validators/Validator.d.ts +17 -77
  151. package/lib/validation/Validators/ValidatorRegistry.cjs +12 -4
  152. package/lib/validation/Validators/ValidatorRegistry.d.ts +7 -1
  153. package/lib/validation/Validators/constants.cjs +44 -2
  154. package/lib/validation/Validators/constants.d.ts +41 -0
  155. package/lib/validation/Validators/index.cjs +8 -1
  156. package/lib/validation/Validators/index.d.ts +7 -0
  157. package/lib/validation/Validators/utils.cjs +180 -0
  158. package/lib/validation/Validators/utils.d.ts +52 -0
  159. package/lib/validation/decorators.cjs +179 -102
  160. package/lib/validation/decorators.d.ts +124 -50
  161. package/lib/validation/types.cjs +1 -1
  162. package/lib/validation/types.d.ts +31 -146
  163. package/package.json +1 -1
  164. package/lib/esm/utils/Decoration.d.ts +0 -123
  165. package/lib/esm/utils/Decoration.js +0 -188
  166. package/lib/utils/Decoration.cjs +0 -192
  167. package/lib/utils/Decoration.d.ts +0 -123
@@ -1,7 +1,13 @@
1
1
  export * from "./constants";
2
2
  export * from "./DateValidator";
3
3
  export * from "./decorators";
4
+ export * from "./DiffValidator";
4
5
  export * from "./EmailValidator";
6
+ export * from "./EqualsValidator";
7
+ export * from "./GreaterThanValidator";
8
+ export * from "./GreaterThanOrEqualValidator";
9
+ export * from "./LessThanValidator";
10
+ export * from "./LessThanOrEqualValidator";
5
11
  export * from "./ListValidator";
6
12
  export * from "./MaxLengthValidator";
7
13
  export * from "./MaxValidator";
@@ -15,4 +21,5 @@ export * from "./TypeValidator";
15
21
  export * from "./URLValidator";
16
22
  export * from "./Validator";
17
23
  export * from "./ValidatorRegistry";
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRGF0ZVZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRW1haWxWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0xpc3RWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01heExlbmd0aFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTWF4VmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NaW5MZW5ndGhWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01pblZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUGFzc3dvcmRWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1BhdHRlcm5WYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JlcXVpcmVkVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9TdGVwVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9UeXBlVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9VUkxWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVmFsaWRhdG9yUmVnaXN0cnlcIjtcbiJdfQ==
24
+ export * from "./utils";
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRGF0ZVZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRGlmZlZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRW1haWxWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0VxdWFsc1ZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JlYXRlclRoYW5WYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyZWF0ZXJUaGFuT3JFcXVhbFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTGVzc1RoYW5WYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0xlc3NUaGFuT3JFcXVhbFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTGlzdFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTWF4TGVuZ3RoVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9NYXhWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01pbkxlbmd0aFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vTWluVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9QYXNzd29yZFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUGF0dGVyblZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVxdWlyZWRWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1N0ZXBWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1R5cGVWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1VSTFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9WYWxpZGF0b3JSZWdpc3RyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Safely retrieves a nested property value from an object using a dot-notated path string.
3
+ *
4
+ * @template T - The expected return type of the property value.
5
+ *
6
+ * @param {Record<string, any>} obj - The source object to retrieve the value from.
7
+ * @param {string} path - A dot-separated string representing the path to the desired property (e.g., "user.address.street").
8
+ *
9
+ * @returns {T} - The value found at the specified path
10
+ *
11
+ * @throws {Error} - Throws an error if the path is not a non-empty string or if any part of the path does not exist in the object.
12
+ */
13
+ export declare function getValueByPath<T>(obj: Record<string, any>, path: string): T;
14
+ /**
15
+ * Validates whether two values are eligible for comparison using >= or <= operators.
16
+ *
17
+ * Supported types: `undefined`, `number`, `bigint`, and `Date`.
18
+ *
19
+ * @param a - The first value to compare.
20
+ * @param b - The second value to compare.
21
+ *
22
+ * @returns {boolean} True if both values are of supported types.
23
+ *
24
+ * @throws {TypeError} If either value is of an unsupported type.
25
+ */
26
+ export declare function isValidForGteOrLteComparison(a: any, b: any): boolean;
27
+ /**
28
+ * @summary Compares two values to determine if the first is less than the second.
29
+ * @description Supports numbers and dates. Throws an error for unsupported types.
30
+ *
31
+ * @param {any} a - The first value to compare.
32
+ * @param {any} b - The second value to compare against.
33
+ *
34
+ * @returns {boolean} True if `a` is less than `b`, false otherwise.
35
+ *
36
+ * @throws {Error} If either `a` or `b` is `null` or `undefined`.
37
+ * @throws {TypeError} If values are of mismatched or unsupported types.
38
+ */
39
+ export declare function isLessThan(a: any, b: any): boolean;
40
+ /**
41
+ * Checks if `a` is greater than `b`.
42
+ * Supports comparison for numbers and Date objects.
43
+ *
44
+ * @param {any} a - The value to validate.
45
+ * @param {any} b - The value to compare against.
46
+ *
47
+ * @returns {boolean} True if `a` is greater than `b`, otherwise false.
48
+ *
49
+ * @throws {Error} If either `a` or `b` is `null` or `undefined`.
50
+ * @throws {TypeError} If values are of mismatched or unsupported types.
51
+ */
52
+ export declare function isGreaterThan(a: any, b: any): boolean;
@@ -0,0 +1,174 @@
1
+ import { VALIDATION_PARENT_KEY } from "../../constants";
2
+ import { sf } from "../../utils/strings";
3
+ import { COMPARISON_ERROR_MESSAGES } from "./constants";
4
+ /**
5
+ * Safely retrieves a nested property value from an object using a dot-notated path string.
6
+ *
7
+ * @template T - The expected return type of the property value.
8
+ *
9
+ * @param {Record<string, any>} obj - The source object to retrieve the value from.
10
+ * @param {string} path - A dot-separated string representing the path to the desired property (e.g., "user.address.street").
11
+ *
12
+ * @returns {T} - The value found at the specified path
13
+ *
14
+ * @throws {Error} - Throws an error if the path is not a non-empty string or if any part of the path does not exist in the object.
15
+ */
16
+ export function getValueByPath(obj, path) {
17
+ if (typeof path !== "string" || !path.trim()) {
18
+ throw new Error(sf(COMPARISON_ERROR_MESSAGES.INVALID_PATH, path));
19
+ }
20
+ // Process parent directory access (../)
21
+ const parentAccessors = path.match(/\.\.\//g) || [];
22
+ const parentLevel = parentAccessors.length;
23
+ const cleanPath = path.replace(/\.\.\//g, "");
24
+ // Navigate up the parent chain
25
+ let currentContext = obj;
26
+ for (let i = 0; i < parentLevel; i++) {
27
+ if (!currentContext || typeof currentContext !== "object") {
28
+ throw new Error(sf(COMPARISON_ERROR_MESSAGES.CONTEXT_NOT_OBJECT_COMPARISON, i + 1, path));
29
+ }
30
+ if (!currentContext[VALIDATION_PARENT_KEY]) {
31
+ throw new Error(sf(COMPARISON_ERROR_MESSAGES.NO_PARENT_COMPARISON, i + 1, path));
32
+ }
33
+ currentContext = currentContext[VALIDATION_PARENT_KEY];
34
+ }
35
+ // Process dot notation path
36
+ const parts = cleanPath.split(".");
37
+ let currentValue = currentContext;
38
+ for (const part of parts) {
39
+ if (currentValue !== null &&
40
+ typeof currentValue === "object" &&
41
+ part in currentValue) {
42
+ currentValue = currentValue[part];
43
+ }
44
+ else {
45
+ const errorMsgTemplate = parentLevel === 0
46
+ ? COMPARISON_ERROR_MESSAGES.PROPERTY_NOT_FOUND
47
+ : parentLevel === 1
48
+ ? COMPARISON_ERROR_MESSAGES.PROPERTY_NOT_FOUND_ON_PARENT
49
+ : COMPARISON_ERROR_MESSAGES.PROPERTY_NOT_FOUND_AFTER_PARENT;
50
+ throw new Error(sf(errorMsgTemplate, path, part, parentLevel));
51
+ }
52
+ }
53
+ return currentValue;
54
+ }
55
+ const getTypeName = (value) => {
56
+ if (value === null)
57
+ return "null";
58
+ if (value instanceof Date)
59
+ return "Date";
60
+ if (Number.isNaN(value))
61
+ return "NaN";
62
+ if (value === Infinity)
63
+ return "Infinity";
64
+ if (value === -Infinity)
65
+ return "-Infinity";
66
+ if (Array.isArray(value))
67
+ return "array";
68
+ return typeof value;
69
+ };
70
+ const isSupported = (value) => {
71
+ if (value === undefined || value instanceof Date)
72
+ return true;
73
+ if (typeof value === "bigint")
74
+ return true;
75
+ // Numbers must be finite (excludes NaN, Infinity, -Infinity)
76
+ if (typeof value === "number")
77
+ return Number.isFinite(value);
78
+ return false;
79
+ };
80
+ /**
81
+ * Validates whether two values are eligible for comparison using >= or <= operators.
82
+ *
83
+ * Supported types: `undefined`, `number`, `bigint`, and `Date`.
84
+ *
85
+ * @param a - The first value to compare.
86
+ * @param b - The second value to compare.
87
+ *
88
+ * @returns {boolean} True if both values are of supported types.
89
+ *
90
+ * @throws {TypeError} If either value is of an unsupported type.
91
+ */
92
+ export function isValidForGteOrLteComparison(a, b) {
93
+ if (isSupported(a) && isSupported(b))
94
+ return true;
95
+ throw new TypeError(sf(COMPARISON_ERROR_MESSAGES.UNSUPPORTED_TYPES_COMPARISON, getTypeName(a), getTypeName(b)));
96
+ }
97
+ /**
98
+ * @summary Compares two values to determine if the first is less than the second.
99
+ * @description Supports numbers and dates. Throws an error for unsupported types.
100
+ *
101
+ * @param {any} a - The first value to compare.
102
+ * @param {any} b - The second value to compare against.
103
+ *
104
+ * @returns {boolean} True if `a` is less than `b`, false otherwise.
105
+ *
106
+ * @throws {Error} If either `a` or `b` is `null` or `undefined`.
107
+ * @throws {TypeError} If values are of mismatched or unsupported types.
108
+ */
109
+ export function isLessThan(a, b) {
110
+ if ([null, undefined].includes(a) || [null, undefined].includes(b))
111
+ throw new Error(COMPARISON_ERROR_MESSAGES.NULL_OR_UNDEFINED_COMPARISON);
112
+ // Validate type compatibility
113
+ const aType = typeof a;
114
+ const bType = typeof b;
115
+ if (aType !== bType) {
116
+ // Allow number X bigint
117
+ if (aType === "bigint" && bType === "number")
118
+ return Number(a) < b;
119
+ if (aType === "number" && bType === "bigint")
120
+ return a < Number(b);
121
+ throw new TypeError(sf(COMPARISON_ERROR_MESSAGES.TYPE_MISMATCH_COMPARISON, aType, bType));
122
+ }
123
+ if ((aType === "number" && bType === "number") ||
124
+ (aType === "bigint" && bType === "bigint")) {
125
+ if (Number.isNaN(a) || Number.isNaN(b))
126
+ throw new TypeError(COMPARISON_ERROR_MESSAGES.NAN_COMPARISON);
127
+ return a < b;
128
+ }
129
+ if (a instanceof Date && b instanceof Date) {
130
+ if (isNaN(a.getTime()) || isNaN(b.getTime()))
131
+ throw new TypeError(COMPARISON_ERROR_MESSAGES.INVALID_DATE_COMPARISON);
132
+ return a.getTime() < b.getTime();
133
+ }
134
+ throw new TypeError(sf(COMPARISON_ERROR_MESSAGES.UNSUPPORTED_TYPES_COMPARISON, getTypeName(a), getTypeName(b)));
135
+ }
136
+ /**
137
+ * Checks if `a` is greater than `b`.
138
+ * Supports comparison for numbers and Date objects.
139
+ *
140
+ * @param {any} a - The value to validate.
141
+ * @param {any} b - The value to compare against.
142
+ *
143
+ * @returns {boolean} True if `a` is greater than `b`, otherwise false.
144
+ *
145
+ * @throws {Error} If either `a` or `b` is `null` or `undefined`.
146
+ * @throws {TypeError} If values are of mismatched or unsupported types.
147
+ */
148
+ export function isGreaterThan(a, b) {
149
+ if ([null, undefined].includes(a) || [null, undefined].includes(b))
150
+ throw new Error(COMPARISON_ERROR_MESSAGES.NULL_OR_UNDEFINED_COMPARISON);
151
+ const aType = typeof a;
152
+ const bType = typeof b;
153
+ if (aType !== bType) {
154
+ // Allow number X bigint
155
+ if (aType === "bigint" && bType === "number")
156
+ return Number(a) > b;
157
+ if (aType === "number" && bType === "bigint")
158
+ return a > Number(b);
159
+ throw new Error(sf(COMPARISON_ERROR_MESSAGES.TYPE_MISMATCH_COMPARISON, aType, bType));
160
+ }
161
+ if ((aType === "number" && bType === "number") ||
162
+ (aType === "bigint" && bType === "bigint")) {
163
+ if (Number.isNaN(a) || Number.isNaN(b))
164
+ throw new TypeError(COMPARISON_ERROR_MESSAGES.NAN_COMPARISON);
165
+ return a > b;
166
+ }
167
+ if (a instanceof Date && b instanceof Date) {
168
+ if (isNaN(a.getTime()) || isNaN(b.getTime()))
169
+ throw new TypeError(COMPARISON_ERROR_MESSAGES.INVALID_DATE_COMPARISON);
170
+ return a.getTime() > b.getTime();
171
+ }
172
+ throw new TypeError(sf(COMPARISON_ERROR_MESSAGES.UNSUPPORTED_TYPES_COMPARISON, getTypeName(a), getTypeName(b)));
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFJLEdBQXdCLEVBQUUsSUFBWTtJQUN0RSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU5QywrQkFBK0I7SUFDL0IsSUFBSSxjQUFjLEdBQVEsR0FBRyxDQUFDO0lBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQ2IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QixF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aW1wb3J0IHsgVkFMSURBVElPTl9QQVJFTlRfS0VZIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2YgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nc1wiO1xuaW1wb3J0IHsgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIFNhZmVseSByZXRyaWV2ZXMgYSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBkb3Qtbm90YXRlZCBwYXRoIHN0cmluZy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSBleHBlY3RlZCByZXR1cm4gdHlwZSBvZiB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBvYmogLSBUaGUgc291cmNlIG9iamVjdCB0byByZXRyaWV2ZSB0aGUgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gQSBkb3Qtc2VwYXJhdGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGRlc2lyZWQgcHJvcGVydHkgKGUuZy4sIFwidXNlci5hZGRyZXNzLnN0cmVldFwiKS5cbiAqXG4gKiBAcmV0dXJucyB7VH0gLSBUaGUgdmFsdWUgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBwYXRoXG4gKlxuICogQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBwYXRoIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgaWYgYW55IHBhcnQgb2YgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgaW4gdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlQnlQYXRoPFQ+KG9iajogUmVjb3JkPHN0cmluZywgYW55PiwgcGF0aDogc3RyaW5nKTogVCB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gXCJzdHJpbmdcIiB8fCAhcGF0aC50cmltKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc2YoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5JTlZBTElEX1BBVEgsIHBhdGgpKTtcbiAgfVxuXG4gIC8vIFByb2Nlc3MgcGFyZW50IGRpcmVjdG9yeSBhY2Nlc3MgKC4uLylcbiAgY29uc3QgcGFyZW50QWNjZXNzb3JzID0gcGF0aC5tYXRjaCgvXFwuXFwuXFwvL2cpIHx8IFtdO1xuICBjb25zdCBwYXJlbnRMZXZlbCA9IHBhcmVudEFjY2Vzc29ycy5sZW5ndGg7XG4gIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGgucmVwbGFjZSgvXFwuXFwuXFwvL2csIFwiXCIpO1xuXG4gIC8vIE5hdmlnYXRlIHVwIHRoZSBwYXJlbnQgY2hhaW5cbiAgbGV0IGN1cnJlbnRDb250ZXh0OiBhbnkgPSBvYmo7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50TGV2ZWw7IGkrKykge1xuICAgIGlmICghY3VycmVudENvbnRleHQgfHwgdHlwZW9mIGN1cnJlbnRDb250ZXh0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIHNmKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuQ09OVEVYVF9OT1RfT0JKRUNUX0NPTVBBUklTT04sIGkgKyAxLCBwYXRoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRDb250ZXh0W1ZBTElEQVRJT05fUEFSRU5UX0tFWV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgc2YoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5OT19QQVJFTlRfQ09NUEFSSVNPTiwgaSArIDEsIHBhdGgpXG4gICAgICApO1xuICAgIH1cblxuICAgIGN1cnJlbnRDb250ZXh0ID0gY3VycmVudENvbnRleHRbVkFMSURBVElPTl9QQVJFTlRfS0VZXTtcbiAgfVxuXG4gIC8vIFByb2Nlc3MgZG90IG5vdGF0aW9uIHBhdGhcbiAgY29uc3QgcGFydHMgPSBjbGVhblBhdGguc3BsaXQoXCIuXCIpO1xuICBsZXQgY3VycmVudFZhbHVlOiBhbnkgPSBjdXJyZW50Q29udGV4dDtcblxuICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBpZiAoXG4gICAgICBjdXJyZW50VmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiBjdXJyZW50VmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIHBhcnQgaW4gY3VycmVudFZhbHVlXG4gICAgKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSAoY3VycmVudFZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3BhcnRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlcnJvck1zZ1RlbXBsYXRlID1cbiAgICAgICAgcGFyZW50TGV2ZWwgPT09IDBcbiAgICAgICAgICA/IENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuUFJPUEVSVFlfTk9UX0ZPVU5EXG4gICAgICAgICAgOiBwYXJlbnRMZXZlbCA9PT0gMVxuICAgICAgICAgICAgPyBDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLlBST1BFUlRZX05PVF9GT1VORF9PTl9QQVJFTlRcbiAgICAgICAgICAgIDogQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5QUk9QRVJUWV9OT1RfRk9VTkRfQUZURVJfUEFSRU5UO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc2YoZXJyb3JNc2dUZW1wbGF0ZSwgcGF0aCwgcGFydCwgcGFyZW50TGV2ZWwpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3VycmVudFZhbHVlIGFzIFQ7XG59XG5cbmNvbnN0IGdldFR5cGVOYW1lID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gXCJudWxsXCI7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBcIkRhdGVcIjtcbiAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHJldHVybiBcIk5hTlwiO1xuICBpZiAodmFsdWUgPT09IEluZmluaXR5KSByZXR1cm4gXCJJbmZpbml0eVwiO1xuICBpZiAodmFsdWUgPT09IC1JbmZpbml0eSkgcmV0dXJuIFwiLUluZmluaXR5XCI7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIFwiYXJyYXlcIjtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZTtcbn07XG5cbmNvbnN0IGlzU3VwcG9ydGVkID0gKFxuICB2YWx1ZTogdW5rbm93blxuKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVtYmVyIHwgYmlnaW50IHwgRGF0ZSA9PiB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikgcmV0dXJuIHRydWU7XG5cbiAgLy8gTnVtYmVycyBtdXN0IGJlIGZpbml0ZSAoZXhjbHVkZXMgTmFOLCBJbmZpbml0eSwgLUluZmluaXR5KVxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHZhbHVlKTtcblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIHR3byB2YWx1ZXMgYXJlIGVsaWdpYmxlIGZvciBjb21wYXJpc29uIHVzaW5nID49IG9yIDw9IG9wZXJhdG9ycy5cbiAqXG4gKiBTdXBwb3J0ZWQgdHlwZXM6IGB1bmRlZmluZWRgLCBgbnVtYmVyYCwgYGJpZ2ludGAsIGFuZCBgRGF0ZWAuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGJvdGggdmFsdWVzIGFyZSBvZiBzdXBwb3J0ZWQgdHlwZXMuXG4gKlxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBlaXRoZXIgdmFsdWUgaXMgb2YgYW4gdW5zdXBwb3J0ZWQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRGb3JHdGVPckx0ZUNvbXBhcmlzb24oYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKGlzU3VwcG9ydGVkKGEpICYmIGlzU3VwcG9ydGVkKGIpKSByZXR1cm4gdHJ1ZTtcblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIHNmKFxuICAgICAgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5VTlNVUFBPUlRFRF9UWVBFU19DT01QQVJJU09OLFxuICAgICAgZ2V0VHlwZU5hbWUoYSksXG4gICAgICBnZXRUeXBlTmFtZShiKVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGUgZmlyc3QgaXMgbGVzcyB0aGFuIHRoZSBzZWNvbmQuXG4gKiBAZGVzY3JpcHRpb24gU3VwcG9ydHMgbnVtYmVycyBhbmQgZGF0ZXMuIFRocm93cyBhbiBlcnJvciBmb3IgdW5zdXBwb3J0ZWQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHthbnl9IGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7YW55fSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgYGFgIGlzIGxlc3MgdGhhbiBgYmAsIGZhbHNlIG90aGVyd2lzZS5cbiAqXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgZWl0aGVyIGBhYCBvciBgYmAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiB2YWx1ZXMgYXJlIG9mIG1pc21hdGNoZWQgb3IgdW5zdXBwb3J0ZWQgdHlwZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xlc3NUaGFuKGE6IGFueSwgYjogYW55KTogYm9vbGVhbiB7XG4gIGlmIChbbnVsbCwgdW5kZWZpbmVkXS5pbmNsdWRlcyhhKSB8fCBbbnVsbCwgdW5kZWZpbmVkXS5pbmNsdWRlcyhiKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5OVUxMX09SX1VOREVGSU5FRF9DT01QQVJJU09OKTtcblxuICAvLyBWYWxpZGF0ZSB0eXBlIGNvbXBhdGliaWxpdHlcbiAgY29uc3QgYVR5cGUgPSB0eXBlb2YgYTtcbiAgY29uc3QgYlR5cGUgPSB0eXBlb2YgYjtcblxuICBpZiAoYVR5cGUgIT09IGJUeXBlKSB7XG4gICAgLy8gQWxsb3cgbnVtYmVyIFggYmlnaW50XG4gICAgaWYgKGFUeXBlID09PSBcImJpZ2ludFwiICYmIGJUeXBlID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE51bWJlcihhKSA8IChiIGFzIG51bWJlcik7XG4gICAgaWYgKGFUeXBlID09PSBcIm51bWJlclwiICYmIGJUeXBlID09PSBcImJpZ2ludFwiKVxuICAgICAgcmV0dXJuIChhIGFzIG51bWJlcikgPCBOdW1iZXIoYik7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIHNmKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuVFlQRV9NSVNNQVRDSF9DT01QQVJJU09OLCBhVHlwZSwgYlR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChcbiAgICAoYVR5cGUgPT09IFwibnVtYmVyXCIgJiYgYlR5cGUgPT09IFwibnVtYmVyXCIpIHx8XG4gICAgKGFUeXBlID09PSBcImJpZ2ludFwiICYmIGJUeXBlID09PSBcImJpZ2ludFwiKVxuICApIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGEpIHx8IE51bWJlci5pc05hTihiKSlcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5OQU5fQ09NUEFSSVNPTik7XG4gICAgcmV0dXJuIGEgPCBiO1xuICB9XG5cbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgaWYgKGlzTmFOKGEuZ2V0VGltZSgpKSB8fCBpc05hTihiLmdldFRpbWUoKSkpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuSU5WQUxJRF9EQVRFX0NPTVBBUklTT04pO1xuICAgIHJldHVybiBhLmdldFRpbWUoKSA8IGIuZ2V0VGltZSgpO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBzZihcbiAgICAgIENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuVU5TVVBQT1JURURfVFlQRVNfQ09NUEFSSVNPTixcbiAgICAgIGdldFR5cGVOYW1lKGEpLFxuICAgICAgZ2V0VHlwZU5hbWUoYilcbiAgICApXG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBhYCBpcyBncmVhdGVyIHRoYW4gYGJgLlxuICogU3VwcG9ydHMgY29tcGFyaXNvbiBmb3IgbnVtYmVycyBhbmQgRGF0ZSBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSB7YW55fSBhIC0gVGhlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIHthbnl9IGIgLSBUaGUgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGBhYCBpcyBncmVhdGVyIHRoYW4gYGJgLCBvdGhlcndpc2UgZmFsc2UuXG4gKlxuICogQHRocm93cyB7RXJyb3J9IElmIGVpdGhlciBgYWAgb3IgYGJgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgdmFsdWVzIGFyZSBvZiBtaXNtYXRjaGVkIG9yIHVuc3VwcG9ydGVkIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHcmVhdGVyVGhhbihhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoW251bGwsIHVuZGVmaW5lZF0uaW5jbHVkZXMoYSkgfHwgW251bGwsIHVuZGVmaW5lZF0uaW5jbHVkZXMoYikpXG4gICAgdGhyb3cgbmV3IEVycm9yKENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMuTlVMTF9PUl9VTkRFRklORURfQ09NUEFSSVNPTik7XG5cbiAgY29uc3QgYVR5cGUgPSB0eXBlb2YgYTtcbiAgY29uc3QgYlR5cGUgPSB0eXBlb2YgYjtcblxuICBpZiAoYVR5cGUgIT09IGJUeXBlKSB7XG4gICAgLy8gQWxsb3cgbnVtYmVyIFggYmlnaW50XG4gICAgaWYgKGFUeXBlID09PSBcImJpZ2ludFwiICYmIGJUeXBlID09PSBcIm51bWJlclwiKVxuICAgICAgcmV0dXJuIE51bWJlcihhKSA+IChiIGFzIG51bWJlcik7XG4gICAgaWYgKGFUeXBlID09PSBcIm51bWJlclwiICYmIGJUeXBlID09PSBcImJpZ2ludFwiKVxuICAgICAgcmV0dXJuIChhIGFzIG51bWJlcikgPiBOdW1iZXIoYik7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgc2YoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5UWVBFX01JU01BVENIX0NPTVBBUklTT04sIGFUeXBlLCBiVHlwZSlcbiAgICApO1xuICB9XG5cbiAgaWYgKFxuICAgIChhVHlwZSA9PT0gXCJudW1iZXJcIiAmJiBiVHlwZSA9PT0gXCJudW1iZXJcIikgfHxcbiAgICAoYVR5cGUgPT09IFwiYmlnaW50XCIgJiYgYlR5cGUgPT09IFwiYmlnaW50XCIpXG4gICkge1xuICAgIGlmIChOdW1iZXIuaXNOYU4oYSkgfHwgTnVtYmVyLmlzTmFOKGIpKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihDT01QQVJJU09OX0VSUk9SX01FU1NBR0VTLk5BTl9DT01QQVJJU09OKTtcbiAgICByZXR1cm4gYSA+IGI7XG4gIH1cblxuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBpZiAoaXNOYU4oYS5nZXRUaW1lKCkpIHx8IGlzTmFOKGIuZ2V0VGltZSgpKSlcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5JTlZBTElEX0RBVEVfQ09NUEFSSVNPTik7XG4gICAgcmV0dXJuIGEuZ2V0VGltZSgpID4gYi5nZXRUaW1lKCk7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIHNmKFxuICAgICAgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUy5VTlNVUFBPUlRFRF9UWVBFU19DT01QQVJJU09OLFxuICAgICAgZ2V0VHlwZU5hbWUoYSksXG4gICAgICBnZXRUeXBlTmFtZShiKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
@@ -1,54 +1,28 @@
1
1
  import "reflect-metadata";
2
2
  import { ModelConstructor } from "../model/types";
3
3
  /**
4
- * @description Property decorator that marks a field as required
5
- * @summary Marks the property as required, causing validation to fail if the property is undefined, null, or empty.
6
- * Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}.
7
- * This decorator is commonly used as the first validation step for important fields.
4
+ * @summary Marks the property as required.
5
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}
8
6
  *
9
- * @param {string} [message] - The error message to display when validation fails. Defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
10
- * @return {PropertyDecorator} A decorator function that can be applied to class properties
7
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
11
8
  *
12
9
  * @function required
13
- * @category Decorators
14
- *
15
- * @example
16
- * ```typescript
17
- * class User {
18
- * @required()
19
- * username: string;
20
10
  *
21
- * @required("Email address is mandatory")
22
- * email: string;
23
- * }
24
- * ```
11
+ * @category Decorators
25
12
  */
26
- export declare function required(message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
13
+ export declare function required(message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
27
14
  /**
28
- * @description Property decorator that enforces a minimum value constraint
29
- * @summary Defines a minimum value for the property, causing validation to fail if the property value is less than the specified minimum.
30
- * Validators to validate a decorated property must use key {@link ValidationKeys#MIN}.
31
- * This decorator works with numeric values and dates.
15
+ * @summary Defines a minimum value for the property
16
+ * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN}
32
17
  *
33
- * @param {number | Date | string} value - The minimum value allowed. For dates, can be a Date object or a string that can be converted to a date
34
- * @param {string} [message] - The error message to display when validation fails. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
35
- * @return {PropertyDecorator} A decorator function that can be applied to class properties
18
+ * @param {number | Date} value
19
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
36
20
  *
37
21
  * @function min
22
+ * @memberOf module:decorator-validation.Decorators.Validation
38
23
  * @category Decorators
39
- *
40
- * @example
41
- * ```typescript
42
- * class Product {
43
- * @min(0)
44
- * price: number;
45
- *
46
- * @min(new Date(2023, 0, 1), "Date must be after January 1, 2023")
47
- * releaseDate: Date;
48
- * }
49
- * ```
50
24
  */
51
- export declare function min(value: number | Date | string, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
25
+ export declare function min(value: number | Date | string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
52
26
  /**
53
27
  * @summary Defines a maximum value for the property
54
28
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX}
@@ -57,9 +31,10 @@ export declare function min(value: number | Date | string, message?: string): (t
57
31
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
58
32
  *
59
33
  * @function max
34
+ * @memberOf module:decorator-validation.Decorators.Validation
60
35
  * @category Decorators
61
36
  */
62
- export declare function max(value: number | Date | string, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
37
+ export declare function max(value: number | Date | string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
63
38
  /**
64
39
  * @summary Defines a step value for the property
65
40
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#STEP}
@@ -68,9 +43,10 @@ export declare function max(value: number | Date | string, message?: string): (t
68
43
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
69
44
  *
70
45
  * @function step
46
+ * @memberOf module:decorator-validation.Decorators.Validation
71
47
  * @category Decorators
72
48
  */
73
- export declare function step(value: number, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
49
+ export declare function step(value: number, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
74
50
  /**
75
51
  * @summary Defines a minimum length for the property
76
52
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN_LENGTH}
@@ -79,9 +55,10 @@ export declare function step(value: number, message?: string): (target: object,
79
55
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN_LENGTH}
80
56
  *
81
57
  * @function minlength
58
+ * @memberOf module:decorator-validation.Decorators.Validation
82
59
  * @category Decorators
83
60
  */
84
- export declare function minlength(value: number, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
61
+ export declare function minlength(value: number, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
85
62
  /**
86
63
  * @summary Defines a maximum length for the property
87
64
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX_LENGTH}
@@ -90,9 +67,10 @@ export declare function minlength(value: number, message?: string): (target: obj
90
67
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX_LENGTH}
91
68
  *
92
69
  * @function maxlength
70
+ * @memberOf module:decorator-validation.Decorators.Validation
93
71
  * @category Decorators
94
72
  */
95
- export declare function maxlength(value: number, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
73
+ export declare function maxlength(value: number, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
96
74
  /**
97
75
  * @summary Defines a RegExp pattern the property must respect
98
76
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#PATTERN}
@@ -101,9 +79,10 @@ export declare function maxlength(value: number, message?: string): (target: obj
101
79
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
102
80
  *
103
81
  * @function pattern
82
+ * @memberOf module:decorator-validation.Decorators.Validation
104
83
  * @category Decorators
105
84
  */
106
- export declare function pattern(value: RegExp | string, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
85
+ export declare function pattern(value: RegExp | string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
107
86
  /**
108
87
  * @summary Defines the property as an email
109
88
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#EMAIL}
@@ -111,9 +90,10 @@ export declare function pattern(value: RegExp | string, message?: string): (targ
111
90
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
112
91
  *
113
92
  * @function email
93
+ * @memberOf module:decorator-validation.Decorators.Validation
114
94
  * @category Decorators
115
95
  */
116
- export declare function email(message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
96
+ export declare function email(message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
117
97
  /**
118
98
  * @summary Defines the property as an URL
119
99
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#URL}
@@ -121,9 +101,10 @@ export declare function email(message?: string): (target: object, propertyKey?:
121
101
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
122
102
  *
123
103
  * @function url
104
+ * @memberOf module:decorator-validation.Decorators.Validation
124
105
  * @category Decorators
125
106
  */
126
- export declare function url(message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
107
+ export declare function url(message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
127
108
  /**
128
109
  * @summary Enforces type verification
129
110
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#TYPE}
@@ -132,9 +113,10 @@ export declare function url(message?: string): (target: object, propertyKey?: an
132
113
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#TYPE}
133
114
  *
134
115
  * @function type
116
+ * @memberOf module:decorator-validation.Decorators.Validation
135
117
  * @category Decorators
136
118
  */
137
- export declare function type(types: string[] | string, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
119
+ export declare function type(types: string[] | string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
138
120
  /**
139
121
  * @summary Date Handler Decorator
140
122
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#DATE}
@@ -143,24 +125,28 @@ export declare function type(types: string[] | string, message?: string): (targe
143
125
  *
144
126
  * @param {string} format accepted format according to {@link formatDate}
145
127
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
128
+ * @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link DateValidator}
146
129
  *
147
130
  * @function date
148
131
  *
132
+ * @memberOf module:decorator-validation.Decorators.Validation
149
133
  * @category Decorators
150
134
  */
151
- export declare function date(format?: string, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
135
+ export declare function date(format?: string, message?: string): (target: Record<string, any>, propertyKey?: any) => any;
152
136
  /**
153
137
  * @summary Password Handler Decorator
154
138
  * @description Validators to validate a decorated property must use key {@link ValidationKeys#PASSWORD}
155
139
  *
156
- * @param {RegExp} [pattern] defaults to {@link DEFAULT_PATTERNS#CHAR8_ONE_OF_EACH}
140
+ * @param {RegExp} [pattern] defaults to {@link PasswordPatterns#CHAR8_ONE_OF_EACH}
157
141
  * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PASSWORD}
142
+ * @param {Constructor<Validator>} [validator] Defaults to {@link PasswordValidator}
158
143
  *
159
144
  * @function password
160
145
  *
146
+ * @memberOf module:decorator-validation.Decorators.Validation
161
147
  * @category Decorators
162
148
  */
163
- export declare function password(pattern?: RegExp, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
149
+ export declare function password(pattern?: RegExp, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
164
150
  /**
165
151
  * @summary List Decorator
166
152
  * @description Also sets the {@link type} to the provided collection
@@ -168,21 +154,109 @@ export declare function password(pattern?: RegExp, message?: string): (target: o
168
154
  * @param {ModelConstructor} clazz
169
155
  * @param {string} [collection] The collection being used. defaults to Array
170
156
  * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
157
+ * @param {Constructor<Validator>} [validator] defaults to {@link ListValidator}
171
158
  *
172
159
  * @function list
173
160
  *
161
+ * @memberOf module:decorator-validation.Decorators.Validation
174
162
  * @category Decorators
175
163
  */
176
- export declare function list(clazz: ModelConstructor<any> | ModelConstructor<any>[], collection?: "Array" | "Set", message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
164
+ export declare function list(clazz: ModelConstructor<any> | ModelConstructor<any>[], collection?: "Array" | "Set", message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
177
165
  /**
178
166
  * @summary Set Decorator
179
167
  * @description Wrapper for {@link list} with the 'Set' Collection
180
168
  *
181
169
  * @param {ModelConstructor} clazz
182
170
  * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
171
+ * @param {Constructor<Validator>} [validator]
183
172
  *
184
173
  * @function set
185
174
  *
175
+ * @memberOf module:decorator-validation.Decorators.Validation
176
+ * @category Decorators
177
+ */
178
+ export declare function set(clazz: ModelConstructor<any>, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
179
+ /**
180
+ * @summary Declares that the decorated property must be equal to another specified property.
181
+ * @description Applies the {@link ValidationKeys.EQUALS} validator to ensure the decorated value matches the value of the given property.
182
+ *
183
+ * @param {string} propertyToCompare - The name of the property to compare equality against.
184
+ * @param {string} [message=DEFAULT_ERROR_MESSAGES.EQUALS] - Custom error message to return if validation fails.
185
+ *
186
+ * @returns {PropertyDecorator} A property decorator used to register the equality validation metadata.
187
+ *
188
+ * @function eq
189
+ * @memberOf module:decorator-validation.Decorators.Validation
190
+ * @category Decorators
191
+ */
192
+ export declare function eq(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
193
+ /**
194
+ * @summary Declares that the decorated property must be different from another specified property.
195
+ * @description Applies the {@link ValidationKeys.DIFF} validator to ensure the decorated value is different from the value of the given property.
196
+ *
197
+ * @param {string} propertyToCompare - The name of the property to compare difference against.
198
+ * @param {string} [message=DEFAULT_ERROR_MESSAGES.DIFF] - Custom error message to return if validation fails.
199
+ *
200
+ * @returns {PropertyDecorator} A property decorator used to register the difference validation metadata.
201
+ *
202
+ * @function diff
203
+ * @memberOf module:decorator-validation.Decorators.Validation
204
+ * @category Decorators
205
+ */
206
+ export declare function diff(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
207
+ /**
208
+ * @summary Declares that the decorated property must be less than another specified property.
209
+ * @description Applies the {@link ValidationKeys.LESS_THAN} validator to ensure the decorated value is less than the value of the given property.
210
+ *
211
+ * @param {string} propertyToCompare - The name of the property to compare against.
212
+ * @param {string} [message=DEFAULT_ERROR_MESSAGES.LESS_THAN] - Custom error message to return if validation fails.
213
+ *
214
+ * @returns {PropertyDecorator} A property decorator used to register the less than validation metadata.
215
+ *
216
+ * @function lt
217
+ * @memberOf module:decorator-validation.Decorators.Validation
218
+ * @category Decorators
219
+ */
220
+ export declare function lt(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
221
+ /**
222
+ * @summary Declares that the decorated property must be equal or less than another specified property.
223
+ * @description Applies the {@link ValidationKeys.LESS_THAN_OR_EQUAL} validator to ensure the decorated value is equal or less than the value of the given property.
224
+ *
225
+ * @param {string} propertyToCompare - The name of the property to compare against.
226
+ * @param {string} [message=DEFAULT_ERROR_MESSAGES.LESS_THAN_OR_EQUAL] - Custom error message to return if validation fails.
227
+ *
228
+ * @returns {PropertyDecorator} A property decorator used to register the less than or equal validation metadata.
229
+ *
230
+ * @function lte
231
+ * @memberOf module:decorator-validation.Decorators.Validation
232
+ * @category Decorators
233
+ */
234
+ export declare function lte(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
235
+ /**
236
+ * @summary Declares that the decorated property must be greater than another specified property.
237
+ * @description Applies the {@link ValidationKeys.GREATER_THAN} validator to ensure the decorated value is greater than the value of the given property.
238
+ *
239
+ * @param {string} propertyToCompare - The name of the property to compare against.
240
+ * @param {string} [message=DEFAULT_ERROR_MESSAGES.GREATER_THAN] - Custom error message to return if validation fails.
241
+ *
242
+ * @returns {PropertyDecorator} A property decorator used to register the greater than validation metadata.
243
+ *
244
+ * @function gt
245
+ * @memberOf module:decorator-validation.Decorators.Validation
246
+ * @category Decorators
247
+ */
248
+ export declare function gt(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
249
+ /**
250
+ * @summary Declares that the decorated property must be equal or greater than another specified property.
251
+ * @description Applies the {@link ValidationKeys.GREATER_THAN_OR_EQUAL} validator to ensure the decorated value is equal or greater than the value of the given property.
252
+ *
253
+ * @param {string} propertyToCompare - The name of the property to compare against.
254
+ * @param {string} [message=DEFAULT_ERROR_MESSAGES.GREATER_THAN_OR_EQUAL] - Custom error message to return if validation fails.
255
+ *
256
+ * @returns {PropertyDecorator} A property decorator used to register the greater than or equal validation metadata.
257
+ *
258
+ * @function gte
259
+ * @memberOf module:decorator-validation.Decorators.Validation
186
260
  * @category Decorators
187
261
  */
188
- export declare function set(clazz: ModelConstructor<any>, message?: string): (target: object, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
262
+ export declare function gte(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;