@decaf-ts/decorator-validation 1.5.2 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +34 -108
  2. package/dist/decorator-validation.js +2 -0
  3. package/dist/decorator-validation.js.LICENSE.txt +14 -0
  4. package/dist/esm/decorator-validation.js +2 -0
  5. package/dist/esm/decorator-validation.js.LICENSE.txt +14 -0
  6. package/lib/esm/index.d.ts +42 -0
  7. package/lib/esm/index.js +44 -0
  8. package/lib/esm/model/Model.d.ts +138 -0
  9. package/lib/esm/model/Model.js +298 -0
  10. package/lib/esm/model/ModelErrorDefinition.d.ts +22 -0
  11. package/lib/esm/model/ModelErrorDefinition.js +54 -0
  12. package/lib/esm/model/Registry.d.ts +59 -0
  13. package/lib/esm/model/Registry.js +75 -0
  14. package/lib/esm/model/constants.d.ts +56 -0
  15. package/lib/esm/model/constants.js +71 -0
  16. package/lib/esm/model/construction.d.ts +29 -0
  17. package/lib/esm/model/construction.js +65 -0
  18. package/lib/esm/model/decorators.d.ts +25 -0
  19. package/lib/esm/model/decorators.js +64 -0
  20. package/lib/esm/model/index.d.ts +9 -0
  21. package/lib/esm/model/index.js +11 -0
  22. package/lib/esm/model/types.d.ts +79 -0
  23. package/lib/esm/model/types.js +3 -0
  24. package/lib/esm/model/utils.d.ts +11 -0
  25. package/lib/esm/model/utils.js +27 -0
  26. package/lib/esm/model/validation.d.ts +14 -0
  27. package/lib/esm/model/validation.js +137 -0
  28. package/lib/esm/utils/constants.d.ts +26 -0
  29. package/lib/esm/utils/constants.js +29 -0
  30. package/lib/esm/utils/dates.d.ts +76 -0
  31. package/lib/esm/utils/dates.js +245 -0
  32. package/lib/esm/utils/decorators.d.ts +2 -0
  33. package/lib/esm/utils/decorators.js +20 -0
  34. package/lib/esm/utils/hashing.d.ts +52 -0
  35. package/lib/esm/utils/hashing.js +101 -0
  36. package/lib/esm/utils/index.d.ts +7 -0
  37. package/lib/esm/utils/index.js +9 -0
  38. package/lib/esm/utils/registry.d.ts +68 -0
  39. package/lib/esm/utils/registry.js +3 -0
  40. package/lib/esm/utils/serialization.d.ts +79 -0
  41. package/lib/esm/utils/serialization.js +90 -0
  42. package/lib/esm/utils/strings.d.ts +25 -0
  43. package/lib/esm/utils/strings.js +33 -0
  44. package/lib/esm/validation/Validation.d.ts +51 -0
  45. package/lib/esm/validation/Validation.js +73 -0
  46. package/lib/esm/validation/Validators/DateValidator.d.ts +28 -0
  47. package/lib/esm/validation/Validators/DateValidator.js +56 -0
  48. package/lib/esm/validation/Validators/EmailValidator.d.ts +28 -0
  49. package/lib/esm/validation/Validators/EmailValidator.js +52 -0
  50. package/lib/esm/validation/Validators/ListValidator.d.ts +28 -0
  51. package/lib/esm/validation/Validators/ListValidator.js +69 -0
  52. package/lib/esm/validation/Validators/MaxLengthValidator.d.ts +29 -0
  53. package/lib/esm/validation/Validators/MaxLengthValidator.js +54 -0
  54. package/lib/esm/validation/Validators/MaxValidator.d.ts +28 -0
  55. package/lib/esm/validation/Validators/MaxValidator.js +59 -0
  56. package/lib/esm/validation/Validators/MinLengthValidator.d.ts +29 -0
  57. package/lib/esm/validation/Validators/MinLengthValidator.js +54 -0
  58. package/lib/esm/validation/Validators/MinValidator.d.ts +28 -0
  59. package/lib/esm/validation/Validators/MinValidator.js +59 -0
  60. package/lib/esm/validation/Validators/PasswordValidator.d.ts +28 -0
  61. package/lib/esm/validation/Validators/PasswordValidator.js +52 -0
  62. package/lib/esm/validation/Validators/PatternValidator.d.ts +37 -0
  63. package/lib/esm/validation/Validators/PatternValidator.js +72 -0
  64. package/lib/esm/validation/Validators/RequiredValidator.d.ts +28 -0
  65. package/lib/esm/validation/Validators/RequiredValidator.js +59 -0
  66. package/lib/esm/validation/Validators/StepValidator.d.ts +29 -0
  67. package/lib/esm/validation/Validators/StepValidator.js +54 -0
  68. package/lib/esm/validation/Validators/TypeValidator.d.ts +25 -0
  69. package/lib/esm/validation/Validators/TypeValidator.js +62 -0
  70. package/lib/esm/validation/Validators/URLValidator.d.ts +27 -0
  71. package/lib/esm/validation/Validators/URLValidator.js +51 -0
  72. package/lib/esm/validation/Validators/Validator.d.ts +41 -0
  73. package/lib/esm/validation/Validators/Validator.js +49 -0
  74. package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +47 -0
  75. package/lib/esm/validation/Validators/ValidatorRegistry.js +82 -0
  76. package/lib/esm/validation/Validators/constants.d.ts +96 -0
  77. package/lib/esm/validation/Validators/constants.js +136 -0
  78. package/lib/esm/validation/Validators/decorators.d.ts +12 -0
  79. package/lib/esm/validation/Validators/decorators.js +27 -0
  80. package/lib/esm/validation/Validators/index.d.ts +52 -0
  81. package/lib/esm/validation/Validators/index.js +54 -0
  82. package/lib/esm/validation/Validators/types.d.ts +88 -0
  83. package/lib/esm/validation/Validators/types.js +3 -0
  84. package/lib/esm/validation/decorators.d.ts +178 -0
  85. package/lib/esm/validation/decorators.js +290 -0
  86. package/lib/esm/validation/index.d.ts +4 -0
  87. package/lib/esm/validation/index.js +6 -0
  88. package/lib/esm/validation/types.d.ts +46 -0
  89. package/lib/esm/validation/types.js +3 -0
  90. package/lib/index.cjs +61 -0
  91. package/lib/index.d.ts +42 -0
  92. package/lib/model/Model.cjs +302 -0
  93. package/lib/model/Model.d.ts +138 -0
  94. package/lib/model/ModelErrorDefinition.cjs +58 -0
  95. package/lib/model/ModelErrorDefinition.d.ts +22 -0
  96. package/lib/model/Registry.cjs +80 -0
  97. package/lib/model/Registry.d.ts +59 -0
  98. package/lib/model/constants.cjs +74 -0
  99. package/lib/model/constants.d.ts +56 -0
  100. package/lib/model/construction.cjs +70 -0
  101. package/lib/model/construction.d.ts +29 -0
  102. package/lib/model/decorators.cjs +69 -0
  103. package/lib/model/decorators.d.ts +25 -0
  104. package/lib/model/index.cjs +27 -0
  105. package/lib/model/index.d.ts +9 -0
  106. package/lib/model/types.cjs +4 -0
  107. package/lib/model/types.d.ts +79 -0
  108. package/lib/model/utils.cjs +31 -0
  109. package/lib/model/utils.d.ts +11 -0
  110. package/lib/model/validation.cjs +140 -0
  111. package/lib/model/validation.d.ts +14 -0
  112. package/lib/utils/constants.cjs +32 -0
  113. package/lib/utils/constants.d.ts +26 -0
  114. package/lib/utils/dates.cjs +253 -0
  115. package/lib/utils/dates.d.ts +76 -0
  116. package/lib/utils/decorators.cjs +24 -0
  117. package/lib/utils/decorators.d.ts +2 -0
  118. package/lib/utils/hashing.cjs +108 -0
  119. package/lib/utils/hashing.d.ts +52 -0
  120. package/lib/utils/index.cjs +25 -0
  121. package/lib/utils/index.d.ts +7 -0
  122. package/lib/utils/registry.cjs +4 -0
  123. package/lib/utils/registry.d.ts +68 -0
  124. package/lib/utils/serialization.cjs +95 -0
  125. package/lib/utils/serialization.d.ts +79 -0
  126. package/lib/utils/strings.cjs +37 -0
  127. package/lib/utils/strings.d.ts +25 -0
  128. package/lib/validation/Validation.cjs +77 -0
  129. package/lib/validation/Validation.d.ts +51 -0
  130. package/lib/validation/Validators/DateValidator.cjs +59 -0
  131. package/lib/validation/Validators/DateValidator.d.ts +28 -0
  132. package/lib/validation/Validators/EmailValidator.cjs +55 -0
  133. package/lib/validation/Validators/EmailValidator.d.ts +28 -0
  134. package/lib/validation/Validators/ListValidator.cjs +72 -0
  135. package/lib/validation/Validators/ListValidator.d.ts +28 -0
  136. package/lib/validation/Validators/MaxLengthValidator.cjs +57 -0
  137. package/lib/validation/Validators/MaxLengthValidator.d.ts +29 -0
  138. package/lib/validation/Validators/MaxValidator.cjs +62 -0
  139. package/lib/validation/Validators/MaxValidator.d.ts +28 -0
  140. package/lib/validation/Validators/MinLengthValidator.cjs +57 -0
  141. package/lib/validation/Validators/MinLengthValidator.d.ts +29 -0
  142. package/lib/validation/Validators/MinValidator.cjs +62 -0
  143. package/lib/validation/Validators/MinValidator.d.ts +28 -0
  144. package/lib/validation/Validators/PasswordValidator.cjs +55 -0
  145. package/lib/validation/Validators/PasswordValidator.d.ts +28 -0
  146. package/lib/validation/Validators/PatternValidator.cjs +75 -0
  147. package/lib/validation/Validators/PatternValidator.d.ts +37 -0
  148. package/lib/validation/Validators/RequiredValidator.cjs +62 -0
  149. package/lib/validation/Validators/RequiredValidator.d.ts +28 -0
  150. package/lib/validation/Validators/StepValidator.cjs +57 -0
  151. package/lib/validation/Validators/StepValidator.d.ts +29 -0
  152. package/lib/validation/Validators/TypeValidator.cjs +65 -0
  153. package/lib/validation/Validators/TypeValidator.d.ts +25 -0
  154. package/lib/validation/Validators/URLValidator.cjs +54 -0
  155. package/lib/validation/Validators/URLValidator.d.ts +27 -0
  156. package/lib/validation/Validators/Validator.cjs +53 -0
  157. package/lib/validation/Validators/Validator.d.ts +41 -0
  158. package/lib/validation/Validators/ValidatorRegistry.cjs +87 -0
  159. package/lib/validation/Validators/ValidatorRegistry.d.ts +47 -0
  160. package/lib/validation/Validators/constants.cjs +139 -0
  161. package/lib/validation/Validators/constants.d.ts +96 -0
  162. package/lib/validation/Validators/decorators.cjs +30 -0
  163. package/lib/validation/Validators/decorators.d.ts +12 -0
  164. package/lib/validation/Validators/index.cjs +71 -0
  165. package/lib/validation/Validators/index.d.ts +52 -0
  166. package/lib/validation/Validators/types.cjs +4 -0
  167. package/lib/validation/Validators/types.d.ts +88 -0
  168. package/lib/validation/decorators.cjs +306 -0
  169. package/lib/validation/decorators.d.ts +178 -0
  170. package/lib/validation/index.cjs +22 -0
  171. package/lib/validation/index.d.ts +4 -0
  172. package/lib/validation/types.cjs +4 -0
  173. package/lib/validation/types.d.ts +46 -0
  174. package/package.json +18 -13
