@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.
- package/dist/decorator-validation.cjs +1016 -1164
- package/dist/decorator-validation.esm.cjs +971 -1134
- package/lib/constants/index.cjs +18 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/validation.cjs +14 -0
- package/lib/constants/validation.d.ts +10 -0
- package/lib/esm/constants/index.d.ts +1 -0
- package/lib/esm/constants/index.js +2 -0
- package/lib/esm/constants/validation.d.ts +10 -0
- package/lib/esm/constants/validation.js +11 -0
- package/lib/esm/index.d.ts +37 -5
- package/lib/esm/index.js +38 -6
- package/lib/esm/model/Model.d.ts +29 -100
- package/lib/esm/model/Model.js +37 -104
- package/lib/esm/model/constants.d.ts +3 -3
- package/lib/esm/model/constants.js +4 -4
- package/lib/esm/model/construction.d.ts +3 -3
- package/lib/esm/model/construction.js +4 -4
- package/lib/esm/model/decorators.d.ts +4 -4
- package/lib/esm/model/decorators.js +5 -6
- package/lib/esm/model/types.d.ts +11 -30
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/model/validation.d.ts +2 -2
- package/lib/esm/model/validation.js +18 -7
- package/lib/esm/utils/constants.d.ts +9 -27
- package/lib/esm/utils/constants.js +10 -28
- package/lib/esm/utils/dates.d.ts +16 -26
- package/lib/esm/utils/dates.js +17 -27
- package/lib/esm/utils/decorators.d.ts +0 -41
- package/lib/esm/utils/decorators.js +1 -42
- package/lib/esm/utils/hashing.d.ts +6 -50
- package/lib/esm/utils/hashing.js +5 -49
- package/lib/esm/utils/index.d.ts +0 -1
- package/lib/esm/utils/index.js +1 -2
- package/lib/esm/utils/registry.d.ts +2 -2
- package/lib/esm/utils/registry.js +1 -1
- package/lib/esm/utils/serialization.d.ts +1 -1
- package/lib/esm/utils/serialization.js +2 -2
- package/lib/esm/utils/strings.d.ts +4 -4
- package/lib/esm/utils/strings.js +5 -5
- package/lib/esm/utils/types.d.ts +16 -123
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/validation/Validators/DateValidator.d.ts +8 -40
- package/lib/esm/validation/Validators/DateValidator.js +9 -41
- package/lib/esm/validation/Validators/DiffValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/DiffValidator.js +58 -0
- package/lib/esm/validation/Validators/EmailValidator.d.ts +7 -39
- package/lib/esm/validation/Validators/EmailValidator.js +8 -40
- package/lib/esm/validation/Validators/EqualsValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/EqualsValidator.js +63 -0
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +65 -0
- package/lib/esm/validation/Validators/GreaterThanValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/GreaterThanValidator.js +62 -0
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +65 -0
- package/lib/esm/validation/Validators/LessThanValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/LessThanValidator.js +62 -0
- package/lib/esm/validation/Validators/ListValidator.d.ts +6 -44
- package/lib/esm/validation/Validators/ListValidator.js +7 -45
- package/lib/esm/validation/Validators/MaxValidator.d.ts +6 -52
- package/lib/esm/validation/Validators/MaxValidator.js +7 -53
- package/lib/esm/validation/Validators/MinValidator.d.ts +6 -52
- package/lib/esm/validation/Validators/MinValidator.js +7 -53
- package/lib/esm/validation/Validators/PatternValidator.d.ts +9 -75
- package/lib/esm/validation/Validators/PatternValidator.js +10 -76
- package/lib/esm/validation/Validators/RequiredValidator.d.ts +6 -52
- package/lib/esm/validation/Validators/RequiredValidator.js +7 -53
- package/lib/esm/validation/Validators/TypeValidator.d.ts +6 -60
- package/lib/esm/validation/Validators/TypeValidator.js +7 -69
- package/lib/esm/validation/Validators/URLValidator.d.ts +7 -41
- package/lib/esm/validation/Validators/URLValidator.js +8 -42
- package/lib/esm/validation/Validators/Validator.d.ts +17 -77
- package/lib/esm/validation/Validators/Validator.js +11 -68
- package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +7 -1
- package/lib/esm/validation/Validators/ValidatorRegistry.js +11 -4
- package/lib/esm/validation/Validators/constants.d.ts +41 -0
- package/lib/esm/validation/Validators/constants.js +43 -1
- package/lib/esm/validation/Validators/index.d.ts +7 -0
- package/lib/esm/validation/Validators/index.js +8 -1
- package/lib/esm/validation/Validators/utils.d.ts +52 -0
- package/lib/esm/validation/Validators/utils.js +174 -0
- package/lib/esm/validation/decorators.d.ts +124 -50
- package/lib/esm/validation/decorators.js +173 -102
- package/lib/esm/validation/types.d.ts +31 -146
- package/lib/esm/validation/types.js +1 -1
- package/lib/index.cjs +39 -7
- package/lib/index.d.ts +37 -5
- package/lib/model/Model.cjs +39 -104
- package/lib/model/Model.d.ts +29 -100
- package/lib/model/constants.cjs +4 -4
- package/lib/model/constants.d.ts +3 -3
- package/lib/model/construction.cjs +4 -4
- package/lib/model/construction.d.ts +3 -3
- package/lib/model/decorators.cjs +5 -6
- package/lib/model/decorators.d.ts +4 -4
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +11 -30
- package/lib/model/validation.cjs +25 -14
- package/lib/model/validation.d.ts +2 -2
- package/lib/utils/constants.cjs +11 -29
- package/lib/utils/constants.d.ts +9 -27
- package/lib/utils/dates.cjs +17 -27
- package/lib/utils/dates.d.ts +16 -26
- package/lib/utils/decorators.cjs +1 -42
- package/lib/utils/decorators.d.ts +0 -41
- package/lib/utils/hashing.cjs +5 -49
- package/lib/utils/hashing.d.ts +6 -50
- package/lib/utils/index.cjs +1 -2
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/registry.cjs +1 -1
- package/lib/utils/registry.d.ts +2 -2
- package/lib/utils/serialization.cjs +2 -2
- package/lib/utils/serialization.d.ts +1 -1
- package/lib/utils/strings.cjs +5 -5
- package/lib/utils/strings.d.ts +4 -4
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.d.ts +16 -123
- package/lib/validation/Validators/DateValidator.cjs +9 -41
- package/lib/validation/Validators/DateValidator.d.ts +8 -40
- package/lib/validation/Validators/DiffValidator.cjs +61 -0
- package/lib/validation/Validators/DiffValidator.d.ts +27 -0
- package/lib/validation/Validators/EmailValidator.cjs +8 -40
- package/lib/validation/Validators/EmailValidator.d.ts +7 -39
- package/lib/validation/Validators/EqualsValidator.cjs +66 -0
- package/lib/validation/Validators/EqualsValidator.d.ts +27 -0
- package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +68 -0
- package/lib/validation/Validators/GreaterThanOrEqualValidator.d.ts +27 -0
- package/lib/validation/Validators/GreaterThanValidator.cjs +65 -0
- package/lib/validation/Validators/GreaterThanValidator.d.ts +27 -0
- package/lib/validation/Validators/LessThanOrEqualValidator.cjs +68 -0
- package/lib/validation/Validators/LessThanOrEqualValidator.d.ts +27 -0
- package/lib/validation/Validators/LessThanValidator.cjs +65 -0
- package/lib/validation/Validators/LessThanValidator.d.ts +27 -0
- package/lib/validation/Validators/ListValidator.cjs +7 -45
- package/lib/validation/Validators/ListValidator.d.ts +6 -44
- package/lib/validation/Validators/MaxValidator.cjs +7 -53
- package/lib/validation/Validators/MaxValidator.d.ts +6 -52
- package/lib/validation/Validators/MinValidator.cjs +7 -53
- package/lib/validation/Validators/MinValidator.d.ts +6 -52
- package/lib/validation/Validators/PatternValidator.cjs +10 -76
- package/lib/validation/Validators/PatternValidator.d.ts +9 -75
- package/lib/validation/Validators/RequiredValidator.cjs +7 -53
- package/lib/validation/Validators/RequiredValidator.d.ts +6 -52
- package/lib/validation/Validators/TypeValidator.cjs +7 -69
- package/lib/validation/Validators/TypeValidator.d.ts +6 -60
- package/lib/validation/Validators/URLValidator.cjs +8 -42
- package/lib/validation/Validators/URLValidator.d.ts +7 -41
- package/lib/validation/Validators/Validator.cjs +11 -68
- package/lib/validation/Validators/Validator.d.ts +17 -77
- package/lib/validation/Validators/ValidatorRegistry.cjs +12 -4
- package/lib/validation/Validators/ValidatorRegistry.d.ts +7 -1
- package/lib/validation/Validators/constants.cjs +44 -2
- package/lib/validation/Validators/constants.d.ts +41 -0
- package/lib/validation/Validators/index.cjs +8 -1
- package/lib/validation/Validators/index.d.ts +7 -0
- package/lib/validation/Validators/utils.cjs +180 -0
- package/lib/validation/Validators/utils.d.ts +52 -0
- package/lib/validation/decorators.cjs +179 -102
- package/lib/validation/decorators.d.ts +124 -50
- package/lib/validation/types.cjs +1 -1
- package/lib/validation/types.d.ts +31 -146
- package/package.json +1 -1
- package/lib/esm/utils/Decoration.d.ts +0 -123
- package/lib/esm/utils/Decoration.js +0 -188
- package/lib/utils/Decoration.cjs +0 -192
- 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
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFJLEdBQXdCLEVBQUUsSUFBWTtJQUN0RSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU5QywrQkFBK0I7SUFDL0IsSUFBSSxjQUFjLEdBQVEsR0FBRyxDQUFDO0lBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQ2IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QixFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ3pFLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FDYixFQUFFLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FDaEUsQ0FBQztRQUNKLENBQUM7UUFFRCxjQUFjLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLElBQUksWUFBWSxHQUFRLGNBQWMsQ0FBQztJQUV2QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQ0UsWUFBWSxLQUFLLElBQUk7WUFDckIsT0FBTyxZQUFZLEtBQUssUUFBUTtZQUNoQyxJQUFJLElBQUksWUFBWSxFQUNwQixDQUFDO1lBQ0QsWUFBWSxHQUFJLFlBQW9DLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLGdCQUFnQixHQUNwQixXQUFXLEtBQUssQ0FBQztnQkFDZixDQUFDLENBQUMseUJBQXlCLENBQUMsa0JBQWtCO2dCQUM5QyxDQUFDLENBQUMsV0FBVyxLQUFLLENBQUM7b0JBQ2pCLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyw0QkFBNEI7b0JBQ3hELENBQUMsQ0FBQyx5QkFBeUIsQ0FBQywrQkFBK0IsQ0FBQztZQUVsRSxNQUFNLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFlBQWlCLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUU7SUFDN0MsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ2xDLElBQUksS0FBSyxZQUFZLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdEMsSUFBSSxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sVUFBVSxDQUFDO0lBQzFDLElBQUksS0FBSyxLQUFLLENBQUMsUUFBUTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQzVDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUN6QyxPQUFPLE9BQU8sS0FBSyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQ2xCLEtBQWMsRUFDK0IsRUFBRTtJQUMvQyxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxZQUFZLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUU5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQztJQUUzQyw2REFBNkQ7SUFDN0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsQ0FBTSxFQUFFLENBQU07SUFDekQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRWxELE1BQU0sSUFBSSxTQUFTLENBQ2pCLEVBQUUsQ0FDQSx5QkFBeUIsQ0FBQyw0QkFBNEIsRUFDdEQsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQU0sRUFBRSxDQUFNO0lBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBRTFFLDhCQUE4QjtJQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQztJQUV2QixJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNwQix3QkFBd0I7UUFDeEIsSUFBSSxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxRQUFRO1lBQzFDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFJLENBQVksQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLFFBQVE7WUFDMUMsT0FBUSxDQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sSUFBSSxTQUFTLENBQ2pCLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQ3JFLENBQUM7SUFDSixDQUFDO0lBRUQsSUFDRSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLFFBQVEsQ0FBQztRQUMxQyxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUMxQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxTQUFTLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDM0MsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksU0FBUyxDQUFDLHlCQUF5QixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDekUsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLElBQUksU0FBUyxDQUNqQixFQUFFLENBQ0EseUJBQXlCLENBQUMsNEJBQTRCLEVBQ3RELFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxDQUFNLEVBQUUsQ0FBTTtJQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUUxRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQztJQUV2QixJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNwQix3QkFBd0I7UUFDeEIsSUFBSSxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxRQUFRO1lBQzFDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFJLENBQVksQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLFFBQVE7WUFDMUMsT0FBUSxDQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FDckUsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUNFLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDO1FBQzFDLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQzFDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxJQUFJLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxTQUFTLENBQUMseUJBQXlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN6RSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sSUFBSSxTQUFTLENBQ2pCLEVBQUUsQ0FDQSx5QkFBeUIsQ0FBQyw0QkFBNEIsRUFDdEQsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkFMSURBVElPTl9QQVJFTlRfS0VZIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2YgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nc1wiO1xuaW1wb3J0IHsgQ09NUEFSSVNPTl9FUlJPUl9NRVNTQUdFUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIFNhZmVseSByZXRyaWV2ZXMgYSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbSBhbiBvYmplY3QgdXNpbmcgYSBkb3Qtbm90YXRlZCBwYXRoIHN0cmluZy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSBleHBlY3RlZCByZXR1cm4gdHlwZSBvZiB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+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
|
-
* @
|
|
5
|
-
* @
|
|
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]
|
|
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
|
-
*
|
|
22
|
-
* email: string;
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
11
|
+
* @category Decorators
|
|
25
12
|
*/
|
|
26
|
-
export declare function required(message?: string): (target: object, propertyKey?:
|
|
13
|
+
export declare function required(message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
27
14
|
/**
|
|
28
|
-
* @
|
|
29
|
-
* @
|
|
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
|
|
34
|
-
* @param {string} [message]
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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:
|
|
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
|
|
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?:
|
|
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?:
|
|
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
|
|
262
|
+
export declare function gte(propertyToCompare: string, message?: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|