@decaf-ts/decorator-validation 1.0.7 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/decorator-validation.bundle.min.js +1 -1
- package/dist/esm/decorator-validation.bundle.min.esm.js +1 -1
- package/lib/esm/index.d.ts +6 -1
- package/lib/esm/index.js +68 -1
- package/lib/esm/model/Model.d.ts +3 -1
- package/lib/esm/model/Model.js +316 -1
- package/lib/esm/model/ModelErrorDefinition.d.ts +1 -1
- package/lib/esm/model/ModelErrorDefinition.js +55 -3
- package/lib/esm/model/Registry.d.ts +1 -1
- package/lib/esm/model/Registry.js +76 -1
- package/lib/esm/model/constants.js +44 -1
- package/lib/esm/model/construction.js +124 -1
- package/lib/esm/model/decorators.d.ts +3 -3
- package/lib/esm/model/decorators.js +68 -1
- package/lib/esm/model/index.d.ts +3 -3
- package/lib/esm/model/index.js +9 -1
- package/lib/esm/model/types.js +3 -0
- package/lib/esm/reflection/decorators.d.ts +15 -0
- package/lib/esm/reflection/decorators.js +28 -0
- package/lib/esm/reflection/index.d.ts +2 -0
- package/lib/esm/reflection/index.js +4 -0
- package/lib/esm/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
- package/lib/esm/reflection/utils.js +239 -0
- package/lib/esm/utils/constants.js +25 -1
- package/lib/esm/utils/dates.d.ts +76 -0
- package/lib/esm/utils/dates.js +241 -0
- package/lib/esm/utils/equality.d.ts +14 -0
- package/lib/esm/utils/equality.js +34 -0
- package/lib/esm/utils/hashing.d.ts +42 -0
- package/lib/esm/utils/hashing.js +73 -0
- package/lib/esm/utils/index.d.ts +6 -2
- package/lib/esm/utils/index.js +10 -1
- package/lib/esm/utils/registry.js +3 -0
- package/lib/esm/utils/serialization.js +53 -1
- package/lib/esm/utils/strings.d.ts +25 -0
- package/lib/esm/utils/strings.js +31 -0
- package/lib/esm/validation/Validation.d.ts +2 -1
- package/lib/esm/validation/Validation.js +63 -1
- package/lib/esm/validation/Validators/DateValidator.js +55 -1
- package/lib/esm/validation/Validators/EmailValidator.d.ts +0 -1
- package/lib/esm/validation/Validators/EmailValidator.js +49 -1
- package/lib/esm/validation/Validators/ListValidator.js +67 -1
- package/lib/esm/validation/Validators/MaxLengthValidator.js +55 -1
- package/lib/esm/validation/Validators/MaxValidator.js +59 -1
- package/lib/esm/validation/Validators/MinLengthValidator.js +55 -1
- package/lib/esm/validation/Validators/MinValidator.js +59 -1
- package/lib/esm/validation/Validators/PasswordValidator.js +52 -1
- package/lib/esm/validation/Validators/PatternValidator.d.ts +3 -3
- package/lib/esm/validation/Validators/PatternValidator.js +72 -1
- package/lib/esm/validation/Validators/RequiredValidator.js +57 -1
- package/lib/esm/validation/Validators/StepValidator.js +54 -1
- package/lib/esm/validation/Validators/TypeValidator.js +42 -1
- package/lib/esm/validation/Validators/URLValidator.d.ts +0 -1
- package/lib/esm/validation/Validators/URLValidator.js +48 -1
- package/lib/esm/validation/Validators/Validator.js +50 -1
- package/lib/esm/validation/Validators/ValidatorRegistry.js +81 -1
- package/lib/esm/validation/Validators/constants.d.ts +8 -4
- package/lib/esm/validation/Validators/constants.js +135 -1
- package/lib/esm/validation/Validators/decorators.d.ts +13 -0
- package/lib/esm/validation/Validators/decorators.js +23 -0
- package/lib/esm/validation/Validators/index.d.ts +9 -7
- package/lib/esm/validation/Validators/index.js +54 -1
- package/lib/esm/validation/Validators/types.d.ts +2 -2
- package/lib/esm/validation/Validators/types.js +3 -0
- package/lib/esm/validation/decorators.d.ts +14 -87
- package/lib/esm/validation/decorators.js +320 -1
- package/lib/esm/validation/index.d.ts +1 -10
- package/lib/esm/validation/index.js +6 -1
- package/lib/esm/validation/types.d.ts +11 -0
- package/lib/esm/validation/types.js +3 -0
- package/lib/index.cjs +85 -1
- package/lib/index.d.ts +6 -1
- package/lib/model/Model.cjs +321 -1
- package/lib/model/Model.d.ts +3 -1
- package/lib/model/ModelErrorDefinition.cjs +59 -3
- package/lib/model/ModelErrorDefinition.d.ts +1 -1
- package/lib/model/Registry.cjs +81 -1
- package/lib/model/Registry.d.ts +1 -1
- package/lib/model/constants.cjs +47 -1
- package/lib/model/construction.cjs +129 -1
- package/lib/model/decorators.cjs +73 -1
- package/lib/model/decorators.d.ts +3 -3
- package/lib/model/index.cjs +25 -1
- package/lib/model/index.d.ts +3 -3
- package/lib/model/types.cjs +4 -1
- package/lib/reflection/decorators.cjs +31 -0
- package/lib/reflection/decorators.d.ts +15 -0
- package/lib/reflection/index.cjs +20 -0
- package/lib/reflection/index.d.ts +2 -0
- package/lib/reflection/utils.cjs +251 -0
- package/lib/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
- package/lib/utils/constants.cjs +28 -1
- package/lib/utils/dates.cjs +249 -0
- package/lib/utils/dates.d.ts +76 -0
- package/lib/utils/equality.cjs +37 -0
- package/lib/utils/equality.d.ts +14 -0
- package/lib/utils/hashing.cjs +78 -0
- package/lib/utils/hashing.d.ts +42 -0
- package/lib/utils/index.cjs +26 -1
- package/lib/utils/index.d.ts +6 -2
- package/lib/utils/registry.cjs +4 -1
- package/lib/utils/serialization.cjs +57 -1
- package/lib/utils/strings.cjs +35 -0
- package/lib/utils/strings.d.ts +25 -0
- package/lib/validation/Validation.cjs +67 -1
- package/lib/validation/Validation.d.ts +2 -1
- package/lib/validation/Validators/DateValidator.cjs +58 -1
- package/lib/validation/Validators/EmailValidator.cjs +52 -1
- package/lib/validation/Validators/EmailValidator.d.ts +0 -1
- package/lib/validation/Validators/ListValidator.cjs +70 -1
- package/lib/validation/Validators/MaxLengthValidator.cjs +58 -1
- package/lib/validation/Validators/MaxValidator.cjs +62 -1
- package/lib/validation/Validators/MinLengthValidator.cjs +58 -1
- package/lib/validation/Validators/MinValidator.cjs +62 -1
- package/lib/validation/Validators/PasswordValidator.cjs +55 -1
- package/lib/validation/Validators/PatternValidator.cjs +75 -1
- package/lib/validation/Validators/PatternValidator.d.ts +3 -3
- package/lib/validation/Validators/RequiredValidator.cjs +60 -1
- package/lib/validation/Validators/StepValidator.cjs +57 -1
- package/lib/validation/Validators/TypeValidator.cjs +46 -1
- package/lib/validation/Validators/URLValidator.cjs +51 -1
- package/lib/validation/Validators/URLValidator.d.ts +0 -1
- package/lib/validation/Validators/Validator.cjs +54 -1
- package/lib/validation/Validators/ValidatorRegistry.cjs +86 -1
- package/lib/validation/Validators/constants.cjs +138 -1
- package/lib/validation/Validators/constants.d.ts +8 -4
- package/lib/validation/Validators/decorators.cjs +26 -0
- package/lib/validation/Validators/decorators.d.ts +13 -0
- package/lib/validation/Validators/index.cjs +71 -1
- package/lib/validation/Validators/index.d.ts +9 -7
- package/lib/validation/Validators/types.cjs +4 -1
- package/lib/validation/Validators/types.d.ts +2 -2
- package/lib/validation/decorators.cjs +337 -1
- package/lib/validation/decorators.d.ts +14 -87
- package/lib/validation/index.cjs +22 -1
- package/lib/validation/index.d.ts +1 -10
- package/lib/validation/types.cjs +4 -1
- package/lib/validation/types.d.ts +11 -0
- package/package.json +17 -13
- package/lib/esm/utils/general.js +0 -1
- package/lib/utils/general.cjs +0 -1
|
@@ -1 +1,124 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Model } from "./Model";
|
|
2
|
+
import { ValidationKeys } from "../validation/Validators/constants";
|
|
3
|
+
import { ReservedModels } from "./constants";
|
|
4
|
+
import { ModelKeys } from "../utils/constants";
|
|
5
|
+
import { getPropertyDecorators, isModel } from "../reflection/utils";
|
|
6
|
+
import { sf } from "../utils/strings";
|
|
7
|
+
/**
|
|
8
|
+
* @summary Repopulates the Object properties with the ones from the new object
|
|
9
|
+
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self
|
|
10
|
+
*
|
|
11
|
+
* @param {T} self
|
|
12
|
+
* @param {T | Record<string, any>} [obj]
|
|
13
|
+
*
|
|
14
|
+
* @function constructFromObject
|
|
15
|
+
* @memberOf module:decorator-validation.Construction
|
|
16
|
+
* @category Construction
|
|
17
|
+
*/
|
|
18
|
+
export function constructFromObject(self, obj) {
|
|
19
|
+
if (!obj)
|
|
20
|
+
return self;
|
|
21
|
+
for (const prop in obj)
|
|
22
|
+
if (obj.hasOwnProperty(prop) &&
|
|
23
|
+
(self.hasOwnProperty(prop) ||
|
|
24
|
+
(self.prototype && self.prototype.hasOwnProperty(prop))))
|
|
25
|
+
self[prop] = obj[prop] || undefined;
|
|
26
|
+
return self;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @summary Repopulates the instance with the ones from the new Model Object
|
|
30
|
+
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self.
|
|
31
|
+
* Is aware of nested Model Objects and rebuilds them also.
|
|
32
|
+
* When List properties are decorated with {@link list}, they list items will also be rebuilt
|
|
33
|
+
*
|
|
34
|
+
* @param {T} self
|
|
35
|
+
* @param {T | Record<string, any>} [obj]
|
|
36
|
+
*
|
|
37
|
+
* @function constructFromModel
|
|
38
|
+
* @memberOf module:decorator-validation.Construction
|
|
39
|
+
* @category Construction
|
|
40
|
+
*/
|
|
41
|
+
export function constructFromModel(self, obj) {
|
|
42
|
+
if (!obj)
|
|
43
|
+
return self;
|
|
44
|
+
let decorators, dec;
|
|
45
|
+
for (const prop in obj)
|
|
46
|
+
if (obj.hasOwnProperty(prop) &&
|
|
47
|
+
(self.hasOwnProperty(prop) ||
|
|
48
|
+
(self.prototype && self.prototype.hasOwnProperty(prop)))) {
|
|
49
|
+
self[prop] =
|
|
50
|
+
obj[prop] || undefined;
|
|
51
|
+
if (typeof self[prop] !== "object")
|
|
52
|
+
continue;
|
|
53
|
+
if (isModel(self[prop])) {
|
|
54
|
+
try {
|
|
55
|
+
self[prop] = Model.build(self[prop]);
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
console.error(e);
|
|
59
|
+
}
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const allDecorators = getPropertyDecorators(ValidationKeys.REFLECT, self, prop).decorators;
|
|
63
|
+
decorators = allDecorators.filter((d) => [ModelKeys.TYPE, ValidationKeys.TYPE].indexOf(d.key) !== -1);
|
|
64
|
+
if (!decorators || !decorators.length)
|
|
65
|
+
throw new Error(sf("failed to find decorators for property {0}", prop));
|
|
66
|
+
dec = decorators.pop();
|
|
67
|
+
const clazz = dec.props.name
|
|
68
|
+
? [dec.props.name]
|
|
69
|
+
: Array.isArray(dec.props.customTypes)
|
|
70
|
+
? dec.props.customTypes
|
|
71
|
+
: [dec.props.customTypes];
|
|
72
|
+
const reserved = Object.values(ReservedModels).map((v) => v.toLowerCase());
|
|
73
|
+
clazz.forEach((c) => {
|
|
74
|
+
if (reserved.indexOf(c.toLowerCase()) === -1)
|
|
75
|
+
try {
|
|
76
|
+
switch (c) {
|
|
77
|
+
case "Array":
|
|
78
|
+
case "Set":
|
|
79
|
+
if (allDecorators.length) {
|
|
80
|
+
const listDec = allDecorators.find((d) => d.key === ValidationKeys.LIST);
|
|
81
|
+
if (listDec) {
|
|
82
|
+
if (c === "Array")
|
|
83
|
+
self[prop] = self[prop].map((el) => Model.build(el, listDec.props.class));
|
|
84
|
+
if (c === "Set") {
|
|
85
|
+
const s = new Set();
|
|
86
|
+
for (const v of self[prop]) {
|
|
87
|
+
s.add(Model.build(v, listDec.props.class));
|
|
88
|
+
}
|
|
89
|
+
self[prop] = s;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
if (self[prop])
|
|
96
|
+
self[prop] = Model.build(self[prop], c);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
console.log(e);
|
|
101
|
+
// do nothing. we have no registry of this class
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return self;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* @summary Helper Function to override constructors
|
|
109
|
+
*
|
|
110
|
+
* @param {Function} constructor
|
|
111
|
+
* @param {any[]} [args]
|
|
112
|
+
* @return {T} the new instance
|
|
113
|
+
*
|
|
114
|
+
* @function construct
|
|
115
|
+
* @memberOf module:decorator-validation.Construction
|
|
116
|
+
* @category Construction
|
|
117
|
+
*/
|
|
118
|
+
export function construct(constructor, ...args) {
|
|
119
|
+
const _constr = (...argz) => new constructor(...argz);
|
|
120
|
+
_constr.prototype = constructor.prototype;
|
|
121
|
+
return _constr(...args);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9jb25zdHJ1Y3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxJQUFPLEVBQ1AsR0FBNkI7SUFFN0IsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN0QixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUc7UUFDcEIsSUFDRSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN4QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUN4QixDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUV6RCxJQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUNqRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQU8sRUFDUCxHQUE2QjtJQUU3QixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXRCLElBQUksVUFBK0IsRUFBRSxHQUFzQixDQUFDO0lBRTVELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRztRQUNwQixJQUNFLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3hCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQzFELENBQUM7WUFDQSxJQUE0QixDQUFDLElBQUksQ0FBQztnQkFDaEMsR0FBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUM7WUFDbEQsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRO2dCQUFFLFNBQVM7WUFDN0MsSUFBSSxPQUFPLENBQUUsSUFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQztvQkFDRixJQUE0QixDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQzlDLElBQTRCLENBQUMsSUFBSSxDQUFDLENBQ3BDLENBQUM7Z0JBQ0osQ0FBQztnQkFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO29CQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixDQUFDO2dCQUNELFNBQVM7WUFDWCxDQUFDO1lBRUQsTUFBTSxhQUFhLEdBQXdCLHFCQUFxQixDQUM5RCxjQUFjLENBQUMsT0FBTyxFQUN0QixJQUFJLEVBQ0osSUFBSSxDQUNMLENBQUMsVUFBVSxDQUFDO1lBQ2IsVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQy9CLENBQUMsQ0FBb0IsRUFBRSxFQUFFLENBQ3ZCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDOUQsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsNENBQTRDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxRSxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBdUIsQ0FBQztZQUM1QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNsQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztvQkFDcEMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVztvQkFDdkIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3ZELENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDSixDQUFDO1lBRWQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUM7d0JBQ0gsUUFBUSxDQUFDLEVBQUUsQ0FBQzs0QkFDVixLQUFLLE9BQU8sQ0FBQzs0QkFDYixLQUFLLEtBQUs7Z0NBQ1IsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7b0NBQ3pCLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQ2hDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQ3JDLENBQUM7b0NBQ0YsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3Q0FDWixJQUFJLENBQUMsS0FBSyxPQUFPOzRDQUNkLElBQTRCLENBQUMsSUFBSSxDQUFDLEdBQ2pDLElBQ0QsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUN0QixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUNyQyxDQUFDO3dDQUNKLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDOzRDQUNoQixNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDOzRDQUNwQixLQUFLLE1BQU0sQ0FBQyxJQUFLLElBQTRCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnREFDcEQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7NENBQzdDLENBQUM7NENBQ0EsSUFBNEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0NBQzFDLENBQUM7b0NBQ0gsQ0FBQztnQ0FDSCxDQUFDO2dDQUNELE1BQU07NEJBQ1I7Z0NBQ0UsSUFBSyxJQUE0QixDQUFDLElBQUksQ0FBQztvQ0FDcEMsSUFBNEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ1YsQ0FBQyxDQUNGLENBQUM7d0JBQ1IsQ0FBQztvQkFDSCxDQUFDO29CQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7d0JBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ2YsZ0RBQWdEO29CQUNsRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLFdBQWdCLEVBQ2hCLEdBQUcsSUFBVztJQUVkLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0QsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQzFDLE9BQU8sT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsImZpbGUiOiJtb2RlbC9jb25zdHJ1Y3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuL01vZGVsXCI7XG5pbXBvcnQgeyBEZWNvcmF0b3JNZXRhZGF0YSB9IGZyb20gXCIuLi92YWxpZGF0aW9uL3R5cGVzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuLi92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBSZXNlcnZlZE1vZGVscyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTW9kZWxLZXlzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlEZWNvcmF0b3JzLCBpc01vZGVsIH0gZnJvbSBcIi4uL3JlZmxlY3Rpb24vdXRpbHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZ3NcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBSZXBvcHVsYXRlcyB0aGUgT2JqZWN0IHByb3BlcnRpZXMgd2l0aCB0aGUgb25lcyBmcm9tIHRoZSBuZXcgb2JqZWN0XG4gKiBAZGVzY3JpcHRpb24gSXRlcmF0ZXMgYWxsIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG9iaiAoaWYgZXhpc3RpbmcpIGFuZCBzZWxmLCBhbmQgY29waWVzIHRoZW0gb250byBzZWxmXG4gKlxuICogQHBhcmFtIHtUfSBzZWxmXG4gKiBAcGFyYW0ge1QgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb2JqXVxuICpcbiAqIEBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tT2JqZWN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkNvbnN0cnVjdGlvblxuICogQGNhdGVnb3J5IENvbnN0cnVjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbU9iamVjdDxUIGV4dGVuZHMgTW9kZWw+KFxuICBzZWxmOiBULFxuICBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55Pixcbikge1xuICBpZiAoIW9iaikgcmV0dXJuIHNlbGY7XG4gIGZvciAoY29uc3QgcHJvcCBpbiBvYmopXG4gICAgaWYgKFxuICAgICAgb2JqLmhhc093blByb3BlcnR5KHByb3ApICYmXG4gICAgICAoc2VsZi5oYXNPd25Qcm9wZXJ0eShwcm9wKSB8fFxuICAgICAgICAoc2VsZi5wcm90b3R5cGUgJiYgc2VsZi5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkocHJvcCkpKVxuICAgIClcbiAgICAgIChzZWxmIGFzIGFueSlbcHJvcF0gPSBvYmpbcHJvcF0gfHwgdW5kZWZpbmVkO1xuICByZXR1cm4gc2VsZjtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBSZXBvcHVsYXRlcyB0aGUgaW5zdGFuY2Ugd2l0aCB0aGUgb25lcyBmcm9tIHRoZSBuZXcgTW9kZWwgT2JqZWN0XG4gKiBAZGVzY3JpcHRpb24gSXRlcmF0ZXMgYWxsIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG9iaiAoaWYgZXhpc3RpbmcpIGFuZCBzZWxmLCBhbmQgY29waWVzIHRoZW0gb250byBzZWxmLlxuICogSXMgYXdhcmUgb2YgbmVzdGVkIE1vZGVsIE9iamVjdHMgYW5kIHJlYnVpbGRzIHRoZW0gYWxzby5cbiAqIFdoZW4gTGlzdCBwcm9wZXJ0aWVzIGFyZSBkZWNvcmF0ZWQgd2l0aCB7QGxpbmsgbGlzdH0sIHRoZXkgbGlzdCBpdGVtcyB3aWxsIGFsc28gYmUgcmVidWlsdFxuICpcbiAqIEBwYXJhbSB7VH0gc2VsZlxuICogQHBhcmFtIHtUIHwgUmVjb3JkPHN0cmluZywgYW55Pn0gW29ial1cbiAqXG4gKiBAZnVuY3Rpb24gY29uc3RydWN0RnJvbU1vZGVsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkNvbnN0cnVjdGlvblxuICogQGNhdGVnb3J5IENvbnN0cnVjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0RnJvbU1vZGVsPFQgZXh0ZW5kcyBNb2RlbD4oXG4gIHNlbGY6IFQsXG4gIG9iaj86IFQgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIGlmICghb2JqKSByZXR1cm4gc2VsZjtcblxuICBsZXQgZGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSwgZGVjOiBEZWNvcmF0b3JNZXRhZGF0YTtcblxuICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKVxuICAgIGlmIChcbiAgICAgIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJlxuICAgICAgKHNlbGYuaGFzT3duUHJvcGVydHkocHJvcCkgfHxcbiAgICAgICAgKHNlbGYucHJvdG90eXBlICYmIHNlbGYucHJvdG90eXBlLmhhc093blByb3BlcnR5KHByb3ApKSlcbiAgICApIHtcbiAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdID1cbiAgICAgICAgKG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSB8fCB1bmRlZmluZWQ7XG4gICAgICBpZiAodHlwZW9mIHNlbGZbcHJvcF0gIT09IFwib2JqZWN0XCIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGlzTW9kZWwoKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0pKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPSBNb2RlbC5idWlsZChcbiAgICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFsbERlY29yYXRvcnM6IERlY29yYXRvck1ldGFkYXRhW10gPSBnZXRQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QsXG4gICAgICAgIHNlbGYsXG4gICAgICAgIHByb3AsXG4gICAgICApLmRlY29yYXRvcnM7XG4gICAgICBkZWNvcmF0b3JzID0gYWxsRGVjb3JhdG9ycy5maWx0ZXIoXG4gICAgICAgIChkOiBEZWNvcmF0b3JNZXRhZGF0YSkgPT5cbiAgICAgICAgICBbTW9kZWxLZXlzLlRZUEUsIFZhbGlkYXRpb25LZXlzLlRZUEVdLmluZGV4T2YoZC5rZXkpICE9PSAtMSxcbiAgICAgICk7XG4gICAgICBpZiAoIWRlY29yYXRvcnMgfHwgIWRlY29yYXRvcnMubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc2YoXCJmYWlsZWQgdG8gZmluZCBkZWNvcmF0b3JzIGZvciBwcm9wZXJ0eSB7MH1cIiwgcHJvcCkpO1xuICAgICAgZGVjID0gZGVjb3JhdG9ycy5wb3AoKSBhcyBEZWNvcmF0b3JNZXRhZGF0YTtcbiAgICAgIGNvbnN0IGNsYXp6ID0gZGVjLnByb3BzLm5hbWVcbiAgICAgICAgPyBbZGVjLnByb3BzLm5hbWVdXG4gICAgICAgIDogQXJyYXkuaXNBcnJheShkZWMucHJvcHMuY3VzdG9tVHlwZXMpXG4gICAgICAgICAgPyBkZWMucHJvcHMuY3VzdG9tVHlwZXNcbiAgICAgICAgICA6IFtkZWMucHJvcHMuY3VzdG9tVHlwZXNdO1xuICAgICAgY29uc3QgcmVzZXJ2ZWQgPSBPYmplY3QudmFsdWVzKFJlc2VydmVkTW9kZWxzKS5tYXAoKHYpID0+XG4gICAgICAgIHYudG9Mb3dlckNhc2UoKSxcbiAgICAgICkgYXMgc3RyaW5nW107XG5cbiAgICAgIGNsYXp6LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgaWYgKHJlc2VydmVkLmluZGV4T2YoYy50b0xvd2VyQ2FzZSgpKSA9PT0gLTEpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgICAgICBjYXNlIFwiQXJyYXlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIlNldFwiOlxuICAgICAgICAgICAgICAgIGlmIChhbGxEZWNvcmF0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdERlYyA9IGFsbERlY29yYXRvcnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGQpID0+IGQua2V5ID09PSBWYWxpZGF0aW9uS2V5cy5MSVNULFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsaXN0RGVjKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjID09PSBcIkFycmF5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0gPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICAgICAgICAgICAgICAgICAgICApW3Byb3BdLm1hcCgoZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsLmJ1aWxkKGVsLCBsaXN0RGVjLnByb3BzLmNsYXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCJTZXRcIikge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzLmFkZChNb2RlbC5idWlsZCh2LCBsaXN0RGVjLnByb3BzLmNsYXNzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIChzZWxmIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdID0gcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoKHNlbGYgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0pXG4gICAgICAgICAgICAgICAgICAoc2VsZiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSA9IE1vZGVsLmJ1aWxkKFxuICAgICAgICAgICAgICAgICAgICBzZWxmW3Byb3BdLFxuICAgICAgICAgICAgICAgICAgICBjLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgLy8gZG8gbm90aGluZy4gd2UgaGF2ZSBubyByZWdpc3RyeSBvZiB0aGlzIGNsYXNzXG4gICAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gIHJldHVybiBzZWxmO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEhlbHBlciBGdW5jdGlvbiB0byBvdmVycmlkZSBjb25zdHJ1Y3RvcnNcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdXG4gKiBAcmV0dXJuIHtUfSB0aGUgbmV3IGluc3RhbmNlXG4gKlxuICogQGZ1bmN0aW9uIGNvbnN0cnVjdFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5Db25zdHJ1Y3Rpb25cbiAqIEBjYXRlZ29yeSBDb25zdHJ1Y3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdDxUIGV4dGVuZHMgTW9kZWw+KFxuICBjb25zdHJ1Y3RvcjogYW55LFxuICAuLi5hcmdzOiBhbnlbXVxuKTogVCB7XG4gIGNvbnN0IF9jb25zdHIgPSAoLi4uYXJnejogYW55W10pID0+IG5ldyBjb25zdHJ1Y3RvciguLi5hcmd6KTtcbiAgX2NvbnN0ci5wcm90b3R5cGUgPSBjb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIHJldHVybiBfY29uc3RyKC4uLmFyZ3MpO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cG8gb2YgYSBNb2RlbCBidWlsZGVyIGZ1bmN0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkNvbnN0cnVjdGlvblxuICogQGNhdGVnb3J5IENvbnN0cnVjdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEJ1aWxkZXJGdW5jdGlvbiA9IDxUIGV4dGVuZHMgTW9kZWw+KFxuICBzZWxmOiBULFxuICBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55PixcbikgPT4gVDtcbiJdfQ==
|
|
@@ -17,17 +17,17 @@ export type InstanceCallback = (instance: any, ...args: any[]) => void;
|
|
|
17
17
|
/**
|
|
18
18
|
* @summary Defines a class as a Model class
|
|
19
19
|
* @description
|
|
20
|
+
*
|
|
20
21
|
* - Registers the class under the model registry so it can be easily rebuilt;
|
|
21
22
|
* - Overrides the class constructor;
|
|
22
23
|
* - Runs the global {@link ModelBuilderFunction} if defined;
|
|
23
24
|
* - Runs the optional {@link InstanceCallback} if provided;
|
|
24
25
|
* - Defines an {@link ModelKeys#ANCHOR} property for serialization and model rebuilding purposes;
|
|
25
26
|
*
|
|
26
|
-
* @
|
|
27
|
-
* @
|
|
27
|
+
* @param {Record<string, any>} [props] additional properties to store as metadata
|
|
28
|
+
* @param {InstanceCallback} [instanceCallback] optional callback that will be called with the instance upon instantiation. defaults to undefined
|
|
28
29
|
*
|
|
29
30
|
* @function model
|
|
30
|
-
* @memberOf module:decorator-validation.Decorators.Model
|
|
31
31
|
* @category Decorators
|
|
32
32
|
*/
|
|
33
33
|
export declare function model(props?: Record<string, any>, instanceCallback?: InstanceCallback): (original: any) => any;
|
|
@@ -1 +1,68 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { construct } from "./construction";
|
|
2
|
+
import { ModelKeys } from "../utils/constants";
|
|
3
|
+
import { Model } from "./Model";
|
|
4
|
+
/**
|
|
5
|
+
* @summary Builds the key to store as Metadata under Reflections
|
|
6
|
+
* @description concatenates {@link ModelKeys#REFLECT} with the provided key
|
|
7
|
+
* @param {string} str
|
|
8
|
+
*
|
|
9
|
+
* @function getModelKey
|
|
10
|
+
* @memberOf module:decorator-validation.Model
|
|
11
|
+
* @category Utilities
|
|
12
|
+
*/
|
|
13
|
+
export const getModelKey = (str) => ModelKeys.REFLECT + str;
|
|
14
|
+
/**
|
|
15
|
+
* @summary Defines a class as a Model class
|
|
16
|
+
* @description
|
|
17
|
+
*
|
|
18
|
+
* - Registers the class under the model registry so it can be easily rebuilt;
|
|
19
|
+
* - Overrides the class constructor;
|
|
20
|
+
* - Runs the global {@link ModelBuilderFunction} if defined;
|
|
21
|
+
* - Runs the optional {@link InstanceCallback} if provided;
|
|
22
|
+
* - Defines an {@link ModelKeys#ANCHOR} property for serialization and model rebuilding purposes;
|
|
23
|
+
*
|
|
24
|
+
* @param {Record<string, any>} [props] additional properties to store as metadata
|
|
25
|
+
* @param {InstanceCallback} [instanceCallback] optional callback that will be called with the instance upon instantiation. defaults to undefined
|
|
26
|
+
*
|
|
27
|
+
* @function model
|
|
28
|
+
* @category Decorators
|
|
29
|
+
*/
|
|
30
|
+
export function model(props, instanceCallback) {
|
|
31
|
+
return (original) => {
|
|
32
|
+
// the new constructor behaviour
|
|
33
|
+
const newConstructor = function (...args) {
|
|
34
|
+
const instance = construct(original, ...args);
|
|
35
|
+
// run a builder function if defined with the first argument (The ModelArg)
|
|
36
|
+
const builder = Model.getBuilder();
|
|
37
|
+
if (builder)
|
|
38
|
+
builder(instance, args.length ? args[0] : undefined);
|
|
39
|
+
const metadata = Object.assign({}, {
|
|
40
|
+
class: original.name,
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(instance, ModelKeys.ANCHOR, {
|
|
43
|
+
writable: false,
|
|
44
|
+
enumerable: false,
|
|
45
|
+
configurable: false,
|
|
46
|
+
value: metadata,
|
|
47
|
+
});
|
|
48
|
+
Reflect.defineMetadata(getModelKey(ModelKeys.MODEL), Object.assign(metadata, props || {}), instance.constructor);
|
|
49
|
+
if (instanceCallback)
|
|
50
|
+
instanceCallback(instance, ...args);
|
|
51
|
+
return instance;
|
|
52
|
+
};
|
|
53
|
+
// copy prototype so instanceof operator still works
|
|
54
|
+
newConstructor.prototype = original.prototype;
|
|
55
|
+
// Sets the proper constructor name for type verification
|
|
56
|
+
Object.defineProperty(newConstructor, "name", {
|
|
57
|
+
writable: false,
|
|
58
|
+
enumerable: true,
|
|
59
|
+
configurable: false,
|
|
60
|
+
value: original.prototype.constructor.name,
|
|
61
|
+
});
|
|
62
|
+
Model.register(newConstructor);
|
|
63
|
+
// return new constructor (will override original)
|
|
64
|
+
return newConstructor;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFRcEU7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDbkIsS0FBMkIsRUFDM0IsZ0JBQW1DO0lBRW5DLE9BQU8sQ0FBQyxRQUFhLEVBQUUsRUFBRTtRQUN2QixnQ0FBZ0M7UUFDaEMsTUFBTSxjQUFjLEdBQVEsVUFBVSxHQUFHLElBQVc7WUFDbEQsTUFBTSxRQUFRLEdBQWdDLFNBQVMsQ0FDckQsUUFBUSxFQUNSLEdBQUcsSUFBSSxDQUNSLENBQUM7WUFDRiwyRUFBMkU7WUFDM0UsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksT0FBTztnQkFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFbEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDNUIsRUFBRSxFQUNGO2dCQUNFLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSTthQUNyQixDQUNGLENBQUM7WUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUNoRCxRQUFRLEVBQUUsS0FBSztnQkFDZixVQUFVLEVBQUUsS0FBSztnQkFDakIsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLEtBQUssRUFBRSxRQUFRO2FBQ2hCLENBQUMsQ0FBQztZQUVILE9BQU8sQ0FBQyxjQUFjLENBQ3BCLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsRUFDcEMsUUFBUSxDQUFDLFdBQVcsQ0FDckIsQ0FBQztZQUVGLElBQUksZ0JBQWdCO2dCQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRTFELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQztRQUVGLG9EQUFvRDtRQUNwRCxjQUFjLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDOUMseURBQXlEO1FBQ3pELE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtZQUM1QyxRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxLQUFLO1lBQ25CLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJO1NBQzNDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFL0Isa0RBQWtEO1FBQ2xELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJmaWxlIjoibW9kZWwvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnN0cnVjdCB9IGZyb20gXCIuL2NvbnN0cnVjdGlvblwiO1xuaW1wb3J0IHsgTW9kZWxLZXlzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi9Nb2RlbFwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEJ1aWxkcyB0aGUga2V5IHRvIHN0b3JlIGFzIE1ldGFkYXRhIHVuZGVyIFJlZmxlY3Rpb25zXG4gKiBAZGVzY3JpcHRpb24gY29uY2F0ZW5hdGVzIHtAbGluayBNb2RlbEtleXMjUkVGTEVDVH0gd2l0aCB0aGUgcHJvdmlkZWQga2V5XG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKlxuICogQGZ1bmN0aW9uIGdldE1vZGVsS2V5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLk1vZGVsXG4gKiBAY2F0ZWdvcnkgVXRpbGl0aWVzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNb2RlbEtleSA9IChzdHI6IHN0cmluZykgPT4gTW9kZWxLZXlzLlJFRkxFQ1QgKyBzdHI7XG4vKipcbiAqIEBzdW1tYXJ5IGRlZmluZXMgdGhlIHRwZSBvcyBhbiBJbnN0YW5jZUNhbGxiYWNrIGZ1bmN0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkNvbnN0cnVjdGlvblxuICogQGNhdGVnb3J5IENvbnN0cnVjdGlvblxuICovXG5leHBvcnQgdHlwZSBJbnN0YW5jZUNhbGxiYWNrID0gKGluc3RhbmNlOiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBjbGFzcyBhcyBhIE1vZGVsIGNsYXNzXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiAtIFJlZ2lzdGVycyB0aGUgY2xhc3MgdW5kZXIgdGhlIG1vZGVsIHJlZ2lzdHJ5IHNvIGl0IGNhbiBiZSBlYXNpbHkgcmVidWlsdDtcbiAqIC0gT3ZlcnJpZGVzIHRoZSBjbGFzcyBjb25zdHJ1Y3RvcjtcbiAqIC0gUnVucyB0aGUgZ2xvYmFsIHtAbGluayBNb2RlbEJ1aWxkZXJGdW5jdGlvbn0gaWYgZGVmaW5lZDtcbiAqIC0gUnVucyB0aGUgb3B0aW9uYWwge0BsaW5rIEluc3RhbmNlQ2FsbGJhY2t9IGlmIHByb3ZpZGVkO1xuICogLSBEZWZpbmVzIGFuIHtAbGluayBNb2RlbEtleXMjQU5DSE9SfSBwcm9wZXJ0eSBmb3Igc2VyaWFsaXphdGlvbiBhbmQgbW9kZWwgcmVidWlsZGluZyBwdXJwb3NlcztcbiAqXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFtwcm9wc10gYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIHN0b3JlIGFzIG1ldGFkYXRhXG4gKiBAcGFyYW0ge0luc3RhbmNlQ2FsbGJhY2t9IFtpbnN0YW5jZUNhbGxiYWNrXSBvcHRpb25hbCBjYWxsYmFjayB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGluc3RhbmNlIHVwb24gaW5zdGFudGlhdGlvbi4gZGVmYXVsdHMgdG8gdW5kZWZpbmVkXG4gKlxuICogQGZ1bmN0aW9uIG1vZGVsXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWwoXG4gIHByb3BzPzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgaW5zdGFuY2VDYWxsYmFjaz86IEluc3RhbmNlQ2FsbGJhY2ssXG4pIHtcbiAgcmV0dXJuIChvcmlnaW5hbDogYW55KSA9PiB7XG4gICAgLy8gdGhlIG5ldyBjb25zdHJ1Y3RvciBiZWhhdmlvdXJcbiAgICBjb25zdCBuZXdDb25zdHJ1Y3RvcjogYW55ID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZTogUmV0dXJuVHlwZTx0eXBlb2Ygb3JpZ2luYWw+ID0gY29uc3RydWN0KFxuICAgICAgICBvcmlnaW5hbCxcbiAgICAgICAgLi4uYXJncyxcbiAgICAgICk7XG4gICAgICAvLyBydW4gYSBidWlsZGVyIGZ1bmN0aW9uIGlmIGRlZmluZWQgd2l0aCB0aGUgZmlyc3QgYXJndW1lbnQgKFRoZSBNb2RlbEFyZylcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBNb2RlbC5nZXRCdWlsZGVyKCk7XG4gICAgICBpZiAoYnVpbGRlcikgYnVpbGRlcihpbnN0YW5jZSwgYXJncy5sZW5ndGggPyBhcmdzWzBdIDogdW5kZWZpbmVkKTtcblxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzOiBvcmlnaW5hbC5uYW1lLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3RhbmNlLCBNb2RlbEtleXMuQU5DSE9SLCB7XG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBtZXRhZGF0YSxcbiAgICAgIH0pO1xuXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgICBnZXRNb2RlbEtleShNb2RlbEtleXMuTU9ERUwpLFxuICAgICAgICBPYmplY3QuYXNzaWduKG1ldGFkYXRhLCBwcm9wcyB8fCB7fSksXG4gICAgICAgIGluc3RhbmNlLmNvbnN0cnVjdG9yLFxuICAgICAgKTtcblxuICAgICAgaWYgKGluc3RhbmNlQ2FsbGJhY2spIGluc3RhbmNlQ2FsbGJhY2soaW5zdGFuY2UsIC4uLmFyZ3MpO1xuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcblxuICAgIC8vIGNvcHkgcHJvdG90eXBlIHNvIGluc3RhbmNlb2Ygb3BlcmF0b3Igc3RpbGwgd29ya3NcbiAgICBuZXdDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBvcmlnaW5hbC5wcm90b3R5cGU7XG4gICAgLy8gU2V0cyB0aGUgcHJvcGVyIGNvbnN0cnVjdG9yIG5hbWUgZm9yIHR5cGUgdmVyaWZpY2F0aW9uXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld0NvbnN0cnVjdG9yLCBcIm5hbWVcIiwge1xuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogb3JpZ2luYWwucHJvdG90eXBlLmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgfSk7XG5cbiAgICBNb2RlbC5yZWdpc3RlcihuZXdDb25zdHJ1Y3Rvcik7XG5cbiAgICAvLyByZXR1cm4gbmV3IGNvbnN0cnVjdG9yICh3aWxsIG92ZXJyaWRlIG9yaWdpbmFsKVxuICAgIHJldHVybiBuZXdDb25zdHJ1Y3RvcjtcbiAgfTtcbn1cbiJdfQ==
|
package/lib/esm/model/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
export * from "./constants";
|
|
1
2
|
export * from "./construction";
|
|
2
|
-
export * from "./Registry";
|
|
3
3
|
export * from "./decorators";
|
|
4
|
+
export * from "./Model";
|
|
4
5
|
export * from "./ModelErrorDefinition";
|
|
6
|
+
export * from "./Registry";
|
|
5
7
|
export * from "./types";
|
|
6
|
-
export * from "./Model";
|
|
7
|
-
export * from "./constants";
|
package/lib/esm/model/index.js
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
|
-
export*from"./
|
|
1
|
+
export * from "./constants";
|
|
2
|
+
export * from "./construction";
|
|
3
|
+
export * from "./decorators";
|
|
4
|
+
export * from "./Model";
|
|
5
|
+
export * from "./ModelErrorDefinition";
|
|
6
|
+
export * from "./Registry";
|
|
7
|
+
export * from "./types";
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUMiLCJmaWxlIjoibW9kZWwvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0cnVjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vTW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL01vZGVsRXJyb3JEZWZpbml0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SZWdpc3RyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdfQ==
|
package/lib/esm/model/types.js
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6Im1vZGVsL3R5cGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxFcnJvckRlZmluaXRpb24gfSBmcm9tIFwiLi9Nb2RlbEVycm9yRGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi9Nb2RlbFwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluaXRpb24gb2YgYSBNb2RlbCBDb25zdHJ1Y3RvciBBcmd1bWVudFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uTW9kZWxcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICpcbiAqIEBzZWUgTW9kZWxDb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBNb2RlbEFyZzxUPiA9IFQgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluaXRpb24gb2YgYSBDbGFzcyBDb25zdHJ1Y3RvclxuICogQGRlc2NyaXB0aW9uIEdlbmVyaWMgdHlwZSBmb3IgQ29uc3RydWN0b3IgZnVuY3Rpb25zXG4gKlxuICogQHR5cGVkZWYgQ29uc3RydWN0b3JcbiAqXG4gKiBAcGFyYW0ge2FueVtdfSBbYXJnc11cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uTW9kZWxcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvcjxUPiA9IHtcbiAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluaXRpb24gb2YgYSBNb2RlbCBDb25zdHJ1Y3RvclxuICogQGRlc2NyaXB0aW9uIEdlbmVyaWMgdHlwZSBmb3IgYWxsIE1vZGVsIENvbnN0cnVjdG9yIGZ1bmN0aW9uc1xuICpcbiAqIEB0eXBlZGVmIE1vZGVsQ29uc3RydWN0b3JcbiAqXG4gKiBAcGFyYW0ge01vZGVsQXJnPFQ+fSBbbW9kZWxdXG4gKiBAcGFyYW0ge2FueVtdfSBbYXJnc11cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uTW9kZWxcbiAqIEBjYXRlZ29yeSBDb25zdHJ1Y3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxDb25zdHJ1Y3RvcjxUIGV4dGVuZHMgTW9kZWw+ID0ge1xuICBuZXcgKG1vZGVsPzogTW9kZWxBcmc8VD4sIC4uLmFyZ3M6IGFueVtdKTogVDtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgVmFsaWRhdGlvbiBBUEkgZm9yIHZhbGlkYXRhYmxlIG1vZGVsc1xuICogQGludGVyZmFjZSBWYWxpZGF0YWJsZVxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGFibGUge1xuICAvKipcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIHRoZSBtb2RlbCBhbmQgcmV0dXJucyB0aGUge0BsaW5rIE1vZGVsRXJyb3JEZWZpbml0aW9ufSBpZiBhbnlcbiAgICogQHBhcmFtIHthbnl9IFthcmdzXVxuICAgKlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBoYXNFcnJvcnMoLi4uYXJnczogYW55W10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBTZXJpYWxpemFibGUgaW50ZXJmYWNlXG4gKlxuICogQGludGVyZmFjZSBTZXJpYWxpemFibGVcbiAqXG4gKiBAY2F0ZWdvcnkgU2VyaWFsaXphdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6YWJsZSB7XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBzZXJpYWxpemVzIHRoZSBtb2RlbFxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBzZXJpYWxpemUoKTogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
export type CustomDecorator<V> = MethodDecorator & ClassDecorator & PropertyDecorator;
|
|
3
|
+
/**
|
|
4
|
+
* @summary Decorator that assigns metadata to the class/method using the
|
|
5
|
+
* specified `key`.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} key a value defining the key under which the metadata is stored
|
|
8
|
+
* @param {any} value metadata to be associated with `key`
|
|
9
|
+
*
|
|
10
|
+
* @function metadata
|
|
11
|
+
*
|
|
12
|
+
* @memberOf module:decorator-validation.Reflections
|
|
13
|
+
* @category Decorators
|
|
14
|
+
*/
|
|
15
|
+
export declare function metadata<V>(key: string, value: V): CustomDecorator<V>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
/**
|
|
3
|
+
* @summary Decorator that assigns metadata to the class/method using the
|
|
4
|
+
* specified `key`.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} key a value defining the key under which the metadata is stored
|
|
7
|
+
* @param {any} value metadata to be associated with `key`
|
|
8
|
+
*
|
|
9
|
+
* @function metadata
|
|
10
|
+
*
|
|
11
|
+
* @memberOf module:decorator-validation.Reflections
|
|
12
|
+
* @category Decorators
|
|
13
|
+
*/
|
|
14
|
+
export function metadata(key, value) {
|
|
15
|
+
return (target, propertyKey, descriptor) => {
|
|
16
|
+
if (descriptor) {
|
|
17
|
+
Reflect.defineMetadata(key, value, descriptor.value); // method
|
|
18
|
+
}
|
|
19
|
+
else if (propertyKey) {
|
|
20
|
+
Reflect.defineMetadata(key, value, target, propertyKey); // property
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
Reflect.defineMetadata(key, value, target); // class
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZWZsZWN0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQU8xQjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUksR0FBVyxFQUFFLEtBQVE7SUFDL0MsT0FBTyxDQUNMLE1BQWMsRUFDZCxXQUE2QixFQUM3QixVQUErQixFQUMvQixFQUFFO1FBQ0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2pFLENBQUM7YUFBTSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQ3RFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUN0RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsImZpbGUiOiJyZWZsZWN0aW9uL2RlY29yYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCB0eXBlIEN1c3RvbURlY29yYXRvcjxWPiA9IE1ldGhvZERlY29yYXRvciAmXG4gIENsYXNzRGVjb3JhdG9yICZcbiAgUHJvcGVydHlEZWNvcmF0b3I7XG5cbi8qKlxuICogQHN1bW1hcnkgRGVjb3JhdG9yIHRoYXQgYXNzaWducyBtZXRhZGF0YSB0byB0aGUgY2xhc3MvbWV0aG9kIHVzaW5nIHRoZVxuICogc3BlY2lmaWVkIGBrZXlgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgYSB2YWx1ZSBkZWZpbmluZyB0aGUga2V5IHVuZGVyIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBzdG9yZWRcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSBtZXRhZGF0YSB0byBiZSBhc3NvY2lhdGVkIHdpdGggYGtleWBcbiAqXG4gKiBAZnVuY3Rpb24gbWV0YWRhdGFcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlJlZmxlY3Rpb25zXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWV0YWRhdGE8Vj4oa2V5OiBzdHJpbmcsIHZhbHVlOiBWKTogQ3VzdG9tRGVjb3JhdG9yPFY+IHtcbiAgcmV0dXJuIChcbiAgICB0YXJnZXQ6IG9iamVjdCxcbiAgICBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbCxcbiAgICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yLFxuICApID0+IHtcbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShrZXksIHZhbHVlLCBkZXNjcmlwdG9yLnZhbHVlKTsgLy8gbWV0aG9kXG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eUtleSkge1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShrZXksIHZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5KTsgLy8gcHJvcGVydHlcbiAgICB9IGVsc2Uge1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShrZXksIHZhbHVlLCB0YXJnZXQpOyAvLyBjbGFzc1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./decorators";
|
|
2
|
+
export * from "./utils";
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9yZWZsZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDIiwiZmlsZSI6InJlZmxlY3Rpb24vaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { Model } from "../model/Model";
|
|
1
2
|
import "reflect-metadata";
|
|
2
3
|
import { DecoratorMetadata } from "../validation";
|
|
3
|
-
import { Model } from "../model";
|
|
4
4
|
/**
|
|
5
5
|
* @summary Util function to retrieve the decorators for the provided Property
|
|
6
6
|
*
|
|
@@ -55,83 +55,6 @@ export declare const getAllPropertyDecorators: <T extends Model>(model: T, ...pr
|
|
|
55
55
|
* @memberOf module:decorator-validation.Model
|
|
56
56
|
*/
|
|
57
57
|
export declare function getAllProperties(obj: Record<any, any>, climbTree?: boolean, stopAt?: string): string[];
|
|
58
|
-
/**
|
|
59
|
-
* @summary Util function to provide string format functionality similar to C#'s string.format
|
|
60
|
-
*
|
|
61
|
-
* @param {string} string
|
|
62
|
-
* @param {string} args replacements made by order of appearance (replacement0 wil replace {0} and so on)
|
|
63
|
-
* @return {string} formatted string
|
|
64
|
-
*
|
|
65
|
-
* @function stringFormat
|
|
66
|
-
* @memberOf module:decorator-validation.Utils.Format
|
|
67
|
-
* @category Format
|
|
68
|
-
*/
|
|
69
|
-
export declare function stringFormat(string: string, ...args: string[]): string;
|
|
70
|
-
/**
|
|
71
|
-
* @summary Deep Object Comparison
|
|
72
|
-
* @description algorithm from {@link https://stackoverflow.com/questions/30476150/javascript-deep-comparison-recursively-objects-and-properties}
|
|
73
|
-
* but with optional ignored properties
|
|
74
|
-
*
|
|
75
|
-
* @param {any} a
|
|
76
|
-
* @param {any} b
|
|
77
|
-
* @param {string} [propsToIgnore]
|
|
78
|
-
*
|
|
79
|
-
* @function isEqual
|
|
80
|
-
* @memberOf module:decorator-validation.Utils.Equality
|
|
81
|
-
* @category Validation
|
|
82
|
-
*/
|
|
83
|
-
export declare function isEqual(a: any, b: any, ...propsToIgnore: string[]): boolean;
|
|
84
|
-
/**
|
|
85
|
-
* @summary Mimics Java's String's Hash implementation
|
|
86
|
-
*
|
|
87
|
-
* @param {string | number | symbol | Date} obj
|
|
88
|
-
* @return {number} hash value of obj
|
|
89
|
-
*
|
|
90
|
-
* @function hashCode
|
|
91
|
-
* @memberOf module:decorator-validation.Utils.Hashing
|
|
92
|
-
* @category Hashing
|
|
93
|
-
*/
|
|
94
|
-
export declare function hashCode(obj: string | number | symbol | Date): number;
|
|
95
|
-
/**
|
|
96
|
-
* @summary Defines teh type for a Hashing function
|
|
97
|
-
* @memberOf module:decorator-validation.Utils.Hashing
|
|
98
|
-
* @category Hashing
|
|
99
|
-
*/
|
|
100
|
-
export type HashingFunction = (value: any) => string | number;
|
|
101
|
-
/**
|
|
102
|
-
* @summary Hashes an object serializing it and then hashing the string
|
|
103
|
-
* @description The Serialization algorithm used by default (JSON.stringify)
|
|
104
|
-
* is not deterministic and should not be used for hashing
|
|
105
|
-
*
|
|
106
|
-
* @param {Record<string, any>} obj
|
|
107
|
-
* @return {string} the resulting hash
|
|
108
|
-
*
|
|
109
|
-
* @function hashSerialization
|
|
110
|
-
* @memberOf module:decorator-validation.Utils.Hashing
|
|
111
|
-
*
|
|
112
|
-
* @category Hashing
|
|
113
|
-
*/
|
|
114
|
-
export declare function hashSerialization(obj: Record<string, any> | any[]): number;
|
|
115
|
-
/**
|
|
116
|
-
* @summary Hashes an object by combining the hash of all its properties
|
|
117
|
-
*
|
|
118
|
-
* @param {Record<string, any>} obj
|
|
119
|
-
* @return {string} the resulting hash
|
|
120
|
-
*
|
|
121
|
-
* @function hashObj
|
|
122
|
-
* @memberOf module:decorator-validation.Utils.Hashing
|
|
123
|
-
* @category Hashing
|
|
124
|
-
*/
|
|
125
|
-
export declare function hashObj(obj: Record<string, any> | any[]): string | number;
|
|
126
|
-
/**
|
|
127
|
-
* @summary For Serialization/deserialization purposes.
|
|
128
|
-
* @description Reads the {@link ModelKeys.ANCHOR} property of a {@link Model} to discover the class to instantiate
|
|
129
|
-
*
|
|
130
|
-
* @function isModel
|
|
131
|
-
* @memberOf module:decorator-validation.Validation
|
|
132
|
-
* @category Validation
|
|
133
|
-
*/
|
|
134
|
-
export declare function isModel(target: Record<string, any>): boolean;
|
|
135
58
|
/**
|
|
136
59
|
* @summary Util function to retrieve the Class decorators
|
|
137
60
|
*
|
|
@@ -180,14 +103,11 @@ export declare function evaluateDesignTypes(value: any, types: string | string[]
|
|
|
180
103
|
name: string;
|
|
181
104
|
}): any;
|
|
182
105
|
/**
|
|
183
|
-
* @summary
|
|
184
|
-
*
|
|
185
|
-
* @param {string} date the date string to be converted back into date
|
|
186
|
-
* @param {string} format the date format
|
|
187
|
-
* @return {Date} the date from the format or the standard new Date({@prop date}) if the string couldn't be parsed (are you sure the format matches the string?)
|
|
106
|
+
* @summary For Serialization/deserialization purposes.
|
|
107
|
+
* @description Reads the {@link ModelKeys.ANCHOR} property of a {@link Model} to discover the class to instantiate
|
|
188
108
|
*
|
|
189
|
-
* @function
|
|
190
|
-
* @memberOf module:decorator-validation.
|
|
191
|
-
* @category
|
|
109
|
+
* @function isModel
|
|
110
|
+
* @memberOf module:decorator-validation.Validation
|
|
111
|
+
* @category Validation
|
|
192
112
|
*/
|
|
193
|
-
export declare function
|
|
113
|
+
export declare function isModel(target: Record<string, any>): boolean;
|