@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
|
@@ -11,43 +11,12 @@ import { ValidationKeys, DEFAULT_ERROR_MESSAGES, DEFAULT_PATTERNS, } from "./con
|
|
|
11
11
|
import { PatternValidator } from "./PatternValidator";
|
|
12
12
|
import { validator } from "./decorators";
|
|
13
13
|
/**
|
|
14
|
-
* @
|
|
15
|
-
* @
|
|
16
|
-
* It extends the PatternValidator and uses a robust URL regex pattern to validate web addresses.
|
|
17
|
-
* The pattern is sourced from {@link https://gist.github.com/dperini/729294} and is widely
|
|
18
|
-
* recognized for its accuracy in validating URLs. This validator is typically used with the @url decorator.
|
|
19
|
-
*
|
|
20
|
-
* @param {string} [message] - Custom error message to display when validation fails, defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
|
|
14
|
+
* @summary URL Validator
|
|
15
|
+
* @description Pattern from {@link https://gist.github.com/dperini/729294}
|
|
21
16
|
*
|
|
22
17
|
* @class URLValidator
|
|
23
18
|
* @extends PatternValidator
|
|
24
19
|
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```typescript
|
|
27
|
-
* // Create a URL validator with default error message
|
|
28
|
-
* const urlValidator = new URLValidator();
|
|
29
|
-
*
|
|
30
|
-
* // Create a URL validator with custom error message
|
|
31
|
-
* const customUrlValidator = new URLValidator("Please enter a valid web address");
|
|
32
|
-
*
|
|
33
|
-
* // Validate a URL
|
|
34
|
-
* const result = urlValidator.hasErrors("https://example.com"); // undefined (valid)
|
|
35
|
-
* const invalidResult = urlValidator.hasErrors("not-a-url"); // Returns error message (invalid)
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* @mermaid
|
|
39
|
-
* sequenceDiagram
|
|
40
|
-
* participant C as Client
|
|
41
|
-
* participant U as URLValidator
|
|
42
|
-
* participant P as PatternValidator
|
|
43
|
-
*
|
|
44
|
-
* C->>U: new URLValidator(message)
|
|
45
|
-
* U->>P: super(message)
|
|
46
|
-
* C->>U: hasErrors(value, options)
|
|
47
|
-
* U->>P: super.hasErrors(value, options with URL pattern)
|
|
48
|
-
* P-->>U: validation result
|
|
49
|
-
* U-->>C: validation result
|
|
50
|
-
*
|
|
51
20
|
* @category Validators
|
|
52
21
|
*/
|
|
53
22
|
let URLValidator = class URLValidator extends PatternValidator {
|
|
@@ -55,19 +24,16 @@ let URLValidator = class URLValidator extends PatternValidator {
|
|
|
55
24
|
super(message);
|
|
56
25
|
}
|
|
57
26
|
/**
|
|
58
|
-
* @
|
|
59
|
-
* @summary Validates that the provided string matches the URL pattern.
|
|
60
|
-
* This method extends the PatternValidator's hasErrors method by ensuring
|
|
61
|
-
* the URL pattern is used, even if not explicitly provided in the options.
|
|
27
|
+
* @summary Validates a model
|
|
62
28
|
*
|
|
63
|
-
* @param {string} value
|
|
64
|
-
* @param {PatternValidatorOptions} [options={}]
|
|
29
|
+
* @param {string} value
|
|
30
|
+
* @param {PatternValidatorOptions} [options={}]
|
|
65
31
|
*
|
|
66
|
-
* @return {string | undefined}
|
|
32
|
+
* @return {string | undefined}
|
|
67
33
|
*
|
|
68
34
|
* @override
|
|
69
35
|
*
|
|
70
|
-
* @see
|
|
36
|
+
* @see Validator#hasErrors
|
|
71
37
|
*/
|
|
72
38
|
hasErrors(value, options = {}) {
|
|
73
39
|
return super.hasErrors(value, {
|
|
@@ -81,4 +47,4 @@ URLValidator = __decorate([
|
|
|
81
47
|
__metadata("design:paramtypes", [String])
|
|
82
48
|
], URLValidator);
|
|
83
49
|
export { URLValidator };
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVVJMVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9VUkxWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHekM7Ozs7Ozs7O0dBUUc7QUFFSSxJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFhLFNBQVEsZ0JBQWdCO0lBQ2hELFlBQVksVUFBa0Isc0JBQXNCLENBQUMsR0FBRztRQUN0RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksU0FBUyxDQUNkLEtBQWEsRUFDYixVQUFtQyxFQUFFO1FBRXJDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDNUIsR0FBRyxPQUFPO1lBQ1YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsR0FBRztTQUNqRCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQTtBQTFCWSxZQUFZO0lBRHhCLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDOztHQUNqQixZQUFZLENBMEJ4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFZhbGlkYXRpb25LZXlzLFxuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLFxuICBERUZBVUxUX1BBVFRFUk5TLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFBhdHRlcm5WYWxpZGF0b3IgfSBmcm9tIFwiLi9QYXR0ZXJuVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFVSTCBWYWxpZGF0b3JcbiAqIEBkZXNjcmlwdGlvbiBQYXR0ZXJuIGZyb20ge0BsaW5rIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2RwZXJpbmkvNzI5Mjk0fVxuICpcbiAqIEBjbGFzcyBVUkxWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFBhdHRlcm5WYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLlVSTClcbmV4cG9ydCBjbGFzcyBVUkxWYWxpZGF0b3IgZXh0ZW5kcyBQYXR0ZXJuVmFsaWRhdG9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5VUkwpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSBtb2RlbFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtQYXR0ZXJuVmFsaWRhdG9yT3B0aW9uc30gW29wdGlvbnM9e31dXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zID0ge31cbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gc3VwZXIuaGFzRXJyb3JzKHZhbHVlLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGF0dGVybjogb3B0aW9ucy5wYXR0ZXJuIHx8IERFRkFVTFRfUEFUVEVSTlMuVVJMLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,54 +1,14 @@
|
|
|
1
1
|
import { ValidatorOptions } from "../types";
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
4
|
-
* @
|
|
5
|
-
* It handles type checking, error message formatting, and defines the common interface
|
|
6
|
-
* that all validators must implement. This class is designed to be extended by specific
|
|
7
|
-
* validator implementations that provide concrete validation logic.
|
|
3
|
+
* @summary Base Implementation for Validators
|
|
4
|
+
* @description Provides the underlying functionality for {@link Validator}s
|
|
8
5
|
*
|
|
9
|
-
* @param {string}
|
|
10
|
-
* @param {string[]
|
|
6
|
+
* @param {string} validationKey the key to register the validator under
|
|
7
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DEFAULT}
|
|
8
|
+
* @param {string[]} [acceptedTypes] defines the value types this validator can validate
|
|
11
9
|
*
|
|
12
10
|
* @class Validator
|
|
13
11
|
* @abstract
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // Example of extending the Validator class to create a custom validator
|
|
18
|
-
* class CustomValidator extends Validator<CustomValidatorOptions> {
|
|
19
|
-
* constructor(message: string = "Custom validation failed") {
|
|
20
|
-
* // Specify that this validator accepts String and Number types
|
|
21
|
-
* super(message, String.name, Number.name);
|
|
22
|
-
* }
|
|
23
|
-
*
|
|
24
|
-
* public hasErrors(value: any, options?: CustomValidatorOptions): string | undefined {
|
|
25
|
-
* // Implement custom validation logic
|
|
26
|
-
* if (someCondition) {
|
|
27
|
-
* return this.getMessage(options?.message || this.message);
|
|
28
|
-
* }
|
|
29
|
-
* return undefined; // No errors
|
|
30
|
-
* }
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* @mermaid
|
|
35
|
-
* sequenceDiagram
|
|
36
|
-
* participant C as Client
|
|
37
|
-
* participant V as Validator Subclass
|
|
38
|
-
* participant B as Base Validator
|
|
39
|
-
*
|
|
40
|
-
* C->>V: new CustomValidator(message)
|
|
41
|
-
* V->>B: super(message, acceptedTypes)
|
|
42
|
-
* B->>B: Store message and types
|
|
43
|
-
* B->>B: Wrap hasErrors with type checking
|
|
44
|
-
* C->>V: hasErrors(value, options)
|
|
45
|
-
* alt value type not in acceptedTypes
|
|
46
|
-
* B-->>C: Type error message
|
|
47
|
-
* else value type is accepted
|
|
48
|
-
* V->>V: Custom validation logic
|
|
49
|
-
* V-->>C: Validation result
|
|
50
|
-
* end
|
|
51
|
-
*
|
|
52
12
|
* @category Validators
|
|
53
13
|
*/
|
|
54
14
|
export declare abstract class Validator<V extends ValidatorOptions = ValidatorOptions> {
|
|
@@ -56,49 +16,29 @@ export declare abstract class Validator<V extends ValidatorOptions = ValidatorOp
|
|
|
56
16
|
readonly acceptedTypes?: string[];
|
|
57
17
|
protected constructor(message?: string, ...acceptedTypes: string[]);
|
|
58
18
|
/**
|
|
59
|
-
* @
|
|
60
|
-
* @
|
|
61
|
-
*
|
|
62
|
-
* across all validators.
|
|
63
|
-
*
|
|
64
|
-
* @param {string} message - The message template with placeholders
|
|
65
|
-
* @param {...any} args - Values to insert into the message template
|
|
66
|
-
* @return {string} The formatted error message
|
|
19
|
+
* @summary builds the error message
|
|
20
|
+
* @param {string} message
|
|
21
|
+
* @param {any[]} args
|
|
67
22
|
* @protected
|
|
68
23
|
*/
|
|
69
24
|
protected getMessage(message: string, ...args: any[]): string;
|
|
70
25
|
/**
|
|
71
|
-
* @
|
|
72
|
-
* @
|
|
73
|
-
* the value being validated is of an accepted type before performing specific validation.
|
|
74
|
-
* This method is called during construction if acceptedTypes are provided.
|
|
75
|
-
*
|
|
76
|
-
* @param {Function} unbound - The original hasErrors method to be wrapped
|
|
77
|
-
* @return {Function} A new function that performs type checking before calling the original method
|
|
26
|
+
* @summary Validates type
|
|
27
|
+
* @param {any} unbound
|
|
78
28
|
* @private
|
|
79
29
|
*/
|
|
80
30
|
private checkTypeAndHasErrors;
|
|
81
31
|
/**
|
|
82
|
-
* @
|
|
83
|
-
* @
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* the method returns undefined; otherwise, it returns an error message.
|
|
87
|
-
*
|
|
88
|
-
* @template V - Type of the options object that can be passed to the validator
|
|
89
|
-
* @param {any} value - The value to validate
|
|
90
|
-
* @param {V} [options] - Optional configuration options for customizing validation behavior
|
|
32
|
+
* @summary Validates an attribute
|
|
33
|
+
* @param {any} value - The value to be validated.
|
|
34
|
+
* @param {ValidatorOptions} [options] Validate options for customizing the model validation behavior
|
|
35
|
+
* @param {any} [instanceObj] - The object instance that contains the key-value being validated. Used for cross-field validation. Defaults to an empty object.
|
|
91
36
|
*
|
|
92
|
-
* @
|
|
37
|
+
* @returns An error message string if validation fails; otherwise, `undefined`.
|
|
93
38
|
*
|
|
94
39
|
* @abstract
|
|
95
40
|
*
|
|
96
|
-
* @see Model#
|
|
97
|
-
*/
|
|
98
|
-
abstract hasErrors(value: any, options?: V): string | undefined;
|
|
99
|
-
/**
|
|
100
|
-
* @summary Duck typing for Validators
|
|
101
|
-
* @param val
|
|
41
|
+
* @see Model#hasErrors
|
|
102
42
|
*/
|
|
103
|
-
|
|
43
|
+
abstract hasErrors(value: any, options?: V, instanceObj?: any): string | undefined;
|
|
104
44
|
}
|
|
@@ -2,55 +2,15 @@ import { DEFAULT_ERROR_MESSAGES } from "./constants";
|
|
|
2
2
|
import { sf } from "../../utils/strings";
|
|
3
3
|
import { Reflection } from "@decaf-ts/reflection";
|
|
4
4
|
/**
|
|
5
|
-
* @
|
|
6
|
-
* @
|
|
7
|
-
* It handles type checking, error message formatting, and defines the common interface
|
|
8
|
-
* that all validators must implement. This class is designed to be extended by specific
|
|
9
|
-
* validator implementations that provide concrete validation logic.
|
|
5
|
+
* @summary Base Implementation for Validators
|
|
6
|
+
* @description Provides the underlying functionality for {@link Validator}s
|
|
10
7
|
*
|
|
11
|
-
* @param {string}
|
|
12
|
-
* @param {string[]
|
|
8
|
+
* @param {string} validationKey the key to register the validator under
|
|
9
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DEFAULT}
|
|
10
|
+
* @param {string[]} [acceptedTypes] defines the value types this validator can validate
|
|
13
11
|
*
|
|
14
12
|
* @class Validator
|
|
15
13
|
* @abstract
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* // Example of extending the Validator class to create a custom validator
|
|
20
|
-
* class CustomValidator extends Validator<CustomValidatorOptions> {
|
|
21
|
-
* constructor(message: string = "Custom validation failed") {
|
|
22
|
-
* // Specify that this validator accepts String and Number types
|
|
23
|
-
* super(message, String.name, Number.name);
|
|
24
|
-
* }
|
|
25
|
-
*
|
|
26
|
-
* public hasErrors(value: any, options?: CustomValidatorOptions): string | undefined {
|
|
27
|
-
* // Implement custom validation logic
|
|
28
|
-
* if (someCondition) {
|
|
29
|
-
* return this.getMessage(options?.message || this.message);
|
|
30
|
-
* }
|
|
31
|
-
* return undefined; // No errors
|
|
32
|
-
* }
|
|
33
|
-
* }
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* @mermaid
|
|
37
|
-
* sequenceDiagram
|
|
38
|
-
* participant C as Client
|
|
39
|
-
* participant V as Validator Subclass
|
|
40
|
-
* participant B as Base Validator
|
|
41
|
-
*
|
|
42
|
-
* C->>V: new CustomValidator(message)
|
|
43
|
-
* V->>B: super(message, acceptedTypes)
|
|
44
|
-
* B->>B: Store message and types
|
|
45
|
-
* B->>B: Wrap hasErrors with type checking
|
|
46
|
-
* C->>V: hasErrors(value, options)
|
|
47
|
-
* alt value type not in acceptedTypes
|
|
48
|
-
* B-->>C: Type error message
|
|
49
|
-
* else value type is accepted
|
|
50
|
-
* V->>V: Custom validation logic
|
|
51
|
-
* V-->>C: Validation result
|
|
52
|
-
* end
|
|
53
|
-
*
|
|
54
14
|
* @category Validators
|
|
55
15
|
*/
|
|
56
16
|
export class Validator {
|
|
@@ -62,27 +22,17 @@ export class Validator {
|
|
|
62
22
|
this.hasErrors = this.checkTypeAndHasErrors(this.hasErrors.bind(this));
|
|
63
23
|
}
|
|
64
24
|
/**
|
|
65
|
-
* @
|
|
66
|
-
* @
|
|
67
|
-
*
|
|
68
|
-
* across all validators.
|
|
69
|
-
*
|
|
70
|
-
* @param {string} message - The message template with placeholders
|
|
71
|
-
* @param {...any} args - Values to insert into the message template
|
|
72
|
-
* @return {string} The formatted error message
|
|
25
|
+
* @summary builds the error message
|
|
26
|
+
* @param {string} message
|
|
27
|
+
* @param {any[]} args
|
|
73
28
|
* @protected
|
|
74
29
|
*/
|
|
75
30
|
getMessage(message, ...args) {
|
|
76
31
|
return sf(message, ...args);
|
|
77
32
|
}
|
|
78
33
|
/**
|
|
79
|
-
* @
|
|
80
|
-
* @
|
|
81
|
-
* the value being validated is of an accepted type before performing specific validation.
|
|
82
|
-
* This method is called during construction if acceptedTypes are provided.
|
|
83
|
-
*
|
|
84
|
-
* @param {Function} unbound - The original hasErrors method to be wrapped
|
|
85
|
-
* @return {Function} A new function that performs type checking before calling the original method
|
|
34
|
+
* @summary Validates type
|
|
35
|
+
* @param {any} unbound
|
|
86
36
|
* @private
|
|
87
37
|
*/
|
|
88
38
|
checkTypeAndHasErrors(unbound) {
|
|
@@ -94,12 +44,5 @@ export class Validator {
|
|
|
94
44
|
return unbound(value, ...args);
|
|
95
45
|
}.bind(this);
|
|
96
46
|
}
|
|
97
|
-
/**
|
|
98
|
-
* @summary Duck typing for Validators
|
|
99
|
-
* @param val
|
|
100
|
-
*/
|
|
101
|
-
static isValidator(val) {
|
|
102
|
-
return val.constructor && !!val["hasErrors"];
|
|
103
|
-
}
|
|
104
47
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9WYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQWdCLFNBQVM7SUFJN0IsWUFDRSxVQUFrQixzQkFBc0IsQ0FBQyxPQUFPLEVBQ2hELEdBQUcsYUFBdUI7UUFFMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxhQUFhLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzdELElBQUksSUFBSSxDQUFDLGFBQWE7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxVQUFVLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNsRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHFCQUFxQixDQUMzQixPQUEyRDtRQUUzRCxPQUFPLFVBRUwsS0FBVSxFQUNWLEdBQUcsSUFBVztZQUVkLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUM1QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDbkQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUNwQixzQkFBc0IsQ0FBQyxJQUFJLEVBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUM3QixPQUFPLEtBQUssQ0FDYixDQUFDO1lBQ0osT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7Q0FtQkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZiB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmdzXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQmFzZSBJbXBsZW1lbnRhdGlvbiBmb3IgVmFsaWRhdG9yc1xuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgZm9yIHtAbGluayBWYWxpZGF0b3J9c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxpZGF0aW9uS2V5IHRoZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIHZhbGlkYXRvciB1bmRlclxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjREVGQVVMVH1cbiAqIEBwYXJhbSB7c3RyaW5nW119IFthY2NlcHRlZFR5cGVzXSBkZWZpbmVzIHRoZSB2YWx1ZSB0eXBlcyB0aGlzIHZhbGlkYXRvciBjYW4gdmFsaWRhdGVcbiAqXG4gKiBAY2xhc3MgVmFsaWRhdG9yXG4gKiBAYWJzdHJhY3RcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWYWxpZGF0b3I8ViBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMgPSBWYWxpZGF0b3JPcHRpb25zPiB7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgYWNjZXB0ZWRUeXBlcz86IHN0cmluZ1tdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkRFRkFVTFQsXG4gICAgLi4uYWNjZXB0ZWRUeXBlczogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmIChhY2NlcHRlZFR5cGVzLmxlbmd0aCkgdGhpcy5hY2NlcHRlZFR5cGVzID0gYWNjZXB0ZWRUeXBlcztcbiAgICBpZiAodGhpcy5hY2NlcHRlZFR5cGVzKVxuICAgICAgdGhpcy5oYXNFcnJvcnMgPSB0aGlzLmNoZWNrVHlwZUFuZEhhc0Vycm9ycyh0aGlzLmhhc0Vycm9ycy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBidWlsZHMgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIHNmKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyB0eXBlXG4gICAqIEBwYXJhbSB7YW55fSB1bmJvdW5kXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVHlwZUFuZEhhc0Vycm9ycyhcbiAgICB1bmJvdW5kOiAodmFsdWU6IGFueSwgLi4uYXJnczogYW55W10pID0+IHN0cmluZyB8IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKFxuICAgICAgdGhpczogVmFsaWRhdG9yLFxuICAgICAgdmFsdWU6IGFueSxcbiAgICAgIC4uLmFyZ3M6IGFueVtdXG4gICAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmFjY2VwdGVkVHlwZXMpXG4gICAgICAgIHJldHVybiB1bmJvdW5kKHZhbHVlLCAuLi5hcmdzKTtcbiAgICAgIGlmICghUmVmbGVjdGlvbi5jaGVja1R5cGVzKHZhbHVlLCB0aGlzLmFjY2VwdGVkVHlwZXMpKVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICAgIERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSxcbiAgICAgICAgICB0aGlzLmFjY2VwdGVkVHlwZXMuam9pbihcIiwgXCIpLFxuICAgICAgICAgIHR5cGVvZiB2YWx1ZVxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHVuYm91bmQodmFsdWUsIC4uLmFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYW4gYXR0cmlidXRlXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSB2YWxpZGF0ZWQuXG4gICAqIEBwYXJhbSB7VmFsaWRhdG9yT3B0aW9uc30gW29wdGlvbnNdIFZhbGlkYXRlIG9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBtb2RlbCB2YWxpZGF0aW9uIGJlaGF2aW9yXG4gICAqIEBwYXJhbSB7YW55fSBbaW5zdGFuY2VPYmpdIC0gVGhlIG9iamVjdCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBrZXktdmFsdWUgYmVpbmcgdmFsaWRhdGVkLiBVc2VkIGZvciBjcm9zcy1maWVsZCB2YWxpZGF0aW9uLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGVycm9yIG1lc3NhZ2Ugc3RyaW5nIGlmIHZhbGlkYXRpb24gZmFpbHM7IG90aGVyd2lzZSwgYHVuZGVmaW5lZGAuXG4gICAqXG4gICAqIEBhYnN0cmFjdFxuICAgKlxuICAgKiBAc2VlIE1vZGVsI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM/OiBWLFxuICAgIGluc3RhbmNlT2JqPzogYW55XG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { ValidatorDefinition } from "../types";
|
|
2
2
|
import { IValidatorRegistry } from "../types";
|
|
3
|
-
import { Validator } from "./Validator";
|
|
3
|
+
import type { Validator } from "./Validator";
|
|
4
|
+
/**
|
|
5
|
+
* @summary Duck typing for Validators
|
|
6
|
+
* @function isValidator
|
|
7
|
+
* @param val
|
|
8
|
+
*/
|
|
9
|
+
export declare function isValidator(val: any): any;
|
|
4
10
|
/**
|
|
5
11
|
* @summary Base Implementation of a Validator Registry
|
|
6
12
|
*
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @summary Duck typing for Validators
|
|
3
|
+
* @function isValidator
|
|
4
|
+
* @param val
|
|
5
|
+
*/
|
|
6
|
+
export function isValidator(val) {
|
|
7
|
+
return val.constructor && val["hasErrors"];
|
|
8
|
+
}
|
|
2
9
|
/**
|
|
3
10
|
* @summary Base Implementation of a Validator Registry
|
|
4
11
|
*
|
|
@@ -37,7 +44,7 @@ export class ValidatorRegistry {
|
|
|
37
44
|
if (!(validatorKey in this.cache))
|
|
38
45
|
return undefined;
|
|
39
46
|
const classOrInstance = this.cache[validatorKey];
|
|
40
|
-
if (
|
|
47
|
+
if (isValidator(classOrInstance))
|
|
41
48
|
return classOrInstance;
|
|
42
49
|
const constructor = classOrInstance.default || classOrInstance;
|
|
43
50
|
const instance = new constructor();
|
|
@@ -51,7 +58,7 @@ export class ValidatorRegistry {
|
|
|
51
58
|
*/
|
|
52
59
|
register(...validator) {
|
|
53
60
|
validator.forEach((v) => {
|
|
54
|
-
if (
|
|
61
|
+
if (isValidator(v)) {
|
|
55
62
|
// const k =
|
|
56
63
|
if (v.validationKey in this.cache)
|
|
57
64
|
return;
|
|
@@ -71,4 +78,4 @@ export class ValidatorRegistry {
|
|
|
71
78
|
});
|
|
72
79
|
}
|
|
73
80
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL1ZhbGlkYXRvclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQVE7SUFDbEMsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUFZLEdBQUcsVUFBK0M7UUFIdEQsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUl0QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBc0IsWUFBb0I7UUFDM0MsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVwRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQztZQUFFLE9BQU8sZUFBb0IsQ0FBQztRQUM5RCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUNOLEdBQUcsU0FBc0M7UUFFekMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RCLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLFlBQVk7Z0JBRVosSUFBSyxDQUF5QixDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSztvQkFBRSxPQUFPO2dCQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFFLENBQXlCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUF3QixDQUFDO2dCQUNwRSxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSztvQkFBRSxPQUFPO2dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLElBQUk7b0JBQUUsT0FBTztnQkFDbEIsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztnQkFDdkMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztnQkFFakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IElWYWxpZGF0b3JSZWdpc3RyeSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBEdWNrIHR5cGluZyBmb3IgVmFsaWRhdG9yc1xuICogQGZ1bmN0aW9uIGlzVmFsaWRhdG9yXG4gKiBAcGFyYW0gdmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkYXRvcih2YWw6IGFueSkge1xuICByZXR1cm4gdmFsLmNvbnN0cnVjdG9yICYmIHZhbFtcImhhc0Vycm9yc1wiXTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIEltcGxlbWVudGF0aW9uIG9mIGEgVmFsaWRhdG9yIFJlZ2lzdHJ5XG4gKlxuICogQHByb3Age1ZhbGlkYXRvcltdfSBbdmFsaWRhdG9yc10gdGhlIGluaXRpYWwgdmFsaWRhdG9ycyB0byByZWdpc3RlclxuICpcbiAqIEBjbGFzcyBWYWxpZGF0b3JSZWdpc3RyeVxuICogQGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+XG4gIGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG57XG4gIHByaXZhdGUgY2FjaGU6IGFueSA9IHt9O1xuICBwcml2YXRlIGN1c3RvbUtleUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKC4uLnZhbGlkYXRvcnM6IChWYWxpZGF0b3JEZWZpbml0aW9uIHwgVmFsaWRhdG9yKVtdKSB7XG4gICAgdGhpcy5jdXN0b21LZXlDYWNoZSA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXIoLi4udmFsaWRhdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgcmV0cmlldmVzIHRoZSBjdXN0b20ga2V5c1xuICAgKi9cbiAgZ2V0Q3VzdG9tS2V5cygpOiB7IFtpbmRleGVyOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY3VzdG9tS2V5Q2FjaGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJldHJpZXZlcyB0aGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3JzIGtleXNcbiAgICovXG4gIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNhY2hlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYSB2YWxpZGF0b3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbGlkYXRvcktleSBvbmUgb2YgdGhlIHtAbGluayBWYWxpZGF0aW9uS2V5c31cbiAgICogQHJldHVybiB7VmFsaWRhdG9yIHwgdW5kZWZpbmVkfSB0aGUgcmVnaXN0ZXJlZCBWYWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbm8gbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIGtleVxuICAgKi9cbiAgZ2V0PFQgZXh0ZW5kcyBWYWxpZGF0b3I+KHZhbGlkYXRvcktleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCEodmFsaWRhdG9yS2V5IGluIHRoaXMuY2FjaGUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY2xhc3NPckluc3RhbmNlID0gdGhpcy5jYWNoZVt2YWxpZGF0b3JLZXldO1xuICAgIGlmIChpc1ZhbGlkYXRvcihjbGFzc09ySW5zdGFuY2UpKSByZXR1cm4gY2xhc3NPckluc3RhbmNlIGFzIFQ7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjbGFzc09ySW5zdGFuY2UuZGVmYXVsdCB8fCBjbGFzc09ySW5zdGFuY2U7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgY29uc3RydWN0b3IoKTtcbiAgICB0aGlzLmNhY2hlW3ZhbGlkYXRvcktleV0gPSBpbnN0YW5jZTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIHRoZSBwcm92aWRlZCB2YWxpZGF0b3JzIG9udG8gdGhlIHJlZ2lzdHJ5XG4gICAqXG4gICAqIEBwYXJhbSB7VFtdIHwgVmFsaWRhdG9yRGVmaW5pdGlvbltdfSB2YWxpZGF0b3JcbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFZhbGlkYXRvckRlZmluaXRpb24gfCBUKVtdXG4gICk6IHZvaWQge1xuICAgIHZhbGlkYXRvci5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAoaXNWYWxpZGF0b3IodikpIHtcbiAgICAgICAgLy8gY29uc3QgayA9XG5cbiAgICAgICAgaWYgKCh2IGFzIFZhbGlkYXRvckRlZmluaXRpb24pLnZhbGlkYXRpb25LZXkgaW4gdGhpcy5jYWNoZSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmNhY2hlWyh2IGFzIFZhbGlkYXRvckRlZmluaXRpb24pLnZhbGlkYXRpb25LZXldID0gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgdmFsaWRhdGlvbktleSwgdmFsaWRhdG9yLCBzYXZlIH0gPSB2IGFzIFZhbGlkYXRvckRlZmluaXRpb247XG4gICAgICAgIGlmICh2YWxpZGF0aW9uS2V5IGluIHRoaXMuY2FjaGUpIHJldHVybjtcbiAgICAgICAgdGhpcy5jYWNoZVt2YWxpZGF0aW9uS2V5XSA9IHZhbGlkYXRvcjtcbiAgICAgICAgaWYgKCFzYXZlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICBvYmpbdmFsaWRhdGlvbktleS50b1VwcGVyQ2FzZSgpXSA9IHZhbGlkYXRpb25LZXk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21LZXlDYWNoZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY3VzdG9tS2V5Q2FjaGUsIG9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @summary Keys used for comparison-based validations.
|
|
3
|
+
*
|
|
4
|
+
* @property {string} EQUALS - Validates if two values are equal.
|
|
5
|
+
* @property {string} DIFF - Validates if two values are different.
|
|
6
|
+
* @property {string} LESS_THAN - Validates if a value is less than another.
|
|
7
|
+
* @property {string} LESS_THAN_OR_EQUAL - Validates if a value is less than or equal to another.
|
|
8
|
+
* @property {string} GREATER_THAN - Validates if a value is greater than another.
|
|
9
|
+
* @property {string} GREATER_THAN_OR_EQUAL - Validates if a value is greater than or equal to another.
|
|
10
|
+
*
|
|
11
|
+
* @constant ComparisonValidationKeys
|
|
12
|
+
* @memberof module:decorator-validation.Validation
|
|
13
|
+
* @category Validation
|
|
14
|
+
*/
|
|
15
|
+
export declare const ComparisonValidationKeys: {
|
|
16
|
+
readonly EQUALS: "equals";
|
|
17
|
+
readonly DIFF: "different";
|
|
18
|
+
readonly LESS_THAN: "lessThan";
|
|
19
|
+
readonly LESS_THAN_OR_EQUAL: "lessThanOrEqual";
|
|
20
|
+
readonly GREATER_THAN: "greaterThan";
|
|
21
|
+
readonly GREATER_THAN_OR_EQUAL: "greaterThanOrEqual";
|
|
22
|
+
};
|
|
1
23
|
/**
|
|
2
24
|
* @summary The keys used for validation
|
|
3
25
|
*
|
|
@@ -21,6 +43,12 @@
|
|
|
21
43
|
* @category Validation
|
|
22
44
|
*/
|
|
23
45
|
export declare const ValidationKeys: {
|
|
46
|
+
readonly EQUALS: "equals";
|
|
47
|
+
readonly DIFF: "different";
|
|
48
|
+
readonly LESS_THAN: "lessThan";
|
|
49
|
+
readonly LESS_THAN_OR_EQUAL: "lessThanOrEqual";
|
|
50
|
+
readonly GREATER_THAN: "greaterThan";
|
|
51
|
+
readonly GREATER_THAN_OR_EQUAL: "greaterThanOrEqual";
|
|
24
52
|
readonly REFLECT: "decaf.model.validation.";
|
|
25
53
|
readonly VALIDATOR: "validator";
|
|
26
54
|
readonly REQUIRED: "required";
|
|
@@ -81,6 +109,19 @@ export declare const DAYS_OF_WEEK_NAMES: string[];
|
|
|
81
109
|
* @category Validation
|
|
82
110
|
*/
|
|
83
111
|
export declare const DEFAULT_ERROR_MESSAGES: Record<string, string>;
|
|
112
|
+
export declare const COMPARISON_ERROR_MESSAGES: {
|
|
113
|
+
INVALID_PATH: string;
|
|
114
|
+
CONTEXT_NOT_OBJECT_COMPARISON: string;
|
|
115
|
+
NO_PARENT_COMPARISON: string;
|
|
116
|
+
PROPERTY_NOT_FOUND: string;
|
|
117
|
+
PROPERTY_NOT_FOUND_ON_PARENT: string;
|
|
118
|
+
PROPERTY_NOT_FOUND_AFTER_PARENT: string;
|
|
119
|
+
UNSUPPORTED_TYPES_COMPARISON: string;
|
|
120
|
+
NULL_OR_UNDEFINED_COMPARISON: string;
|
|
121
|
+
INVALID_DATE_COMPARISON: string;
|
|
122
|
+
TYPE_MISMATCH_COMPARISON: string;
|
|
123
|
+
NAN_COMPARISON: string;
|
|
124
|
+
};
|
|
84
125
|
/**
|
|
85
126
|
* @summary Defines the various default regexp patterns used
|
|
86
127
|
*
|
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
import { ModelKeys } from "../../utils/constants";
|
|
2
|
+
/**
|
|
3
|
+
* @summary Keys used for comparison-based validations.
|
|
4
|
+
*
|
|
5
|
+
* @property {string} EQUALS - Validates if two values are equal.
|
|
6
|
+
* @property {string} DIFF - Validates if two values are different.
|
|
7
|
+
* @property {string} LESS_THAN - Validates if a value is less than another.
|
|
8
|
+
* @property {string} LESS_THAN_OR_EQUAL - Validates if a value is less than or equal to another.
|
|
9
|
+
* @property {string} GREATER_THAN - Validates if a value is greater than another.
|
|
10
|
+
* @property {string} GREATER_THAN_OR_EQUAL - Validates if a value is greater than or equal to another.
|
|
11
|
+
*
|
|
12
|
+
* @constant ComparisonValidationKeys
|
|
13
|
+
* @memberof module:decorator-validation.Validation
|
|
14
|
+
* @category Validation
|
|
15
|
+
*/
|
|
16
|
+
export const ComparisonValidationKeys = {
|
|
17
|
+
EQUALS: "equals",
|
|
18
|
+
DIFF: "different",
|
|
19
|
+
LESS_THAN: "lessThan",
|
|
20
|
+
LESS_THAN_OR_EQUAL: "lessThanOrEqual",
|
|
21
|
+
GREATER_THAN: "greaterThan",
|
|
22
|
+
GREATER_THAN_OR_EQUAL: "greaterThanOrEqual",
|
|
23
|
+
};
|
|
2
24
|
/**
|
|
3
25
|
* @summary The keys used for validation
|
|
4
26
|
*
|
|
@@ -38,6 +60,7 @@ export const ValidationKeys = {
|
|
|
38
60
|
PASSWORD: "password",
|
|
39
61
|
LIST: "list",
|
|
40
62
|
FORMAT: "format",
|
|
63
|
+
...ComparisonValidationKeys,
|
|
41
64
|
};
|
|
42
65
|
/**
|
|
43
66
|
* @summary list of month names
|
|
@@ -118,6 +141,25 @@ export const DEFAULT_ERROR_MESSAGES = {
|
|
|
118
141
|
PASSWORD: "Must be at least 8 characters and contain one of number, lower and upper case letters, and special character (@$!%*?&_-.,)",
|
|
119
142
|
LIST: "Invalid list of {0}",
|
|
120
143
|
MODEL_NOT_FOUND: "No model registered under {0}",
|
|
144
|
+
EQUALS: "This field must be equal to field {0}",
|
|
145
|
+
DIFF: "This field must be different from field {0}",
|
|
146
|
+
LESS_THAN: "This field must be less than field {0}",
|
|
147
|
+
LESS_THAN_OR_EQUAL: "This field must be less than or equal to field {0}",
|
|
148
|
+
GREATER_THAN: "This field must be greater than field {0}",
|
|
149
|
+
GREATER_THAN_OR_EQUAL: "This field must be greater than or equal to field {0}",
|
|
150
|
+
};
|
|
151
|
+
export const COMPARISON_ERROR_MESSAGES = {
|
|
152
|
+
INVALID_PATH: "Invalid path argument. Expected non-empty string but received: '{0}'",
|
|
153
|
+
CONTEXT_NOT_OBJECT_COMPARISON: "Unable to access parent at level {0} for path '{1}': current context is not an object",
|
|
154
|
+
NO_PARENT_COMPARISON: "Unable to access parent at level {0} for path '{1}': no parent available",
|
|
155
|
+
PROPERTY_NOT_FOUND: "Failed to resolve path {0}: property '{1}' does not exist.",
|
|
156
|
+
PROPERTY_NOT_FOUND_ON_PARENT: "Failed to resolve path {0}: property '{1}' does not exist on parent.",
|
|
157
|
+
PROPERTY_NOT_FOUND_AFTER_PARENT: "Failed to resolve path {0}: property '{1}' does not exist after {2} parent level(s).",
|
|
158
|
+
UNSUPPORTED_TYPES_COMPARISON: "Unsupported types for comparison: '{0}' and '{1}'",
|
|
159
|
+
NULL_OR_UNDEFINED_COMPARISON: "Comparison failed due to null or undefined value",
|
|
160
|
+
INVALID_DATE_COMPARISON: "Invalid Date objects are not comparable",
|
|
161
|
+
TYPE_MISMATCH_COMPARISON: "Cannot compare values of different types: {0} and {1}.",
|
|
162
|
+
NAN_COMPARISON: "Comparison not supported for NaN values",
|
|
121
163
|
};
|
|
122
164
|
/**
|
|
123
165
|
* @summary Defines the various default regexp patterns used
|
|
@@ -133,4 +175,4 @@ export const DEFAULT_PATTERNS = {
|
|
|
133
175
|
CHAR8_ONE_OF_EACH: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&_\-.,])[A-Za-z\d@$!%*?&_\-.,]{8,}$/g,
|
|
134
176
|
},
|
|
135
177
|
};
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sYUFBYTtJQUMxQyxTQUFTLEVBQUUsV0FBVztJQUN0QixRQUFRLEVBQUUsVUFBVTtJQUNwQixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixVQUFVLEVBQUUsV0FBVztJQUN2QixVQUFVLEVBQUUsV0FBVztJQUN2QixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsT0FBTztJQUNkLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLElBQUksRUFBRSxNQUFNO0lBQ1osTUFBTSxFQUFFLFFBQVE7Q0FDUixDQUFDO0FBRVg7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixTQUFTO0lBQ1QsVUFBVTtJQUNWLE9BQU87SUFDUCxPQUFPO0lBQ1AsS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sUUFBUTtJQUNSLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFVBQVU7Q0FDWCxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFFBQVE7SUFDUixRQUFRO0lBQ1IsU0FBUztJQUNULFdBQVc7SUFDWCxVQUFVO0lBQ1YsUUFBUTtJQUNSLFVBQVU7Q0FDWCxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQTJCO0lBQzVELFFBQVEsRUFBRSx3QkFBd0I7SUFDbEMsR0FBRyxFQUFFLDBCQUEwQjtJQUMvQixHQUFHLEVBQUUsMEJBQTBCO0lBQy9CLFVBQVUsRUFBRSwyQkFBMkI7SUFDdkMsVUFBVSxFQUFFLDJCQUEyQjtJQUN2QyxPQUFPLEVBQUUsc0NBQXNDO0lBQy9DLEtBQUssRUFBRSxnQ0FBZ0M7SUFDdkMsR0FBRyxFQUFFLDhCQUE4QjtJQUNuQyxJQUFJLEVBQUUsMENBQTBDO0lBQ2hELElBQUksRUFBRSxrQ0FBa0M7SUFDeEMsSUFBSSxFQUFFLGlDQUFpQztJQUN2QyxPQUFPLEVBQUUsbUJBQW1CO0lBQzVCLFFBQVEsRUFDTiw0SEFBNEg7SUFDOUgsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixlQUFlLEVBQUUsK0JBQStCO0NBQ2pELENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixLQUFLLEVBQ0gsNEpBQTRKO0lBQzlKLEdBQUcsRUFBRSx5YUFBeWE7SUFDOWEsUUFBUSxFQUFFO1FBQ1IsaUJBQWlCLEVBQ2YsaUZBQWlGO0tBQ3BGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUga2V5cyB1c2VkIGZvciB2YWxpZGF0aW9uXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRkxFQ1QgcHJlZml4ZXMgb3RoZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVRVUlSRUQgc2V0cyBhcyByZXF1aXJlZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1JTiBkZWZpbmVzIG1pbiB2YWx1ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWCBkZWZpbmVzIG1heCB2YWx1ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFNURVAgZGVmaW5lcyBzdGVwXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOX0xFTkdUSCBkZWZpbmVzIG1pbiBsZW5ndGhcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVhfTEVOR1RIIGRlZmluZXMgbWF4IGxlbmd0aFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBVFRFUk4gZGVmaW5lcyBwYXR0ZXJuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRU1BSUwgZGVmaW5lcyBlbWFpbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFVSTCBkZWZpbmVzIHVybFxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEUgZGVmaW5lcyBkYXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFlQRSBkZWZpbmVzIHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVNTV09SRCBkZWZpbmVzIHBhc3N3b3JkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVCBkZWZpbmVzIGxpc3RcbiAqXG4gKiBAY29uc3RhbnQgVmFsaWRhdGlvbktleXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFZhbGlkYXRpb25LZXlzID0ge1xuICBSRUZMRUNUOiBgJHtNb2RlbEtleXMuUkVGTEVDVH12YWxpZGF0aW9uLmAsXG4gIFZBTElEQVRPUjogXCJ2YWxpZGF0b3JcIixcbiAgUkVRVUlSRUQ6IFwicmVxdWlyZWRcIixcbiAgTUlOOiBcIm1pblwiLFxuICBNQVg6IFwibWF4XCIsXG4gIFNURVA6IFwic3RlcFwiLFxuICBNSU5fTEVOR1RIOiBcIm1pbmxlbmd0aFwiLFxuICBNQVhfTEVOR1RIOiBcIm1heGxlbmd0aFwiLFxuICBQQVRURVJOOiBcInBhdHRlcm5cIixcbiAgRU1BSUw6IFwiZW1haWxcIixcbiAgVVJMOiBcInVybFwiLFxuICBEQVRFOiBcImRhdGVcIixcbiAgVFlQRTogXCJ0eXBlXCIsXG4gIFBBU1NXT1JEOiBcInBhc3N3b3JkXCIsXG4gIExJU1Q6IFwibGlzdFwiLFxuICBGT1JNQVQ6IFwiZm9ybWF0XCIsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEBzdW1tYXJ5IGxpc3Qgb2YgbW9udGggbmFtZXNcbiAqIEBkZXNjcmlwdGlvbiBTdG9yZXMgbW9udGggbmFtZXMuIENhbiBiZSBjaGFuZ2VkIGZvciBsb2NhbGl6YXRpb24gcHVycG9zZXNcbiAqXG4gKiBAY29uc3RhbnQgTU9OVEhfTkFNRVNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IE1PTlRIX05BTUVTID0gW1xuICBcIkphbnVhcnlcIixcbiAgXCJGZWJydWFyeVwiLFxuICBcIk1hcmNoXCIsXG4gIFwiQXByaWxcIixcbiAgXCJNYXlcIixcbiAgXCJKdW5lXCIsXG4gIFwiSnVseVwiLFxuICBcIkF1Z3VzdFwiLFxuICBcIlNlcHRlbWJlclwiLFxuICBcIk9jdG9iZXJcIixcbiAgXCJOb3ZlbWJlclwiLFxuICBcIkRlY2VtYmVyXCIsXG5dO1xuXG4vKipcbiAqIEBzdW1tYXJ5IGxpc3Qgb2YgbmFtZXMgb2YgZGF5cyBvZiB0aGUgd2Vla1xuICogQGRlc2NyaXB0aW9uIFN0b3JlcyBuYW1lcyBmb3IgZGF5cyBvZiB0aGUgd2Vlay4gQ2FuIGJlIGNoYW5nZWQgZm9yIGxvY2FsaXphdGlvbiBwdXJwb3Nlc1xuICpcbiAqIEBjb25zdGFudCBEQVlTX09GX1dFRUtfTkFNRVNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IERBWVNfT0ZfV0VFS19OQU1FUyA9IFtcbiAgXCJTdW5kYXlcIixcbiAgXCJNb25kYXlcIixcbiAgXCJUdWVzZGF5XCIsXG4gIFwiV2VkbmVzZGF5XCIsXG4gIFwiVGh1cnNkYXlcIixcbiAgXCJGcmlkYXlcIixcbiAgXCJTYXR1cmRheVwiLFxuXTtcblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VzXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFUVVJUkVEIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1JTiBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVggZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOX0xFTkdUSCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVhfTEVOR1RIIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBVFRFUk4gZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRU1BSUwgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVVJMIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRZUEUgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU1RFUCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBEQVRFIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IERFRkFVTFQgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEFTU1dPUkQgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUX0lOU0lERSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNT0RFTF9OT1RfRk9VTkQgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKlxuICogQGNvbnN0YW50IERFRkFVTFRfRVJST1JfTUVTU0FHRVNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTUVTU0FHRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIFJFUVVJUkVEOiBcIlRoaXMgZmllbGQgaXMgcmVxdWlyZWRcIixcbiAgTUlOOiBcIlRoZSBtaW5pbXVtIHZhbHVlIGlzIHswfVwiLFxuICBNQVg6IFwiVGhlIG1heGltdW0gdmFsdWUgaXMgezB9XCIsXG4gIE1JTl9MRU5HVEg6IFwiVGhlIG1pbmltdW0gbGVuZ3RoIGlzIHswfVwiLFxuICBNQVhfTEVOR1RIOiBcIlRoZSBtYXhpbXVtIGxlbmd0aCBpcyB7MH1cIixcbiAgUEFUVEVSTjogXCJUaGUgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm5cIixcbiAgRU1BSUw6IFwiVGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlkIGVtYWlsXCIsXG4gIFVSTDogXCJUaGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgVVJMXCIsXG4gIFRZUEU6IFwiSW52YWxpZCB0eXBlLiBFeHBlY3RlZCB7MH0sIHJlY2VpdmVkIHsxfVwiLFxuICBTVEVQOiBcIkludmFsaWQgdmFsdWUuIE5vdCBhIHN0ZXAgb2YgezB9XCIsXG4gIERBVEU6IFwiSW52YWxpZCB2YWx1ZS4gbm90IGEgdmFsaWQgRGF0ZVwiLFxuICBERUZBVUxUOiBcIlRoZXJlIGlzIGFuIEVycm9yXCIsXG4gIFBBU1NXT1JEOlxuICAgIFwiTXVzdCBiZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIGNvbnRhaW4gb25lIG9mIG51bWJlciwgbG93ZXIgYW5kIHVwcGVyIGNhc2UgbGV0dGVycywgYW5kIHNwZWNpYWwgY2hhcmFjdGVyIChAJCElKj8mXy0uLClcIixcbiAgTElTVDogXCJJbnZhbGlkIGxpc3Qgb2YgezB9XCIsXG4gIE1PREVMX05PVF9GT1VORDogXCJObyBtb2RlbCByZWdpc3RlcmVkIHVuZGVyIHswfVwiLFxufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSB2YXJpb3VzIGRlZmF1bHQgcmVnZXhwIHBhdHRlcm5zIHVzZWRcbiAqXG4gKiBAZW51bSBERUZBVUxUX1BBVFRFUk5TXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBVFRFUk5TID0ge1xuICBFTUFJTDpcbiAgICAvW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXpBLVowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkAoPzpbYS16QS1aMC05XSg/OlthLXowLTktXSpbYS16QS1aMC05XSk/XFwuKStbYS16QS1aMC05XSg/OlthLXpBLVowLTktXSpbYS16QS1aMC05XSk/LyxcbiAgVVJMOiAvXig/Oig/Oig/Omh0dHBzP3xmdHApOik/XFwvXFwvKSg/OlxcUysoPzo6XFxTKik/QCk/KD86KD8hKD86MTB8MTI3KSg/OlxcLlxcZHsxLDN9KXszfSkoPyEoPzoxNjlcXC4yNTR8MTkyXFwuMTY4KSg/OlxcLlxcZHsxLDN9KXsyfSkoPyExNzJcXC4oPzoxWzYtOV18MlxcZHwzWzAtMV0pKD86XFwuXFxkezEsM30pezJ9KSg/OlsxLTldXFxkP3wxXFxkXFxkfDJbMDFdXFxkfDIyWzAtM10pKD86XFwuKD86MT9cXGR7MSwyfXwyWzAtNF1cXGR8MjVbMC01XSkpezJ9KD86XFwuKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNF0pKXwoPzooPzpbYS16MC05XFx1MDBhMS1cXHVmZmZmXVthLXowLTlcXHUwMGExLVxcdWZmZmZfLV17MCw2Mn0pP1thLXowLTlcXHUwMGExLVxcdWZmZmZdXFwuKSsoPzpbYS16XFx1MDBhMS1cXHVmZmZmXXsyLH1cXC4/KSkoPzo6XFxkezIsNX0pPyg/OlsvPyNdXFxTKik/JC9pLFxuICBQQVNTV09SRDoge1xuICAgIENIQVI4X09ORV9PRl9FQUNIOlxuICAgICAgL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbQCQhJSo/Jl9cXC0uLF0pW0EtWmEtelxcZEAkISUqPyZfXFwtLixdezgsfSQvZyxcbiAgfSxcbn07XG4iXX0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsV0FBVztJQUNqQixTQUFTLEVBQUUsVUFBVTtJQUNyQixrQkFBa0IsRUFBRSxpQkFBaUI7SUFDckMsWUFBWSxFQUFFLGFBQWE7SUFDM0IscUJBQXFCLEVBQUUsb0JBQW9CO0NBQ25DLENBQUM7QUFFWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLGFBQWE7SUFDMUMsU0FBUyxFQUFFLFdBQVc7SUFDdEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLFdBQVc7SUFDdkIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsS0FBSyxFQUFFLE9BQU87SUFDZCxHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsd0JBQXdCO0NBQ25CLENBQUM7QUFFWDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLFNBQVM7SUFDVCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87SUFDUCxLQUFLO0lBQ0wsTUFBTTtJQUNOLE1BQU07SUFDTixRQUFRO0lBQ1IsV0FBVztJQUNYLFNBQVM7SUFDVCxVQUFVO0lBQ1YsVUFBVTtDQUNYLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsUUFBUTtJQUNSLFFBQVE7SUFDUixTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixRQUFRO0lBQ1IsVUFBVTtDQUNYLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBMkI7SUFDNUQsUUFBUSxFQUFFLHdCQUF3QjtJQUNsQyxHQUFHLEVBQUUsMEJBQTBCO0lBQy9CLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsVUFBVSxFQUFFLDJCQUEyQjtJQUN2QyxVQUFVLEVBQUUsMkJBQTJCO0lBQ3ZDLE9BQU8sRUFBRSxzQ0FBc0M7SUFDL0MsS0FBSyxFQUFFLGdDQUFnQztJQUN2QyxHQUFHLEVBQUUsOEJBQThCO0lBQ25DLElBQUksRUFBRSwwQ0FBMEM7SUFDaEQsSUFBSSxFQUFFLGtDQUFrQztJQUN4QyxJQUFJLEVBQUUsaUNBQWlDO0lBQ3ZDLE9BQU8sRUFBRSxtQkFBbUI7SUFDNUIsUUFBUSxFQUNOLDRIQUE0SDtJQUM5SCxJQUFJLEVBQUUscUJBQXFCO0lBQzNCLGVBQWUsRUFBRSwrQkFBK0I7SUFDaEQsTUFBTSxFQUFFLHVDQUF1QztJQUMvQyxJQUFJLEVBQUUsNkNBQTZDO0lBQ25ELFNBQVMsRUFBRSx3Q0FBd0M7SUFDbkQsa0JBQWtCLEVBQUUsb0RBQW9EO0lBQ3hFLFlBQVksRUFBRSwyQ0FBMkM7SUFDekQscUJBQXFCLEVBQ25CLHVEQUF1RDtDQUMxRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7SUFDdkMsWUFBWSxFQUNWLHNFQUFzRTtJQUN4RSw2QkFBNkIsRUFDM0IsdUZBQXVGO0lBQ3pGLG9CQUFvQixFQUNsQiwwRUFBMEU7SUFDNUUsa0JBQWtCLEVBQ2hCLDREQUE0RDtJQUM5RCw0QkFBNEIsRUFDMUIsc0VBQXNFO0lBQ3hFLCtCQUErQixFQUM3QixzRkFBc0Y7SUFDeEYsNEJBQTRCLEVBQzFCLG1EQUFtRDtJQUNyRCw0QkFBNEIsRUFDMUIsa0RBQWtEO0lBQ3BELHVCQUF1QixFQUFFLHlDQUF5QztJQUNsRSx3QkFBd0IsRUFDdEIsd0RBQXdEO0lBQzFELGNBQWMsRUFBRSx5Q0FBeUM7Q0FDMUQsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLEtBQUssRUFDSCw0SkFBNEo7SUFDOUosR0FBRyxFQUFFLHlhQUF5YTtJQUM5YSxRQUFRLEVBQUU7UUFDUixpQkFBaUIsRUFDZixpRkFBaUY7S0FDcEY7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxLZXlzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEtleXMgdXNlZCBmb3IgY29tcGFyaXNvbi1iYXNlZCB2YWxpZGF0aW9ucy5cbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRVFVQUxTIC0gVmFsaWRhdGVzIGlmIHR3byB2YWx1ZXMgYXJlIGVxdWFsLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IERJRkYgLSBWYWxpZGF0ZXMgaWYgdHdvIHZhbHVlcyBhcmUgZGlmZmVyZW50LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IExFU1NfVEhBTiAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGxlc3MgdGhhbiBhbm90aGVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IExFU1NfVEhBTl9PUl9FUVVBTCAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IEdSRUFURVJfVEhBTiAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBhbm90aGVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IEdSRUFURVJfVEhBTl9PUl9FUVVBTCAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyLlxuICpcbiAqIEBjb25zdGFudCBDb21wYXJpc29uVmFsaWRhdGlvbktleXNcbiAqIEBtZW1iZXJvZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IENvbXBhcmlzb25WYWxpZGF0aW9uS2V5cyA9IHtcbiAgRVFVQUxTOiBcImVxdWFsc1wiLFxuICBESUZGOiBcImRpZmZlcmVudFwiLFxuICBMRVNTX1RIQU46IFwibGVzc1RoYW5cIixcbiAgTEVTU19USEFOX09SX0VRVUFMOiBcImxlc3NUaGFuT3JFcXVhbFwiLFxuICBHUkVBVEVSX1RIQU46IFwiZ3JlYXRlclRoYW5cIixcbiAgR1JFQVRFUl9USEFOX09SX0VRVUFMOiBcImdyZWF0ZXJUaGFuT3JFcXVhbFwiLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUga2V5cyB1c2VkIGZvciB2YWxpZGF0aW9uXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRkxFQ1QgcHJlZml4ZXMgb3RoZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVRVUlSRUQgc2V0cyBhcyByZXF1aXJlZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1JTiBkZWZpbmVzIG1pbiB2YWx1ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWCBkZWZpbmVzIG1heCB2YWx1ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFNURVAgZGVmaW5lcyBzdGVwXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOX0xFTkdUSCBkZWZpbmVzIG1pbiBsZW5ndGhcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVhfTEVOR1RIIGRlZmluZXMgbWF4IGxlbmd0aFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBVFRFUk4gZGVmaW5lcyBwYXR0ZXJuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRU1BSUwgZGVmaW5lcyBlbWFpbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFVSTCBkZWZpbmVzIHVybFxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEUgZGVmaW5lcyBkYXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFlQRSBkZWZpbmVzIHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVNTV09SRCBkZWZpbmVzIHBhc3N3b3JkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVCBkZWZpbmVzIGxpc3RcbiAqXG4gKiBAY29uc3RhbnQgVmFsaWRhdGlvbktleXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFZhbGlkYXRpb25LZXlzID0ge1xuICBSRUZMRUNUOiBgJHtNb2RlbEtleXMuUkVGTEVDVH12YWxpZGF0aW9uLmAsXG4gIFZBTElEQVRPUjogXCJ2YWxpZGF0b3JcIixcbiAgUkVRVUlSRUQ6IFwicmVxdWlyZWRcIixcbiAgTUlOOiBcIm1pblwiLFxuICBNQVg6IFwibWF4XCIsXG4gIFNURVA6IFwic3RlcFwiLFxuICBNSU5fTEVOR1RIOiBcIm1pbmxlbmd0aFwiLFxuICBNQVhfTEVOR1RIOiBcIm1heGxlbmd0aFwiLFxuICBQQVRURVJOOiBcInBhdHRlcm5cIixcbiAgRU1BSUw6IFwiZW1haWxcIixcbiAgVVJMOiBcInVybFwiLFxuICBEQVRFOiBcImRhdGVcIixcbiAgVFlQRTogXCJ0eXBlXCIsXG4gIFBBU1NXT1JEOiBcInBhc3N3b3JkXCIsXG4gIExJU1Q6IFwibGlzdFwiLFxuICBGT1JNQVQ6IFwiZm9ybWF0XCIsXG4gIC4uLkNvbXBhcmlzb25WYWxpZGF0aW9uS2V5cyxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogQHN1bW1hcnkgbGlzdCBvZiBtb250aCBuYW1lc1xuICogQGRlc2NyaXB0aW9uIFN0b3JlcyBtb250aCBuYW1lcy4gQ2FuIGJlIGNoYW5nZWQgZm9yIGxvY2FsaXphdGlvbiBwdXJwb3Nlc1xuICpcbiAqIEBjb25zdGFudCBNT05USF9OQU1FU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgTU9OVEhfTkFNRVMgPSBbXG4gIFwiSmFudWFyeVwiLFxuICBcIkZlYnJ1YXJ5XCIsXG4gIFwiTWFyY2hcIixcbiAgXCJBcHJpbFwiLFxuICBcIk1heVwiLFxuICBcIkp1bmVcIixcbiAgXCJKdWx5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiU2VwdGVtYmVyXCIsXG4gIFwiT2N0b2JlclwiLFxuICBcIk5vdmVtYmVyXCIsXG4gIFwiRGVjZW1iZXJcIixcbl07XG5cbi8qKlxuICogQHN1bW1hcnkgbGlzdCBvZiBuYW1lcyBvZiBkYXlzIG9mIHRoZSB3ZWVrXG4gKiBAZGVzY3JpcHRpb24gU3RvcmVzIG5hbWVzIGZvciBkYXlzIG9mIHRoZSB3ZWVrLiBDYW4gYmUgY2hhbmdlZCBmb3IgbG9jYWxpemF0aW9uIHB1cnBvc2VzXG4gKlxuICogQGNvbnN0YW50IERBWVNfT0ZfV0VFS19OQU1FU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgREFZU19PRl9XRUVLX05BTUVTID0gW1xuICBcIlN1bmRheVwiLFxuICBcIk1vbmRheVwiLFxuICBcIlR1ZXNkYXlcIixcbiAgXCJXZWRuZXNkYXlcIixcbiAgXCJUaHVyc2RheVwiLFxuICBcIkZyaWRheVwiLFxuICBcIlNhdHVyZGF5XCIsXG5dO1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVRVUlSRUQgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNSU5fTEVOR1RIIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWF9MRU5HVEggZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEFUVEVSTiBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBFTUFJTCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBVUkwgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFlQRSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTVEVQIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEUgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gREVGQVVMVCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVNTV09SRCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfSU5TSURFIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1PREVMX05PVF9GT1VORCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqXG4gKiBAY29uc3RhbnQgREVGQVVMVF9FUlJPUl9NRVNTQUdFU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgUkVRVUlSRUQ6IFwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZFwiLFxuICBNSU46IFwiVGhlIG1pbmltdW0gdmFsdWUgaXMgezB9XCIsXG4gIE1BWDogXCJUaGUgbWF4aW11bSB2YWx1ZSBpcyB7MH1cIixcbiAgTUlOX0xFTkdUSDogXCJUaGUgbWluaW11bSBsZW5ndGggaXMgezB9XCIsXG4gIE1BWF9MRU5HVEg6IFwiVGhlIG1heGltdW0gbGVuZ3RoIGlzIHswfVwiLFxuICBQQVRURVJOOiBcIlRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVyblwiLFxuICBFTUFJTDogXCJUaGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgZW1haWxcIixcbiAgVVJMOiBcIlRoZSB2YWx1ZSBpcyBub3QgYSB2YWxpZCBVUkxcIixcbiAgVFlQRTogXCJJbnZhbGlkIHR5cGUuIEV4cGVjdGVkIHswfSwgcmVjZWl2ZWQgezF9XCIsXG4gIFNURVA6IFwiSW52YWxpZCB2YWx1ZS4gTm90IGEgc3RlcCBvZiB7MH1cIixcbiAgREFURTogXCJJbnZhbGlkIHZhbHVlLiBub3QgYSB2YWxpZCBEYXRlXCIsXG4gIERFRkFVTFQ6IFwiVGhlcmUgaXMgYW4gRXJyb3JcIixcbiAgUEFTU1dPUkQ6XG4gICAgXCJNdXN0IGJlIGF0IGxlYXN0IDggY2hhcmFjdGVycyBhbmQgY29udGFpbiBvbmUgb2YgbnVtYmVyLCBsb3dlciBhbmQgdXBwZXIgY2FzZSBsZXR0ZXJzLCBhbmQgc3BlY2lhbCBjaGFyYWN0ZXIgKEAkISUqPyZfLS4sKVwiLFxuICBMSVNUOiBcIkludmFsaWQgbGlzdCBvZiB7MH1cIixcbiAgTU9ERUxfTk9UX0ZPVU5EOiBcIk5vIG1vZGVsIHJlZ2lzdGVyZWQgdW5kZXIgezB9XCIsXG4gIEVRVUFMUzogXCJUaGlzIGZpZWxkIG11c3QgYmUgZXF1YWwgdG8gZmllbGQgezB9XCIsXG4gIERJRkY6IFwiVGhpcyBmaWVsZCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIGZpZWxkIHswfVwiLFxuICBMRVNTX1RIQU46IFwiVGhpcyBmaWVsZCBtdXN0IGJlIGxlc3MgdGhhbiBmaWVsZCB7MH1cIixcbiAgTEVTU19USEFOX09SX0VRVUFMOiBcIlRoaXMgZmllbGQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gZmllbGQgezB9XCIsXG4gIEdSRUFURVJfVEhBTjogXCJUaGlzIGZpZWxkIG11c3QgYmUgZ3JlYXRlciB0aGFuIGZpZWxkIHswfVwiLFxuICBHUkVBVEVSX1RIQU5fT1JfRVFVQUw6XG4gICAgXCJUaGlzIGZpZWxkIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGZpZWxkIHswfVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IENPTVBBUklTT05fRVJST1JfTUVTU0FHRVMgPSB7XG4gIElOVkFMSURfUEFUSDpcbiAgICBcIkludmFsaWQgcGF0aCBhcmd1bWVudC4gRXhwZWN0ZWQgbm9uLWVtcHR5IHN0cmluZyBidXQgcmVjZWl2ZWQ6ICd7MH0nXCIsXG4gIENPTlRFWFRfTk9UX09CSkVDVF9DT01QQVJJU09OOlxuICAgIFwiVW5hYmxlIHRvIGFjY2VzcyBwYXJlbnQgYXQgbGV2ZWwgezB9IGZvciBwYXRoICd7MX0nOiBjdXJyZW50IGNvbnRleHQgaXMgbm90IGFuIG9iamVjdFwiLFxuICBOT19QQVJFTlRfQ09NUEFSSVNPTjpcbiAgICBcIlVuYWJsZSB0byBhY2Nlc3MgcGFyZW50IGF0IGxldmVsIHswfSBmb3IgcGF0aCAnezF9Jzogbm8gcGFyZW50IGF2YWlsYWJsZVwiLFxuICBQUk9QRVJUWV9OT1RfRk9VTkQ6XG4gICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBwYXRoIHswfTogcHJvcGVydHkgJ3sxfScgZG9lcyBub3QgZXhpc3QuXCIsXG4gIFBST1BFUlRZX05PVF9GT1VORF9PTl9QQVJFTlQ6XG4gICAgXCJGYWlsZWQgdG8gcmVzb2x2ZSBwYXRoIHswfTogcHJvcGVydHkgJ3sxfScgZG9lcyBub3QgZXhpc3Qgb24gcGFyZW50LlwiLFxuICBQUk9QRVJUWV9OT1RfRk9VTkRfQUZURVJfUEFSRU5UOlxuICAgIFwiRmFpbGVkIHRvIHJlc29sdmUgcGF0aCB7MH06IHByb3BlcnR5ICd7MX0nIGRvZXMgbm90IGV4aXN0IGFmdGVyIHsyfSBwYXJlbnQgbGV2ZWwocykuXCIsXG4gIFVOU1VQUE9SVEVEX1RZUEVTX0NPTVBBUklTT046XG4gICAgXCJVbnN1cHBvcnRlZCB0eXBlcyBmb3IgY29tcGFyaXNvbjogJ3swfScgYW5kICd7MX0nXCIsXG4gIE5VTExfT1JfVU5ERUZJTkVEX0NPTVBBUklTT046XG4gICAgXCJDb21wYXJpc29uIGZhaWxlZCBkdWUgdG8gbnVsbCBvciB1bmRlZmluZWQgdmFsdWVcIixcbiAgSU5WQUxJRF9EQVRFX0NPTVBBUklTT046IFwiSW52YWxpZCBEYXRlIG9iamVjdHMgYXJlIG5vdCBjb21wYXJhYmxlXCIsXG4gIFRZUEVfTUlTTUFUQ0hfQ09NUEFSSVNPTjpcbiAgICBcIkNhbm5vdCBjb21wYXJlIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXM6IHswfSBhbmQgezF9LlwiLFxuICBOQU5fQ09NUEFSSVNPTjogXCJDb21wYXJpc29uIG5vdCBzdXBwb3J0ZWQgZm9yIE5hTiB2YWx1ZXNcIixcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgdmFyaW91cyBkZWZhdWx0IHJlZ2V4cCBwYXR0ZXJucyB1c2VkXG4gKlxuICogQGVudW0gREVGQVVMVF9QQVRURVJOU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQVRURVJOUyA9IHtcbiAgRU1BSUw6XG4gICAgL1thLXpBLVowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXC5bYS16QS1aMC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAKD86W2EtekEtWjAtOV0oPzpbYS16MC05LV0qW2EtekEtWjAtOV0pP1xcLikrW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV0qW2EtekEtWjAtOV0pPy8sXG4gIFVSTDogL14oPzooPzooPzpodHRwcz98ZnRwKTopP1xcL1xcLykoPzpcXFMrKD86OlxcUyopP0ApPyg/Oig/ISg/OjEwfDEyNykoPzpcXC5cXGR7MSwzfSl7M30pKD8hKD86MTY5XFwuMjU0fDE5MlxcLjE2OCkoPzpcXC5cXGR7MSwzfSl7Mn0pKD8hMTcyXFwuKD86MVs2LTldfDJcXGR8M1swLTFdKSg/OlxcLlxcZHsxLDN9KXsyfSkoPzpbMS05XVxcZD98MVxcZFxcZHwyWzAxXVxcZHwyMlswLTNdKSg/OlxcLig/OjE/XFxkezEsMn18MlswLTRdXFxkfDI1WzAtNV0pKXsyfSg/OlxcLig/OlsxLTldXFxkP3wxXFxkXFxkfDJbMC00XVxcZHwyNVswLTRdKSl8KD86KD86W2EtejAtOVxcdTAwYTEtXFx1ZmZmZl1bYS16MC05XFx1MDBhMS1cXHVmZmZmXy1dezAsNjJ9KT9bYS16MC05XFx1MDBhMS1cXHVmZmZmXVxcLikrKD86W2EtelxcdTAwYTEtXFx1ZmZmZl17Mix9XFwuPykpKD86OlxcZHsyLDV9KT8oPzpbLz8jXVxcUyopPyQvaSxcbiAgUEFTU1dPUkQ6IHtcbiAgICBDSEFSOF9PTkVfT0ZfRUFDSDpcbiAgICAgIC9eKD89LipbYS16XSkoPz0uKltBLVpdKSg/PS4qXFxkKSg/PS4qW0AkISUqPyZfXFwtLixdKVtBLVphLXpcXGRAJCElKj8mX1xcLS4sXXs4LH0kL2csXG4gIH0sXG59O1xuIl19
|
|
@@ -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,3 +21,4 @@ export * from "./TypeValidator";
|
|
|
15
21
|
export * from "./URLValidator";
|
|
16
22
|
export * from "./Validator";
|
|
17
23
|
export * from "./ValidatorRegistry";
|
|
24
|
+
export * from "./utils";
|