@@ -0,0 +1,37 @@
1
+ import { Validator } from "./Validator";
2
+ import { PatternValidatorOptions } from "./types";
3
+ export declare const regexpParser: RegExp;
4
+ /**
5
+ * @summary Pattern Validator
6
+ *
7
+ * @param {string} [key] defaults to {@link ValidationKeys#PATTERN}
8
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
9
+ *
10
+ * @class PatternValidator
11
+ * @extends Validator
12
+ *
13
+ * @category Validators
14
+ */
15
+ export declare class PatternValidator extends Validator<PatternValidatorOptions> {
16
+ constructor(message?: string);
17
+ /**
18
+ * @summary parses and validates a pattern
19
+ *
20
+ * @param {string} pattern
21
+ * @private
22
+ */
23
+ private getPattern;
24
+ /**
25
+ * @summary Validates a Model
26
+ *
27
+ * @param {string} value
28
+ * @param {PatternValidatorOptions} options
29
+ *
30
+ * @return {string | undefined}
31
+ *
32
+ * @override
33
+ *
34
+ * @see Validator#hasErrors
35
+ */
36
+ hasErrors(value: string, options: PatternValidatorOptions): string | undefined;
37
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RequiredValidator = void 0;
13
+ const Validator_1 = require("./Validator/index.cjs");
14
+ const constants_1 = require("./constants/index.cjs");
15
+ const decorators_1 = require("./decorators/index.cjs");
16
+ /**
17
+ * @summary Required Validator
18
+ *
19
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
20
+ *
21
+ * @class RequiredValidator
22
+ * @extends Validator
23
+ *
24
+ * @category Validators
25
+ */
26
+ let RequiredValidator = class RequiredValidator extends Validator_1.Validator {
27
+ constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.REQUIRED) {
28
+ super(message);
29
+ }
30
+ /**
31
+ * @summary Validates a model
32
+ *
33
+ * @param {string} value
34
+ * @param {ValidatorOptions} [options={}]
35
+ *
36
+ * @return {string | undefined}
37
+ *
38
+ * @override
39
+ *
40
+ * @see Validator#hasErrors
41
+ */
42
+ hasErrors(value, options = {}) {
43
+ switch (typeof value) {
44
+ case "boolean":
45
+ case "number":
46
+ return typeof value === "undefined"
47
+ ? this.getMessage(options.message || this.message)
48
+ : undefined;
49
+ default:
50
+ return !value
51
+ ? this.getMessage(options.message || this.message)
52
+ : undefined;
53
+ }
54
+ }
55
+ };
56
+ exports.RequiredValidator = RequiredValidator;
57
+ exports.RequiredValidator = RequiredValidator = __decorate([
58
+ (0, decorators_1.validator)(constants_1.ValidationKeys.REQUIRED),
59
+ __metadata("design:paramtypes", [String])
60
+ ], RequiredValidator);
61
+
62
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvUmVxdWlyZWRWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXdDO0FBQ3hDLDJDQUFxRTtBQUNyRSw2Q0FBeUM7QUFHekM7Ozs7Ozs7OztHQVNHO0FBRUksSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBa0IsU0FBUSxxQkFBUztJQUM5QyxZQUFZLFVBQWtCLGtDQUFzQixDQUFDLFFBQVE7UUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLFNBQVMsQ0FDZCxLQUFVLEVBQ1YsVUFBNEIsRUFBRTtRQUU5QixRQUFRLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDckIsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxPQUFPLEtBQUssS0FBSyxXQUFXO29CQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ2xELENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEI7Z0JBQ0UsT0FBTyxDQUFDLEtBQUs7b0JBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUNsRCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQWpDWSw4Q0FBaUI7NEJBQWpCLGlCQUFpQjtJQUQ3QixJQUFBLHNCQUFTLEVBQUMsMEJBQWMsQ0FBQyxRQUFRLENBQUM7O0dBQ3RCLGlCQUFpQixDQWlDN0IiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL1JlcXVpcmVkVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgUmVxdWlyZWQgVmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNSRVFVSVJFRH1cbiAqXG4gKiBAY2xhc3MgUmVxdWlyZWRWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVmFsaWRhdGlvbktleXMuUkVRVUlSRUQpXG5leHBvcnQgY2xhc3MgUmVxdWlyZWRWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlJFUVVJUkVEKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGEgbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7VmFsaWRhdG9yT3B0aW9uc30gW29wdGlvbnM9e31dXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFZhbGlkYXRvck9wdGlvbnMgPSB7fVxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgPyB0aGlzLmdldE1lc3NhZ2Uob3B0aW9ucy5tZXNzYWdlIHx8IHRoaXMubWVzc2FnZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAhdmFsdWVcbiAgICAgICAgICA/IHRoaXMuZ2V0TWVzc2FnZShvcHRpb25zLm1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { Validator } from "./Validator";
2
+ import { ValidatorOptions } from "./types";
3
+ /**
4
+ * @summary Required Validator
5
+ *
6
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
7
+ *
8
+ * @class RequiredValidator
9
+ * @extends Validator
10
+ *
11
+ * @category Validators
12
+ */
13
+ export declare class RequiredValidator extends Validator {
14
+ constructor(message?: string);
15
+ /**
16
+ * @summary Validates a model
17
+ *
18
+ * @param {string} value
19
+ * @param {ValidatorOptions} [options={}]
20
+ *
21
+ * @return {string | undefined}
22
+ *
23
+ * @override
24
+ *
25
+ * @see Validator#hasErrors
26
+ */
27
+ hasErrors(value: any, options?: ValidatorOptions): string | undefined;
28
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StepValidator = void 0;
13
+ const Validator_1 = require("./Validator/index.cjs");
14
+ const constants_1 = require("./constants/index.cjs");
15
+ const decorators_1 = require("./decorators/index.cjs");
16
+ /**
17
+ * @summary Step Validator
18
+ *
19
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
20
+ *
21
+ * @class StepValidator
22
+ * @extends Validator
23
+ *
24
+ * @category Validators
25
+ */
26
+ let StepValidator = class StepValidator extends Validator_1.Validator {
27
+ constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.STEP) {
28
+ super(message, "number", "string");
29
+ }
30
+ /**
31
+ * @summary Validates a model
32
+ *
33
+ * @param {string} value
34
+ * @param {number} step
35
+ * @param {StepValidatorOptions} options
36
+ *
37
+ * @return {string | undefined}
38
+ *
39
+ * @override
40
+ *
41
+ * @see Validator#hasErrors
42
+ */
43
+ hasErrors(value, options) {
44
+ if (typeof value === "undefined")
45
+ return;
46
+ return Number(value) % Number(options.step) !== 0
47
+ ? this.getMessage(options.message || this.message, options.step)
48
+ : undefined;
49
+ }
50
+ };
51
+ exports.StepValidator = StepValidator;
52
+ exports.StepValidator = StepValidator = __decorate([
53
+ (0, decorators_1.validator)(constants_1.ValidationKeys.STEP),
54
+ __metadata("design:paramtypes", [String])
55
+ ], StepValidator);
56
+
57
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvU3RlcFZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0M7QUFDeEMsMkNBQXFFO0FBQ3JFLDZDQUF5QztBQUd6Qzs7Ozs7Ozs7O0dBU0c7QUFFSSxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEscUJBQStCO0lBQ2hFLFlBQVksVUFBa0Isa0NBQXNCLENBQUMsSUFBSTtRQUN2RCxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksU0FBUyxDQUNkLEtBQXNCLEVBQ3RCLE9BQTZCO1FBRTdCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVztZQUFFLE9BQU87UUFDekMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7QUEzQlksc0NBQWE7d0JBQWIsYUFBYTtJQUR6QixJQUFBLHNCQUFTLEVBQUMsMEJBQWMsQ0FBQyxJQUFJLENBQUM7O0dBQ2xCLGFBQWEsQ0EyQnpCIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9TdGVwVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU3RlcFZhbGlkYXRvck9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFN0ZXAgVmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNTVEVQfVxuICpcbiAqIEBjbGFzcyBTdGVwVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBWYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLlNURVApXG5leHBvcnQgY2xhc3MgU3RlcFZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvcjxTdGVwVmFsaWRhdG9yT3B0aW9ucz4ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlNURVApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBcIm51bWJlclwiLCBcInN0cmluZ1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSBtb2RlbFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXBcbiAgICogQHBhcmFtIHtTdGVwVmFsaWRhdG9yT3B0aW9uc30gb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvciNoYXNFcnJvcnNcbiAgICovXG4gIHB1YmxpYyBoYXNFcnJvcnMoXG4gICAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdGVwVmFsaWRhdG9yT3B0aW9uc1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcbiAgICByZXR1cm4gTnVtYmVyKHZhbHVlKSAlIE51bWJlcihvcHRpb25zLnN0ZXApICE9PSAwXG4gICAgICA/IHRoaXMuZ2V0TWVzc2FnZShvcHRpb25zLm1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBvcHRpb25zLnN0ZXApXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -0,0 +1,29 @@
1
+ import { Validator } from "./Validator";
2
+ import { StepValidatorOptions } from "./types";
3
+ /**
4
+ * @summary Step Validator
5
+ *
6
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
7
+ *
8
+ * @class StepValidator
9
+ * @extends Validator
10
+ *
11
+ * @category Validators
12
+ */
13
+ export declare class StepValidator extends Validator<StepValidatorOptions> {
14
+ constructor(message?: string);
15
+ /**
16
+ * @summary Validates a model
17
+ *
18
+ * @param {string} value
19
+ * @param {number} step
20
+ * @param {StepValidatorOptions} options
21
+ *
22
+ * @return {string | undefined}
23
+ *
24
+ * @override
25
+ *
26
+ * @see Validator#hasErrors
27
+ */
28
+ hasErrors(value: number | string, options: StepValidatorOptions): string | undefined;
29
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TypeValidator = void 0;
13
+ const Validator_1 = require("./Validator/index.cjs");
14
+ const constants_1 = require("./constants/index.cjs");
15
+ const decorators_1 = require("./decorators/index.cjs");
16
+ const Validation_1 = require("../Validation/index.cjs");
17
+ const constants_2 = require("../../utils/constants/index.cjs");
18
+ const reflection_1 = require("@decaf-ts/reflection");
19
+ /**
20
+ * @summary Required Validator
21
+ *
22
+ * @class RequiredValidator
23
+ * @extends Validator
24
+ *
25
+ * @category Validators
26
+ */
27
+ let TypeValidator = class TypeValidator extends Validator_1.Validator {
28
+ constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.TYPE) {
29
+ super(message);
30
+ }
31
+ /**
32
+ * @summary Validates a model
33
+ * @param {string} value
34
+ * @param {TypeValidatorOptions} options
35
+ *
36
+ * @return {string | undefined}
37
+ *
38
+ * @override
39
+ *
40
+ * @see Validator#hasErrors
41
+ */
42
+ hasErrors(value, options) {
43
+ if (value === undefined)
44
+ return; // Don't try and enforce type if undefined
45
+ const { types, message } = options;
46
+ if (!reflection_1.Reflection.evaluateDesignTypes(value, types))
47
+ return this.getMessage(message || this.message, typeof types === "string"
48
+ ? types
49
+ : Array.isArray(types)
50
+ ? types.join(", ")
51
+ : types.name, typeof value);
52
+ }
53
+ };
54
+ exports.TypeValidator = TypeValidator;
55
+ exports.TypeValidator = TypeValidator = __decorate([
56
+ (0, decorators_1.validator)(constants_1.ValidationKeys.TYPE),
57
+ __metadata("design:paramtypes", [String])
58
+ ], TypeValidator);
59
+ Validation_1.Validation.register({
60
+ validator: TypeValidator,
61
+ validationKey: constants_2.ModelKeys.TYPE,
62
+ save: false,
63
+ });
64
+
65
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVHlwZVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0M7QUFDeEMsMkNBQXFFO0FBQ3JFLDZDQUF5QztBQUN6Qyw4Q0FBMkM7QUFFM0MscURBQWtEO0FBQ2xELHFEQUFrRDtBQUVsRDs7Ozs7OztHQU9HO0FBRUksSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYyxTQUFRLHFCQUErQjtJQUNoRSxZQUFZLFVBQWtCLGtDQUFzQixDQUFDLElBQUk7UUFDdkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksU0FBUyxDQUNkLEtBQVUsRUFDVixPQUE2QjtRQUU3QixJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxDQUFDLDBDQUEwQztRQUMzRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsdUJBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDcEIsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQ3ZCLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQ3ZCLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNsQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFDaEIsT0FBTyxLQUFLLENBQ2IsQ0FBQztJQUNOLENBQUM7Q0FDRixDQUFBO0FBakNZLHNDQUFhO3dCQUFiLGFBQWE7SUFEekIsSUFBQSxzQkFBUyxFQUFDLDBCQUFjLENBQUMsSUFBSSxDQUFDOztHQUNsQixhQUFhLENBaUN6QjtBQUVELHVCQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLGFBQWEsRUFBRSxxQkFBUyxDQUFDLElBQUk7SUFDN0IsSUFBSSxFQUFFLEtBQUs7Q0FDVyxDQUFDLENBQUMiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL1R5cGVWYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcbmltcG9ydCB7IERFRkFVTFRfRVJST1JfTUVTU0FHRVMsIFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL1ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFR5cGVWYWxpZGF0b3JPcHRpb25zLCBWYWxpZGF0b3JEZWZpbml0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IFJlZmxlY3Rpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBSZXF1aXJlZCBWYWxpZGF0b3JcbiAqXG4gKiBAY2xhc3MgUmVxdWlyZWRWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVmFsaWRhdGlvbktleXMuVFlQRSlcbmV4cG9ydCBjbGFzcyBUeXBlVmFsaWRhdG9yIGV4dGVuZHMgVmFsaWRhdG9yPFR5cGVWYWxpZGF0b3JPcHRpb25zPiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhIG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1R5cGVWYWxpZGF0b3JPcHRpb25zfSBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFR5cGVWYWxpZGF0b3JPcHRpb25zXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjsgLy8gRG9uJ3QgdHJ5IGFuZCBlbmZvcmNlIHR5cGUgaWYgdW5kZWZpbmVkXG4gICAgY29uc3QgeyB0eXBlcywgbWVzc2FnZSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIVJlZmxlY3Rpb24uZXZhbHVhdGVEZXNpZ25UeXBlcyh2YWx1ZSwgdHlwZXMpKVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVzc2FnZShcbiAgICAgICAgbWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UsXG4gICAgICAgIHR5cGVvZiB0eXBlcyA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gdHlwZXNcbiAgICAgICAgICA6IEFycmF5LmlzQXJyYXkodHlwZXMpXG4gICAgICAgICAgICA/IHR5cGVzLmpvaW4oXCIsIFwiKVxuICAgICAgICAgICAgOiB0eXBlcy5uYW1lLFxuICAgICAgICB0eXBlb2YgdmFsdWVcbiAgICAgICk7XG4gIH1cbn1cblxuVmFsaWRhdGlvbi5yZWdpc3Rlcih7XG4gIHZhbGlkYXRvcjogVHlwZVZhbGlkYXRvcixcbiAgdmFsaWRhdGlvbktleTogTW9kZWxLZXlzLlRZUEUsXG4gIHNhdmU6IGZhbHNlLFxufSBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKTtcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Validator } from "./Validator";
2
+ import { TypeValidatorOptions } from "./types";
3
+ /**
4
+ * @summary Required Validator
5
+ *
6
+ * @class RequiredValidator
7
+ * @extends Validator
8
+ *
9
+ * @category Validators
10
+ */
11
+ export declare class TypeValidator extends Validator<TypeValidatorOptions> {
12
+ constructor(message?: string);
13
+ /**
14
+ * @summary Validates a model
15
+ * @param {string} value
16
+ * @param {TypeValidatorOptions} options
17
+ *
18
+ * @return {string | undefined}
19
+ *
20
+ * @override
21
+ *
22
+ * @see Validator#hasErrors
23
+ */
24
+ hasErrors(value: any, options: TypeValidatorOptions): string | undefined;
25
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.URLValidator = void 0;
13
+ const constants_1 = require("./constants/index.cjs");
14
+ const PatternValidator_1 = require("./PatternValidator/index.cjs");
15
+ const decorators_1 = require("./decorators/index.cjs");
16
+ /**
17
+ * @summary URL Validator
18
+ * @description Pattern from {@link https://gist.github.com/dperini/729294}
19
+ *
20
+ * @class URLValidator
21
+ * @extends PatternValidator
22
+ *
23
+ * @category Validators
24
+ */
25
+ let URLValidator = class URLValidator extends PatternValidator_1.PatternValidator {
26
+ constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.URL) {
27
+ super(message);
28
+ }
29
+ /**
30
+ * @summary Validates a model
31
+ *
32
+ * @param {string} value
33
+ * @param {PatternValidatorOptions} [options={}]
34
+ *
35
+ * @return {string | undefined}
36
+ *
37
+ * @override
38
+ *
39
+ * @see Validator#hasErrors
40
+ */
41
+ hasErrors(value, options = {}) {
42
+ return super.hasErrors(value, {
43
+ ...options,
44
+ pattern: options.pattern || constants_1.DEFAULT_PATTERNS.URL,
45
+ });
46
+ }
47
+ };
48
+ exports.URLValidator = URLValidator;
49
+ exports.URLValidator = URLValidator = __decorate([
50
+ (0, decorators_1.validator)(constants_1.ValidationKeys.URL),
51
+ __metadata("design:paramtypes", [String])
52
+ ], URLValidator);
53
+
54
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVVJMVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUlxQjtBQUNyQix5REFBc0Q7QUFDdEQsNkNBQXlDO0FBR3pDOzs7Ozs7OztHQVFHO0FBRUksSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLG1DQUFnQjtJQUNoRCxZQUFZLFVBQWtCLGtDQUFzQixDQUFDLEdBQUc7UUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLFNBQVMsQ0FDZCxLQUFhLEVBQ2IsVUFBbUMsRUFBRTtRQUVyQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQzVCLEdBQUcsT0FBTztZQUNWLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLDRCQUFnQixDQUFDLEdBQUc7U0FDakQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUE7QUExQlksb0NBQVk7dUJBQVosWUFBWTtJQUR4QixJQUFBLHNCQUFTLEVBQUMsMEJBQWMsQ0FBQyxHQUFHLENBQUM7O0dBQ2pCLFlBQVksQ0EwQnhCIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9VUkxWYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBWYWxpZGF0aW9uS2V5cyxcbiAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyxcbiAgREVGQVVMVF9QQVRURVJOUyxcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBQYXR0ZXJuVmFsaWRhdG9yIH0gZnJvbSBcIi4vUGF0dGVyblZhbGlkYXRvclwiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFVSTCBWYWxpZGF0b3JcbiAqIEBkZXNjcmlwdGlvbiBQYXR0ZXJuIGZyb20ge0BsaW5rIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2RwZXJpbmkvNzI5Mjk0fVxuICpcbiAqIEBjbGFzcyBVUkxWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFBhdHRlcm5WYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLlVSTClcbmV4cG9ydCBjbGFzcyBVUkxWYWxpZGF0b3IgZXh0ZW5kcyBQYXR0ZXJuVmFsaWRhdG9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5VUkwpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSBtb2RlbFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtQYXR0ZXJuVmFsaWRhdG9yT3B0aW9uc30gW29wdGlvbnM9e31dXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zID0ge31cbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gc3VwZXIuaGFzRXJyb3JzKHZhbHVlLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGF0dGVybjogb3B0aW9ucy5wYXR0ZXJuIHx8IERFRkFVTFRfUEFUVEVSTlMuVVJMLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { PatternValidator } from "./PatternValidator";
2
+ import { PatternValidatorOptions } from "./types";
3
+ /**
4
+ * @summary URL Validator
5
+ * @description Pattern from {@link https://gist.github.com/dperini/729294}
6
+ *
7
+ * @class URLValidator
8
+ * @extends PatternValidator
9
+ *
10
+ * @category Validators
11
+ */
12
+ export declare class URLValidator extends PatternValidator {
13
+ constructor(message?: string);
14
+ /**
15
+ * @summary Validates a model
16
+ *
17
+ * @param {string} value
18
+ * @param {PatternValidatorOptions} [options={}]
19
+ *
20
+ * @return {string | undefined}
21
+ *
22
+ * @override
23
+ *
24
+ * @see Validator#hasErrors
25
+ */
26
+ hasErrors(value: string, options?: PatternValidatorOptions): string | undefined;
27
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Validator = void 0;
4
+ const constants_1 = require("./constants/index.cjs");
5
+ const strings_1 = require("../../utils/strings/index.cjs");
6
+ const reflection_1 = require("@decaf-ts/reflection");
7
+ /**
8
+ * @summary Base Implementation for Validators
9
+ * @description Provides the underlying functionality for {@link Validator}s
10
+ *
11
+ * @param {string} validationKey the key to register the validator under
12
+ * @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DEFAULT}
13
+ * @param {string[]} [acceptedTypes] defines the value types this validator can validate
14
+ *
15
+ * @class Validator
16
+ * @abstract
17
+ * @category Validators
18
+ */
19
+ class Validator {
20
+ constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.DEFAULT, ...acceptedTypes) {
21
+ this.message = message;
22
+ if (acceptedTypes.length)
23
+ this.acceptedTypes = acceptedTypes;
24
+ if (this.acceptedTypes)
25
+ this.hasErrors = this.checkTypeAndHasErrors(this.hasErrors.bind(this));
26
+ }
27
+ /**
28
+ * @summary builds the error message
29
+ * @param {string} message
30
+ * @param {any[]} args
31
+ * @protected
32
+ */
33
+ getMessage(message, ...args) {
34
+ return (0, strings_1.sf)(message, ...args);
35
+ }
36
+ /**
37
+ * @summary Validates type
38
+ * @param {any} unbound
39
+ * @private
40
+ */
41
+ checkTypeAndHasErrors(unbound) {
42
+ return function (value, ...args) {
43
+ if (value === undefined || !this.acceptedTypes)
44
+ return unbound(value, ...args);
45
+ if (!reflection_1.Reflection.checkTypes(value, this.acceptedTypes))
46
+ return this.getMessage(constants_1.DEFAULT_ERROR_MESSAGES.TYPE, this.acceptedTypes.join(", "), typeof value);
47
+ return unbound(value, ...args);
48
+ }.bind(this);
49
+ }
50
+ }
51
+ exports.Validator = Validator;
52
+
53
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFxRDtBQUNyRCxpREFBeUM7QUFDekMscURBQWtEO0FBR2xEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBc0IsU0FBUztJQUk3QixZQUNFLFVBQWtCLGtDQUFzQixDQUFDLE9BQU8sRUFDaEQsR0FBRyxhQUF1QjtRQUUxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLGFBQWEsQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDN0QsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFVBQVUsQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ2xELE9BQU8sSUFBQSxZQUFFLEVBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FDM0IsT0FBMkQ7UUFFM0QsT0FBTyxVQUVMLEtBQVUsRUFDVixHQUFHLElBQVc7WUFFZCxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFDNUMsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLHVCQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUNuRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQ3BCLGtDQUFzQixDQUFDLElBQUksRUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzdCLE9BQU8sS0FBSyxDQUNiLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQztDQVlGO0FBNURELDhCQTREQyIsImZpbGUiOiJ2YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgc2YgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nc1wiO1xuaW1wb3J0IHsgUmVmbGVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQmFzZSBJbXBsZW1lbnRhdGlvbiBmb3IgVmFsaWRhdG9yc1xuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uYWxpdHkgZm9yIHtAbGluayBWYWxpZGF0b3J9c1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxpZGF0aW9uS2V5IHRoZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIHZhbGlkYXRvciB1bmRlclxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjREVGQVVMVH1cbiAqIEBwYXJhbSB7c3RyaW5nW119IFthY2NlcHRlZFR5cGVzXSBkZWZpbmVzIHRoZSB2YWx1ZSB0eXBlcyB0aGlzIHZhbGlkYXRvciBjYW4gdmFsaWRhdGVcbiAqXG4gKiBAY2xhc3MgVmFsaWRhdG9yXG4gKiBAYWJzdHJhY3RcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWYWxpZGF0b3I8ViBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMgPSBWYWxpZGF0b3JPcHRpb25zPiB7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgYWNjZXB0ZWRUeXBlcz86IHN0cmluZ1tdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkRFRkFVTFQsXG4gICAgLi4uYWNjZXB0ZWRUeXBlczogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmIChhY2NlcHRlZFR5cGVzLmxlbmd0aCkgdGhpcy5hY2NlcHRlZFR5cGVzID0gYWNjZXB0ZWRUeXBlcztcbiAgICBpZiAodGhpcy5hY2NlcHRlZFR5cGVzKVxuICAgICAgdGhpcy5oYXNFcnJvcnMgPSB0aGlzLmNoZWNrVHlwZUFuZEhhc0Vycm9ycyh0aGlzLmhhc0Vycm9ycy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBidWlsZHMgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICogQHBhcmFtIHthbnlbXX0gYXJnc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIHNmKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyB0eXBlXG4gICAqIEBwYXJhbSB7YW55fSB1bmJvdW5kXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVHlwZUFuZEhhc0Vycm9ycyhcbiAgICB1bmJvdW5kOiAodmFsdWU6IGFueSwgLi4uYXJnczogYW55W10pID0+IHN0cmluZyB8IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKFxuICAgICAgdGhpczogVmFsaWRhdG9yLFxuICAgICAgdmFsdWU6IGFueSxcbiAgICAgIC4uLmFyZ3M6IGFueVtdXG4gICAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICF0aGlzLmFjY2VwdGVkVHlwZXMpXG4gICAgICAgIHJldHVybiB1bmJvdW5kKHZhbHVlLCAuLi5hcmdzKTtcbiAgICAgIGlmICghUmVmbGVjdGlvbi5jaGVja1R5cGVzKHZhbHVlLCB0aGlzLmFjY2VwdGVkVHlwZXMpKVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICAgIERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSxcbiAgICAgICAgICB0aGlzLmFjY2VwdGVkVHlwZXMuam9pbihcIiwgXCIpLFxuICAgICAgICAgIHR5cGVvZiB2YWx1ZVxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHVuYm91bmQodmFsdWUsIC4uLmFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYW4gYXR0cmlidXRlXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICAgKiBAcGFyYW0ge1ZhbGlkYXRvck9wdGlvbnN9IFtvcHRpb25zXSBWYWxpZGF0ZSBvcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgbW9kZWwgdmFsaWRhdGlvbiBiZWhhdmlvclxuICAgKlxuICAgKiBAYWJzdHJhY3RcbiAgICpcbiAgICogQHNlZSBNb2RlbCNoYXNFcnJvcnNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBoYXNFcnJvcnModmFsdWU6IGFueSwgb3B0aW9ucz86IFYpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { ValidatorOptions } from "./types";
2
+ /**
3
+ * @summary Base Implementation for Validators
4
+ * @description Provides the underlying functionality for {@link Validator}s
5
+ *
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
+ *
10
+ * @class Validator
11
+ * @abstract
12
+ * @category Validators
13
+ */
14
+ export declare abstract class Validator<V extends ValidatorOptions = ValidatorOptions> {
15
+ readonly message: string;
16
+ readonly acceptedTypes?: string[];
17
+ protected constructor(message?: string, ...acceptedTypes: string[]);
18
+ /**
19
+ * @summary builds the error message
20
+ * @param {string} message
21
+ * @param {any[]} args
22
+ * @protected
23
+ */
24
+ protected getMessage(message: string, ...args: any[]): string;
25
+ /**
26
+ * @summary Validates type
27
+ * @param {any} unbound
28
+ * @private
29
+ */
30
+ private checkTypeAndHasErrors;
31
+ /**
32
+ * @summary Validates an attribute
33
+ * @param {any} value
34
+ * @param {ValidatorOptions} [options] Validate options for customizing the model validation behavior
35
+ *
36
+ * @abstract
37
+ *
38
+ * @see Model#hasErrors
39
+ */
40
+ abstract hasErrors(value: any, options?: V): string | undefined;
41
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
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
+ }
13
+ /**
14
+ * @summary Base Implementation of a Validator Registry
15
+ *
16
+ * @prop {Validator[]} [validators] the initial validators to register
17
+ *
18
+ * @class ValidatorRegistry
19
+ * @implements IValidatorRegistry<T>
20
+ *
21
+ * @category Validation
22
+ */
23
+ class ValidatorRegistry {
24
+ constructor(...validators) {
25
+ this.cache = {};
26
+ this.customKeyCache = {};
27
+ this.register(...validators);
28
+ }
29
+ /**
30
+ * @summary retrieves the custom keys
31
+ */
32
+ getCustomKeys() {
33
+ return Object.assign({}, this.customKeyCache);
34
+ }
35
+ /**
36
+ * @summary retrieves the registered validators keys
37
+ */
38
+ getKeys() {
39
+ return Object.keys(this.cache);
40
+ }
41
+ /**
42
+ * @summary Retrieves a validator
43
+ *
44
+ * @param {string} validatorKey one of the {@link ValidationKeys}
45
+ * @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
46
+ */
47
+ get(validatorKey) {
48
+ if (!(validatorKey in this.cache))
49
+ return undefined;
50
+ const classOrInstance = this.cache[validatorKey];
51
+ if (isValidator(classOrInstance))
52
+ return classOrInstance;
53
+ const constructor = classOrInstance.default || classOrInstance;
54
+ const instance = new constructor();
55
+ this.cache[validatorKey] = instance;
56
+ return instance;
57
+ }
58
+ /**
59
+ * @summary Registers the provided validators onto the registry
60
+ *
61
+ * @param {T[] | ValidatorDefinition[]} validator
62
+ */
63
+ register(...validator) {
64
+ validator.forEach((v) => {
65
+ if (isValidator(v)) {
66
+ // const k =
67
+ if (v.validationKey in this.cache)
68
+ return;
69
+ this.cache[v.validationKey] = v;
70
+ }
71
+ else {
72
+ const { validationKey, validator, save } = v;
73
+ if (validationKey in this.cache)
74
+ return;
75
+ this.cache[validationKey] = validator;
76
+ if (!save)
77
+ return;
78
+ const obj = {};
79
+ obj[validationKey.toUpperCase()] = validationKey;
80
+ this.customKeyCache = Object.assign({}, this.customKeyCache, obj);
81
+ }
82
+ });
83
+ }
84
+ }
85
+ exports.ValidatorRegistry = ValidatorRegistry;
86
+
87
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yUmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0Esa0NBRUM7QUFQRDs7OztHQUlHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLEdBQVE7SUFDbEMsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSxpQkFBaUI7SUFNNUIsWUFBWSxHQUFHLFVBQStDO1FBSHRELFVBQUssR0FBUSxFQUFFLENBQUM7UUFJdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQXNCLFlBQW9CO1FBQzNDLElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFcEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUM7WUFBRSxPQUFPLGVBQW9CLENBQUM7UUFDOUQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNwQyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FDTixHQUFHLFNBQXNDO1FBRXpDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QixJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuQixZQUFZO2dCQUVaLElBQUssQ0FBeUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTztnQkFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUF5QixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBd0IsQ0FBQztnQkFDcEUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTztnQkFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJO29CQUFFLE9BQU87Z0JBQ2xCLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7Z0JBQ3ZDLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBRWpELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFwRUQsOENBb0VDIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9WYWxpZGF0b3JSZWdpc3RyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgSVZhbGlkYXRvclJlZ2lzdHJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgRHVjayB0eXBpbmcgZm9yIFZhbGlkYXRvcnNcbiAqIEBmdW5jdGlvbiBpc1ZhbGlkYXRvclxuICogQHBhcmFtIHZhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZGF0b3IodmFsOiBhbnkpIHtcbiAgcmV0dXJuIHZhbC5jb25zdHJ1Y3RvciAmJiB2YWxbXCJoYXNFcnJvcnNcIl07XG59XG5cbi8qKlxuICogQHN1bW1hcnkgQmFzZSBJbXBsZW1lbnRhdGlvbiBvZiBhIFZhbGlkYXRvciBSZWdpc3RyeVxuICpcbiAqIEBwcm9wIHtWYWxpZGF0b3JbXX0gW3ZhbGlkYXRvcnNdIHRoZSBpbml0aWFsIHZhbGlkYXRvcnMgdG8gcmVnaXN0ZXJcbiAqXG4gKiBAY2xhc3MgVmFsaWRhdG9yUmVnaXN0cnlcbiAqIEBpbXBsZW1lbnRzIElWYWxpZGF0b3JSZWdpc3RyeTxUPlxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JSZWdpc3RyeTxUIGV4dGVuZHMgVmFsaWRhdG9yPlxuICBpbXBsZW1lbnRzIElWYWxpZGF0b3JSZWdpc3RyeTxUPlxue1xuICBwcml2YXRlIGNhY2hlOiBhbnkgPSB7fTtcbiAgcHJpdmF0ZSBjdXN0b21LZXlDYWNoZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvciguLi52YWxpZGF0b3JzOiAoVmFsaWRhdG9yRGVmaW5pdGlvbiB8IFZhbGlkYXRvcilbXSkge1xuICAgIHRoaXMuY3VzdG9tS2V5Q2FjaGUgPSB7fTtcbiAgICB0aGlzLnJlZ2lzdGVyKC4uLnZhbGlkYXRvcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJldHJpZXZlcyB0aGUgY3VzdG9tIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogeyBbaW5kZXhlcjogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmN1c3RvbUtleUNhY2hlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZXRyaWV2ZXMgdGhlIHJlZ2lzdGVyZWQgdmFsaWRhdG9ycyBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jYWNoZSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGEgdmFsaWRhdG9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxpZGF0b3JLZXkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1ZhbGlkYXRvciB8IHVuZGVmaW5lZH0gdGhlIHJlZ2lzdGVyZWQgVmFsaWRhdG9yIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBub25vIG1hdGNoaW5nIHRoZSBwcm92aWRlZCBrZXlcbiAgICovXG4gIGdldDxUIGV4dGVuZHMgVmFsaWRhdG9yPih2YWxpZGF0b3JLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICghKHZhbGlkYXRvcktleSBpbiB0aGlzLmNhY2hlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNsYXNzT3JJbnN0YW5jZSA9IHRoaXMuY2FjaGVbdmFsaWRhdG9yS2V5XTtcbiAgICBpZiAoaXNWYWxpZGF0b3IoY2xhc3NPckluc3RhbmNlKSkgcmV0dXJuIGNsYXNzT3JJbnN0YW5jZSBhcyBUO1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gY2xhc3NPckluc3RhbmNlLmRlZmF1bHQgfHwgY2xhc3NPckluc3RhbmNlO1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgdGhpcy5jYWNoZVt2YWxpZGF0b3JLZXldID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyB0aGUgcHJvdmlkZWQgdmFsaWRhdG9ycyBvbnRvIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBAcGFyYW0ge1RbXSB8IFZhbGlkYXRvckRlZmluaXRpb25bXX0gdmFsaWRhdG9yXG4gICAqL1xuICByZWdpc3RlcjxUIGV4dGVuZHMgVmFsaWRhdG9yPihcbiAgICAuLi52YWxpZGF0b3I6IChWYWxpZGF0b3JEZWZpbml0aW9uIHwgVClbXVxuICApOiB2b2lkIHtcbiAgICB2YWxpZGF0b3IuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKGlzVmFsaWRhdG9yKHYpKSB7XG4gICAgICAgIC8vIGNvbnN0IGsgPVxuXG4gICAgICAgIGlmICgodiBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKS52YWxpZGF0aW9uS2V5IGluIHRoaXMuY2FjaGUpIHJldHVybjtcbiAgICAgICAgdGhpcy5jYWNoZVsodiBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKS52YWxpZGF0aW9uS2V5XSA9IHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IHZhbGlkYXRpb25LZXksIHZhbGlkYXRvciwgc2F2ZSB9ID0gdiBhcyBWYWxpZGF0b3JEZWZpbml0aW9uO1xuICAgICAgICBpZiAodmFsaWRhdGlvbktleSBpbiB0aGlzLmNhY2hlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2FjaGVbdmFsaWRhdGlvbktleV0gPSB2YWxpZGF0b3I7XG4gICAgICAgIGlmICghc2F2ZSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgb2JqW3ZhbGlkYXRpb25LZXkudG9VcHBlckNhc2UoKV0gPSB2YWxpZGF0aW9uS2V5O1xuXG4gICAgICAgIHRoaXMuY3VzdG9tS2V5Q2FjaGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmN1c3RvbUtleUNhY2hlLCBvYmopO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,47 @@
1
+ import { ValidatorDefinition } from "./types";
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;
10
+ /**
11
+ * @summary Base Implementation of a Validator Registry
12
+ *
13
+ * @prop {Validator[]} [validators] the initial validators to register
14
+ *
15
+ * @class ValidatorRegistry
16
+ * @implements IValidatorRegistry<T>
17
+ *
18
+ * @category Validation
19
+ */
20
+ export declare class ValidatorRegistry<T extends Validator> implements IValidatorRegistry<T> {
21
+ private cache;
22
+ private customKeyCache;
23
+ constructor(...validators: (ValidatorDefinition | Validator)[]);
24
+ /**
25
+ * @summary retrieves the custom keys
26
+ */
27
+ getCustomKeys(): {
28
+ [indexer: string]: string;
29
+ };
30
+ /**
31
+ * @summary retrieves the registered validators keys
32
+ */
33
+ getKeys(): string[];
34
+ /**
35
+ * @summary Retrieves a validator
36
+ *
37
+ * @param {string} validatorKey one of the {@link ValidationKeys}
38
+ * @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
39
+ */
40
+ get<T extends Validator>(validatorKey: string): T | undefined;
41
+ /**
42
+ * @summary Registers the provided validators onto the registry
43
+ *
44
+ * @param {T[] | ValidatorDefinition[]} validator
45
+ */
46
+ register<T extends Validator>(...validator: (ValidatorDefinition | T)[]): void;
47
+ }