@decaf-ts/decorator-validation 1.6.1 → 1.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +8 -2
  2. package/dist/decorator-validation.cjs +1154 -352
  3. package/dist/decorator-validation.esm.cjs +1124 -320
  4. package/lib/esm/index.d.ts +5 -36
  5. package/lib/esm/index.js +6 -37
  6. package/lib/esm/model/Model.d.ts +100 -29
  7. package/lib/esm/model/Model.js +103 -36
  8. package/lib/esm/model/constants.d.ts +3 -3
  9. package/lib/esm/model/constants.js +4 -4
  10. package/lib/esm/model/construction.d.ts +3 -3
  11. package/lib/esm/model/construction.js +4 -4
  12. package/lib/esm/model/decorators.d.ts +4 -4
  13. package/lib/esm/model/decorators.js +6 -5
  14. package/lib/esm/model/types.d.ts +30 -11
  15. package/lib/esm/model/types.js +1 -1
  16. package/lib/esm/model/validation.d.ts +2 -2
  17. package/lib/esm/model/validation.js +5 -5
  18. package/lib/esm/utils/Decoration.d.ts +123 -0
  19. package/lib/esm/utils/Decoration.js +188 -0
  20. package/lib/esm/utils/constants.d.ts +27 -9
  21. package/lib/esm/utils/constants.js +28 -10
  22. package/lib/esm/utils/dates.d.ts +26 -16
  23. package/lib/esm/utils/dates.js +27 -17
  24. package/lib/esm/utils/decorators.d.ts +41 -0
  25. package/lib/esm/utils/decorators.js +42 -1
  26. package/lib/esm/utils/hashing.d.ts +50 -6
  27. package/lib/esm/utils/hashing.js +49 -5
  28. package/lib/esm/utils/index.d.ts +1 -0
  29. package/lib/esm/utils/index.js +2 -1
  30. package/lib/esm/utils/registry.d.ts +2 -2
  31. package/lib/esm/utils/registry.js +1 -1
  32. package/lib/esm/utils/serialization.d.ts +1 -1
  33. package/lib/esm/utils/serialization.js +2 -2
  34. package/lib/esm/utils/strings.d.ts +4 -4
  35. package/lib/esm/utils/strings.js +5 -5
  36. package/lib/esm/utils/types.d.ts +123 -16
  37. package/lib/esm/utils/types.js +1 -1
  38. package/lib/esm/validation/Validators/DateValidator.d.ts +40 -8
  39. package/lib/esm/validation/Validators/DateValidator.js +41 -9
  40. package/lib/esm/validation/Validators/EmailValidator.d.ts +39 -7
  41. package/lib/esm/validation/Validators/EmailValidator.js +40 -8
  42. package/lib/esm/validation/Validators/ListValidator.d.ts +44 -6
  43. package/lib/esm/validation/Validators/ListValidator.js +45 -7
  44. package/lib/esm/validation/Validators/MaxValidator.d.ts +52 -6
  45. package/lib/esm/validation/Validators/MaxValidator.js +53 -7
  46. package/lib/esm/validation/Validators/MinValidator.d.ts +52 -6
  47. package/lib/esm/validation/Validators/MinValidator.js +53 -7
  48. package/lib/esm/validation/Validators/PatternValidator.d.ts +75 -9
  49. package/lib/esm/validation/Validators/PatternValidator.js +76 -10
  50. package/lib/esm/validation/Validators/RequiredValidator.d.ts +52 -6
  51. package/lib/esm/validation/Validators/RequiredValidator.js +53 -7
  52. package/lib/esm/validation/Validators/TypeValidator.d.ts +60 -6
  53. package/lib/esm/validation/Validators/TypeValidator.js +69 -7
  54. package/lib/esm/validation/Validators/URLValidator.d.ts +41 -7
  55. package/lib/esm/validation/Validators/URLValidator.js +42 -8
  56. package/lib/esm/validation/Validators/Validator.d.ts +77 -14
  57. package/lib/esm/validation/Validators/Validator.js +68 -11
  58. package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +1 -7
  59. package/lib/esm/validation/Validators/ValidatorRegistry.js +4 -11
  60. package/lib/esm/validation/decorators.d.ts +50 -40
  61. package/lib/esm/validation/decorators.js +102 -53
  62. package/lib/esm/validation/types.d.ts +146 -28
  63. package/lib/esm/validation/types.js +1 -1
  64. package/lib/index.cjs +7 -38
  65. package/lib/index.d.ts +5 -36
  66. package/lib/model/Model.cjs +103 -38
  67. package/lib/model/Model.d.ts +100 -29
  68. package/lib/model/constants.cjs +4 -4
  69. package/lib/model/constants.d.ts +3 -3
  70. package/lib/model/construction.cjs +4 -4
  71. package/lib/model/construction.d.ts +3 -3
  72. package/lib/model/decorators.cjs +6 -5
  73. package/lib/model/decorators.d.ts +4 -4
  74. package/lib/model/types.cjs +1 -1
  75. package/lib/model/types.d.ts +30 -11
  76. package/lib/model/validation.cjs +4 -4
  77. package/lib/model/validation.d.ts +2 -2
  78. package/lib/utils/Decoration.cjs +192 -0
  79. package/lib/utils/Decoration.d.ts +123 -0
  80. package/lib/utils/constants.cjs +29 -11
  81. package/lib/utils/constants.d.ts +27 -9
  82. package/lib/utils/dates.cjs +27 -17
  83. package/lib/utils/dates.d.ts +26 -16
  84. package/lib/utils/decorators.cjs +42 -1
  85. package/lib/utils/decorators.d.ts +41 -0
  86. package/lib/utils/hashing.cjs +49 -5
  87. package/lib/utils/hashing.d.ts +50 -6
  88. package/lib/utils/index.cjs +2 -1
  89. package/lib/utils/index.d.ts +1 -0
  90. package/lib/utils/registry.cjs +1 -1
  91. package/lib/utils/registry.d.ts +2 -2
  92. package/lib/utils/serialization.cjs +2 -2
  93. package/lib/utils/serialization.d.ts +1 -1
  94. package/lib/utils/strings.cjs +5 -5
  95. package/lib/utils/strings.d.ts +4 -4
  96. package/lib/utils/types.cjs +1 -1
  97. package/lib/utils/types.d.ts +123 -16
  98. package/lib/validation/Validators/DateValidator.cjs +41 -9
  99. package/lib/validation/Validators/DateValidator.d.ts +40 -8
  100. package/lib/validation/Validators/EmailValidator.cjs +40 -8
  101. package/lib/validation/Validators/EmailValidator.d.ts +39 -7
  102. package/lib/validation/Validators/ListValidator.cjs +45 -7
  103. package/lib/validation/Validators/ListValidator.d.ts +44 -6
  104. package/lib/validation/Validators/MaxValidator.cjs +53 -7
  105. package/lib/validation/Validators/MaxValidator.d.ts +52 -6
  106. package/lib/validation/Validators/MinValidator.cjs +53 -7
  107. package/lib/validation/Validators/MinValidator.d.ts +52 -6
  108. package/lib/validation/Validators/PatternValidator.cjs +76 -10
  109. package/lib/validation/Validators/PatternValidator.d.ts +75 -9
  110. package/lib/validation/Validators/RequiredValidator.cjs +53 -7
  111. package/lib/validation/Validators/RequiredValidator.d.ts +52 -6
  112. package/lib/validation/Validators/TypeValidator.cjs +69 -7
  113. package/lib/validation/Validators/TypeValidator.d.ts +60 -6
  114. package/lib/validation/Validators/URLValidator.cjs +42 -8
  115. package/lib/validation/Validators/URLValidator.d.ts +41 -7
  116. package/lib/validation/Validators/Validator.cjs +68 -11
  117. package/lib/validation/Validators/Validator.d.ts +77 -14
  118. package/lib/validation/Validators/ValidatorRegistry.cjs +4 -12
  119. package/lib/validation/Validators/ValidatorRegistry.d.ts +1 -7
  120. package/lib/validation/decorators.cjs +102 -53
  121. package/lib/validation/decorators.d.ts +50 -40
  122. package/lib/validation/types.cjs +1 -1
  123. package/lib/validation/types.d.ts +146 -28
  124. package/package.json +2 -2
