@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,68 @@
1
+ import { Constructor } from "../model/types";
2
+ /**
3
+ * @summary Basic interface for Registries
4
+ *
5
+ * @interface IRegistry
6
+ *
7
+ * @category Utilities
8
+ */
9
+ export interface IRegistry<T> {
10
+ /**
11
+ * @summary Registers an Object
12
+ *
13
+ * @param {T} obj
14
+ * @param {any[]} args
15
+ *
16
+ * @method
17
+ */
18
+ register(obj: T | any, ...args: any[]): void;
19
+ /**
20
+ * @summary Retrieves an Object if it can find it
21
+ *
22
+ * @param {any} key
23
+ * @param {any[]} args
24
+ * @return {T | undefined}
25
+ *
26
+ * @method
27
+ */
28
+ get(key: any, ...args: any[]): T | undefined;
29
+ }
30
+ /**
31
+ * @summary Basic Builder Registry Interface
32
+ *
33
+ * @typedef T
34
+ * @interface BuilderRegistry<T>
35
+ *
36
+ * @category Construction
37
+ */
38
+ export interface BuilderRegistry<T> extends IRegistry<Constructor<T>> {
39
+ /**
40
+ * @summary Retrieves an Builder Object by name if it can
41
+ *
42
+ * @param {string} name
43
+ * @param {any[]} args
44
+ *
45
+ * @method
46
+ */
47
+ get(name: string, ...args: any[]): Constructor<T> | undefined;
48
+ /**
49
+ * @summary Registers a constructor by name
50
+ *
51
+ * @param {Constructor<T>} [constructor]
52
+ * @param {name} name
53
+ * @param {any[]} args
54
+ *
55
+ * @method
56
+ */
57
+ register(constructor: Constructor<T>, name?: string, ...args: any[]): void;
58
+ /**
59
+ * @summary Builds an Object by name
60
+ *
61
+ * @param {{}} obj
62
+ * @param {any[]} args
63
+ * @return T
64
+ *
65
+ * @method
66
+ */
67
+ build(obj: Record<string, any> | T, ...args: any[]): T;
68
+ }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Serialization = exports.DefaultSerializationMethod = exports.JSONSerializer = void 0;
4
+ const Model_1 = require("../model/Model/index.cjs");
5
+ const constants_1 = require("./constants/index.cjs");
6
+ /**
7
+ * @summary Concrete implementation of a {@link Serializer} in JSON format
8
+ * @description JS's native JSON.stringify (used here) is not deterministic
9
+ * and therefore should not be used for hashing purposes
10
+ *
11
+ * To keep dependencies low, we will not implement this, but we recommend
12
+ * implementing a similar {@link JSONSerializer} using 'deterministic-json' libraries
13
+ *
14
+ * @class JSONSerializer
15
+ * @implements Serializer
16
+ *
17
+ * @category Serialization
18
+ */
19
+ class JSONSerializer {
20
+ /**
21
+ * @summary prepares the model for serialization
22
+ * @description returns a shallow copy of the object, containing an enumerable {@link ModelKeys#ANCHOR} property
23
+ * so the object can be recognized upon deserialization
24
+ *
25
+ * @param {T} model
26
+ * @protected
27
+ */
28
+ preSerialize(model) {
29
+ // TODO: nested preserialization (so increase performance when deserializing)
30
+ const toSerialize = Object.assign({}, model);
31
+ const metadata = Model_1.Model.getMetadata(model);
32
+ toSerialize[constants_1.ModelKeys.ANCHOR] = metadata || model.constructor.name;
33
+ return toSerialize;
34
+ }
35
+ /**
36
+ * @summary Rebuilds a model from a serialization
37
+ * @param {string} str
38
+ *
39
+ * @throws {Error} If it fails to parse the string, or to build the model
40
+ */
41
+ deserialize(str) {
42
+ const deserialization = JSON.parse(str);
43
+ const className = deserialization[constants_1.ModelKeys.ANCHOR];
44
+ if (!className)
45
+ throw new Error("Could not find class reference in serialized model");
46
+ const model = Model_1.Model.build(deserialization, className);
47
+ return model;
48
+ }
49
+ /**
50
+ * @summary Serializes a model
51
+ * @param {T} model
52
+ *
53
+ * @throws {Error} if fails to serialize
54
+ */
55
+ serialize(model) {
56
+ return JSON.stringify(this.preSerialize(model));
57
+ }
58
+ }
59
+ exports.JSONSerializer = JSONSerializer;
60
+ exports.DefaultSerializationMethod = "json";
61
+ class Serialization {
62
+ static { this.current = exports.DefaultSerializationMethod; }
63
+ static { this.cache = {
64
+ json: new JSONSerializer(),
65
+ }; }
66
+ constructor() { }
67
+ static get(key) {
68
+ if (key in this.cache)
69
+ return this.cache[key];
70
+ throw new Error(`No serialization method registered under ${key}`);
71
+ }
72
+ static register(key, func, setDefault = false) {
73
+ if (key in this.cache)
74
+ throw new Error(`Serialization method ${key} already registered`);
75
+ this.cache[key] = new func();
76
+ if (setDefault)
77
+ this.current = key;
78
+ }
79
+ static serialize(obj, method, ...args) {
80
+ if (!method)
81
+ return this.get(this.current).serialize(obj, ...args);
82
+ return this.get(method).serialize(obj, ...args);
83
+ }
84
+ static deserialize(obj, method, ...args) {
85
+ if (!method)
86
+ return this.get(this.current).deserialize(obj, ...args);
87
+ return this.get(method).deserialize(obj, ...args);
88
+ }
89
+ static setDefault(method) {
90
+ this.current = this.get(method);
91
+ }
92
+ }
93
+ exports.Serialization = Serialization;
94
+
95
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBDQUF1QztBQUN2QywyQ0FBd0M7QUFpQ3hDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsY0FBYztJQUN6Qjs7Ozs7OztPQU9HO0lBQ08sWUFBWSxDQUFDLEtBQVE7UUFDN0IsNkVBQTZFO1FBQzdFLE1BQU0sV0FBVyxHQUF3QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRSxNQUFNLFFBQVEsR0FBRyxhQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNuRSxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsR0FBVztRQUNyQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sS0FBSyxHQUFNLGFBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBaUIsQ0FBQztRQUN6RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxLQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBekNELHdDQXlDQztBQUVZLFFBQUEsMEJBQTBCLEdBQUcsTUFBTSxDQUFDO0FBRWpELE1BQWEsYUFBYTthQUNULFlBQU8sR0FBVyxrQ0FBMEIsQ0FBQzthQUU3QyxVQUFLLEdBQW9DO1FBQ3RELElBQUksRUFBRSxJQUFJLGNBQWMsRUFBRTtLQUMzQixDQUFDO0lBRUYsZ0JBQXVCLENBQUM7SUFFaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQzVCLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQ2IsR0FBVyxFQUNYLElBQWtDLEVBQ2xDLFVBQVUsR0FBRyxLQUFLO1FBRWxCLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLEdBQUcscUJBQXFCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxVQUFVO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLE1BQWUsRUFBRSxHQUFHLElBQVc7UUFDeEQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVcsRUFBRSxNQUFlLEVBQUUsR0FBRyxJQUFXO1FBQzdELElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDOztBQXJDSCxzQ0FzQ0MiLCJmaWxlIjoidXRpbHMvc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgeyBNb2RlbEtleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL21vZGVsL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgSGVscGVyIGluIHNlcmlhbGl6YXRpb25cbiAqXG4gKiBAaW50ZXJmYWNlIFNlcmlhbGl6ZXJcbiAqIEBjYXRlZ29yeSBTZXJpYWxpemF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplcjxUIGV4dGVuZHMgTW9kZWw+IHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFNlcmlhbGl6ZXMgYSBtb2RlbFxuICAgKiBAcGFyYW0ge1R9IG1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEBtZXRob2RcbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBzZXJpYWxpemUobW9kZWw6IFQsIC4uLmFyZ3M6IGFueVtdKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWJ1aWxkcyBhIG1vZGVsIGZyb20gc2VyaWFsaXphdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gICAqXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEBtZXRob2RcbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9XG4gICAqL1xuICBkZXNlcmlhbGl6ZShzdHI6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBUO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIGEge0BsaW5rIFNlcmlhbGl6ZXJ9IGluIEpTT04gZm9ybWF0XG4gKiBAZGVzY3JpcHRpb24gSlMncyBuYXRpdmUgSlNPTi5zdHJpbmdpZnkgKHVzZWQgaGVyZSkgaXMgbm90IGRldGVybWluaXN0aWNcbiAqIGFuZCB0aGVyZWZvcmUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBoYXNoaW5nIHB1cnBvc2VzXG4gKlxuICogVG8ga2VlcCBkZXBlbmRlbmNpZXMgbG93LCB3ZSB3aWxsIG5vdCBpbXBsZW1lbnQgdGhpcywgYnV0IHdlIHJlY29tbWVuZFxuICogaW1wbGVtZW50aW5nIGEgc2ltaWxhciB7QGxpbmsgSlNPTlNlcmlhbGl6ZXJ9IHVzaW5nICdkZXRlcm1pbmlzdGljLWpzb24nIGxpYnJhcmllc1xuICpcbiAqIEBjbGFzcyBKU09OU2VyaWFsaXplclxuICogQGltcGxlbWVudHMgU2VyaWFsaXplclxuICpcbiAqIEBjYXRlZ29yeSBTZXJpYWxpemF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBKU09OU2VyaWFsaXplcjxUIGV4dGVuZHMgTW9kZWw+IGltcGxlbWVudHMgU2VyaWFsaXplcjxUPiB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBwcmVwYXJlcyB0aGUgbW9kZWwgZm9yIHNlcmlhbGl6YXRpb25cbiAgICogQGRlc2NyaXB0aW9uIHJldHVybnMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIG9iamVjdCwgY29udGFpbmluZyBhbiBlbnVtZXJhYmxlIHtAbGluayBNb2RlbEtleXMjQU5DSE9SfSBwcm9wZXJ0eVxuICAgKiBzbyB0aGUgb2JqZWN0IGNhbiBiZSByZWNvZ25pemVkIHVwb24gZGVzZXJpYWxpemF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VH0gbW9kZWxcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHByZVNlcmlhbGl6ZShtb2RlbDogVCkge1xuICAgIC8vIFRPRE86IG5lc3RlZCBwcmVzZXJpYWxpemF0aW9uIChzbyBpbmNyZWFzZSBwZXJmb3JtYW5jZSB3aGVuIGRlc2VyaWFsaXppbmcpXG4gICAgY29uc3QgdG9TZXJpYWxpemU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBPYmplY3QuYXNzaWduKHt9LCBtb2RlbCk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBNb2RlbC5nZXRNZXRhZGF0YShtb2RlbCk7XG4gICAgdG9TZXJpYWxpemVbTW9kZWxLZXlzLkFOQ0hPUl0gPSBtZXRhZGF0YSB8fCBtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIHJldHVybiB0b1NlcmlhbGl6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWJ1aWxkcyBhIG1vZGVsIGZyb20gYSBzZXJpYWxpemF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAgICpcbiAgICogQHRocm93cyB7RXJyb3J9IElmIGl0IGZhaWxzIHRvIHBhcnNlIHRoZSBzdHJpbmcsIG9yIHRvIGJ1aWxkIHRoZSBtb2RlbFxuICAgKi9cbiAgZGVzZXJpYWxpemUoc3RyOiBzdHJpbmcpOiBUIHtcbiAgICBjb25zdCBkZXNlcmlhbGl6YXRpb24gPSBKU09OLnBhcnNlKHN0cik7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gZGVzZXJpYWxpemF0aW9uW01vZGVsS2V5cy5BTkNIT1JdO1xuICAgIGlmICghY2xhc3NOYW1lKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGZpbmQgY2xhc3MgcmVmZXJlbmNlIGluIHNlcmlhbGl6ZWQgbW9kZWxcIik7XG4gICAgY29uc3QgbW9kZWw6IFQgPSBNb2RlbC5idWlsZChkZXNlcmlhbGl6YXRpb24sIGNsYXNzTmFtZSkgYXMgdW5rbm93biBhcyBUO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBTZXJpYWxpemVzIGEgbW9kZWxcbiAgICogQHBhcmFtIHtUfSBtb2RlbFxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gaWYgZmFpbHMgdG8gc2VyaWFsaXplXG4gICAqL1xuICBzZXJpYWxpemUobW9kZWw6IFQpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnByZVNlcmlhbGl6ZShtb2RlbCkpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0U2VyaWFsaXphdGlvbk1ldGhvZCA9IFwianNvblwiO1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXphdGlvbiB7XG4gIHByaXZhdGUgc3RhdGljIGN1cnJlbnQ6IHN0cmluZyA9IERlZmF1bHRTZXJpYWxpemF0aW9uTWV0aG9kO1xuXG4gIHByaXZhdGUgc3RhdGljIGNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBTZXJpYWxpemVyPGFueT4+ID0ge1xuICAgIGpzb246IG5ldyBKU09OU2VyaWFsaXplcigpLFxuICB9O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIHByaXZhdGUgc3RhdGljIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmNhY2hlKSByZXR1cm4gdGhpcy5jYWNoZVtrZXldO1xuICAgIHRocm93IG5ldyBFcnJvcihgTm8gc2VyaWFsaXphdGlvbiBtZXRob2QgcmVnaXN0ZXJlZCB1bmRlciAke2tleX1gKTtcbiAgfVxuXG4gIHN0YXRpYyByZWdpc3RlcihcbiAgICBrZXk6IHN0cmluZyxcbiAgICBmdW5jOiBDb25zdHJ1Y3RvcjxTZXJpYWxpemVyPGFueT4+LFxuICAgIHNldERlZmF1bHQgPSBmYWxzZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmNhY2hlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJpYWxpemF0aW9uIG1ldGhvZCAke2tleX0gYWxyZWFkeSByZWdpc3RlcmVkYCk7XG4gICAgdGhpcy5jYWNoZVtrZXldID0gbmV3IGZ1bmMoKTtcbiAgICBpZiAoc2V0RGVmYXVsdCkgdGhpcy5jdXJyZW50ID0ga2V5O1xuICB9XG5cbiAgc3RhdGljIHNlcmlhbGl6ZShvYmo6IGFueSwgbWV0aG9kPzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghbWV0aG9kKSByZXR1cm4gdGhpcy5nZXQodGhpcy5jdXJyZW50KS5zZXJpYWxpemUob2JqLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5nZXQobWV0aG9kKS5zZXJpYWxpemUob2JqLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZShvYmo6IHN0cmluZywgbWV0aG9kPzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghbWV0aG9kKSByZXR1cm4gdGhpcy5nZXQodGhpcy5jdXJyZW50KS5kZXNlcmlhbGl6ZShvYmosIC4uLmFyZ3MpO1xuICAgIHJldHVybiB0aGlzLmdldChtZXRob2QpLmRlc2VyaWFsaXplKG9iaiwgLi4uYXJncyk7XG4gIH1cblxuICBzdGF0aWMgc2V0RGVmYXVsdChtZXRob2Q6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudCA9IHRoaXMuZ2V0KG1ldGhvZCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,79 @@
1
+ import { Model } from "../model/Model";
2
+ import { Constructor } from "../model/types";
3
+ /**
4
+ * @summary Helper in serialization
5
+ *
6
+ * @interface Serializer
7
+ * @category Serialization
8
+ */
9
+ export interface Serializer<T extends Model> {
10
+ /**
11
+ * @summary Serializes a model
12
+ * @param {T} model
13
+ *
14
+ * @param args
15
+ * @method
16
+ *
17
+ * @throws {Error}
18
+ */
19
+ serialize(model: T, ...args: any[]): string;
20
+ /**
21
+ * @summary Rebuilds a model from serialization
22
+ * @param {string} str
23
+ *
24
+ * @param args
25
+ * @method
26
+ *
27
+ * @throws {Error}
28
+ */
29
+ deserialize(str: string, ...args: any[]): T;
30
+ }
31
+ /**
32
+ * @summary Concrete implementation of a {@link Serializer} in JSON format
33
+ * @description JS's native JSON.stringify (used here) is not deterministic
34
+ * and therefore should not be used for hashing purposes
35
+ *
36
+ * To keep dependencies low, we will not implement this, but we recommend
37
+ * implementing a similar {@link JSONSerializer} using 'deterministic-json' libraries
38
+ *
39
+ * @class JSONSerializer
40
+ * @implements Serializer
41
+ *
42
+ * @category Serialization
43
+ */
44
+ export declare class JSONSerializer<T extends Model> implements Serializer<T> {
45
+ /**
46
+ * @summary prepares the model for serialization
47
+ * @description returns a shallow copy of the object, containing an enumerable {@link ModelKeys#ANCHOR} property
48
+ * so the object can be recognized upon deserialization
49
+ *
50
+ * @param {T} model
51
+ * @protected
52
+ */
53
+ protected preSerialize(model: T): Record<string, any>;
54
+ /**
55
+ * @summary Rebuilds a model from a serialization
56
+ * @param {string} str
57
+ *
58
+ * @throws {Error} If it fails to parse the string, or to build the model
59
+ */
60
+ deserialize(str: string): T;
61
+ /**
62
+ * @summary Serializes a model
63
+ * @param {T} model
64
+ *
65
+ * @throws {Error} if fails to serialize
66
+ */
67
+ serialize(model: T): string;
68
+ }
69
+ export declare const DefaultSerializationMethod = "json";
70
+ export declare class Serialization {
71
+ private static current;
72
+ private static cache;
73
+ private constructor();
74
+ private static get;
75
+ static register(key: string, func: Constructor<Serializer<any>>, setDefault?: boolean): void;
76
+ static serialize(obj: any, method?: string, ...args: any[]): any;
77
+ static deserialize(obj: string, method?: string, ...args: any[]): any;
78
+ static setDefault(method: string): void;
79
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sf = void 0;
4
+ exports.stringFormat = stringFormat;
5
+ /**
6
+ * @summary Util function to provide string format functionality similar to C#'s string.format
7
+ *
8
+ * @param {string} string
9
+ * @param {Array<string | number>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
10
+ * @return {string} formatted string
11
+ *
12
+ * @function stringFormat
13
+ * @memberOf module:decorator-validation.Utils.Format
14
+ * @category Format
15
+ */
16
+ function stringFormat(string, ...args) {
17
+ return string.replace(/{(\d+)}/g, function (match, number) {
18
+ return typeof args[number] !== "undefined"
19
+ ? args[number].toString()
20
+ : "undefined";
21
+ });
22
+ }
23
+ /**
24
+ * @summary Util function to provide string format functionality similar to C#'s string.format
25
+ * @description alias for {@link stringFormat}
26
+ *
27
+ * @param {string} string
28
+ * @param {string} args replacements made by order of appearance (replacement0 wil replace {0} and so on)
29
+ * @return {string} formatted string
30
+ *
31
+ * @function sf
32
+ * @memberOf module:decorator-validation.Utils.Format
33
+ * @category Format
34
+ */
35
+ exports.sf = stringFormat;
36
+
37
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy9zdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLG9DQU1DO0FBakJEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixZQUFZLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBeUI7SUFDdkUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEtBQUssRUFBRSxNQUFNO1FBQ3ZELE9BQU8sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVztZQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QixDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ1UsUUFBQSxFQUFFLEdBQUcsWUFBWSxDQUFDIiwiZmlsZSI6InV0aWxzL3N0cmluZ3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IFV0aWwgZnVuY3Rpb24gdG8gcHJvdmlkZSBzdHJpbmcgZm9ybWF0IGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBDIydzIHN0cmluZy5mb3JtYXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZyB8IG51bWJlcj59IFthcmdzXSByZXBsYWNlbWVudHMgbWFkZSBieSBvcmRlciBvZiBhcHBlYXJhbmNlIChyZXBsYWNlbWVudDAgd2lsIHJlcGxhY2UgezB9IGFuZCBzbyBvbilcbiAqIEByZXR1cm4ge3N0cmluZ30gZm9ybWF0dGVkIHN0cmluZ1xuICpcbiAqIEBmdW5jdGlvbiBzdHJpbmdGb3JtYXRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVXRpbHMuRm9ybWF0XG4gKiBAY2F0ZWdvcnkgRm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdGb3JtYXQoc3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xuICAgIHJldHVybiB0eXBlb2YgYXJnc1tudW1iZXJdICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICA/IGFyZ3NbbnVtYmVyXS50b1N0cmluZygpXG4gICAgICA6IFwidW5kZWZpbmVkXCI7XG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgZnVuY3Rpb24gdG8gcHJvdmlkZSBzdHJpbmcgZm9ybWF0IGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBDIydzIHN0cmluZy5mb3JtYXRcbiAqIEBkZXNjcmlwdGlvbiBhbGlhcyBmb3Ige0BsaW5rIHN0cmluZ0Zvcm1hdH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncyByZXBsYWNlbWVudHMgbWFkZSBieSBvcmRlciBvZiBhcHBlYXJhbmNlIChyZXBsYWNlbWVudDAgd2lsIHJlcGxhY2UgezB9IGFuZCBzbyBvbilcbiAqIEByZXR1cm4ge3N0cmluZ30gZm9ybWF0dGVkIHN0cmluZ1xuICpcbiAqIEBmdW5jdGlvbiBzZlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5VdGlscy5Gb3JtYXRcbiAqIEBjYXRlZ29yeSBGb3JtYXRcbiAqL1xuZXhwb3J0IGNvbnN0IHNmID0gc3RyaW5nRm9ybWF0O1xuIl19
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @summary Util function to provide string format functionality similar to C#'s string.format
3
+ *
4
+ * @param {string} string
5
+ * @param {Array<string | number>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
6
+ * @return {string} formatted string
7
+ *
8
+ * @function stringFormat
9
+ * @memberOf module:decorator-validation.Utils.Format
10
+ * @category Format
11
+ */
12
+ export declare function stringFormat(string: string, ...args: (string | number)[]): string;
13
+ /**
14
+ * @summary Util function to provide string format functionality similar to C#'s string.format
15
+ * @description alias for {@link stringFormat}
16
+ *
17
+ * @param {string} string
18
+ * @param {string} args replacements made by order of appearance (replacement0 wil replace {0} and so on)
19
+ * @return {string} formatted string
20
+ *
21
+ * @function sf
22
+ * @memberOf module:decorator-validation.Utils.Format
23
+ * @category Format
24
+ */
25
+ export declare const sf: typeof stringFormat;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Validation = void 0;
4
+ const ValidatorRegistry_1 = require("./Validators/ValidatorRegistry/index.cjs");
5
+ const constants_1 = require("./Validators/constants/index.cjs");
6
+ /**
7
+ * @summary Static class acting as a namespace for the Validation
8
+ *
9
+ * @class Validation
10
+ * @static
11
+ *
12
+ * @category Validation
13
+ */
14
+ class Validation {
15
+ static { this.actingValidatorRegistry = undefined; }
16
+ constructor() { }
17
+ /**
18
+ * @summary Defines the acting ValidatorRegistry
19
+ *
20
+ * @param {IValidatorRegistry} validatorRegistry the new implementation of the validator Registry
21
+ * @param {function(Validator): Validator} [migrationHandler] the method to map the validator if required;
22
+ */
23
+ static setRegistry(validatorRegistry, migrationHandler) {
24
+ if (migrationHandler && Validation.actingValidatorRegistry)
25
+ Validation.actingValidatorRegistry.getKeys().forEach((k) => {
26
+ const validator = validatorRegistry.get(k);
27
+ if (validator)
28
+ validatorRegistry.register(migrationHandler(validator));
29
+ });
30
+ Validation.actingValidatorRegistry = validatorRegistry;
31
+ }
32
+ /**
33
+ * @summary Returns the current ValidatorRegistry
34
+ *
35
+ * @return IValidatorRegistry, defaults to {@link ValidatorRegistry}
36
+ */
37
+ static getRegistry() {
38
+ if (!Validation.actingValidatorRegistry)
39
+ Validation.actingValidatorRegistry = new ValidatorRegistry_1.ValidatorRegistry();
40
+ return Validation.actingValidatorRegistry;
41
+ }
42
+ /**
43
+ * @summary Retrieves a validator
44
+ *
45
+ * @param {string} validatorKey one of the {@link ValidationKeys}
46
+ * @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
47
+ */
48
+ static get(validatorKey) {
49
+ return Validation.getRegistry().get(validatorKey);
50
+ }
51
+ /**
52
+ * @summary Registers the provided validators onto the registry
53
+ *
54
+ * @param {T[] | ValidatorDefinition[]} validator
55
+ */
56
+ static register(...validator) {
57
+ return Validation.getRegistry().register(...validator);
58
+ }
59
+ /**
60
+ * @summary Builds the key to store as Metadata under Reflections
61
+ * @description concatenates {@link ValidationKeys#REFLECT} with the provided key
62
+ *
63
+ * @param {string} key
64
+ */
65
+ static key(key) {
66
+ return constants_1.ValidationKeys.REFLECT + key;
67
+ }
68
+ /**
69
+ * @summary Returns all registered validation keys
70
+ */
71
+ static keys() {
72
+ return this.getRegistry().getKeys();
73
+ }
74
+ }
75
+ exports.Validation = Validation;
76
+
77
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsc0VBQW1FO0FBQ25FLHNEQUF3RDtBQUV4RDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxVQUFVO2FBQ04sNEJBQXVCLEdBQ3BDLFNBQVMsQ0FBQztJQUVaLGdCQUF1QixDQUFDO0lBRXhCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsaUJBQWdELEVBQ2hELGdCQUFzRDtRQUV0RCxJQUFJLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyx1QkFBdUI7WUFDeEQsVUFBVSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6RCxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksU0FBUztvQkFBRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsQ0FBQztRQUNMLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxXQUFXO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCO1lBQ3JDLFVBQVUsQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLHFDQUFpQixFQUFFLENBQUM7UUFDL0QsT0FBTyxVQUFVLENBQUMsdUJBQXVCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBc0IsWUFBb0I7UUFDbEQsT0FBTyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLFNBQXNDO1FBRXpDLE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLDBCQUFjLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RDLENBQUM7O0FBdkVILGdDQXdFQyIsImZpbGUiOiJ2YWxpZGF0aW9uL1ZhbGlkYXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgSVZhbGlkYXRvclJlZ2lzdHJ5LCBWYWxpZGF0b3JEZWZpbml0aW9uIH0gZnJvbSBcIi4vVmFsaWRhdG9ycy90eXBlc1wiO1xuaW1wb3J0IHsgVmFsaWRhdG9yUmVnaXN0cnkgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL1ZhbGlkYXRvclJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL1ZhbGlkYXRvcnMvY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgU3RhdGljIGNsYXNzIGFjdGluZyBhcyBhIG5hbWVzcGFjZSBmb3IgdGhlIFZhbGlkYXRpb25cbiAqXG4gKiBAY2xhc3MgVmFsaWRhdGlvblxuICogQHN0YXRpY1xuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uIHtcbiAgcHJpdmF0ZSBzdGF0aWMgYWN0aW5nVmFsaWRhdG9yUmVnaXN0cnk/OiBJVmFsaWRhdG9yUmVnaXN0cnk8VmFsaWRhdG9yPiA9XG4gICAgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBhY3RpbmcgVmFsaWRhdG9yUmVnaXN0cnlcbiAgICpcbiAgICogQHBhcmFtIHtJVmFsaWRhdG9yUmVnaXN0cnl9IHZhbGlkYXRvclJlZ2lzdHJ5IHRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgdGhlIHZhbGlkYXRvciBSZWdpc3RyeVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFZhbGlkYXRvcik6IFZhbGlkYXRvcn0gW21pZ3JhdGlvbkhhbmRsZXJdIHRoZSBtZXRob2QgdG8gbWFwIHRoZSB2YWxpZGF0b3IgaWYgcmVxdWlyZWQ7XG4gICAqL1xuICBzdGF0aWMgc2V0UmVnaXN0cnkoXG4gICAgdmFsaWRhdG9yUmVnaXN0cnk6IElWYWxpZGF0b3JSZWdpc3RyeTxWYWxpZGF0b3I+LFxuICAgIG1pZ3JhdGlvbkhhbmRsZXI/OiAodmFsaWRhdG9yOiBWYWxpZGF0b3IpID0+IFZhbGlkYXRvclxuICApIHtcbiAgICBpZiAobWlncmF0aW9uSGFuZGxlciAmJiBWYWxpZGF0aW9uLmFjdGluZ1ZhbGlkYXRvclJlZ2lzdHJ5KVxuICAgICAgVmFsaWRhdGlvbi5hY3RpbmdWYWxpZGF0b3JSZWdpc3RyeS5nZXRLZXlzKCkuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSB2YWxpZGF0b3JSZWdpc3RyeS5nZXQoayk7XG4gICAgICAgIGlmICh2YWxpZGF0b3IpIHZhbGlkYXRvclJlZ2lzdHJ5LnJlZ2lzdGVyKG1pZ3JhdGlvbkhhbmRsZXIodmFsaWRhdG9yKSk7XG4gICAgICB9KTtcbiAgICBWYWxpZGF0aW9uLmFjdGluZ1ZhbGlkYXRvclJlZ2lzdHJ5ID0gdmFsaWRhdG9yUmVnaXN0cnk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgY3VycmVudCBWYWxpZGF0b3JSZWdpc3RyeVxuICAgKlxuICAgKiBAcmV0dXJuIElWYWxpZGF0b3JSZWdpc3RyeSwgZGVmYXVsdHMgdG8ge0BsaW5rIFZhbGlkYXRvclJlZ2lzdHJ5fVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVnaXN0cnkoKSB7XG4gICAgaWYgKCFWYWxpZGF0aW9uLmFjdGluZ1ZhbGlkYXRvclJlZ2lzdHJ5KVxuICAgICAgVmFsaWRhdGlvbi5hY3RpbmdWYWxpZGF0b3JSZWdpc3RyeSA9IG5ldyBWYWxpZGF0b3JSZWdpc3RyeSgpO1xuICAgIHJldHVybiBWYWxpZGF0aW9uLmFjdGluZ1ZhbGlkYXRvclJlZ2lzdHJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhIHZhbGlkYXRvclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsaWRhdG9yS2V5IG9uZSBvZiB0aGUge0BsaW5rIFZhbGlkYXRpb25LZXlzfVxuICAgKiBAcmV0dXJuIHtWYWxpZGF0b3IgfCB1bmRlZmluZWR9IHRoZSByZWdpc3RlcmVkIFZhbGlkYXRvciBvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm9ubyBtYXRjaGluZyB0aGUgcHJvdmlkZWQga2V5XG4gICAqL1xuICBzdGF0aWMgZ2V0PFQgZXh0ZW5kcyBWYWxpZGF0b3I+KHZhbGlkYXRvcktleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIFZhbGlkYXRpb24uZ2V0UmVnaXN0cnkoKS5nZXQodmFsaWRhdG9yS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgdGhlIHByb3ZpZGVkIHZhbGlkYXRvcnMgb250byB0aGUgcmVnaXN0cnlcbiAgICpcbiAgICogQHBhcmFtIHtUW10gfCBWYWxpZGF0b3JEZWZpbml0aW9uW119IHZhbGlkYXRvclxuICAgKi9cbiAgc3RhdGljIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFZhbGlkYXRvckRlZmluaXRpb24gfCBUKVtdXG4gICk6IHZvaWQge1xuICAgIHJldHVybiBWYWxpZGF0aW9uLmdldFJlZ2lzdHJ5KCkucmVnaXN0ZXIoLi4udmFsaWRhdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBCdWlsZHMgdGhlIGtleSB0byBzdG9yZSBhcyBNZXRhZGF0YSB1bmRlciBSZWZsZWN0aW9uc1xuICAgKiBAZGVzY3JpcHRpb24gY29uY2F0ZW5hdGVzIHtAbGluayBWYWxpZGF0aW9uS2V5cyNSRUZMRUNUfSB3aXRoIHRoZSBwcm92aWRlZCBrZXlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKi9cbiAgc3RhdGljIGtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBWYWxpZGF0aW9uS2V5cy5SRUZMRUNUICsga2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHVybnMgYWxsIHJlZ2lzdGVyZWQgdmFsaWRhdGlvbiBrZXlzXG4gICAqL1xuICBzdGF0aWMga2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZWdpc3RyeSgpLmdldEtleXMoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,51 @@
1
+ import { Validator } from "./Validators/Validator";
2
+ import { IValidatorRegistry, ValidatorDefinition } from "./Validators/types";
3
+ /**
4
+ * @summary Static class acting as a namespace for the Validation
5
+ *
6
+ * @class Validation
7
+ * @static
8
+ *
9
+ * @category Validation
10
+ */
11
+ export declare class Validation {
12
+ private static actingValidatorRegistry?;
13
+ private constructor();
14
+ /**
15
+ * @summary Defines the acting ValidatorRegistry
16
+ *
17
+ * @param {IValidatorRegistry} validatorRegistry the new implementation of the validator Registry
18
+ * @param {function(Validator): Validator} [migrationHandler] the method to map the validator if required;
19
+ */
20
+ static setRegistry(validatorRegistry: IValidatorRegistry<Validator>, migrationHandler?: (validator: Validator) => Validator): void;
21
+ /**
22
+ * @summary Returns the current ValidatorRegistry
23
+ *
24
+ * @return IValidatorRegistry, defaults to {@link ValidatorRegistry}
25
+ */
26
+ private static getRegistry;
27
+ /**
28
+ * @summary Retrieves a validator
29
+ *
30
+ * @param {string} validatorKey one of the {@link ValidationKeys}
31
+ * @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
32
+ */
33
+ static get<T extends Validator>(validatorKey: string): T | undefined;
34
+ /**
35
+ * @summary Registers the provided validators onto the registry
36
+ *
37
+ * @param {T[] | ValidatorDefinition[]} validator
38
+ */
39
+ static register<T extends Validator>(...validator: (ValidatorDefinition | T)[]): void;
40
+ /**
41
+ * @summary Builds the key to store as Metadata under Reflections
42
+ * @description concatenates {@link ValidationKeys#REFLECT} with the provided key
43
+ *
44
+ * @param {string} key
45
+ */
46
+ static key(key: string): string;
47
+ /**
48
+ * @summary Returns all registered validation keys
49
+ */
50
+ static keys(): string[];
51
+ }
@@ -0,0 +1,59 @@
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.DateValidator = 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 Date Validator
18
+ *
19
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
20
+ *
21
+ * @class DateValidator
22
+ * @extends Validator
23
+ *
24
+ * @category Validators
25
+ */
26
+ let DateValidator = class DateValidator extends Validator_1.Validator {
27
+ constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.DATE) {
28
+ super(message, Number.name, Date.name, String.name);
29
+ }
30
+ /**
31
+ * @summary Validates a model
32
+ *
33
+ * @param {Date | string} value
34
+ * @param {DateValidatorOptions} [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;
45
+ if (typeof value === "string")
46
+ value = new Date(value);
47
+ if (Number.isNaN(value.getDate())) {
48
+ const { message = "" } = options;
49
+ return this.getMessage(message || this.message);
50
+ }
51
+ }
52
+ };
53
+ exports.DateValidator = DateValidator;
54
+ exports.DateValidator = DateValidator = __decorate([
55
+ (0, decorators_1.validator)(constants_1.ValidationKeys.DATE),
56
+ __metadata("design:paramtypes", [String])
57
+ ], DateValidator);
58
+
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvRGF0ZVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0M7QUFDeEMsMkNBQXFFO0FBQ3JFLDZDQUF5QztBQUd6Qzs7Ozs7Ozs7O0dBU0c7QUFFSSxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEscUJBQStCO0lBQ2hFLFlBQVksVUFBa0Isa0NBQXNCLENBQUMsSUFBSTtRQUN2RCxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksU0FBUyxDQUNkLEtBQW9CLEVBQ3BCLFVBQWdDLEVBQUU7UUFFbEMsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU87UUFFaEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQTlCWSxzQ0FBYTt3QkFBYixhQUFhO0lBRHpCLElBQUEsc0JBQVMsRUFBQywwQkFBYyxDQUFDLElBQUksQ0FBQzs7R0FDbEIsYUFBYSxDQThCekIiLCJmaWxlIjoidmFsaWRhdGlvbi9WYWxpZGF0b3JzL0RhdGVWYWxpZGF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JcIjtcbmltcG9ydCB7IERFRkFVTFRfRVJST1JfTUVTU0FHRVMsIFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBEYXRlVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgRGF0ZSBWYWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0RBVEV9XG4gKlxuICogQGNsYXNzIERhdGVWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVmFsaWRhdGlvbktleXMuREFURSlcbmV4cG9ydCBjbGFzcyBEYXRlVmFsaWRhdG9yIGV4dGVuZHMgVmFsaWRhdG9yPERhdGVWYWxpZGF0b3JPcHRpb25zPiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuREFURSkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIE51bWJlci5uYW1lLCBEYXRlLm5hbWUsIFN0cmluZy5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSBtb2RlbFxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGUgfCBzdHJpbmd9IHZhbHVlXG4gICAqIEBwYXJhbSB7RGF0ZVZhbGlkYXRvck9wdGlvbnN9IFtvcHRpb25zXVxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKlxuICAgKiBAc2VlIFZhbGlkYXRvciNoYXNFcnJvcnNcbiAgICovXG4gIHB1YmxpYyBoYXNFcnJvcnMoXG4gICAgdmFsdWU6IERhdGUgfCBzdHJpbmcsXG4gICAgb3B0aW9uczogRGF0ZVZhbGlkYXRvck9wdGlvbnMgPSB7fVxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgIGlmIChOdW1iZXIuaXNOYU4odmFsdWUuZ2V0RGF0ZSgpKSkge1xuICAgICAgY29uc3QgeyBtZXNzYWdlID0gXCJcIiB9ID0gb3B0aW9ucztcbiAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2UobWVzc2FnZSB8fCB0aGlzLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { Validator } from "./Validator";
2
+ import { DateValidatorOptions } from "./types";
3
+ /**
4
+ * @summary Date Validator
5
+ *
6
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
7
+ *
8
+ * @class DateValidator
9
+ * @extends Validator
10
+ *
11
+ * @category Validators
12
+ */
13
+ export declare class DateValidator extends Validator<DateValidatorOptions> {
14
+ constructor(message?: string);
15
+ /**
16
+ * @summary Validates a model
17
+ *
18
+ * @param {Date | string} value
19
+ * @param {DateValidatorOptions} [options]
20
+ *
21
+ * @return {string | undefined}
22
+ *
23
+ * @override
24
+ *
25
+ * @see Validator#hasErrors
26
+ */
27
+ hasErrors(value: Date | string, options?: DateValidatorOptions): string | undefined;
28
+ }
@@ -0,0 +1,55 @@
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.EmailValidator = 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 Email Validator
18
+ *
19
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
20
+ *
21
+ * @class EmailValidator
22
+ * @extends PatternValidator
23
+ *
24
+ * @category Validators
25
+ */
26
+ let EmailValidator = class EmailValidator extends PatternValidator_1.PatternValidator {
27
+ constructor(message = constants_1.DEFAULT_ERROR_MESSAGES.EMAIL) {
28
+ super(message);
29
+ }
30
+ /**
31
+ * @summary Validates a model
32
+ *
33
+ * @param {string} value
34
+ * @param {PatternValidatorOptions} [options]
35
+ *
36
+ * @return {string | undefined}
37
+ *
38
+ * @override
39
+ *
40
+ * @see Validator#hasErrors
41
+ */
42
+ hasErrors(value, options = {}) {
43
+ return super.hasErrors(value, {
44
+ ...options,
45
+ pattern: options?.pattern || constants_1.DEFAULT_PATTERNS.EMAIL,
46
+ });
47
+ }
48
+ };
49
+ exports.EmailValidator = EmailValidator;
50
+ exports.EmailValidator = EmailValidator = __decorate([
51
+ (0, decorators_1.validator)(constants_1.ValidationKeys.EMAIL),
52
+ __metadata("design:paramtypes", [String])
53
+ ], EmailValidator);
54
+
55
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvRW1haWxWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkNBSXFCO0FBQ3JCLHlEQUFzRDtBQUN0RCw2Q0FBeUM7QUFHekM7Ozs7Ozs7OztHQVNHO0FBRUksSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBZSxTQUFRLG1DQUFnQjtJQUNsRCxZQUFZLFVBQWtCLGtDQUFzQixDQUFDLEtBQUs7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLFNBQVMsQ0FDZCxLQUFhLEVBQ2IsVUFBbUMsRUFBRTtRQUVyQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQzVCLEdBQUcsT0FBTztZQUNWLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLDRCQUFnQixDQUFDLEtBQUs7U0FDcEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUE7QUExQlksd0NBQWM7eUJBQWQsY0FBYztJQUQxQixJQUFBLHNCQUFTLEVBQUMsMEJBQWMsQ0FBQyxLQUFLLENBQUM7O0dBQ25CLGNBQWMsQ0EwQjFCIiwiZmlsZSI6InZhbGlkYXRpb24vVmFsaWRhdG9ycy9FbWFpbFZhbGlkYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfRVJST1JfTUVTU0FHRVMsXG4gIERFRkFVTFRfUEFUVEVSTlMsXG4gIFZhbGlkYXRpb25LZXlzLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFBhdHRlcm5WYWxpZGF0b3IgfSBmcm9tIFwiLi9QYXR0ZXJuVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgRW1haWwgVmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNFTUFJTH1cbiAqXG4gKiBAY2xhc3MgRW1haWxWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFBhdHRlcm5WYWxpZGF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLkVNQUlMKVxuZXhwb3J0IGNsYXNzIEVtYWlsVmFsaWRhdG9yIGV4dGVuZHMgUGF0dGVyblZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuRU1BSUwpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgYSBtb2RlbFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtQYXR0ZXJuVmFsaWRhdG9yT3B0aW9uc30gW29wdGlvbnNdXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zID0ge31cbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gc3VwZXIuaGFzRXJyb3JzKHZhbHVlLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgcGF0dGVybjogb3B0aW9ucz8ucGF0dGVybiB8fCBERUZBVUxUX1BBVFRFUk5TLkVNQUlMLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { PatternValidator } from "./PatternValidator";
2
+ import { PatternValidatorOptions } from "./types";
3
+ /**
4
+ * @summary Email Validator
5
+ *
6
+ * @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
7
+ *
8
+ * @class EmailValidator
9
+ * @extends PatternValidator
10
+ *
11
+ * @category Validators
12
+ */
13
+ export declare class EmailValidator extends PatternValidator {
14
+ constructor(message?: string);
15
+ /**
16
+ * @summary Validates a model
17
+ *
18
+ * @param {string} value
19
+ * @param {PatternValidatorOptions} [options]
20
+ *
21
+ * @return {string | undefined}
22
+ *
23
+ * @override
24
+ *
25
+ * @see Validator#hasErrors
26
+ */
27
+ hasErrors(value: string, options?: PatternValidatorOptions): string | undefined;
28
+ }