@decaf-ts/decorator-validation 1.0.7 → 1.0.11

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 (141) hide show
  1. package/dist/decorator-validation.bundle.min.js +1 -1
  2. package/dist/esm/decorator-validation.bundle.min.esm.js +1 -1
  3. package/lib/esm/index.d.ts +6 -1
  4. package/lib/esm/index.js +68 -1
  5. package/lib/esm/model/Model.d.ts +3 -1
  6. package/lib/esm/model/Model.js +316 -1
  7. package/lib/esm/model/ModelErrorDefinition.d.ts +1 -1
  8. package/lib/esm/model/ModelErrorDefinition.js +55 -3
  9. package/lib/esm/model/Registry.d.ts +1 -1
  10. package/lib/esm/model/Registry.js +76 -1
  11. package/lib/esm/model/constants.js +44 -1
  12. package/lib/esm/model/construction.js +124 -1
  13. package/lib/esm/model/decorators.d.ts +3 -3
  14. package/lib/esm/model/decorators.js +68 -1
  15. package/lib/esm/model/index.d.ts +3 -3
  16. package/lib/esm/model/index.js +9 -1
  17. package/lib/esm/model/types.js +3 -0
  18. package/lib/esm/reflection/decorators.d.ts +15 -0
  19. package/lib/esm/reflection/decorators.js +28 -0
  20. package/lib/esm/reflection/index.d.ts +2 -0
  21. package/lib/esm/reflection/index.js +4 -0
  22. package/lib/esm/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
  23. package/lib/esm/reflection/utils.js +239 -0
  24. package/lib/esm/utils/constants.js +25 -1
  25. package/lib/esm/utils/dates.d.ts +76 -0
  26. package/lib/esm/utils/dates.js +241 -0
  27. package/lib/esm/utils/equality.d.ts +14 -0
  28. package/lib/esm/utils/equality.js +34 -0
  29. package/lib/esm/utils/hashing.d.ts +42 -0
  30. package/lib/esm/utils/hashing.js +73 -0
  31. package/lib/esm/utils/index.d.ts +6 -2
  32. package/lib/esm/utils/index.js +10 -1
  33. package/lib/esm/utils/registry.js +3 -0
  34. package/lib/esm/utils/serialization.js +53 -1
  35. package/lib/esm/utils/strings.d.ts +25 -0
  36. package/lib/esm/utils/strings.js +31 -0
  37. package/lib/esm/validation/Validation.d.ts +2 -1
  38. package/lib/esm/validation/Validation.js +63 -1
  39. package/lib/esm/validation/Validators/DateValidator.js +55 -1
  40. package/lib/esm/validation/Validators/EmailValidator.d.ts +0 -1
  41. package/lib/esm/validation/Validators/EmailValidator.js +49 -1
  42. package/lib/esm/validation/Validators/ListValidator.js +67 -1
  43. package/lib/esm/validation/Validators/MaxLengthValidator.js +55 -1
  44. package/lib/esm/validation/Validators/MaxValidator.js +59 -1
  45. package/lib/esm/validation/Validators/MinLengthValidator.js +55 -1
  46. package/lib/esm/validation/Validators/MinValidator.js +59 -1
  47. package/lib/esm/validation/Validators/PasswordValidator.js +52 -1
  48. package/lib/esm/validation/Validators/PatternValidator.d.ts +3 -3
  49. package/lib/esm/validation/Validators/PatternValidator.js +72 -1
  50. package/lib/esm/validation/Validators/RequiredValidator.js +57 -1
  51. package/lib/esm/validation/Validators/StepValidator.js +54 -1
  52. package/lib/esm/validation/Validators/TypeValidator.js +42 -1
  53. package/lib/esm/validation/Validators/URLValidator.d.ts +0 -1
  54. package/lib/esm/validation/Validators/URLValidator.js +48 -1
  55. package/lib/esm/validation/Validators/Validator.js +50 -1
  56. package/lib/esm/validation/Validators/ValidatorRegistry.js +81 -1
  57. package/lib/esm/validation/Validators/constants.d.ts +8 -4
  58. package/lib/esm/validation/Validators/constants.js +135 -1
  59. package/lib/esm/validation/Validators/decorators.d.ts +13 -0
  60. package/lib/esm/validation/Validators/decorators.js +23 -0
  61. package/lib/esm/validation/Validators/index.d.ts +9 -7
  62. package/lib/esm/validation/Validators/index.js +54 -1
  63. package/lib/esm/validation/Validators/types.d.ts +2 -2
  64. package/lib/esm/validation/Validators/types.js +3 -0
  65. package/lib/esm/validation/decorators.d.ts +14 -87
  66. package/lib/esm/validation/decorators.js +320 -1
  67. package/lib/esm/validation/index.d.ts +1 -10
  68. package/lib/esm/validation/index.js +6 -1
  69. package/lib/esm/validation/types.d.ts +11 -0
  70. package/lib/esm/validation/types.js +3 -0
  71. package/lib/index.cjs +85 -1
  72. package/lib/index.d.ts +6 -1
  73. package/lib/model/Model.cjs +321 -1
  74. package/lib/model/Model.d.ts +3 -1
  75. package/lib/model/ModelErrorDefinition.cjs +59 -3
  76. package/lib/model/ModelErrorDefinition.d.ts +1 -1
  77. package/lib/model/Registry.cjs +81 -1
  78. package/lib/model/Registry.d.ts +1 -1
  79. package/lib/model/constants.cjs +47 -1
  80. package/lib/model/construction.cjs +129 -1
  81. package/lib/model/decorators.cjs +73 -1
  82. package/lib/model/decorators.d.ts +3 -3
  83. package/lib/model/index.cjs +25 -1
  84. package/lib/model/index.d.ts +3 -3
  85. package/lib/model/types.cjs +4 -1
  86. package/lib/reflection/decorators.cjs +31 -0
  87. package/lib/reflection/decorators.d.ts +15 -0
  88. package/lib/reflection/index.cjs +20 -0
  89. package/lib/reflection/index.d.ts +2 -0
  90. package/lib/reflection/utils.cjs +251 -0
  91. package/lib/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
  92. package/lib/utils/constants.cjs +28 -1
  93. package/lib/utils/dates.cjs +249 -0
  94. package/lib/utils/dates.d.ts +76 -0
  95. package/lib/utils/equality.cjs +37 -0
  96. package/lib/utils/equality.d.ts +14 -0
  97. package/lib/utils/hashing.cjs +78 -0
  98. package/lib/utils/hashing.d.ts +42 -0
  99. package/lib/utils/index.cjs +26 -1
  100. package/lib/utils/index.d.ts +6 -2
  101. package/lib/utils/registry.cjs +4 -1
  102. package/lib/utils/serialization.cjs +57 -1
  103. package/lib/utils/strings.cjs +35 -0
  104. package/lib/utils/strings.d.ts +25 -0
  105. package/lib/validation/Validation.cjs +67 -1
  106. package/lib/validation/Validation.d.ts +2 -1
  107. package/lib/validation/Validators/DateValidator.cjs +58 -1
  108. package/lib/validation/Validators/EmailValidator.cjs +52 -1
  109. package/lib/validation/Validators/EmailValidator.d.ts +0 -1
  110. package/lib/validation/Validators/ListValidator.cjs +70 -1
  111. package/lib/validation/Validators/MaxLengthValidator.cjs +58 -1
  112. package/lib/validation/Validators/MaxValidator.cjs +62 -1
  113. package/lib/validation/Validators/MinLengthValidator.cjs +58 -1
  114. package/lib/validation/Validators/MinValidator.cjs +62 -1
  115. package/lib/validation/Validators/PasswordValidator.cjs +55 -1
  116. package/lib/validation/Validators/PatternValidator.cjs +75 -1
  117. package/lib/validation/Validators/PatternValidator.d.ts +3 -3
  118. package/lib/validation/Validators/RequiredValidator.cjs +60 -1
  119. package/lib/validation/Validators/StepValidator.cjs +57 -1
  120. package/lib/validation/Validators/TypeValidator.cjs +46 -1
  121. package/lib/validation/Validators/URLValidator.cjs +51 -1
  122. package/lib/validation/Validators/URLValidator.d.ts +0 -1
  123. package/lib/validation/Validators/Validator.cjs +54 -1
  124. package/lib/validation/Validators/ValidatorRegistry.cjs +86 -1
  125. package/lib/validation/Validators/constants.cjs +138 -1
  126. package/lib/validation/Validators/constants.d.ts +8 -4
  127. package/lib/validation/Validators/decorators.cjs +26 -0
  128. package/lib/validation/Validators/decorators.d.ts +13 -0
  129. package/lib/validation/Validators/index.cjs +71 -1
  130. package/lib/validation/Validators/index.d.ts +9 -7
  131. package/lib/validation/Validators/types.cjs +4 -1
  132. package/lib/validation/Validators/types.d.ts +2 -2
  133. package/lib/validation/decorators.cjs +337 -1
  134. package/lib/validation/decorators.d.ts +14 -87
  135. package/lib/validation/index.cjs +22 -1
  136. package/lib/validation/index.d.ts +1 -10
  137. package/lib/validation/types.cjs +4 -1
  138. package/lib/validation/types.d.ts +11 -0
  139. package/package.json +17 -13
  140. package/lib/esm/utils/general.js +0 -1
  141. package/lib/utils/general.cjs +0 -1