@@ -1,14 +1,54 @@
1
1
  import { ValidatorOptions } from "../types";
2
2
  /**
3
- * @summary Base Implementation for Validators
4
- * @description Provides the underlying functionality for {@link Validator}s
3
+ * @description Abstract base class for all validators in the validation framework
4
+ * @summary The Validator class provides the foundation for all validator implementations.
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.
5
8
  *
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
9
+ * @param {string} message - Default error message to display when validation fails, defaults to {@link DEFAULT_ERROR_MESSAGES#DEFAULT}
10
+ * @param {string[]} acceptedTypes - Array of type names that this validator can validate
9
11
  *
10
12
  * @class Validator
11
13
  * @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
+ *
12
52
  * @category Validators
13
53
  */
14
54
  export declare abstract class Validator<V extends ValidatorOptions = ValidatorOptions> {
@@ -16,26 +56,49 @@ export declare abstract class Validator<V extends ValidatorOptions = ValidatorOp
16
56
  readonly acceptedTypes?: string[];
17
57
  protected constructor(message?: string, ...acceptedTypes: string[]);
18
58
  /**
19
- * @summary builds the error message
20
- * @param {string} message
21
- * @param {any[]} args
59
+ * @description Formats an error message with optional arguments
60
+ * @summary Creates a formatted error message by replacing placeholders with provided arguments.
61
+ * This method uses the string formatting utility to generate consistent error messages
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
22
67
  * @protected
23
68
  */
24
69
  protected getMessage(message: string, ...args: any[]): string;
25
70
  /**
26
- * @summary Validates type
27
- * @param {any} unbound
71
+ * @description Creates a type-checking wrapper around the hasErrors method
72
+ * @summary Wraps the hasErrors method with type validation logic to ensure that
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
28
78
  * @private
29
79
  */
30
80
  private checkTypeAndHasErrors;
31
81
  /**
32
- * @summary Validates an attribute
33
- * @param {any} value
34
- * @param {ValidatorOptions} [options] Validate options for customizing the model validation behavior
82
+ * @description Validates a value against specific validation rules
83
+ * @summary Abstract method that must be implemented by all validator subclasses.
84
+ * This method contains the core validation logic that determines whether a value
85
+ * is valid according to the specific rules of the validator. If the value is valid,
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
91
+ *
92
+ * @return {string | undefined} Error message if validation fails, undefined if validation passes
35
93
  *
36
94
  * @abstract
37
95
  *
38
- * @see Model#hasErrors
96
+ * @see Model#validate
39
97
  */
40
98
  abstract hasErrors(value: any, options?: V): string | undefined;
99
+ /**
100
+ * @summary Duck typing for Validators
101
+ * @param val
102
+ */
103
+ static isValidator(val: any): boolean;
41
104
  }
