@decaf-ts/decorator-validation 1.6.3 → 1.6.5
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 +46 -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 +46 -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
|
@@ -11,48 +11,13 @@ import { Validator } from "./Validator";
|
|
|
11
11
|
import { DEFAULT_ERROR_MESSAGES, ValidationKeys } from "./constants";
|
|
12
12
|
import { validator } from "./decorators";
|
|
13
13
|
/**
|
|
14
|
-
* @
|
|
15
|
-
* @summary The ListValidator validates that all elements in an array or Set match the expected types.
|
|
16
|
-
* It checks each element against a list of allowed class types and ensures type consistency.
|
|
17
|
-
* This validator is typically used with the @list decorator.
|
|
14
|
+
* @summary List Validator
|
|
18
15
|
*
|
|
19
|
-
* @param {string} [message]
|
|
16
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
|
|
20
17
|
*
|
|
21
18
|
* @class ListValidator
|
|
22
19
|
* @extends Validator
|
|
23
20
|
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* // Create a list validator with default error message
|
|
27
|
-
* const listValidator = new ListValidator();
|
|
28
|
-
*
|
|
29
|
-
* // Create a list validator with custom error message
|
|
30
|
-
* const customListValidator = new ListValidator("All items must be of the specified type");
|
|
31
|
-
*
|
|
32
|
-
* // Validate a list
|
|
33
|
-
* const options = { clazz: ["String", "Number"] };
|
|
34
|
-
* const result = listValidator.hasErrors(["test", 123], options); // undefined (valid)
|
|
35
|
-
* const invalidResult = listValidator.hasErrors([new Date()], options); // Returns error message (invalid)
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* @mermaid
|
|
39
|
-
* sequenceDiagram
|
|
40
|
-
* participant C as Client
|
|
41
|
-
* participant V as ListValidator
|
|
42
|
-
*
|
|
43
|
-
* C->>V: new ListValidator(message)
|
|
44
|
-
* C->>V: hasErrors(value, options)
|
|
45
|
-
* alt value is empty
|
|
46
|
-
* V-->>C: undefined (valid)
|
|
47
|
-
* else value has elements
|
|
48
|
-
* V->>V: Check each element's type
|
|
49
|
-
* alt All elements match allowed types
|
|
50
|
-
* V-->>C: undefined (valid)
|
|
51
|
-
* else Some elements don't match
|
|
52
|
-
* V-->>C: Error message
|
|
53
|
-
* end
|
|
54
|
-
* end
|
|
55
|
-
*
|
|
56
21
|
* @category Validators
|
|
57
22
|
*/
|
|
58
23
|
let ListValidator = class ListValidator extends Validator {
|
|
@@ -60,15 +25,12 @@ let ListValidator = class ListValidator extends Validator {
|
|
|
60
25
|
super(message, Array.name, Set.name);
|
|
61
26
|
}
|
|
62
27
|
/**
|
|
63
|
-
* @
|
|
64
|
-
* @summary Validates that each element in the provided array or Set matches one of the
|
|
65
|
-
* class types specified in the options. For object types, it checks the constructor name,
|
|
66
|
-
* and for primitive types, it compares against the lowercase type name.
|
|
28
|
+
* @summary Validates a model
|
|
67
29
|
*
|
|
68
|
-
* @param {any[] | Set<any>} value
|
|
69
|
-
* @param {ListValidatorOptions} options
|
|
30
|
+
* @param {any[] | Set<any>} value
|
|
31
|
+
* @param {ListValidatorOptions} options
|
|
70
32
|
*
|
|
71
|
-
* @return {string | undefined}
|
|
33
|
+
* @return {string | undefined}
|
|
72
34
|
*
|
|
73
35
|
* @override
|
|
74
36
|
*
|
|
@@ -103,4 +65,4 @@ ListValidator = __decorate([
|
|
|
103
65
|
__metadata("design:paramtypes", [String])
|
|
104
66
|
], ListValidator);
|
|
105
67
|
export { ListValidator };
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvTGlzdFZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd6Qzs7Ozs7Ozs7O0dBU0c7QUFFSSxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsU0FBK0I7SUFDaEUsWUFBWSxVQUFrQixzQkFBc0IsQ0FBQyxJQUFJO1FBQ3ZELEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsU0FBUyxDQUNQLEtBQXVCLEVBQ3ZCLE9BQTZCO1FBRTdCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU87UUFFM0UsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUNmLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixJQUFJLEdBQVEsRUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLEtBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNULENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFDdEQsQ0FBQyxFQUFFLEVBQ0gsQ0FBQztZQUNELEdBQUcsR0FBSSxLQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsUUFBUSxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixLQUFLLFFBQVEsQ0FBQztnQkFDZCxLQUFLLFVBQVU7b0JBQ2IsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUUsR0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDNUQsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7b0JBQ3BFLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTztZQUNaLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRixDQUFBO0FBakRZLGFBQWE7SUFEekIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7O0dBQ2xCLGFBQWEsQ0FpRHpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTGlzdFZhbGlkYXRvck9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBMaXN0IFZhbGlkYXRvclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gZGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTElTVH1cbiAqXG4gKiBAY2xhc3MgTGlzdFZhbGlkYXRvclxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuQHZhbGlkYXRvcihWYWxpZGF0aW9uS2V5cy5MSVNUKVxuZXhwb3J0IGNsYXNzIExpc3RWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3I8TGlzdFZhbGlkYXRvck9wdGlvbnM+IHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5MSVNUKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhIG1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSB7YW55W10gfCBTZXQ8YW55Pn0gdmFsdWVcbiAgICogQHBhcmFtIHtMaXN0VmFsaWRhdG9yT3B0aW9uc30gb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvciNoYXNFcnJvcnNcbiAgICovXG4gIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogYW55W10gfCBTZXQ8YW55PixcbiAgICBvcHRpb25zOiBMaXN0VmFsaWRhdG9yT3B0aW9uc1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpID8gIXZhbHVlLmxlbmd0aCA6ICF2YWx1ZS5zaXplKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY2xhenogPSBBcnJheS5pc0FycmF5KG9wdGlvbnMuY2xhenopXG4gICAgICA/IG9wdGlvbnMuY2xhenpcbiAgICAgIDogW29wdGlvbnMuY2xhenpdO1xuICAgIGxldCB2YWw6IGFueSxcbiAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgIGZvciAoXG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBpIDwgKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubGVuZ3RoIDogdmFsdWUuc2l6ZSk7XG4gICAgICBpKytcbiAgICApIHtcbiAgICAgIHZhbCA9ICh2YWx1ZSBhcyBhbnkpW2ldO1xuICAgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7XG4gICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgaXNWYWxpZCA9IGNsYXp6LmluY2x1ZGVzKCh2YWwgYXMgb2JqZWN0KS5jb25zdHJ1Y3Rvcj8ubmFtZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaXNWYWxpZCA9IGNsYXp6LnNvbWUoKGM6IHN0cmluZykgPT4gdHlwZW9mIHZhbCA9PT0gYy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNWYWxpZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogdGhpcy5nZXRNZXNzYWdlKG9wdGlvbnMubWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UsIGNsYXp6KTtcbiAgfVxufVxuIl19
|
|
@@ -1,70 +1,24 @@
|
|
|
1
1
|
import { Validator } from "./Validator";
|
|
2
2
|
import { MaxValidatorOptions } from "../types";
|
|
3
3
|
/**
|
|
4
|
-
* @
|
|
5
|
-
* @summary The MaxValidator checks if a numeric value, date, or string is less than or equal to
|
|
6
|
-
* a specified maximum value. It supports comparing numbers directly, dates chronologically,
|
|
7
|
-
* and strings lexicographically. This validator is typically used with the @max decorator.
|
|
4
|
+
* @summary Max Validator
|
|
8
5
|
*
|
|
9
|
-
* @param {string} [message]
|
|
6
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
|
|
10
7
|
*
|
|
11
8
|
* @class MaxValidator
|
|
12
9
|
* @extends Validator
|
|
13
10
|
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* // Create a max validator with default error message
|
|
17
|
-
* const maxValidator = new MaxValidator();
|
|
18
|
-
*
|
|
19
|
-
* // Create a max validator with custom error message
|
|
20
|
-
* const customMaxValidator = new MaxValidator("Value must not exceed {0}");
|
|
21
|
-
*
|
|
22
|
-
* // Validate a number
|
|
23
|
-
* const numOptions = { max: 100, message: "Number too large" };
|
|
24
|
-
* const numResult = maxValidator.hasErrors(50, numOptions); // undefined (valid)
|
|
25
|
-
* const invalidNumResult = maxValidator.hasErrors(150, numOptions); // Returns error message (invalid)
|
|
26
|
-
*
|
|
27
|
-
* // Validate a date
|
|
28
|
-
* const dateOptions = { max: new Date(2023, 11, 31) };
|
|
29
|
-
* const dateResult = maxValidator.hasErrors(new Date(2023, 5, 15), dateOptions); // undefined (valid)
|
|
30
|
-
* ```
|
|
31
|
-
*
|
|
32
|
-
* @mermaid
|
|
33
|
-
* sequenceDiagram
|
|
34
|
-
* participant C as Client
|
|
35
|
-
* participant V as MaxValidator
|
|
36
|
-
*
|
|
37
|
-
* C->>V: new MaxValidator(message)
|
|
38
|
-
* C->>V: hasErrors(value, options)
|
|
39
|
-
* alt value is undefined
|
|
40
|
-
* V-->>C: undefined (valid)
|
|
41
|
-
* else value is Date and max is not Date
|
|
42
|
-
* V->>V: Convert max to Date
|
|
43
|
-
* alt conversion fails
|
|
44
|
-
* V-->>C: Error: Invalid Max param
|
|
45
|
-
* end
|
|
46
|
-
* end
|
|
47
|
-
* alt value > max
|
|
48
|
-
* V-->>C: Error message
|
|
49
|
-
* else value <= max
|
|
50
|
-
* V-->>C: undefined (valid)
|
|
51
|
-
* end
|
|
52
|
-
*
|
|
53
11
|
* @category Validators
|
|
54
12
|
*/
|
|
55
13
|
export declare class MaxValidator extends Validator<MaxValidatorOptions> {
|
|
56
14
|
constructor(message?: string);
|
|
57
15
|
/**
|
|
58
|
-
* @
|
|
59
|
-
* @summary Validates that the provided value does not exceed the maximum value
|
|
60
|
-
* specified in the options. For dates, it performs chronological comparison,
|
|
61
|
-
* converting string representations to Date objects if necessary. For numbers
|
|
62
|
-
* and strings, it performs direct comparison.
|
|
16
|
+
* @summary Validates a Model
|
|
63
17
|
*
|
|
64
|
-
* @param {
|
|
65
|
-
* @param {MaxValidatorOptions} options
|
|
18
|
+
* @param {string} value
|
|
19
|
+
* @param {MaxValidatorOptions} options
|
|
66
20
|
*
|
|
67
|
-
* @return {string | undefined}
|
|
21
|
+
* @return {string | undefined}
|
|
68
22
|
*
|
|
69
23
|
* @override
|
|
70
24
|
*
|
|
@@ -11,55 +11,13 @@ import { Validator } from "./Validator";
|
|
|
11
11
|
import { DEFAULT_ERROR_MESSAGES, ValidationKeys } from "./constants";
|
|
12
12
|
import { validator } from "./decorators";
|
|
13
13
|
/**
|
|
14
|
-
* @
|
|
15
|
-
* @summary The MaxValidator checks if a numeric value, date, or string is less than or equal to
|
|
16
|
-
* a specified maximum value. It supports comparing numbers directly, dates chronologically,
|
|
17
|
-
* and strings lexicographically. This validator is typically used with the @max decorator.
|
|
14
|
+
* @summary Max Validator
|
|
18
15
|
*
|
|
19
|
-
* @param {string} [message]
|
|
16
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
|
|
20
17
|
*
|
|
21
18
|
* @class MaxValidator
|
|
22
19
|
* @extends Validator
|
|
23
20
|
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* // Create a max validator with default error message
|
|
27
|
-
* const maxValidator = new MaxValidator();
|
|
28
|
-
*
|
|
29
|
-
* // Create a max validator with custom error message
|
|
30
|
-
* const customMaxValidator = new MaxValidator("Value must not exceed {0}");
|
|
31
|
-
*
|
|
32
|
-
* // Validate a number
|
|
33
|
-
* const numOptions = { max: 100, message: "Number too large" };
|
|
34
|
-
* const numResult = maxValidator.hasErrors(50, numOptions); // undefined (valid)
|
|
35
|
-
* const invalidNumResult = maxValidator.hasErrors(150, numOptions); // Returns error message (invalid)
|
|
36
|
-
*
|
|
37
|
-
* // Validate a date
|
|
38
|
-
* const dateOptions = { max: new Date(2023, 11, 31) };
|
|
39
|
-
* const dateResult = maxValidator.hasErrors(new Date(2023, 5, 15), dateOptions); // undefined (valid)
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* @mermaid
|
|
43
|
-
* sequenceDiagram
|
|
44
|
-
* participant C as Client
|
|
45
|
-
* participant V as MaxValidator
|
|
46
|
-
*
|
|
47
|
-
* C->>V: new MaxValidator(message)
|
|
48
|
-
* C->>V: hasErrors(value, options)
|
|
49
|
-
* alt value is undefined
|
|
50
|
-
* V-->>C: undefined (valid)
|
|
51
|
-
* else value is Date and max is not Date
|
|
52
|
-
* V->>V: Convert max to Date
|
|
53
|
-
* alt conversion fails
|
|
54
|
-
* V-->>C: Error: Invalid Max param
|
|
55
|
-
* end
|
|
56
|
-
* end
|
|
57
|
-
* alt value > max
|
|
58
|
-
* V-->>C: Error message
|
|
59
|
-
* else value <= max
|
|
60
|
-
* V-->>C: undefined (valid)
|
|
61
|
-
* end
|
|
62
|
-
*
|
|
63
21
|
* @category Validators
|
|
64
22
|
*/
|
|
65
23
|
let MaxValidator = class MaxValidator extends Validator {
|
|
@@ -67,16 +25,12 @@ let MaxValidator = class MaxValidator extends Validator {
|
|
|
67
25
|
super(message, "number", "Date", "string");
|
|
68
26
|
}
|
|
69
27
|
/**
|
|
70
|
-
* @
|
|
71
|
-
* @summary Validates that the provided value does not exceed the maximum value
|
|
72
|
-
* specified in the options. For dates, it performs chronological comparison,
|
|
73
|
-
* converting string representations to Date objects if necessary. For numbers
|
|
74
|
-
* and strings, it performs direct comparison.
|
|
28
|
+
* @summary Validates a Model
|
|
75
29
|
*
|
|
76
|
-
* @param {
|
|
77
|
-
* @param {MaxValidatorOptions} options
|
|
30
|
+
* @param {string} value
|
|
31
|
+
* @param {MaxValidatorOptions} options
|
|
78
32
|
*
|
|
79
|
-
* @return {string | undefined}
|
|
33
|
+
* @return {string | undefined}
|
|
80
34
|
*
|
|
81
35
|
* @override
|
|
82
36
|
*
|
|
@@ -101,4 +55,4 @@ MaxValidator = __decorate([
|
|
|
101
55
|
__metadata("design:paramtypes", [String])
|
|
102
56
|
], MaxValidator);
|
|
103
57
|
export { MaxValidator };
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF4VmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9NYXhWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHekM7Ozs7Ozs7OztHQVNHO0FBRUksSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLFNBQThCO0lBQzlELFlBQVksVUFBa0Isc0JBQXNCLENBQUMsR0FBRztRQUN0RCxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksU0FBUyxDQUNkLEtBQTZCLEVBQzdCLE9BQTRCO1FBRTVCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVztZQUFFLE9BQU87UUFFekMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BELEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELE9BQU8sS0FBSyxHQUFHLEdBQUc7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztZQUN2RCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7Q0FDRixDQUFBO0FBbENZLFlBQVk7SUFEeEIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7O0dBQ2pCLFlBQVksQ0FrQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTWF4VmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IE1heCBWYWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI01BWH1cbiAqXG4gKiBAY2xhc3MgTWF4VmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBWYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLk1BWClcbmV4cG9ydCBjbGFzcyBNYXhWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3I8TWF4VmFsaWRhdG9yT3B0aW9ucz4ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWCkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIFwibnVtYmVyXCIsIFwiRGF0ZVwiLCBcInN0cmluZ1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSBNb2RlbFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtNYXhWYWxpZGF0b3JPcHRpb25zfSBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgICBvcHRpb25zOiBNYXhWYWxpZGF0b3JPcHRpb25zXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXG4gICAgbGV0IHsgbWF4IH0gPSBvcHRpb25zO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIShtYXggaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgbWF4ID0gbmV3IERhdGUobWF4KTtcbiAgICAgIGlmIChOdW1iZXIuaXNOYU4obWF4LmdldERhdGUoKSkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgTWF4IHBhcmFtIGRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlID4gbWF4XG4gICAgICA/IHRoaXMuZ2V0TWVzc2FnZShvcHRpb25zLm1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBtYXgpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
@@ -1,70 +1,24 @@
|
|
|
1
1
|
import { Validator } from "./Validator";
|
|
2
2
|
import { MinValidatorOptions } from "../types";
|
|
3
3
|
/**
|
|
4
|
-
* @
|
|
5
|
-
* @summary The MinValidator checks if a numeric value, date, or string is greater than or equal to
|
|
6
|
-
* a specified minimum value. It supports comparing numbers directly, dates chronologically,
|
|
7
|
-
* and strings lexicographically. This validator is typically used with the @min decorator.
|
|
4
|
+
* @summary Min Validator
|
|
8
5
|
*
|
|
9
|
-
* @param {string} [message]
|
|
6
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
|
|
10
7
|
*
|
|
11
8
|
* @class MinValidator
|
|
12
9
|
* @extends Validator
|
|
13
10
|
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* // Create a min validator with default error message
|
|
17
|
-
* const minValidator = new MinValidator();
|
|
18
|
-
*
|
|
19
|
-
* // Create a min validator with custom error message
|
|
20
|
-
* const customMinValidator = new MinValidator("Value must be at least {0}");
|
|
21
|
-
*
|
|
22
|
-
* // Validate a number
|
|
23
|
-
* const numOptions = { min: 10, message: "Number too small" };
|
|
24
|
-
* const numResult = minValidator.hasErrors(50, numOptions); // undefined (valid)
|
|
25
|
-
* const invalidNumResult = minValidator.hasErrors(5, numOptions); // Returns error message (invalid)
|
|
26
|
-
*
|
|
27
|
-
* // Validate a date
|
|
28
|
-
* const dateOptions = { min: new Date(2023, 0, 1) };
|
|
29
|
-
* const dateResult = minValidator.hasErrors(new Date(2023, 5, 15), dateOptions); // undefined (valid)
|
|
30
|
-
* ```
|
|
31
|
-
*
|
|
32
|
-
* @mermaid
|
|
33
|
-
* sequenceDiagram
|
|
34
|
-
* participant C as Client
|
|
35
|
-
* participant V as MinValidator
|
|
36
|
-
*
|
|
37
|
-
* C->>V: new MinValidator(message)
|
|
38
|
-
* C->>V: hasErrors(value, options)
|
|
39
|
-
* alt value is undefined
|
|
40
|
-
* V-->>C: undefined (valid)
|
|
41
|
-
* else value is Date and min is not Date
|
|
42
|
-
* V->>V: Convert min to Date
|
|
43
|
-
* alt conversion fails
|
|
44
|
-
* V-->>C: Error: Invalid Min param
|
|
45
|
-
* end
|
|
46
|
-
* end
|
|
47
|
-
* alt value < min
|
|
48
|
-
* V-->>C: Error message
|
|
49
|
-
* else value >= min
|
|
50
|
-
* V-->>C: undefined (valid)
|
|
51
|
-
* end
|
|
52
|
-
*
|
|
53
11
|
* @category Validators
|
|
54
12
|
*/
|
|
55
13
|
export declare class MinValidator extends Validator<MinValidatorOptions> {
|
|
56
14
|
constructor(message?: string);
|
|
57
15
|
/**
|
|
58
|
-
* @
|
|
59
|
-
* @summary Validates that the provided value is not less than the minimum value
|
|
60
|
-
* specified in the options. For dates, it performs chronological comparison,
|
|
61
|
-
* converting string representations to Date objects if necessary. For numbers
|
|
62
|
-
* and strings, it performs direct comparison.
|
|
16
|
+
* @summary Validates Model
|
|
63
17
|
*
|
|
64
|
-
* @param {
|
|
65
|
-
* @param {
|
|
18
|
+
* @param {string} value
|
|
19
|
+
* @param {MaxValidatorOptions} options
|
|
66
20
|
*
|
|
67
|
-
* @return {string | undefined}
|
|
21
|
+
* @return {string | undefined}
|
|
68
22
|
*
|
|
69
23
|
* @override
|
|
70
24
|
*
|
|
@@ -11,55 +11,13 @@ import { Validator } from "./Validator";
|
|
|
11
11
|
import { DEFAULT_ERROR_MESSAGES, ValidationKeys } from "./constants";
|
|
12
12
|
import { validator } from "./decorators";
|
|
13
13
|
/**
|
|
14
|
-
* @
|
|
15
|
-
* @summary The MinValidator checks if a numeric value, date, or string is greater than or equal to
|
|
16
|
-
* a specified minimum value. It supports comparing numbers directly, dates chronologically,
|
|
17
|
-
* and strings lexicographically. This validator is typically used with the @min decorator.
|
|
14
|
+
* @summary Min Validator
|
|
18
15
|
*
|
|
19
|
-
* @param {string} [message]
|
|
16
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
|
|
20
17
|
*
|
|
21
18
|
* @class MinValidator
|
|
22
19
|
* @extends Validator
|
|
23
20
|
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* // Create a min validator with default error message
|
|
27
|
-
* const minValidator = new MinValidator();
|
|
28
|
-
*
|
|
29
|
-
* // Create a min validator with custom error message
|
|
30
|
-
* const customMinValidator = new MinValidator("Value must be at least {0}");
|
|
31
|
-
*
|
|
32
|
-
* // Validate a number
|
|
33
|
-
* const numOptions = { min: 10, message: "Number too small" };
|
|
34
|
-
* const numResult = minValidator.hasErrors(50, numOptions); // undefined (valid)
|
|
35
|
-
* const invalidNumResult = minValidator.hasErrors(5, numOptions); // Returns error message (invalid)
|
|
36
|
-
*
|
|
37
|
-
* // Validate a date
|
|
38
|
-
* const dateOptions = { min: new Date(2023, 0, 1) };
|
|
39
|
-
* const dateResult = minValidator.hasErrors(new Date(2023, 5, 15), dateOptions); // undefined (valid)
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* @mermaid
|
|
43
|
-
* sequenceDiagram
|
|
44
|
-
* participant C as Client
|
|
45
|
-
* participant V as MinValidator
|
|
46
|
-
*
|
|
47
|
-
* C->>V: new MinValidator(message)
|
|
48
|
-
* C->>V: hasErrors(value, options)
|
|
49
|
-
* alt value is undefined
|
|
50
|
-
* V-->>C: undefined (valid)
|
|
51
|
-
* else value is Date and min is not Date
|
|
52
|
-
* V->>V: Convert min to Date
|
|
53
|
-
* alt conversion fails
|
|
54
|
-
* V-->>C: Error: Invalid Min param
|
|
55
|
-
* end
|
|
56
|
-
* end
|
|
57
|
-
* alt value < min
|
|
58
|
-
* V-->>C: Error message
|
|
59
|
-
* else value >= min
|
|
60
|
-
* V-->>C: undefined (valid)
|
|
61
|
-
* end
|
|
62
|
-
*
|
|
63
21
|
* @category Validators
|
|
64
22
|
*/
|
|
65
23
|
let MinValidator = class MinValidator extends Validator {
|
|
@@ -67,16 +25,12 @@ let MinValidator = class MinValidator extends Validator {
|
|
|
67
25
|
super(message, "number", "Date", "string");
|
|
68
26
|
}
|
|
69
27
|
/**
|
|
70
|
-
* @
|
|
71
|
-
* @summary Validates that the provided value is not less than the minimum value
|
|
72
|
-
* specified in the options. For dates, it performs chronological comparison,
|
|
73
|
-
* converting string representations to Date objects if necessary. For numbers
|
|
74
|
-
* and strings, it performs direct comparison.
|
|
28
|
+
* @summary Validates Model
|
|
75
29
|
*
|
|
76
|
-
* @param {
|
|
77
|
-
* @param {
|
|
30
|
+
* @param {string} value
|
|
31
|
+
* @param {MaxValidatorOptions} options
|
|
78
32
|
*
|
|
79
|
-
* @return {string | undefined}
|
|
33
|
+
* @return {string | undefined}
|
|
80
34
|
*
|
|
81
35
|
* @override
|
|
82
36
|
*
|
|
@@ -101,4 +55,4 @@ MinValidator = __decorate([
|
|
|
101
55
|
__metadata("design:paramtypes", [String])
|
|
102
56
|
], MinValidator);
|
|
103
57
|
export { MinValidator };
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9NaW5WYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHekM7Ozs7Ozs7OztHQVNHO0FBRUksSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLFNBQThCO0lBQzlELFlBQVksVUFBa0Isc0JBQXNCLENBQUMsR0FBRztRQUN0RCxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksU0FBUyxDQUNkLEtBQTZCLEVBQzdCLE9BQTRCO1FBRTVCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVztZQUFFLE9BQU87UUFFekMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BELEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sS0FBSyxHQUFHLEdBQUc7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztZQUN2RCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7Q0FDRixDQUFBO0FBakNZLFlBQVk7SUFEeEIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7O0dBQ2pCLFlBQVksQ0FpQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTWluVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IE1pbiBWYWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI01JTn1cbiAqXG4gKiBAY2xhc3MgTWluVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBWYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLk1JTilcbmV4cG9ydCBjbGFzcyBNaW5WYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3I8TWluVmFsaWRhdG9yT3B0aW9ucz4ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1JTikge1xuICAgIHN1cGVyKG1lc3NhZ2UsIFwibnVtYmVyXCIsIFwiRGF0ZVwiLCBcInN0cmluZ1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgTW9kZWxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7TWF4VmFsaWRhdG9yT3B0aW9uc30gb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvciNoYXNFcnJvcnNcbiAgICovXG4gIHB1YmxpYyBoYXNFcnJvcnMoXG4gICAgdmFsdWU6IG51bWJlciB8IERhdGUgfCBzdHJpbmcsXG4gICAgb3B0aW9uczogTWluVmFsaWRhdG9yT3B0aW9uc1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcblxuICAgIGxldCB7IG1pbiB9ID0gb3B0aW9ucztcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmICEobWluIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIG1pbiA9IG5ldyBEYXRlKG1pbik7XG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKG1pbi5nZXREYXRlKCkpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIE1pbiBwYXJhbSBkZWZpbmVkXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPCBtaW5cbiAgICAgID8gdGhpcy5nZXRNZXNzYWdlKG9wdGlvbnMubWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UsIG1pbilcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -1,99 +1,33 @@
|
|
|
1
1
|
import { Validator } from "./Validator";
|
|
2
2
|
import { PatternValidatorOptions } from "../types";
|
|
3
|
-
/**
|
|
4
|
-
* @description Regular expression for parsing string patterns with flags
|
|
5
|
-
* @summary This regular expression is used to parse string patterns in the format "/pattern/flags".
|
|
6
|
-
* It captures the pattern and flags separately, allowing the creation of a RegExp object
|
|
7
|
-
* with the appropriate flags.
|
|
8
|
-
*
|
|
9
|
-
* @const {RegExp}
|
|
10
|
-
* @memberOf module:decorator-validation
|
|
11
|
-
* @category Validation
|
|
12
|
-
*/
|
|
13
3
|
export declare const regexpParser: RegExp;
|
|
14
4
|
/**
|
|
15
|
-
* @
|
|
16
|
-
* @summary The PatternValidator checks if a string value matches a specified regular expression pattern.
|
|
17
|
-
* It supports both RegExp objects and string representations of patterns, including those with flags.
|
|
18
|
-
* This validator is the foundation for specialized validators like EmailValidator and URLValidator,
|
|
19
|
-
* and is typically used with the @pattern decorator.
|
|
5
|
+
* @summary Pattern Validator
|
|
20
6
|
*
|
|
21
|
-
* @param {string} [
|
|
7
|
+
* @param {string} [key] defaults to {@link ValidationKeys#PATTERN}
|
|
8
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
|
|
22
9
|
*
|
|
23
10
|
* @class PatternValidator
|
|
24
11
|
* @extends Validator
|
|
25
12
|
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```typescript
|
|
28
|
-
* // Create a pattern validator with default error message
|
|
29
|
-
* const patternValidator = new PatternValidator();
|
|
30
|
-
*
|
|
31
|
-
* // Create a pattern validator with custom error message
|
|
32
|
-
* const customPatternValidator = new PatternValidator("Value must match the required format");
|
|
33
|
-
*
|
|
34
|
-
* // Validate using a RegExp object
|
|
35
|
-
* const regexOptions = { pattern: /^[A-Z][a-z]+$/ };
|
|
36
|
-
* patternValidator.hasErrors("Hello", regexOptions); // undefined (valid)
|
|
37
|
-
* patternValidator.hasErrors("hello", regexOptions); // Returns error message (invalid)
|
|
38
|
-
*
|
|
39
|
-
* // Validate using a string pattern
|
|
40
|
-
* const stringOptions = { pattern: "^\\d{3}-\\d{2}-\\d{4}$" };
|
|
41
|
-
* patternValidator.hasErrors("123-45-6789", stringOptions); // undefined (valid)
|
|
42
|
-
*
|
|
43
|
-
* // Validate using a string pattern with flags
|
|
44
|
-
* const flagOptions = { pattern: "/^hello$/i" };
|
|
45
|
-
* patternValidator.hasErrors("Hello", flagOptions); // undefined (valid)
|
|
46
|
-
* ```
|
|
47
|
-
*
|
|
48
|
-
* @mermaid
|
|
49
|
-
* sequenceDiagram
|
|
50
|
-
* participant C as Client
|
|
51
|
-
* participant V as PatternValidator
|
|
52
|
-
*
|
|
53
|
-
* C->>V: new PatternValidator(message)
|
|
54
|
-
* C->>V: hasErrors(value, options)
|
|
55
|
-
* alt value is empty
|
|
56
|
-
* V-->>C: undefined (valid)
|
|
57
|
-
* else pattern is missing
|
|
58
|
-
* V-->>C: Error: Missing Pattern
|
|
59
|
-
* else pattern is string
|
|
60
|
-
* V->>V: getPattern(pattern)
|
|
61
|
-
* end
|
|
62
|
-
* V->>V: Reset pattern.lastIndex
|
|
63
|
-
* V->>V: Test value against pattern
|
|
64
|
-
* alt pattern test passes
|
|
65
|
-
* V-->>C: undefined (valid)
|
|
66
|
-
* else pattern test fails
|
|
67
|
-
* V-->>C: Error message
|
|
68
|
-
* end
|
|
69
|
-
*
|
|
70
13
|
* @category Validators
|
|
71
14
|
*/
|
|
72
15
|
export declare class PatternValidator extends Validator<PatternValidatorOptions> {
|
|
73
16
|
constructor(message?: string);
|
|
74
17
|
/**
|
|
75
|
-
* @
|
|
76
|
-
* @summary Parses a string representation of a regular expression and converts it to a RegExp object.
|
|
77
|
-
* It handles both simple string patterns and patterns with flags in the format "/pattern/flags".
|
|
18
|
+
* @summary parses and validates a pattern
|
|
78
19
|
*
|
|
79
|
-
* @param {string} pattern
|
|
80
|
-
* @return {RegExp} A RegExp object created from the string pattern
|
|
20
|
+
* @param {string} pattern
|
|
81
21
|
* @private
|
|
82
22
|
*/
|
|
83
23
|
private getPattern;
|
|
84
24
|
/**
|
|
85
|
-
* @
|
|
86
|
-
* @summary Validates that the provided string matches the pattern specified in the options.
|
|
87
|
-
* If the pattern is provided as a string, it's converted to a RegExp object using the getPattern method.
|
|
88
|
-
* The method resets the pattern's lastIndex property to ensure consistent validation results
|
|
89
|
-
* for patterns with the global flag.
|
|
90
|
-
*
|
|
91
|
-
* @param {string} value - The string to validate against the pattern
|
|
92
|
-
* @param {PatternValidatorOptions} options - Configuration options containing the pattern
|
|
25
|
+
* @summary Validates a Model
|
|
93
26
|
*
|
|
94
|
-
* @
|
|
27
|
+
* @param {string} value
|
|
28
|
+
* @param {PatternValidatorOptions} options
|
|
95
29
|
*
|
|
96
|
-
* @
|
|
30
|
+
* @return {string | undefined}
|
|
97
31
|
*
|
|
98
32
|
* @override
|
|
99
33
|
*
|