@@ -1 +1,72 @@
1
- import{Validator}from"./Validator";import{ValidationKeys,DEFAULT_ERROR_MESSAGES}from"./constants";class PatternValidator extends Validator{static{this.regexpParser=new RegExp("^/(.+)/([gimus]*)$")}constructor(t=ValidationKeys.PATTERN,r=DEFAULT_ERROR_MESSAGES.PATTERN){super(t,r,"string")}static getPattern(t){var r;return PatternValidator.regexpParser.test(t)?(r=t.match(PatternValidator.regexpParser),new RegExp(r[1],r[2])):new RegExp(t)}hasErrors(t,r,e){if(t)return(r="string"==typeof r?PatternValidator.getPattern(r):r).lastIndex=0,r.test(t)?void 0:this.getMessage(e||this.message)}}export{PatternValidator};
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Validator } from "./Validator";
11
+ import { ValidationKeys, DEFAULT_ERROR_MESSAGES } from "./constants";
12
+ import { validator } from "./decorators";
13
+ export const regexpParser = new RegExp("^/(.+)/([gimus]*)$");
14
+ /**
15
+ * @summary Pattern Validator
16
+ *
17
+ * @param {string} [key] defaults to {@link ValidationKeys#PATTERN}
18
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
19
+ *
20
+ * @class PatternValidator
21
+ * @extends Validator
22
+ *
23
+ * @category Validators
24
+ */
25
+ let PatternValidator = class PatternValidator extends Validator {
26
+ constructor(key = ValidationKeys.PATTERN, message = DEFAULT_ERROR_MESSAGES.PATTERN) {
27
+ super(key, message, "string");
28
+ }
29
+ /**
30
+ * @summary parses and validates a pattern
31
+ *
32
+ * @param {string} pattern
33
+ * @private
34
+ */
35
+ getPattern(pattern) {
36
+ if (!regexpParser.test(pattern))
37
+ return new RegExp(pattern);
38
+ const match = pattern.match(regexpParser);
39
+ return new RegExp(match[1], match[2]);
40
+ }
41
+ /**
42
+ * @summary Validates a Model
43
+ *
44
+ * @param {string} value
45
+ * @param {RegExp | string} pattern
46
+ * @param {string} [message]
47
+ *
48
+ * @return Errors
49
+ *
50
+ * @override
51
+ *
52
+ * @see Validator#hasErrors
53
+ */
54
+ hasErrors(value, pattern, message) {
55
+ if (!value)
56
+ return;
57
+ if (!pattern)
58
+ throw new Error("Missing Pattern");
59
+ pattern = typeof pattern === "string" ? this.getPattern(pattern) : pattern;
60
+ pattern.lastIndex = 0; // resets pattern position for repeat validation requests
61
+ return !pattern.test(value)
62
+ ? this.getMessage(message || this.message)
63
+ : undefined;
64
+ }
65
+ };
66
+ PatternValidator = __decorate([
67
+ validator(ValidationKeys.PATTERN),
68
+ __metadata("design:paramtypes", [String, String])
69
+ ], PatternValidator);
70
+ export { PatternValidator };
71
+
72
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvUGF0dGVyblZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQVcsSUFBSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUVyRTs7Ozs7Ozs7OztHQVVHO0FBRUksSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLFlBQ0UsTUFBYyxjQUFjLENBQUMsT0FBTyxFQUNwQyxVQUFrQixzQkFBc0IsQ0FBQyxPQUFPO1FBRWhELEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFVBQVUsQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLEdBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksU0FBUyxDQUNkLEtBQWEsRUFDYixPQUF5QixFQUN6QixPQUFnQjtRQUVoQixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakQsT0FBTyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzNFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMseURBQXlEO1FBQ2hGLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMxQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7Q0FDRixDQUFBO0FBOUNZLGdCQUFnQjtJQUQ1QixTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQzs7R0FDckIsZ0JBQWdCLENBOEM1QiIsImZpbGUiOiJ2YWxpZGF0aW9uL1ZhbGlkYXRvcnMvUGF0dGVyblZhbGlkYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIERFRkFVTFRfRVJST1JfTUVTU0FHRVMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEVycm9ycyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgY29uc3QgcmVnZXhwUGFyc2VyOiBSZWdFeHAgPSBuZXcgUmVnRXhwKFwiXi8oLispLyhbZ2ltdXNdKikkXCIpO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFBhdHRlcm4gVmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIGRlZmF1bHRzIHRvIHtAbGluayBWYWxpZGF0aW9uS2V5cyNQQVRURVJOfVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNQQVRURVJOfVxuICpcbiAqIEBjbGFzcyBQYXR0ZXJuVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBWYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLlBBVFRFUk4pXG5leHBvcnQgY2xhc3MgUGF0dGVyblZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nID0gVmFsaWRhdGlvbktleXMuUEFUVEVSTixcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlBBVFRFUk4sXG4gICkge1xuICAgIHN1cGVyKGtleSwgbWVzc2FnZSwgXCJzdHJpbmdcIik7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgcGFyc2VzIGFuZCB2YWxpZGF0ZXMgYSBwYXR0ZXJuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXR0ZXJuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldFBhdHRlcm4ocGF0dGVybjogc3RyaW5nKTogUmVnRXhwIHtcbiAgICBpZiAoIXJlZ2V4cFBhcnNlci50ZXN0KHBhdHRlcm4pKSByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbiAgICBjb25zdCBtYXRjaDogYW55ID0gcGF0dGVybi5tYXRjaChyZWdleHBQYXJzZXIpO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGEgTW9kZWxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7UmVnRXhwIHwgc3RyaW5nfSBwYXR0ZXJuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV1cbiAgICpcbiAgICogQHJldHVybiBFcnJvcnNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIHBhdHRlcm4/OiBSZWdFeHAgfCBzdHJpbmcsXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgKTogRXJyb3JzIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgaWYgKCFwYXR0ZXJuKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIFBhdHRlcm5cIik7XG4gICAgcGF0dGVybiA9IHR5cGVvZiBwYXR0ZXJuID09PSBcInN0cmluZ1wiID8gdGhpcy5nZXRQYXR0ZXJuKHBhdHRlcm4pIDogcGF0dGVybjtcbiAgICBwYXR0ZXJuLmxhc3RJbmRleCA9IDA7IC8vIHJlc2V0cyBwYXR0ZXJuIHBvc2l0aW9uIGZvciByZXBlYXQgdmFsaWRhdGlvbiByZXF1ZXN0c1xuICAgIHJldHVybiAhcGF0dGVybi50ZXN0KHZhbHVlKVxuICAgICAgPyB0aGlzLmdldE1lc3NhZ2UobWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -1 +1,57 @@
1
- import{Validator}from"./Validator";import{ValidationKeys,DEFAULT_ERROR_MESSAGES}from"./constants";class RequiredValidator extends Validator{constructor(e=DEFAULT_ERROR_MESSAGES.REQUIRED){super(ValidationKeys.REQUIRED,e)}hasErrors(e,s){switch(typeof e){case"boolean":case"number":return void 0===e?this.getMessage(s||this.message):void 0;default:return e?void 0:this.getMessage(s||this.message)}}}export{RequiredValidator};
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Validator } from "./Validator";
11
+ import { ValidationKeys, DEFAULT_ERROR_MESSAGES } from "./constants";
12
+ import { validator } from "./decorators";
13
+ /**
14
+ * @summary Required Validator
15
+ *
16
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
17
+ *
18
+ * @class RequiredValidator
19
+ * @extends Validator
20
+ *
21
+ * @category Validators
22
+ */
23
+ let RequiredValidator = class RequiredValidator extends Validator {
24
+ constructor(message = DEFAULT_ERROR_MESSAGES.REQUIRED) {
25
+ super(ValidationKeys.REQUIRED, message);
26
+ }
27
+ /**
28
+ * @summary Validates a model
29
+ *
30
+ * @param {string} value
31
+ * @param {string} [message]
32
+ *
33
+ * @return Errors
34
+ *
35
+ * @override
36
+ *
37
+ * @see Validator#hasErrors
38
+ */
39
+ hasErrors(value, message) {
40
+ switch (typeof value) {
41
+ case "boolean":
42
+ case "number":
43
+ return typeof value === "undefined"
44
+ ? this.getMessage(message || this.message)
45
+ : undefined;
46
+ default:
47
+ return !value ? this.getMessage(message || this.message) : undefined;
48
+ }
49
+ }
50
+ };
51
+ RequiredValidator = __decorate([
52
+ validator(ValidationKeys.REQUIRED),
53
+ __metadata("design:paramtypes", [String])
54
+ ], RequiredValidator);
55
+ export { RequiredValidator };
56
+
57
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvUmVxdWlyZWRWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekM7Ozs7Ozs7OztHQVNHO0FBRUksSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBa0IsU0FBUSxTQUFTO0lBQzlDLFlBQVksVUFBa0Isc0JBQXNCLENBQUMsUUFBUTtRQUMzRCxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxTQUFTLENBQUMsS0FBVSxFQUFFLE9BQWdCO1FBQzNDLFFBQVEsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNyQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sS0FBSyxLQUFLLFdBQVc7b0JBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUMxQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hCO2dCQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQTVCWSxpQkFBaUI7SUFEN0IsU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7O0dBQ3RCLGlCQUFpQixDQTRCN0IiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL1JlcXVpcmVkVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cywgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRXJyb3JzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgUmVxdWlyZWQgVmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNSRVFVSVJFRH1cbiAqXG4gKiBAY2xhc3MgUmVxdWlyZWRWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVmFsaWRhdGlvbktleXMuUkVRVUlSRUQpXG5leHBvcnQgY2xhc3MgUmVxdWlyZWRWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlJFUVVJUkVEKSB7XG4gICAgc3VwZXIoVmFsaWRhdGlvbktleXMuUkVRVUlSRUQsIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhIG1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdXG4gICAqXG4gICAqIEByZXR1cm4gRXJyb3JzXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvciNoYXNFcnJvcnNcbiAgICovXG4gIHB1YmxpYyBoYXNFcnJvcnModmFsdWU6IGFueSwgbWVzc2FnZT86IHN0cmluZyk6IEVycm9ycyB7XG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgICA/IHRoaXMuZ2V0TWVzc2FnZShtZXNzYWdlIHx8IHRoaXMubWVzc2FnZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAhdmFsdWUgPyB0aGlzLmdldE1lc3NhZ2UobWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1 +1,54 @@
1
- import{Validator}from"./Validator";import{ValidationKeys,DEFAULT_ERROR_MESSAGES}from"./constants";class StepValidator extends Validator{constructor(r=DEFAULT_ERROR_MESSAGES.STEP){super(ValidationKeys.STEP,r,"number","string")}hasErrors(r,t,a){return void 0!==r&&Number(r)%Number(t)!=0?this.getMessage(a||this.message,t):void 0}}export{StepValidator};
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Validator } from "./Validator";
11
+ import { ValidationKeys, DEFAULT_ERROR_MESSAGES } from "./constants";
12
+ import { validator } from "./decorators";
13
+ /**
14
+ * @summary Step Validator
15
+ *
16
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
17
+ *
18
+ * @class StepValidator
19
+ * @extends Validator
20
+ *
21
+ * @category Validators
22
+ */
23
+ let StepValidator = class StepValidator extends Validator {
24
+ constructor(message = DEFAULT_ERROR_MESSAGES.STEP) {
25
+ super(ValidationKeys.STEP, message, "number", "string");
26
+ }
27
+ /**
28
+ * @summary Validates a model
29
+ *
30
+ * @param {string} value
31
+ * @param {number} step
32
+ * @param {string} [message]
33
+ *
34
+ * @return Errors
35
+ *
36
+ * @override
37
+ *
38
+ * @see Validator#hasErrors
39
+ */
40
+ hasErrors(value, step, message) {
41
+ if (value === undefined)
42
+ return;
43
+ return Number(value) % Number(step) !== 0
44
+ ? this.getMessage(message || this.message, step)
45
+ : undefined;
46
+ }
47
+ };
48
+ StepValidator = __decorate([
49
+ validator(ValidationKeys.STEP),
50
+ __metadata("design:paramtypes", [String])
51
+ ], StepValidator);
52
+ export { StepValidator };
53
+
54
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvU3RlcFZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qzs7Ozs7Ozs7O0dBU0c7QUFFSSxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsU0FBUztJQUMxQyxZQUFZLFVBQWtCLHNCQUFzQixDQUFDLElBQUk7UUFDdkQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksU0FBUyxDQUNkLEtBQXNCLEVBQ3RCLElBQXFCLEVBQ3JCLE9BQWdCO1FBRWhCLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztZQUNoRCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7Q0FDRixDQUFBO0FBNUJZLGFBQWE7SUFEekIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7O0dBQ2xCLGFBQWEsQ0E0QnpCIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9TdGVwVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cywgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRXJyb3JzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgU3RlcCBWYWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1NURVB9XG4gKlxuICogQGNsYXNzIFN0ZXBWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVmFsaWRhdGlvbktleXMuU1RFUClcbmV4cG9ydCBjbGFzcyBTdGVwVmFsaWRhdG9yIGV4dGVuZHMgVmFsaWRhdG9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5TVEVQKSB7XG4gICAgc3VwZXIoVmFsaWRhdGlvbktleXMuU1RFUCwgbWVzc2FnZSwgXCJudW1iZXJcIiwgXCJzdHJpbmdcIik7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGEgbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV1cbiAgICpcbiAgICogQHJldHVybiBFcnJvcnNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLFxuICAgIHN0ZXA6IG51bWJlciB8IHN0cmluZyxcbiAgICBtZXNzYWdlPzogc3RyaW5nLFxuICApOiBFcnJvcnMge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSkgJSBOdW1iZXIoc3RlcCkgIT09IDBcbiAgICAgID8gdGhpcy5nZXRNZXNzYWdlKG1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBzdGVwKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1,42 @@
1
- import{Validator}from"./Validator";import{evaluateDesignTypes}from"../../utils";import{DEFAULT_ERROR_MESSAGES}from"./constants";import{ModelKeys}from"../../utils/constants";class TypeValidator extends Validator{constructor(t=DEFAULT_ERROR_MESSAGES.TYPE){super(ModelKeys.TYPE,t)}hasErrors(t,e,r){return void 0===t||evaluateDesignTypes(t,e)?void 0:this.getMessage(r||this.message,"string"==typeof e?e:Array.isArray(e)?e.join(", "):e.name,typeof t)}}export{TypeValidator};
1
+ import { Validator } from "./Validator";
2
+ import { DEFAULT_ERROR_MESSAGES } from "./constants";
3
+ import { ModelKeys } from "../../utils/constants";
4
+ import { evaluateDesignTypes } from "../../reflection/utils";
5
+ /**
6
+ * @summary Required Validator
7
+ *
8
+ * @class RequiredValidator
9
+ * @extends Validator
10
+ *
11
+ * @category Validators
12
+ */
13
+ // @validator(ValidationKeys.TYPE)
14
+ export class TypeValidator extends Validator {
15
+ constructor(message = DEFAULT_ERROR_MESSAGES.TYPE) {
16
+ super(ModelKeys.TYPE, message);
17
+ }
18
+ /**
19
+ * @summary Validates a model
20
+ * @param {string} value
21
+ * @param {string | string[] | {name: string}} types
22
+ * @param {string} [message]
23
+ *
24
+ * @return Errors
25
+ *
26
+ * @override
27
+ *
28
+ * @see Validator#hasErrors
29
+ */
30
+ hasErrors(value, types, message) {
31
+ if (value === undefined)
32
+ return; // Dont try and enforce type if undefined
33
+ if (!evaluateDesignTypes(value, types))
34
+ return this.getMessage(message || this.message, typeof types === "string"
35
+ ? types
36
+ : Array.isArray(types)
37
+ ? types.join(", ")
38
+ : types.name, typeof value);
39
+ }
40
+ }
41
+
42
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVHlwZVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0Q7Ozs7Ozs7R0FPRztBQUNILGtDQUFrQztBQUNsQyxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFDMUMsWUFBWSxVQUFrQixzQkFBc0IsQ0FBQyxJQUFJO1FBQ3ZELEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLFNBQVMsQ0FDZCxLQUFVLEVBQ1YsS0FBMkMsRUFDM0MsT0FBZ0I7UUFFaEIsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU8sQ0FBQyx5Q0FBeUM7UUFDMUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUNwQixPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFDdkIsT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFDdkIsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUNoQixPQUFPLEtBQUssQ0FDYixDQUFDO0lBQ04sQ0FBQztDQUNGIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9UeXBlVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcbmltcG9ydCB7IERFRkFVTFRfRVJST1JfTUVTU0FHRVMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGV2YWx1YXRlRGVzaWduVHlwZXMgfSBmcm9tIFwiLi4vLi4vcmVmbGVjdGlvbi91dGlsc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFJlcXVpcmVkIFZhbGlkYXRvclxuICpcbiAqIEBjbGFzcyBSZXF1aXJlZFZhbGlkYXRvclxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuLy8gQHZhbGlkYXRvcihWYWxpZGF0aW9uS2V5cy5UWVBFKVxuZXhwb3J0IGNsYXNzIFR5cGVWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRZUEUpIHtcbiAgICBzdXBlcihNb2RlbEtleXMuVFlQRSwgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIGEgbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW10gfCB7bmFtZTogc3RyaW5nfX0gdHlwZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXVxuICAgKlxuICAgKiBAcmV0dXJuIEVycm9yc1xuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICpcbiAgICogQHNlZSBWYWxpZGF0b3IjaGFzRXJyb3JzXG4gICAqL1xuICBwdWJsaWMgaGFzRXJyb3JzKFxuICAgIHZhbHVlOiBhbnksXG4gICAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfSxcbiAgICBtZXNzYWdlPzogc3RyaW5nLFxuICApOiBFcnJvcnMge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47IC8vIERvbnQgdHJ5IGFuZCBlbmZvcmNlIHR5cGUgaWYgdW5kZWZpbmVkXG4gICAgaWYgKCFldmFsdWF0ZURlc2lnblR5cGVzKHZhbHVlLCB0eXBlcykpXG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICBtZXNzYWdlIHx8IHRoaXMubWVzc2FnZSxcbiAgICAgICAgdHlwZW9mIHR5cGVzID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyB0eXBlc1xuICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh0eXBlcylcbiAgICAgICAgICAgID8gdHlwZXMuam9pbihcIiwgXCIpXG4gICAgICAgICAgICA6IHR5cGVzLm5hbWUsXG4gICAgICAgIHR5cGVvZiB2YWx1ZSxcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -10,7 +10,6 @@ import { PatternValidator } from "./PatternValidator";
10
10
  * @category Validators