@@ -1,15 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ValidatorRegistry = void 0;
4
- exports.isValidator = isValidator;
5
- /**
6
- * @summary Duck typing for Validators
7
- * @function isValidator
8
- * @param val
9
- */
10
- function isValidator(val) {
11
- return val.constructor && val["hasErrors"];
12
- }
4
+ const Validator_1 = require("./Validator.cjs");
13
5
  /**
14
6
  * @summary Base Implementation of a Validator Registry
15
7
  *
@@ -48,7 +40,7 @@ class ValidatorRegistry {
48
40
  if (!(validatorKey in this.cache))
49
41
  return undefined;
50
42
  const classOrInstance = this.cache[validatorKey];
51
- if (isValidator(classOrInstance))
43
+ if (Validator_1.Validator.isValidator(classOrInstance))
52
44
  return classOrInstance;
53
45
  const constructor = classOrInstance.default || classOrInstance;
54
46
  const instance = new constructor();
@@ -62,7 +54,7 @@ class ValidatorRegistry {
62
54
  */
63
55
  register(...validator) {
64
56
  validator.forEach((v) => {
65
- if (isValidator(v)) {
57
+ if (Validator_1.Validator.isValidator(v)) {
66
58
  // const k =
67
59
  if (v.validationKey in this.cache)
68
60
  return;
@@ -83,4 +75,4 @@ class ValidatorRegistry {
83
75
  }
84
76
  }
85
77
  exports.ValidatorRegistry = ValidatorRegistry;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL1ZhbGlkYXRvclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBLGtDQUVDO0FBUEQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxHQUFRO0lBQ2xDLE9BQU8sR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsaUJBQWlCO0lBTTVCLFlBQVksR0FBRyxVQUErQztRQUh0RCxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBSXRCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFzQixZQUFvQjtRQUMzQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRXBELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDO1lBQUUsT0FBTyxlQUFvQixDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQ04sR0FBRyxTQUFzQztRQUV6QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEIsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsWUFBWTtnQkFFWixJQUFLLENBQXlCLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU87Z0JBQ25FLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBeUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLENBQXdCLENBQUM7Z0JBQ3BFLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU87Z0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPO2dCQUNsQixNQUFNLEdBQUcsR0FBMkIsRUFBRSxDQUFDO2dCQUN2QyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO2dCQUVqRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBcEVELDhDQW9FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IElWYWxpZGF0b3JSZWdpc3RyeSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBEdWNrIHR5cGluZyBmb3IgVmFsaWRhdG9yc1xuICogQGZ1bmN0aW9uIGlzVmFsaWRhdG9yXG4gKiBAcGFyYW0gdmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkYXRvcih2YWw6IGFueSkge1xuICByZXR1cm4gdmFsLmNvbnN0cnVjdG9yICYmIHZhbFtcImhhc0Vycm9yc1wiXTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIEltcGxlbWVudGF0aW9uIG9mIGEgVmFsaWRhdG9yIFJlZ2lzdHJ5XG4gKlxuICogQHByb3Age1ZhbGlkYXRvcltdfSBbdmFsaWRhdG9yc10gdGhlIGluaXRpYWwgdmFsaWRhdG9ycyB0byByZWdpc3RlclxuICpcbiAqIEBjbGFzcyBWYWxpZGF0b3JSZWdpc3RyeVxuICogQGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+XG4gIGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG57XG4gIHByaXZhdGUgY2FjaGU6IGFueSA9IHt9O1xuICBwcml2YXRlIGN1c3RvbUtleUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKC4uLnZhbGlkYXRvcnM6IChWYWxpZGF0b3JEZWZpbml0aW9uIHwgVmFsaWRhdG9yKVtdKSB7XG4gICAgdGhpcy5jdXN0b21LZXlDYWNoZSA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXIoLi4udmFsaWRhdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgcmV0cmlldmVzIHRoZSBjdXN0b20ga2V5c1xuICAgKi9cbiAgZ2V0Q3VzdG9tS2V5cygpOiB7IFtpbmRleGVyOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY3VzdG9tS2V5Q2FjaGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJldHJpZXZlcyB0aGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3JzIGtleXNcbiAgICovXG4gIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNhY2hlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYSB2YWxpZGF0b3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbGlkYXRvcktleSBvbmUgb2YgdGhlIHtAbGluayBWYWxpZGF0aW9uS2V5c31cbiAgICogQHJldHVybiB7VmFsaWRhdG9yIHwgdW5kZWZpbmVkfSB0aGUgcmVnaXN0ZXJlZCBWYWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbm8gbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIGtleVxuICAgKi9cbiAgZ2V0PFQgZXh0ZW5kcyBWYWxpZGF0b3I+KHZhbGlkYXRvcktleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCEodmFsaWRhdG9yS2V5IGluIHRoaXMuY2FjaGUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY2xhc3NPckluc3RhbmNlID0gdGhpcy5jYWNoZVt2YWxpZGF0b3JLZXldO1xuICAgIGlmIChpc1ZhbGlkYXRvcihjbGFzc09ySW5zdGFuY2UpKSByZXR1cm4gY2xhc3NPckluc3RhbmNlIGFzIFQ7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjbGFzc09ySW5zdGFuY2UuZGVmYXVsdCB8fCBjbGFzc09ySW5zdGFuY2U7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgY29uc3RydWN0b3IoKTtcbiAgICB0aGlzLmNhY2hlW3ZhbGlkYXRvcktleV0gPSBpbnN0YW5jZTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIHRoZSBwcm92aWRlZCB2YWxpZGF0b3JzIG9udG8gdGhlIHJlZ2lzdHJ5XG4gICAqXG4gICAqIEBwYXJhbSB7VFtdIHwgVmFsaWRhdG9yRGVmaW5pdGlvbltdfSB2YWxpZGF0b3JcbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFZhbGlkYXRvckRlZmluaXRpb24gfCBUKVtdXG4gICk6IHZvaWQge1xuICAgIHZhbGlkYXRvci5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAoaXNWYWxpZGF0b3IodikpIHtcbiAgICAgICAgLy8gY29uc3QgayA9XG5cbiAgICAgICAgaWYgKCh2IGFzIFZhbGlkYXRvckRlZmluaXRpb24pLnZhbGlkYXRpb25LZXkgaW4gdGhpcy5jYWNoZSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmNhY2hlWyh2IGFzIFZhbGlkYXRvckRlZmluaXRpb24pLnZhbGlkYXRpb25LZXldID0gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgdmFsaWRhdGlvbktleSwgdmFsaWRhdG9yLCBzYXZlIH0gPSB2IGFzIFZhbGlkYXRvckRlZmluaXRpb247XG4gICAgICAgIGlmICh2YWxpZGF0aW9uS2V5IGluIHRoaXMuY2FjaGUpIHJldHVybjtcbiAgICAgICAgdGhpcy5jYWNoZVt2YWxpZGF0aW9uS2V5XSA9IHZhbGlkYXRvcjtcbiAgICAgICAgaWYgKCFzYXZlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICBvYmpbdmFsaWRhdGlvbktleS50b1VwcGVyQ2FzZSgpXSA9IHZhbGlkYXRpb25LZXk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21LZXlDYWNoZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY3VzdG9tS2V5Q2FjaGUsIG9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi9WYWxpZGF0b3JzL1ZhbGlkYXRvclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLDJDQUF3QztBQUV4Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLGlCQUFpQjtJQU01QixZQUFZLEdBQUcsVUFBK0M7UUFIdEQsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUl0QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBc0IsWUFBb0I7UUFDM0MsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUVwRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pELElBQUkscUJBQVMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1lBQUUsT0FBTyxlQUFvQixDQUFDO1FBQ3hFLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQ04sR0FBRyxTQUFzQztRQUV6QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEIsSUFBSSxxQkFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM3QixZQUFZO2dCQUVaLElBQUssQ0FBeUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTztnQkFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUF5QixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBd0IsQ0FBQztnQkFDcEUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTztnQkFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJO29CQUFFLE9BQU87Z0JBQ2xCLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7Z0JBQ3ZDLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBRWpELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFwRUQsOENBb0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRGVmaW5pdGlvbiB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgSVZhbGlkYXRvclJlZ2lzdHJ5IH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIEltcGxlbWVudGF0aW9uIG9mIGEgVmFsaWRhdG9yIFJlZ2lzdHJ5XG4gKlxuICogQHByb3Age1ZhbGlkYXRvcltdfSBbdmFsaWRhdG9yc10gdGhlIGluaXRpYWwgdmFsaWRhdG9ycyB0byByZWdpc3RlclxuICpcbiAqIEBjbGFzcyBWYWxpZGF0b3JSZWdpc3RyeVxuICogQGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+XG4gIGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG57XG4gIHByaXZhdGUgY2FjaGU6IGFueSA9IHt9O1xuICBwcml2YXRlIGN1c3RvbUtleUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKC4uLnZhbGlkYXRvcnM6IChWYWxpZGF0b3JEZWZpbml0aW9uIHwgVmFsaWRhdG9yKVtdKSB7XG4gICAgdGhpcy5jdXN0b21LZXlDYWNoZSA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXIoLi4udmFsaWRhdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgcmV0cmlldmVzIHRoZSBjdXN0b20ga2V5c1xuICAgKi9cbiAgZ2V0Q3VzdG9tS2V5cygpOiB7IFtpbmRleGVyOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY3VzdG9tS2V5Q2FjaGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJldHJpZXZlcyB0aGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3JzIGtleXNcbiAgICovXG4gIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNhY2hlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYSB2YWxpZGF0b3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbGlkYXRvcktleSBvbmUgb2YgdGhlIHtAbGluayBWYWxpZGF0aW9uS2V5c31cbiAgICogQHJldHVybiB7VmFsaWRhdG9yIHwgdW5kZWZpbmVkfSB0aGUgcmVnaXN0ZXJlZCBWYWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbm8gbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIGtleVxuICAgKi9cbiAgZ2V0PFQgZXh0ZW5kcyBWYWxpZGF0b3I+KHZhbGlkYXRvcktleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCEodmFsaWRhdG9yS2V5IGluIHRoaXMuY2FjaGUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY2xhc3NPckluc3RhbmNlID0gdGhpcy5jYWNoZVt2YWxpZGF0b3JLZXldO1xuICAgIGlmIChWYWxpZGF0b3IuaXNWYWxpZGF0b3IoY2xhc3NPckluc3RhbmNlKSkgcmV0dXJuIGNsYXNzT3JJbnN0YW5jZSBhcyBUO1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gY2xhc3NPckluc3RhbmNlLmRlZmF1bHQgfHwgY2xhc3NPckluc3RhbmNlO1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgdGhpcy5jYWNoZVt2YWxpZGF0b3JLZXldID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyB0aGUgcHJvdmlkZWQgdmFsaWRhdG9ycyBvbnRvIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBAcGFyYW0ge1RbXSB8IFZhbGlkYXRvckRlZmluaXRpb25bXX0gdmFsaWRhdG9yXG4gICAqL1xuICByZWdpc3RlcjxUIGV4dGVuZHMgVmFsaWRhdG9yPihcbiAgICAuLi52YWxpZGF0b3I6IChWYWxpZGF0b3JEZWZpbml0aW9uIHwgVClbXVxuICApOiB2b2lkIHtcbiAgICB2YWxpZGF0b3IuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKFZhbGlkYXRvci5pc1ZhbGlkYXRvcih2KSkge1xuICAgICAgICAvLyBjb25zdCBrID1cblxuICAgICAgICBpZiAoKHYgYXMgVmFsaWRhdG9yRGVmaW5pdGlvbikudmFsaWRhdGlvbktleSBpbiB0aGlzLmNhY2hlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2FjaGVbKHYgYXMgVmFsaWRhdG9yRGVmaW5pdGlvbikudmFsaWRhdGlvbktleV0gPSB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyB2YWxpZGF0aW9uS2V5LCB2YWxpZGF0b3IsIHNhdmUgfSA9IHYgYXMgVmFsaWRhdG9yRGVmaW5pdGlvbjtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25LZXkgaW4gdGhpcy5jYWNoZSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmNhY2hlW3ZhbGlkYXRpb25LZXldID0gdmFsaWRhdG9yO1xuICAgICAgICBpZiAoIXNhdmUpIHJldHVybjtcbiAgICAgICAgY29uc3Qgb2JqOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgICAgIG9ialt2YWxpZGF0aW9uS2V5LnRvVXBwZXJDYXNlKCldID0gdmFsaWRhdGlvbktleTtcblxuICAgICAgICB0aGlzLmN1c3RvbUtleUNhY2hlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXN0b21LZXlDYWNoZSwgb2JqKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,12 +1,6 @@
1
1
  import { ValidatorDefinition } from "../types";
2
2
  import { IValidatorRegistry } from "../types";
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;
3
+ import { Validator } from "./Validator";
10
4
  /**
11
5
  * @summary Base Implementation of a Validator Registry
12
6
  *