11
11
  */
12
12
  export declare class URLValidator extends PatternValidator {
13
- private static readonly urlPattern;
14
13
  constructor(message?: string);
15
14
  /**
16
15
  * @summary Validates a model
@@ -1 +1,48 @@
1
- import{ValidationKeys,DEFAULT_ERROR_MESSAGES}from"./constants";import{PatternValidator}from"./PatternValidator";class URLValidator extends PatternValidator{static{this.urlPattern=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i}constructor(a=DEFAULT_ERROR_MESSAGES.URL){super(ValidationKeys.URL,a)}hasErrors(a,t){return super.hasErrors(a,URLValidator.urlPattern,t)}}export{URLValidator};
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ValidationKeys, DEFAULT_ERROR_MESSAGES, DEFAULT_PATTERNS, } from "./constants";
11
+ import { PatternValidator } from "./PatternValidator";
12
+ import { validator } from "./decorators";
13
+ /**
14
+ * @summary URL Validator
15
+ * @description Pattern from {@link https://gist.github.com/dperini/729294}
16
+ *
17
+ * @class URLValidator
18
+ * @extends PatternValidator
19
+ *
20
+ * @category Validators
21
+ */
22
+ let URLValidator = class URLValidator extends PatternValidator {
23
+ constructor(message = DEFAULT_ERROR_MESSAGES.URL) {
24
+ super(ValidationKeys.URL, message);
25
+ }
26
+ /**
27
+ * @summary Validates a model
28
+ *
29
+ * @param {string} value
30
+ * @param {string} [message]
31
+ *
32
+ * @return Errors
33
+ *
34
+ * @override
35
+ *
36
+ * @see Validator#hasErrors
37
+ */
38
+ hasErrors(value, message) {
39
+ return super.hasErrors(value, DEFAULT_PATTERNS.URL, message);
40
+ }
41
+ };
42
+ URLValidator = __decorate([
43
+ validator(ValidationKeys.URL),
44
+ __metadata("design:paramtypes", [String])
45
+ ], URLValidator);
46
+ export { URLValidator };
47
+
48
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVVJMVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLGdCQUFnQixHQUNqQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDOzs7Ozs7OztHQVFHO0FBRUksSUFBTSxZQUFZLEdBQWxCLE1BQU0sWUFBYSxTQUFRLGdCQUFnQjtJQUNoRCxZQUFZLFVBQWtCLHNCQUFzQixDQUFDLEdBQUc7UUFDdEQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksU0FBUyxDQUFDLEtBQWEsRUFBRSxPQUFnQjtRQUM5QyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YsQ0FBQTtBQXBCWSxZQUFZO0lBRHhCLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDOztHQUNqQixZQUFZLENBb0J4QiIsImZpbGUiOiJ2YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVVJMVmFsaWRhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVmFsaWRhdGlvbktleXMsXG4gIERFRkFVTFRfRVJST1JfTUVTU0FHRVMsXG4gIERFRkFVTFRfUEFUVEVSTlMsXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRXJyb3JzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBQYXR0ZXJuVmFsaWRhdG9yIH0gZnJvbSBcIi4vUGF0dGVyblZhbGlkYXRvclwiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFVSTCBWYWxpZGF0b3JcbiAqIEBkZXNjcmlwdGlvbiBQYXR0ZXJuIGZyb20ge0BsaW5rIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2RwZXJpbmkvNzI5Mjk0fVxuICpcbiAqIEBjbGFzcyBVUkxWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFBhdHRlcm5WYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLlVSTClcbmV4cG9ydCBjbGFzcyBVUkxWYWxpZGF0b3IgZXh0ZW5kcyBQYXR0ZXJuVmFsaWRhdG9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5VUkwpIHtcbiAgICBzdXBlcihWYWxpZGF0aW9uS2V5cy5VUkwsIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhIG1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdXG4gICAqXG4gICAqIEByZXR1cm4gRXJyb3JzXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvciNoYXNFcnJvcnNcbiAgICovXG4gIHB1YmxpYyBoYXNFcnJvcnModmFsdWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZyk6IEVycm9ycyB7XG4gICAgcmV0dXJuIHN1cGVyLmhhc0Vycm9ycyh2YWx1ZSwgREVGQVVMVF9QQVRURVJOUy5VUkwsIG1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
@@ -1 +1,50 @@
1
- import{checkTypes,stringFormat}from"../../utils";import{DEFAULT_ERROR_MESSAGES}from"./constants";class Validator{constructor(s,t=DEFAULT_ERROR_MESSAGES.DEFAULT,...e){this.validationKey=s,this.message=t,e.length&&(this.acceptedTypes=e),this.acceptedTypes&&(this.hasErrors=this.checkTypeAndHasErrors(this.hasErrors.bind(this)))}getMessage(s,...t){return stringFormat(s,...t)}checkTypeAndHasErrors(e){return function(s,...t){return void 0===s||!this.acceptedTypes||checkTypes(s,this.acceptedTypes)?e(s,...t):this.getMessage(DEFAULT_ERROR_MESSAGES.TYPE,this.acceptedTypes.join(", "),typeof s)}.bind(this)}}export{Validator};
1
+ import { DEFAULT_ERROR_MESSAGES } from "./constants";
2
+ import { sf } from "../../utils/strings";
3
+ import { checkTypes } from "../../reflection/utils";
4
+ /**
5
+ * @summary Base Implementation for Validators
6
+ * @description Provides the underlying functionality for {@link Validator}s
7
+ *
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
11
+ *
12
+ * @class Validator
13
+ * @abstract
14
+ * @category Validators
15
+ */
16
+ export class Validator {
17
+ constructor(validationKey, message = DEFAULT_ERROR_MESSAGES.DEFAULT, ...acceptedTypes) {
18
+ this.validationKey = validationKey;
19
+ this.message = message;
20
+ if (acceptedTypes.length)
21
+ this.acceptedTypes = acceptedTypes;
22
+ if (this.acceptedTypes)
23
+ this.hasErrors = this.checkTypeAndHasErrors(this.hasErrors.bind(this));
24
+ }
25
+ /**
26
+ * @summary builds the error message
27
+ * @param {string} message
28
+ * @param {any[]} args
29
+ * @protected
30
+ */
31
+ getMessage(message, ...args) {
32
+ return sf(message, ...args);
33
+ }
34
+ /**
35
+ * @summary Validates type
36
+ * @param {any} unbound
37
+ * @private
38
+ */
39
+ checkTypeAndHasErrors(unbound) {
40
+ return function (value, ...args) {
41
+ if (value === undefined || !this.acceptedTypes)
42
+ return unbound(value, ...args);
43
+ if (!checkTypes(value, this.acceptedTypes))
44
+ return this.getMessage(DEFAULT_ERROR_MESSAGES.TYPE, this.acceptedTypes.join(", "), typeof value);
45
+ return unbound(value, ...args);
46
+ }.bind(this);
47
+ }
48
+ }
49
+
50
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxPQUFnQixTQUFTO0lBSzdCLFlBQ0UsYUFBcUIsRUFDckIsVUFBa0Isc0JBQXNCLENBQUMsT0FBTyxFQUNoRCxHQUFHLGFBQXVCO1FBRTFCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksYUFBYSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUM3RCxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sVUFBVSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEQsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQkFBcUIsQ0FDM0IsT0FBa0Q7UUFFbEQsT0FBTyxVQUEyQixLQUFVLEVBQUUsR0FBRyxJQUFXO1lBQzFELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUM1QyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQ3BCLHNCQUFzQixDQUFDLElBQUksRUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzdCLE9BQU8sS0FBSyxDQUNiLENBQUM7WUFDSixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQztDQVlGIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9WYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvcnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IERFRkFVTFRfRVJST1JfTUVTU0FHRVMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IGNoZWNrVHlwZXMgfSBmcm9tIFwiLi4vLi4vcmVmbGVjdGlvbi91dGlsc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEJhc2UgSW1wbGVtZW50YXRpb24gZm9yIFZhbGlkYXRvcnNcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbmFsaXR5IGZvciB7QGxpbmsgVmFsaWRhdG9yfXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsaWRhdGlvbktleSB0aGUga2V5IHRvIHJlZ2lzdGVyIHRoZSB2YWxpZGF0b3IgdW5kZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0RFRkFVTFR9XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBbYWNjZXB0ZWRUeXBlc10gZGVmaW5lcyB0aGUgdmFsdWUgdHlwZXMgdGhpcyB2YWxpZGF0b3IgY2FuIHZhbGlkYXRlXG4gKlxuICogQGNsYXNzIFZhbGlkYXRvclxuICogQGFic3RyYWN0XG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVmFsaWRhdG9yIHtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbktleTogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY2VwdGVkVHlwZXM/OiBzdHJpbmdbXTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgdmFsaWRhdGlvbktleTogc3RyaW5nLFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuREVGQVVMVCxcbiAgICAuLi5hY2NlcHRlZFR5cGVzOiBzdHJpbmdbXVxuICApIHtcbiAgICB0aGlzLnZhbGlkYXRpb25LZXkgPSB2YWxpZGF0aW9uS2V5O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoYWNjZXB0ZWRUeXBlcy5sZW5ndGgpIHRoaXMuYWNjZXB0ZWRUeXBlcyA9IGFjY2VwdGVkVHlwZXM7XG4gICAgaWYgKHRoaXMuYWNjZXB0ZWRUeXBlcylcbiAgICAgIHRoaXMuaGFzRXJyb3JzID0gdGhpcy5jaGVja1R5cGVBbmRIYXNFcnJvcnModGhpcy5oYXNFcnJvcnMuYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgYnVpbGRzIHRoZSBlcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBzZihtZXNzYWdlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdHlwZVxuICAgKiBAcGFyYW0ge2FueX0gdW5ib3VuZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1R5cGVBbmRIYXNFcnJvcnMoXG4gICAgdW5ib3VuZDogKHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiBFcnJvcnMsXG4gICkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodGhpczogVmFsaWRhdG9yLCB2YWx1ZTogYW55LCAuLi5hcmdzOiBhbnlbXSk6IEVycm9ycyB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCAhdGhpcy5hY2NlcHRlZFR5cGVzKVxuICAgICAgICByZXR1cm4gdW5ib3VuZCh2YWx1ZSwgLi4uYXJncyk7XG4gICAgICBpZiAoIWNoZWNrVHlwZXModmFsdWUsIHRoaXMuYWNjZXB0ZWRUeXBlcykpXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UoXG4gICAgICAgICAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5UWVBFLFxuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlcy5qb2luKFwiLCBcIiksXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLFxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHVuYm91bmQodmFsdWUsIC4uLmFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYW4gYXR0cmlidXRlXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqIEBhYnN0cmFjdFxuICAgKlxuICAgKiBAc2VlIE1vZGVsI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGhhc0Vycm9ycyh2YWx1ZTogYW55LCAuLi5hcmdzOiBhbnlbXSk6IEVycm9ycztcbn1cbiJdfQ==
@@ -1 +1,81 @@
1
- function isValidator(t){return t.constructor&&t.hasErrors}class ValidatorRegistry{constructor(...t){this.cache={},this.customKeyChache={},this.register(...t)}getCustomKeys(){return Object.assign({},this.customKeyChache)}getKeys(){return Object.keys(this.cache)}get(t){var e;if(t in this.cache)return isValidator(e=this.cache[t])?e:(e=new(e.default||e),this.cache[t]=e)}register(...t){t.forEach(t=>{var e,a;isValidator(t)?t.validationKey in this.cache||(this.cache[t.validationKey]=t):({validationKey:t,validator:a,save:e}=t,t in this.cache||(this.cache[t]=a,e&&((a={})[t.toUpperCase()]=t,this.customKeyChache=Object.assign({},this.customKeyChache,a))))})}}export{isValidator,ValidatorRegistry};
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
+ }
9
+ /**
10
+ * @summary Base Implementation of a Validator Registry
11
+ *
12
+ * @prop {Validator[]} [validators] the initial validators to register
13
+ *
14
+ * @class ValidatorRegistry
15
+ * @implements IValidatorRegistry<T>
16
+ *
17
+ * @category Validation
18
+ */
19
+ export class ValidatorRegistry {
20
+ constructor(...validators) {
21
+ this.cache = {};
22
+ this.customKeyChache = {};
23
+ this.register(...validators);
24
+ }
25
+ /**
26
+ * @summary retrieves the custom keys
27
+ */
28
+ getCustomKeys() {
29
+ return Object.assign({}, this.customKeyChache);
30
+ }
31
+ /**
32
+ * @summary retrieves the registered validators keys
33
+ */
34
+ getKeys() {
35
+ return Object.keys(this.cache);
36
+ }
37
+ /**
38
+ * @summary Retrieves a validator
39
+ *
40
+ * @param {string} validatorKey one of the {@link ValidationKeys}
41
+ * @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
42
+ */
43
+ get(validatorKey) {
44
+ if (!(validatorKey in this.cache))
45
+ return undefined;
46
+ const classOrInstance = this.cache[validatorKey];
47
+ if (isValidator(classOrInstance))
48
+ return classOrInstance;
49
+ const constructor = classOrInstance.default || classOrInstance;
50
+ const instance = new constructor();
51
+ this.cache[validatorKey] = instance;
52
+ return instance;
53
+ }
54
+ /**
55
+ * @summary Registers the provided validators onto the registry
56
+ *
57
+ * @param {T[] | ValidatorDefinition[]} validator
58
+ */
59
+ register(...validator) {
60
+ validator.forEach((v) => {
61
+ if (isValidator(v)) {
62
+ if (v.validationKey in this.cache)
63
+ return;
64
+ this.cache[v.validationKey] = v;
65
+ }
66
+ else {
67
+ const { validationKey, validator, save } = v;
68
+ if (validationKey in this.cache)
69
+ return;
70
+ this.cache[validationKey] = validator;
71
+ if (!save)
72
+ return;
73
+ const obj = {};
74
+ obj[validationKey.toUpperCase()] = validationKey;
75
+ this.customKeyChache = Object.assign({}, this.customKeyChache, obj);
76
+ }
77
+ });
78
+ }
79
+ }
80
+
81
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVmFsaWRhdG9yUmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBUTtJQUNsQyxPQUFPLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLFlBQVksR0FBRyxVQUErQztRQUh0RCxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBSXRCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFzQixZQUFvQjtRQUMzQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRXBELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDO1lBQUUsT0FBTyxlQUFvQixDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQ04sR0FBRyxTQUFzQztRQUV6QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdEIsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU87Z0JBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBd0IsQ0FBQztnQkFDcEUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUs7b0JBQUUsT0FBTztnQkFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJO29CQUFFLE9BQU87Z0JBQ2xCLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7Z0JBQ3ZDLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBRWpELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL1ZhbGlkYXRvclJlZ2lzdHJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRGVmaW5pdGlvbiB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBJVmFsaWRhdG9yUmVnaXN0cnkgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBEdWNrIHR5cGluZyBmb3IgVmFsaWRhdG9yc1xuICogQGZ1bmN0aW9uIGlzVmFsaWRhdG9yXG4gKiBAcGFyYW0gdmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkYXRvcih2YWw6IGFueSkge1xuICByZXR1cm4gdmFsLmNvbnN0cnVjdG9yICYmIHZhbFtcImhhc0Vycm9yc1wiXTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIEltcGxlbWVudGF0aW9uIG9mIGEgVmFsaWRhdG9yIFJlZ2lzdHJ5XG4gKlxuICogQHByb3Age1ZhbGlkYXRvcltdfSBbdmFsaWRhdG9yc10gdGhlIGluaXRpYWwgdmFsaWRhdG9ycyB0byByZWdpc3RlclxuICpcbiAqIEBjbGFzcyBWYWxpZGF0b3JSZWdpc3RyeVxuICogQGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+XG4gIGltcGxlbWVudHMgSVZhbGlkYXRvclJlZ2lzdHJ5PFQ+XG57XG4gIHByaXZhdGUgY2FjaGU6IGFueSA9IHt9O1xuICBwcml2YXRlIGN1c3RvbUtleUNoYWNoZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvciguLi52YWxpZGF0b3JzOiAoVmFsaWRhdG9yRGVmaW5pdGlvbiB8IFZhbGlkYXRvcilbXSkge1xuICAgIHRoaXMuY3VzdG9tS2V5Q2hhY2hlID0ge307XG4gICAgdGhpcy5yZWdpc3RlciguLi52YWxpZGF0b3JzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSByZXRyaWV2ZXMgdGhlIGN1c3RvbSBrZXlzXG4gICAqL1xuICBnZXRDdXN0b21LZXlzKCk6IHsgW2luZGV4ZXI6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXN0b21LZXlDaGFjaGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHJldHJpZXZlcyB0aGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3JzIGtleXNcbiAgICovXG4gIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNhY2hlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgYSB2YWxpZGF0b3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbGlkYXRvcktleSBvbmUgb2YgdGhlIHtAbGluayBWYWxpZGF0aW9uS2V5c31cbiAgICogQHJldHVybiB7VmFsaWRhdG9yIHwgdW5kZWZpbmVkfSB0aGUgcmVnaXN0ZXJlZCBWYWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbm8gbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIGtleVxuICAgKi9cbiAgZ2V0PFQgZXh0ZW5kcyBWYWxpZGF0b3I+KHZhbGlkYXRvcktleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCEodmFsaWRhdG9yS2V5IGluIHRoaXMuY2FjaGUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY2xhc3NPckluc3RhbmNlID0gdGhpcy5jYWNoZVt2YWxpZGF0b3JLZXldO1xuICAgIGlmIChpc1ZhbGlkYXRvcihjbGFzc09ySW5zdGFuY2UpKSByZXR1cm4gY2xhc3NPckluc3RhbmNlIGFzIFQ7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBjbGFzc09ySW5zdGFuY2UuZGVmYXVsdCB8fCBjbGFzc09ySW5zdGFuY2U7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgY29uc3RydWN0b3IoKTtcbiAgICB0aGlzLmNhY2hlW3ZhbGlkYXRvcktleV0gPSBpbnN0YW5jZTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIHRoZSBwcm92aWRlZCB2YWxpZGF0b3JzIG9udG8gdGhlIHJlZ2lzdHJ5XG4gICAqXG4gICAqIEBwYXJhbSB7VFtdIHwgVmFsaWRhdG9yRGVmaW5pdGlvbltdfSB2YWxpZGF0b3JcbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFZhbGlkYXRvckRlZmluaXRpb24gfCBUKVtdXG4gICk6IHZvaWQge1xuICAgIHZhbGlkYXRvci5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAoaXNWYWxpZGF0b3IodikpIHtcbiAgICAgICAgaWYgKHYudmFsaWRhdGlvbktleSBpbiB0aGlzLmNhY2hlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2FjaGVbdi52YWxpZGF0aW9uS2V5XSA9IHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IHZhbGlkYXRpb25LZXksIHZhbGlkYXRvciwgc2F2ZSB9ID0gdiBhcyBWYWxpZGF0b3JEZWZpbml0aW9uO1xuICAgICAgICBpZiAodmFsaWRhdGlvbktleSBpbiB0aGlzLmNhY2hlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY2FjaGVbdmFsaWRhdGlvbktleV0gPSB2YWxpZGF0b3I7XG4gICAgICAgIGlmICghc2F2ZSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgb2JqW3ZhbGlkYXRpb25LZXkudG9VcHBlckNhc2UoKV0gPSB2YWxpZGF0aW9uS2V5O1xuXG4gICAgICAgIHRoaXMuY3VzdG9tS2V5Q2hhY2hlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXN0b21LZXlDaGFjaGUsIG9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -80,12 +80,16 @@ export declare const DAYS_OF_WEEK_NAMES: string[];
80
80
  */
81
81
  export declare const DEFAULT_ERROR_MESSAGES: Record<string, string>;
82
82
  /**
83
- * @summary Defines a Password validation regexp
83
+ * @summary Defines the various default regexp patterns used
84
84
  *
85
- * @enum DEFAULT_ERROR_MESSAGES
85
+ * @enum DEFAULT_PATTERNS
86
86
  * @memberOf module:decorator-validation.Validation
87
87
  * @category Validation
88
88
  */
89
- export declare const PasswordPatterns: {
90
- CHAR8_ONE_OF_EACH: RegExp;
89
+ export declare const DEFAULT_PATTERNS: {
90
+ EMAIL: RegExp;
91
+ URL: RegExp;
92
+ PASSWORD: {
93
+ CHAR8_ONE_OF_EACH: RegExp;
94
+ };
91
95
  };