@decaf-ts/decorator-validation 1.7.12 → 1.7.13
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.cjs +269 -106
- package/dist/decorator-validation.esm.cjs +269 -107
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/model/Model.js +28 -6
- package/lib/esm/model/decorators.d.ts +2 -12
- package/lib/esm/model/decorators.js +57 -37
- package/lib/esm/model/validation.d.ts +2 -2
- package/lib/esm/model/validation.js +51 -19
- package/lib/esm/utils/Decoration.d.ts +15 -3
- package/lib/esm/utils/Decoration.js +49 -12
- package/lib/esm/utils/decorators.d.ts +1 -1
- package/lib/esm/utils/decorators.js +13 -4
- package/lib/esm/utils/types.d.ts +3 -2
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/validation/Validators/ListValidator.js +8 -4
- package/lib/esm/validation/Validators/TypeValidator.js +12 -8
- package/lib/esm/validation/decorators.d.ts +4 -4
- package/lib/esm/validation/decorators.js +58 -22
- package/lib/esm/validation/types.d.ts +2 -1
- package/lib/esm/validation/types.js +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/model/Model.cjs +28 -6
- package/lib/model/decorators.cjs +58 -37
- package/lib/model/decorators.d.ts +2 -12
- package/lib/model/validation.cjs +51 -19
- package/lib/model/validation.d.ts +2 -2
- package/lib/utils/Decoration.cjs +49 -12
- package/lib/utils/Decoration.d.ts +15 -3
- package/lib/utils/decorators.cjs +13 -4
- package/lib/utils/decorators.d.ts +1 -1
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.d.ts +3 -2
- package/lib/validation/Validators/ListValidator.cjs +8 -4
- package/lib/validation/Validators/TypeValidator.cjs +12 -8
- package/lib/validation/decorators.cjs +58 -22
- package/lib/validation/decorators.d.ts +4 -4
- package/lib/validation/types.cjs +1 -1
- package/lib/validation/types.d.ts +2 -1
- package/package.json +1 -1
package/lib/utils/decorators.cjs
CHANGED
|
@@ -4,6 +4,7 @@ exports.prop = prop;
|
|
|
4
4
|
exports.propMetadata = propMetadata;
|
|
5
5
|
const reflection_1 = require("@decaf-ts/reflection");
|
|
6
6
|
const constants_1 = require("./constants.cjs");
|
|
7
|
+
const Decoration_1 = require("./Decoration.cjs");
|
|
7
8
|
/**
|
|
8
9
|
* @description Property decorator factory for model attributes
|
|
9
10
|
* @summary Creates a decorator that marks class properties as model attributes
|
|
@@ -30,17 +31,25 @@ const constants_1 = require("./constants.cjs");
|
|
|
30
31
|
* end
|
|
31
32
|
*/
|
|
32
33
|
function prop(key = constants_1.ModelKeys.ATTRIBUTE) {
|
|
33
|
-
return (
|
|
34
|
+
return Decoration_1.Decoration.for(key)
|
|
35
|
+
.define(function prop(model, propertyKey) {
|
|
34
36
|
let props;
|
|
35
37
|
if (Object.prototype.hasOwnProperty.call(model, key)) {
|
|
36
38
|
props = model[key];
|
|
37
39
|
}
|
|
38
40
|
else {
|
|
39
|
-
|
|
41
|
+
Object.defineProperty(model, key, {
|
|
42
|
+
enumerable: false,
|
|
43
|
+
configurable: false,
|
|
44
|
+
writable: false,
|
|
45
|
+
value: [],
|
|
46
|
+
});
|
|
47
|
+
props = model[key];
|
|
40
48
|
}
|
|
41
49
|
if (!props.includes(propertyKey))
|
|
42
50
|
props.push(propertyKey);
|
|
43
|
-
}
|
|
51
|
+
})
|
|
52
|
+
.apply();
|
|
44
53
|
}
|
|
45
54
|
/**
|
|
46
55
|
* @description Combined property decorator factory for metadata and attribute marking
|
|
@@ -56,4 +65,4 @@ function prop(key = constants_1.ModelKeys.ATTRIBUTE) {
|
|
|
56
65
|
function propMetadata(key, value) {
|
|
57
66
|
return (0, reflection_1.apply)(prop(), (0, reflection_1.metadata)(key, value));
|
|
58
67
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOEJBLG9CQW1CQztBQWFELG9DQUVDO0FBaEVELHFEQUF1RDtBQUN2RCwrQ0FBd0M7QUFDeEMsaURBQTBDO0FBRzFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxTQUFnQixJQUFJLENBQUMsTUFBYyxxQkFBUyxDQUFDLFNBQVM7SUFDcEQsT0FBTyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDdkIsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQWEsRUFBRSxXQUFpQjtRQUNwRCxJQUFJLEtBQWUsQ0FBQztRQUNwQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxLQUFLLEdBQUksS0FBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNoQyxVQUFVLEVBQUUsS0FBSztnQkFDakIsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLFFBQVEsRUFBRSxLQUFLO2dCQUNmLEtBQUssRUFBRSxFQUFFO2FBQ1YsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxHQUFJLEtBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBcUIsQ0FBQztZQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQXFCLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7U0FDRCxLQUFLLEVBQUUsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFJLEdBQVcsRUFBRSxLQUFRO0lBQ25ELE9BQU8sSUFBQSxrQkFBSyxFQUFDLElBQUksRUFBRSxFQUFFLElBQUEscUJBQVEsRUFBSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBNb2RlbEtleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IERlY29yYXRpb24gfSBmcm9tIFwiLi9EZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQcm9wZXJ0eSBkZWNvcmF0b3IgZmFjdG9yeSBmb3IgbW9kZWwgYXR0cmlidXRlc1xuICogQHN1bW1hcnkgQ3JlYXRlcyBhIGRlY29yYXRvciB0aGF0IG1hcmtzIGNsYXNzIHByb3BlcnRpZXMgYXMgbW9kZWwgYXR0cmlidXRlc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5PU1vZGVsS2V5cy5BVFRSSUJVVEVdIC0gVGhlIG1ldGFkYXRhIGtleSB1bmRlciB3aGljaCB0byBzdG9yZSB0aGUgcHJvcGVydHkgbmFtZVxuICogQHJldHVybiB7ZnVuY3Rpb24ob2JqZWN0LCBhbnk/KTogdm9pZH0gLSBEZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCByZWdpc3RlcnMgdGhlIHByb3BlcnR5XG4gKiBAZnVuY3Rpb24gcHJvcFxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgICBwYXJ0aWNpcGFudCBEIGFzIERlY29yYXRvclxuICogICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbFxuICpcbiAqICAgIEQtPj5NOiBDaGVjayBpZiBrZXkgZXhpc3RzXG4gKiAgICBhbHQga2V5IGV4aXN0c1xuICogICAgICAgIE0tLT4+RDogUmV0dXJuIGV4aXN0aW5nIHByb3BzIGFycmF5XG4gKiAgICBlbHNlIGtleSBkb2Vzbid0IGV4aXN0XG4gKiAgICAgICAgRC0+Pk06IENyZWF0ZSBuZXcgcHJvcHMgYXJyYXlcbiAqICAgIGVuZFxuICogICAgRC0+Pk06IENoZWNrIGlmIHByb3BlcnR5IGV4aXN0c1xuICogICAgYWx0IHByb3BlcnR5IG5vdCBpbiBhcnJheVxuICogICAgICAgIEQtPj5NOiBBZGQgcHJvcGVydHkgdG8gYXJyYXlcbiAqICAgIGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcChrZXk6IHN0cmluZyA9IE1vZGVsS2V5cy5BVFRSSUJVVEUpIHtcbiAgcmV0dXJuIERlY29yYXRpb24uZm9yKGtleSlcbiAgICAuZGVmaW5lKGZ1bmN0aW9uIHByb3AobW9kZWw6IG9iamVjdCwgcHJvcGVydHlLZXk/OiBhbnkpIHtcbiAgICAgIGxldCBwcm9wczogc3RyaW5nW107XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZGVsLCBrZXkpKSB7XG4gICAgICAgIHByb3BzID0gKG1vZGVsIGFzIGFueSlba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2RlbCwga2V5LCB7XG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvcHMgPSAobW9kZWwgYXMgYW55KVtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKCFwcm9wcy5pbmNsdWRlcyhwcm9wZXJ0eUtleSBhcyBzdHJpbmcpKVxuICAgICAgICBwcm9wcy5wdXNoKHByb3BlcnR5S2V5IGFzIHN0cmluZyk7XG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tYmluZWQgcHJvcGVydHkgZGVjb3JhdG9yIGZhY3RvcnkgZm9yIG1ldGFkYXRhIGFuZCBhdHRyaWJ1dGUgbWFya2luZ1xuICogQHN1bW1hcnkgQ3JlYXRlcyBhIGRlY29yYXRvciB0aGF0IGJvdGggbWFya3MgYSBwcm9wZXJ0eSBhcyBhIG1vZGVsIGF0dHJpYnV0ZSBhbmQgYXNzaWducyBtZXRhZGF0YSB0byBpdFxuICpcbiAqIEB0ZW1wbGF0ZSBWXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIG1ldGFkYXRhIGtleVxuICogQHBhcmFtIHtWfSB2YWx1ZSAtIFRoZSBtZXRhZGF0YSB2YWx1ZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgcHJvcGVydHlcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSAtIENvbWJpbmVkIGRlY29yYXRvciBmdW5jdGlvblxuICogQGZ1bmN0aW9uIHByb3BNZXRhZGF0YVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BNZXRhZGF0YTxWPihrZXk6IHN0cmluZywgdmFsdWU6IFYpIHtcbiAgcmV0dXJuIGFwcGx5KHByb3AoKSwgbWV0YWRhdGE8Vj4oa2V5LCB2YWx1ZSkpO1xufVxuIl19
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* D->>M: Add property to array
|
|
24
24
|
* end
|
|
25
25
|
*/
|
|
26
|
-
export declare function prop(key?: string): (
|
|
26
|
+
export declare function prop(key?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
27
27
|
/**
|
|
28
28
|
* @description Combined property decorator factory for metadata and attribute marking
|
|
29
29
|
* @summary Creates a decorator that both marks a property as a model attribute and assigns metadata to it
|
package/lib/utils/types.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCI7XG5pbXBvcnQgeyBEZWNvcmF0b3JEYXRhIH0gZnJvbSBcIi4vRGVjb3JhdGlvblwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyIHBhdHRlcm5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgdGhlIGJ1aWxkIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIsIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBhcHBseVxuICogdGhlIGNvbmZpZ3VyZWQgZGVjb3JhdG9yIHRvIGEgdGFyZ2V0LiBUaGlzIGlzIHRoZSBmaW5hbCBzdGFnZSBpbiB0aGUgYnVpbGRlciBjaGFpbi5cbiAqXG4gKiBAaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyQnVpbGRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyQnVpbGQge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW5kIHJldHVybnMgdGhlIGRlY29yYXRvciBmdW5jdGlvblxuICAgKiBAc3VtbWFyeSBGaW5hbGl6ZXMgdGhlIGJ1aWxkZXIgcHJvY2VzcyBhbmQgcmV0dXJucyBhIGRlY29yYXRvciBmdW5jdGlvbiB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGEgY2xhc3MsXG4gICAqIHByb3BlcnR5LCBvciBtZXRob2QuXG4gICAqXG4gICAqIEByZXR1cm5zIHtmdW5jdGlvbn0gQSBkZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCBjYW4gYmUgYXBwbGllZCB0byBhIHRhcmdldFxuICAgKi9cbiAgYXBwbHkoKTogKFxuICAgIHRhcmdldDogYW55LFxuICAgIHByb3BlcnR5S2V5PzogYW55LFxuICAgIGRlc2NyaXB0b3I/OiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+XG4gICkgPT4gYW55O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBleHRlbnNpb24gc3RhZ2Ugb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciBwYXR0ZXJuXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIHRoZSBleHRlbnNpb24gc3RhZ2Ugb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIGFkZFxuICogYWRkaXRpb25hbCBkZWNvcmF0b3JzIHRvIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJFbmRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyRW5kIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBZGRzIGFkZGl0aW9uYWwgZGVjb3JhdG9ycyB0byB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvblxuICAgKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBjdXJyZW50IGRlY29yYXRvciBjb25maWd1cmF0aW9uIHdpdGggYWRkaXRpb25hbCBkZWNvcmF0b3JzLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgYWRkaW5nIGJlaGF2aW9yIHRvIGV4aXN0aW5nIGRlY29yYXRvcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKENsYXNzRGVjb3JhdG9yfFByb3BlcnR5RGVjb3JhdG9yfE1ldGhvZERlY29yYXRvcil9IGRlY29yYXRvcnMgLSBBZGRpdGlvbmFsIGRlY29yYXRvcnMgdG8gYWRkXG4gICAqIEByZXR1cm5zIHtEZWNvcmF0aW9uQnVpbGRlckJ1aWxkfSBUaGUgYnVpbGQgc3RhZ2Ugb2YgdGhlIGJ1aWxkZXIgcGF0dGVyblxuICAgKi9cbiAgZXh0ZW5kKC4uLmRlY29yYXRvcnM6IERlY29yYXRvckRhdGFbXSk6IERlY29yYXRpb25CdWlsZGVyQnVpbGQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIG1pZGRsZSBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyIHBhdHRlcm5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgdGhlIG1pZGRsZSBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyLCBleHRlbmRpbmcgdGhlIGVuZCBzdGFnZVxuICogYW5kIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBkZWZpbmUgdGhlIHByaW1hcnkgZGVjb3JhdG9ycyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQGludGVyZmFjZSBEZWNvcmF0aW9uQnVpbGRlck1pZFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJNaWQgZXh0ZW5kcyBEZWNvcmF0aW9uQnVpbGRlckVuZCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgcHJpbWFyeSBkZWNvcmF0b3JzIGZvciB0aGUgY29uZmlndXJhdGlvblxuICAgKiBAc3VtbWFyeSBTZXRzIHRoZSBtYWluIGRlY29yYXRvcnMgZm9yIHRoZSBjdXJyZW50IGNvbnRleHQuIFRoaXMgaXMgdHlwaWNhbGx5XG4gICAqIGNhbGxlZCBhZnRlciBzcGVjaWZ5aW5nIHRoZSBrZXkgd2l0aCB0aGUgJ2ZvcicgbWV0aG9kLlxuICAgKi9cbiAgZGVmaW5lKFxuICAgIC4uLmRlY29yYXRvcnM6IERlY29yYXRvckRhdGFbXVxuICApOiBEZWNvcmF0aW9uQnVpbGRlckVuZCAmIERlY29yYXRpb25CdWlsZGVyQnVpbGQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIHN0YXJ0aW5nIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIgcGF0dGVyblxuICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgaW5pdGlhbCBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyLCBwcm92aWRpbmcgdGhlIGVudHJ5IHBvaW50XG4gKiBmb3IgdGhlIGJ1aWxkZXIgcGF0dGVybiBieSBzcGVjaWZ5aW5nIHRoZSBrZXkgZm9yIHRoZSBkZWNvcmF0b3IuXG4gKlxuICogQGludGVyZmFjZSBEZWNvcmF0aW9uQnVpbGRlclN0YXJ0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNvcmF0aW9uQnVpbGRlclN0YXJ0IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIGtleSBmb3IgdGhlIGRlY29yYXRvclxuICAgKiBAc3VtbWFyeSBTZXRzIHRoZSBpZGVudGlmaWVyIGZvciB0aGUgZGVjb3JhdG9yLCB3aGljaCBpcyB1c2VkIHRvIHJlZ2lzdGVyIGFuZCByZXRyaWV2ZVxuICAgKiB0aGUgZGVjb3JhdG9yIGluIHRoZSBkZWNvcmF0aW9uIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBUaGUgaWRlbnRpZmllciBmb3IgdGhlIGRlY29yYXRvclxuICAgKiBAcmV0dXJuIHtEZWNvcmF0aW9uQnVpbGRlck1pZH0gVGhlIG1pZGRsZSBzdGFnZSBvZiB0aGUgYnVpbGRlciBwYXR0ZXJuXG4gICAqL1xuICBmb3IoaWQ6IHN0cmluZyk6IERlY29yYXRpb25CdWlsZGVyTWlkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wcmVoZW5zaXZlIGludGVyZmFjZSBmb3IgdGhlIGNvbXBsZXRlIGRlY29yYXRpb24gYnVpbGRlciBwYXR0ZXJuXG4gKiBAc3VtbWFyeSBBIHVuaWZpZWQgaW50ZXJmYWNlIHRoYXQgY29tYmluZXMgYWxsIHN0YWdlcyBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyIHBhdHRlcm4sXG4gKiBwcm92aWRpbmcgYSBjb21wbGV0ZSBBUEkgZm9yIGNyZWF0aW5nLCBjb25maWd1cmluZywgYW5kIGFwcGx5aW5nIGRlY29yYXRvcnMuXG4gKiBUaGlzIGludGVyZmFjZSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgRGVjb3JhdGlvbiBjbGFzcy5cbiAqXG4gKiBAaW50ZXJmYWNlIElEZWNvcmF0aW9uQnVpbGRlclxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURlY29yYXRpb25CdWlsZGVyXG4gIGV4dGVuZHMgRGVjb3JhdGlvbkJ1aWxkZXJTdGFydCxcbiAgICBEZWNvcmF0aW9uQnVpbGRlck1pZCxcbiAgICBEZWNvcmF0aW9uQnVpbGRlckVuZCxcbiAgICBEZWNvcmF0aW9uQnVpbGRlckJ1aWxkIHt9XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBmbGF2b3VyIGZvciBhIHRhcmdldFxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGZ1bmN0aW9uIHR5cGUgdGhhdCBkZXRlcm1pbmVzIHRoZSBhcHByb3ByaWF0ZSBmbGF2b3VyIGZvciBhIGdpdmVuIHRhcmdldCBvYmplY3QuXG4gKiBUaGlzIGlzIHVzZWQgYnkgdGhlIERlY29yYXRpb24gY2xhc3MgdG8gcmVzb2x2ZSB3aGljaCBmbGF2b3VyIG9mIGRlY29yYXRvciB0byBhcHBseSBiYXNlZCBvbiB0aGUgdGFyZ2V0LlxuICpcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbihvYmplY3QpOiBzdHJpbmd9IEZsYXZvdXJSZXNvbHZlclxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byByZXNvbHZlIHRoZSBmbGF2b3VyIGZvclxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgcmVzb2x2ZWQgZmxhdm91ciBpZGVudGlmaWVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgRmxhdm91clJlc29sdmVyID0gKHRhcmdldDogb2JqZWN0KSA9PiBzdHJpbmc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3Igc2VyaWFsaXppbmcgYW5kIGRlc2VyaWFsaXppbmcgbW9kZWwgb2JqZWN0c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29udHJhY3QgZm9yIGNsYXNzZXMgdGhhdCBjYW4gY29udmVydCBtb2RlbCBvYmplY3RzIHRvIGFuZCBmcm9tIHN0cmluZyByZXByZXNlbnRhdGlvbnMuXG4gKiBTZXJpYWxpemVycyBhcmUgdXNlZCB0byBwZXJzaXN0IG1vZGVscyBvciB0cmFuc21pdCB0aGVtIG92ZXIgbmV0d29ya3MuXG4gKlxuICogQGludGVyZmFjZSBTZXJpYWxpemVyXG4gKiBAdGVtcGxhdGUgVCBUeXBlIG9mIG1vZGVsIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQsIG11c3QgZXh0ZW5kIE1vZGVsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVyPE0gZXh0ZW5kcyBNb2RlbD4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgbW9kZWwgb2JqZWN0IHRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gICAqIEBzdW1tYXJ5IFNlcmlhbGl6ZXMgYSBtb2RlbCBpbnN0YW5jZSBpbnRvIGEgc3RyaW5nIGZvcm1hdCB0aGF0IGNhbiBiZSBzdG9yZWQgb3IgdHJhbnNtaXR0ZWQuXG4gICAqIEFkZGl0aW9uYWwgYXJndW1lbnRzIGNhbiBiZSBwcm92aWRlZCB0byBjdXN0b21pemUgdGhlIHNlcmlhbGl6YXRpb24gcHJvY2Vzcy5cbiAgICpcbiAgICogQHBhcmFtIHtUfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byBzZXJpYWxpemVcbiAgICogQHBhcmFtIHsuLi5hbnl9IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlIHNlcmlhbGl6YXRpb24gcHJvY2Vzc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1vZGVsIGNhbm5vdCBiZSBzZXJpYWxpemVkXG4gICAqL1xuICBzZXJpYWxpemUobW9kZWw6IE0sIC4uLmFyZ3M6IGFueVtdKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVjb25zdHJ1Y3RzIGEgbW9kZWwgb2JqZWN0IGZyb20gaXRzIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKiBAc3VtbWFyeSBEZXNlcmlhbGl6ZXMgYSBzdHJpbmcgYmFjayBpbnRvIGEgbW9kZWwgaW5zdGFuY2UuXG4gICAqIEFkZGl0aW9uYWwgYXJndW1lbnRzIGNhbiBiZSBwcm92aWRlZCB0byBjdXN0b21pemUgdGhlIGRlc2VyaWFsaXphdGlvbiBwcm9jZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHNlcmlhbGl6ZWQgc3RyaW5nIHRvIGNvbnZlcnQgYmFjayB0byBhIG1vZGVsXG4gICAqIEBwYXJhbSB7Li4uYW55fSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIHRoZSBkZXNlcmlhbGl6YXRpb24gcHJvY2Vzc1xuICAgKiBAcmV0dXJuIHtUfSBUaGUgcmVjb25zdHJ1Y3RlZCBtb2RlbCBpbnN0YW5jZVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHN0cmluZyBjYW5ub3QgYmUgZGVzZXJpYWxpemVkIGludG8gYSB2YWxpZCBtb2RlbFxuICAgKi9cbiAgZGVzZXJpYWxpemUoc3RyOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogTTtcbn1cbiJdfQ==
|
package/lib/utils/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Model } from "../model";
|
|
2
|
+
import { DecoratorData } from "./Decoration";
|
|
2
3
|
/**
|
|
3
4
|
* @description Interface for the final stage of the decoration builder pattern
|
|
4
5
|
* @summary Represents the build stage of the decoration builder, providing the ability to apply
|
|
@@ -36,7 +37,7 @@ export interface DecorationBuilderEnd {
|
|
|
36
37
|
* @param {...(ClassDecorator|PropertyDecorator|MethodDecorator)} decorators - Additional decorators to add
|
|
37
38
|
* @returns {DecorationBuilderBuild} The build stage of the builder pattern
|
|
38
39
|
*/
|
|
39
|
-
extend(...decorators:
|
|
40
|
+
extend(...decorators: DecoratorData[]): DecorationBuilderBuild;
|
|
40
41
|
}
|
|
41
42
|
/**
|
|
42
43
|
* @description Interface for the middle stage of the decoration builder pattern
|
|
@@ -53,7 +54,7 @@ export interface DecorationBuilderMid extends DecorationBuilderEnd {
|
|
|
53
54
|
* @summary Sets the main decorators for the current context. This is typically
|
|
54
55
|
* called after specifying the key with the 'for' method.
|
|
55
56
|
*/
|
|
56
|
-
define(...decorators:
|
|
57
|
+
define(...decorators: DecoratorData[]): DecorationBuilderEnd & DecorationBuilderBuild;
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
59
60
|
* @description Interface for the starting stage of the decoration builder pattern
|
|
@@ -80,9 +80,13 @@ let ListValidator = class ListValidator extends Validator_1.Validator {
|
|
|
80
80
|
hasErrors(value, options) {
|
|
81
81
|
if (!value || (Array.isArray(value) ? !value.length : !value.size))
|
|
82
82
|
return;
|
|
83
|
-
const clazz = Array.isArray(options.clazz)
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
const clazz = (Array.isArray(options.clazz) ? options.clazz : [options.clazz]).map((c) => {
|
|
84
|
+
if (typeof c === "string")
|
|
85
|
+
return c;
|
|
86
|
+
if (!c.name)
|
|
87
|
+
return c().name;
|
|
88
|
+
return c.name;
|
|
89
|
+
});
|
|
86
90
|
let val, isValid = true;
|
|
87
91
|
for (let i = 0; i < (Array.isArray(value) ? value.length : value.size); i++) {
|
|
88
92
|
val = value[i];
|
|
@@ -106,4 +110,4 @@ exports.ListValidator = ListValidator = __decorate([
|
|
|
106
110
|
(0, decorators_1.validator)(constants_1.ValidationKeys.LIST),
|
|
107
111
|
__metadata("design:paramtypes", [String])
|
|
108
112
|
], ListValidator);
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvTGlzdFZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBd0M7QUFDeEMsK0NBQXFFO0FBQ3JFLGlEQUF5QztBQUl6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q0c7QUFFSSxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEscUJBQStCO0lBQ2hFLFlBQVksVUFBa0Isa0NBQXNCLENBQUMsSUFBSTtRQUN2RCxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILFNBQVMsQ0FDUCxLQUF1QixFQUN2QixPQUE2QjtRQUU3QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBRTNFLE1BQU0sS0FBSyxHQUFHLENBQ1osS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUMvRCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1YsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFBRSxPQUFRLENBQTRCLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDekQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxHQUFRLEVBQ1YsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNqQixLQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDVCxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQ3RELENBQUMsRUFBRSxFQUNILENBQUM7WUFDRCxHQUFHLEdBQUksS0FBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLFFBQVEsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsS0FBSyxRQUFRLENBQUM7Z0JBQ2QsS0FBSyxVQUFVO29CQUNiLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtvQkFDekYsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7b0JBQ3BFLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTztZQUNaLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRixDQUFBO0FBeERZLHNDQUFhO3dCQUFiLGFBQWE7SUFEekIsSUFBQSxzQkFBUyxFQUFDLDBCQUFjLENBQUMsSUFBSSxDQUFDOztHQUNsQixhQUFhLENBd0R6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUywgVmFsaWRhdGlvbktleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHZhbGlkYXRvciB9IGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IExpc3RWYWxpZGF0b3JPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi8uLi9tb2RlbFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3IgZm9yIGNoZWNraW5nIGlmIGVsZW1lbnRzIGluIGEgbGlzdCBvciBzZXQgbWF0Y2ggZXhwZWN0ZWQgdHlwZXNcbiAqIEBzdW1tYXJ5IFRoZSBMaXN0VmFsaWRhdG9yIHZhbGlkYXRlcyB0aGF0IGFsbCBlbGVtZW50cyBpbiBhbiBhcnJheSBvciBTZXQgbWF0Y2ggdGhlIGV4cGVjdGVkIHR5cGVzLlxuICogSXQgY2hlY2tzIGVhY2ggZWxlbWVudCBhZ2FpbnN0IGEgbGlzdCBvZiBhbGxvd2VkIGNsYXNzIHR5cGVzIGFuZCBlbnN1cmVzIHR5cGUgY29uc2lzdGVuY3kuXG4gKiBUaGlzIHZhbGlkYXRvciBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIHRoZSBAbGlzdCBkZWNvcmF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSAtIEN1c3RvbSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzLCBkZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNMSVNUfVxuICpcbiAqIEBjbGFzcyBMaXN0VmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBWYWxpZGF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgbGlzdCB2YWxpZGF0b3Igd2l0aCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIGNvbnN0IGxpc3RWYWxpZGF0b3IgPSBuZXcgTGlzdFZhbGlkYXRvcigpO1xuICpcbiAqIC8vIENyZWF0ZSBhIGxpc3QgdmFsaWRhdG9yIHdpdGggY3VzdG9tIGVycm9yIG1lc3NhZ2VcbiAqIGNvbnN0IGN1c3RvbUxpc3RWYWxpZGF0b3IgPSBuZXcgTGlzdFZhbGlkYXRvcihcIkFsbCBpdGVtcyBtdXN0IGJlIG9mIHRoZSBzcGVjaWZpZWQgdHlwZVwiKTtcbiAqXG4gKiAvLyBWYWxpZGF0ZSBhIGxpc3RcbiAqIGNvbnN0IG9wdGlvbnMgPSB7IGNsYXp6OiBbXCJTdHJpbmdcIiwgXCJOdW1iZXJcIl0gfTtcbiAqIGNvbnN0IHJlc3VsdCA9IGxpc3RWYWxpZGF0b3IuaGFzRXJyb3JzKFtcInRlc3RcIiwgMTIzXSwgb3B0aW9ucyk7IC8vIHVuZGVmaW5lZCAodmFsaWQpXG4gKiBjb25zdCBpbnZhbGlkUmVzdWx0ID0gbGlzdFZhbGlkYXRvci5oYXNFcnJvcnMoW25ldyBEYXRlKCldLCBvcHRpb25zKTsgLy8gUmV0dXJucyBlcnJvciBtZXNzYWdlIChpbnZhbGlkKVxuICogYGBgXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENsaWVudFxuICogICBwYXJ0aWNpcGFudCBWIGFzIExpc3RWYWxpZGF0b3JcbiAqXG4gKiAgIEMtPj5WOiBuZXcgTGlzdFZhbGlkYXRvcihtZXNzYWdlKVxuICogICBDLT4+VjogaGFzRXJyb3JzKHZhbHVlLCBvcHRpb25zKVxuICogICBhbHQgdmFsdWUgaXMgZW1wdHlcbiAqICAgICBWLS0+PkM6IHVuZGVmaW5lZCAodmFsaWQpXG4gKiAgIGVsc2UgdmFsdWUgaGFzIGVsZW1lbnRzXG4gKiAgICAgVi0+PlY6IENoZWNrIGVhY2ggZWxlbWVudCdzIHR5cGVcbiAqICAgICBhbHQgQWxsIGVsZW1lbnRzIG1hdGNoIGFsbG93ZWQgdHlwZXNcbiAqICAgICAgIFYtLT4+QzogdW5kZWZpbmVkICh2YWxpZClcbiAqICAgICBlbHNlIFNvbWUgZWxlbWVudHMgZG9uJ3QgbWF0Y2hcbiAqICAgICAgIFYtLT4+QzogRXJyb3IgbWVzc2FnZVxuICogICAgIGVuZFxuICogICBlbmRcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdG9yc1xuICovXG5AdmFsaWRhdG9yKFZhbGlkYXRpb25LZXlzLkxJU1QpXG5leHBvcnQgY2xhc3MgTGlzdFZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvcjxMaXN0VmFsaWRhdG9yT3B0aW9ucz4ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1QpIHtcbiAgICBzdXBlcihtZXNzYWdlLCBBcnJheS5uYW1lLCBTZXQubmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhbGwgZWxlbWVudHMgaW4gYSBsaXN0IG9yIHNldCBtYXRjaCB0aGUgZXhwZWN0ZWQgdHlwZXNcbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIHRoYXQgZWFjaCBlbGVtZW50IGluIHRoZSBwcm92aWRlZCBhcnJheSBvciBTZXQgbWF0Y2hlcyBvbmUgb2YgdGhlXG4gICAqIGNsYXNzIHR5cGVzIHNwZWNpZmllZCBpbiB0aGUgb3B0aW9ucy4gRm9yIG9iamVjdCB0eXBlcywgaXQgY2hlY2tzIHRoZSBjb25zdHJ1Y3RvciBuYW1lLFxuICAgKiBhbmQgZm9yIHByaW1pdGl2ZSB0eXBlcywgaXQgY29tcGFyZXMgYWdhaW5zdCB0aGUgbG93ZXJjYXNlIHR5cGUgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHthbnlbXSB8IFNldDxhbnk+fSB2YWx1ZSAtIFRoZSBhcnJheSBvciBTZXQgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHtMaXN0VmFsaWRhdG9yT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBjb250YWluaW5nIHRoZSBhbGxvd2VkIGNsYXNzIHR5cGVzXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gRXJyb3IgbWVzc2FnZSBpZiB2YWxpZGF0aW9uIGZhaWxzLCB1bmRlZmluZWQgaWYgdmFsaWRhdGlvbiBwYXNzZXNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgaGFzRXJyb3JzKFxuICAgIHZhbHVlOiBhbnlbXSB8IFNldDxhbnk+LFxuICAgIG9wdGlvbnM6IExpc3RWYWxpZGF0b3JPcHRpb25zXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF2YWx1ZSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAhdmFsdWUubGVuZ3RoIDogIXZhbHVlLnNpemUpKSByZXR1cm47XG5cbiAgICBjb25zdCBjbGF6eiA9IChcbiAgICAgIEFycmF5LmlzQXJyYXkob3B0aW9ucy5jbGF6eikgPyBvcHRpb25zLmNsYXp6IDogW29wdGlvbnMuY2xhenpdXG4gICAgKS5tYXAoKGMpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGM7XG4gICAgICBpZiAoIWMubmFtZSkgcmV0dXJuIChjIGFzICgpID0+IENvbnN0cnVjdG9yPGFueT4pKCkubmFtZTtcbiAgICAgIHJldHVybiBjLm5hbWU7XG4gICAgfSk7XG4gICAgbGV0IHZhbDogYW55LFxuICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgZm9yIChcbiAgICAgIGxldCBpID0gMDtcbiAgICAgIGkgPCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiB2YWx1ZS5zaXplKTtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgdmFsID0gKHZhbHVlIGFzIGFueSlbaV07XG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHtcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICBpc1ZhbGlkID0gY2xhenouaW5jbHVkZXMoKCh2YWwgPz8ge30pIGFzIG9iamVjdCkuY29uc3RydWN0b3I/Lm5hbWUpOyAvLyBudWxsIGlzIGFuIG9iamVjdFxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlzVmFsaWQgPSBjbGF6ei5zb21lKChjOiBzdHJpbmcpID0+IHR5cGVvZiB2YWwgPT09IGMudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMuZ2V0TWVzc2FnZShvcHRpb25zLm1lc3NhZ2UgfHwgdGhpcy5tZXNzYWdlLCBjbGF6eik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -96,13 +96,17 @@ let TypeValidator = class TypeValidator extends Validator_1.Validator {
|
|
|
96
96
|
hasErrors(value, options) {
|
|
97
97
|
if (value === undefined)
|
|
98
98
|
return; // Don't try and enforce type if undefined
|
|
99
|
-
const { types, message } = options;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
const { types, message, customTypes } = options;
|
|
100
|
+
let ts = customTypes || types;
|
|
101
|
+
ts = (Array.isArray(ts) ? ts : [ts]).map((t) => {
|
|
102
|
+
if (typeof t === "string")
|
|
103
|
+
return t;
|
|
104
|
+
if (typeof t === "function" && !t.name)
|
|
105
|
+
t = t();
|
|
106
|
+
return t.name || t;
|
|
107
|
+
});
|
|
108
|
+
if (!reflection_1.Reflection.evaluateDesignTypes(value, ts))
|
|
109
|
+
return this.getMessage(message || this.message, typeof ts === "string" ? ts : Array.isArray(ts) ? ts.join(", ") : ts, typeof value);
|
|
106
110
|
}
|
|
107
111
|
};
|
|
108
112
|
exports.TypeValidator = TypeValidator;
|
|
@@ -123,4 +127,4 @@ Validation_1.Validation.register({
|
|
|
123
127
|
validationKey: constants_2.ModelKeys.TYPE,
|
|
124
128
|
save: false,
|
|
125
129
|
});
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHlwZVZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92YWxpZGF0aW9uL1ZhbGlkYXRvcnMvVHlwZVZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBd0M7QUFDeEMsK0NBQXFFO0FBQ3JFLGlEQUF5QztBQUN6QyxvREFBMkM7QUFNM0MsMkRBQWtEO0FBQ2xELHFEQUFrRDtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeURHO0FBRUksSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYyxTQUFRLHFCQUErQjtJQUNoRSxZQUFZLFVBQWtCLGtDQUFzQixDQUFDLElBQUk7UUFDdkQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLFNBQVMsQ0FDZCxLQUFVLEVBQ1YsT0FBNkI7UUFFN0IsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU8sQ0FBQywwQ0FBMEM7UUFFM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRWhELElBQUksRUFBRSxHQUFHLFdBQVcsSUFBSSxLQUFLLENBQUM7UUFDOUIsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQUUsQ0FBQyxHQUFJLENBQWtCLEVBQUUsQ0FBQztZQUNsRSxPQUFRLENBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHVCQUFVLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQVMsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQ3BCLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUN2QixPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUNwRSxPQUFPLEtBQUssQ0FDYixDQUFDO0lBQ04sQ0FBQztDQUNGLENBQUE7QUExQ1ksc0NBQWE7d0JBQWIsYUFBYTtJQUR6QixJQUFBLHNCQUFTLEVBQUMsMEJBQWMsQ0FBQyxJQUFJLENBQUM7O0dBQ2xCLGFBQWEsQ0EwQ3pCO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHVCQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xCLFNBQVMsRUFBRSxhQUFpQztJQUM1QyxhQUFhLEVBQUUscUJBQVMsQ0FBQyxJQUFJO0lBQzdCLElBQUksRUFBRSxLQUFLO0NBQ1csQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vVmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VSUk9SX01FU1NBR0VTLCBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9WYWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBUeXBlVmFsaWRhdG9yT3B0aW9ucyxcbiAgVmFsaWRhdG9yRGVmaW5pdGlvbixcbiAgVmFsaWRhdG9yT3B0aW9ucyxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2RlbEtleXMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvciBmb3IgY2hlY2tpbmcgaWYgYSB2YWx1ZSBpcyBvZiB0aGUgZXhwZWN0ZWQgdHlwZShzKVxuICogQHN1bW1hcnkgVGhlIFR5cGVWYWxpZGF0b3IgZW5zdXJlcyB0aGF0IGEgdmFsdWUgbWF0Y2hlcyBvbmUgb2YgdGhlIHNwZWNpZmllZCB0eXBlcy5cbiAqIEl0IGNhbiB2YWxpZGF0ZSBhZ2FpbnN0IGEgc2luZ2xlIHR5cGUsIG11bHRpcGxlIHR5cGVzLCBvciBhIHR5cGUgd2l0aCBhIHNwZWNpZmljIG5hbWUuXG4gKiBUaGlzIHZhbGlkYXRvciBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIHRoZSBAdHlwZSBkZWNvcmF0b3IgYW5kIGlzIGZ1bmRhbWVudGFsIGZvclxuICogZW5zdXJpbmcgdHlwZSBzYWZldHkgaW4gdmFsaWRhdGVkIG1vZGVscy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIC0gQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIHZhbGlkYXRpb24gZmFpbHMsIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1RZUEV9XG4gKlxuICogQGNsYXNzIFR5cGVWYWxpZGF0b3JcbiAqIEBleHRlbmRzIFZhbGlkYXRvclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUgYSB0eXBlIHZhbGlkYXRvciB3aXRoIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogY29uc3QgdHlwZVZhbGlkYXRvciA9IG5ldyBUeXBlVmFsaWRhdG9yKCk7XG4gKlxuICogLy8gQ3JlYXRlIGEgdHlwZSB2YWxpZGF0b3Igd2l0aCBjdXN0b20gZXJyb3IgbWVzc2FnZVxuICogY29uc3QgY3VzdG9tVHlwZVZhbGlkYXRvciA9IG5ldyBUeXBlVmFsaWRhdG9yKFwiVmFsdWUgbXVzdCBiZSBvZiB0eXBlIHswfSwgYnV0IGdvdCB7MX1cIik7XG4gKlxuICogLy8gVmFsaWRhdGUgYWdhaW5zdCBhIHNpbmdsZSB0eXBlXG4gKiBjb25zdCBzdHJpbmdPcHRpb25zID0geyB0eXBlczogXCJzdHJpbmdcIiB9O1xuICogdHlwZVZhbGlkYXRvci5oYXNFcnJvcnMoXCJoZWxsb1wiLCBzdHJpbmdPcHRpb25zKTsgLy8gdW5kZWZpbmVkICh2YWxpZClcbiAqIHR5cGVWYWxpZGF0b3IuaGFzRXJyb3JzKDEyMywgc3RyaW5nT3B0aW9ucyk7IC8vIFJldHVybnMgZXJyb3IgbWVzc2FnZSAoaW52YWxpZClcbiAqXG4gKiAvLyBWYWxpZGF0ZSBhZ2FpbnN0IG11bHRpcGxlIHR5cGVzXG4gKiBjb25zdCBtdWx0aU9wdGlvbnMgPSB7IHR5cGVzOiBbXCJzdHJpbmdcIiwgXCJudW1iZXJcIl0gfTtcbiAqIHR5cGVWYWxpZGF0b3IuaGFzRXJyb3JzKFwiaGVsbG9cIiwgbXVsdGlPcHRpb25zKTsgLy8gdW5kZWZpbmVkICh2YWxpZClcbiAqIHR5cGVWYWxpZGF0b3IuaGFzRXJyb3JzKDEyMywgbXVsdGlPcHRpb25zKTsgLy8gdW5kZWZpbmVkICh2YWxpZClcbiAqIHR5cGVWYWxpZGF0b3IuaGFzRXJyb3JzKHRydWUsIG11bHRpT3B0aW9ucyk7IC8vIFJldHVybnMgZXJyb3IgbWVzc2FnZSAoaW52YWxpZClcbiAqXG4gKiAvLyBWYWxpZGF0ZSBhZ2FpbnN0IGEgY2xhc3MgdHlwZVxuICogY29uc3QgY2xhc3NPcHRpb25zID0geyB0eXBlczogeyBuYW1lOiBcIkRhdGVcIiB9IH07XG4gKiB0eXBlVmFsaWRhdG9yLmhhc0Vycm9ycyhuZXcgRGF0ZSgpLCBjbGFzc09wdGlvbnMpOyAvLyB1bmRlZmluZWQgKHZhbGlkKVxuICogYGBgXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENsaWVudFxuICogICBwYXJ0aWNpcGFudCBWIGFzIFR5cGVWYWxpZGF0b3JcbiAqICAgcGFydGljaXBhbnQgUiBhcyBSZWZsZWN0aW9uXG4gKlxuICogICBDLT4+VjogbmV3IFR5cGVWYWxpZGF0b3IobWVzc2FnZSlcbiAqICAgQy0+PlY6IGhhc0Vycm9ycyh2YWx1ZSwgb3B0aW9ucylcbiAqICAgYWx0IHZhbHVlIGlzIHVuZGVmaW5lZFxuICogICAgIFYtLT4+QzogdW5kZWZpbmVkICh2YWxpZClcbiAqICAgZWxzZSB2YWx1ZSBpcyBkZWZpbmVkXG4gKiAgICAgVi0+PlI6IGV2YWx1YXRlRGVzaWduVHlwZXModmFsdWUsIHR5cGVzKVxuICogICAgIGFsdCB0eXBlIGV2YWx1YXRpb24gcGFzc2VzXG4gKiAgICAgICBWLS0+PkM6IHVuZGVmaW5lZCAodmFsaWQpXG4gKiAgICAgZWxzZSB0eXBlIGV2YWx1YXRpb24gZmFpbHNcbiAqICAgICAgIFYtPj5WOiBGb3JtYXQgZXJyb3IgbWVzc2FnZSB3aXRoIHR5cGUgaW5mb1xuICogICAgICAgVi0tPj5DOiBFcnJvciBtZXNzYWdlXG4gKiAgICAgZW5kXG4gKiAgIGVuZFxuICpcbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbkB2YWxpZGF0b3IoVmFsaWRhdGlvbktleXMuVFlQRSlcbmV4cG9ydCBjbGFzcyBUeXBlVmFsaWRhdG9yIGV4dGVuZHMgVmFsaWRhdG9yPFR5cGVWYWxpZGF0b3JPcHRpb25zPiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBvZiB0aGUgZXhwZWN0ZWQgdHlwZShzKVxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgbWF0Y2hlcyBvbmUgb2YgdGhlIHNwZWNpZmllZCB0eXBlcy5cbiAgICogSXQgdXNlcyB0aGUgUmVmbGVjdGlvbiB1dGlsaXR5IHRvIGV2YWx1YXRlIGlmIHRoZSB2YWx1ZSdzIHR5cGUgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgdHlwZXMuXG4gICAqIFRoZSBtZXRob2Qgc2tpcHMgdmFsaWRhdGlvbiBmb3IgdW5kZWZpbmVkIHZhbHVlcyB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgUmVxdWlyZWRWYWxpZGF0b3IuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge1R5cGVWYWxpZGF0b3JPcHRpb25zfSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGNvbnRhaW5pbmcgdGhlIGV4cGVjdGVkIHR5cGVzXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gRXJyb3IgbWVzc2FnZSBpZiB2YWxpZGF0aW9uIGZhaWxzLCB1bmRlZmluZWQgaWYgdmFsaWRhdGlvbiBwYXNzZXNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqXG4gICAqIEBzZWUgVmFsaWRhdG9yI2hhc0Vycm9yc1xuICAgKi9cbiAgcHVibGljIGhhc0Vycm9ycyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFR5cGVWYWxpZGF0b3JPcHRpb25zXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjsgLy8gRG9uJ3QgdHJ5IGFuZCBlbmZvcmNlIHR5cGUgaWYgdW5kZWZpbmVkXG5cbiAgICBjb25zdCB7IHR5cGVzLCBtZXNzYWdlLCBjdXN0b21UeXBlcyB9ID0gb3B0aW9ucztcblxuICAgIGxldCB0cyA9IGN1c3RvbVR5cGVzIHx8IHR5cGVzO1xuICAgIHRzID0gKEFycmF5LmlzQXJyYXkodHMpID8gdHMgOiBbdHNdKS5tYXAoKHQpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHQ7XG4gICAgICBpZiAodHlwZW9mIHQgPT09IFwiZnVuY3Rpb25cIiAmJiAhdC5uYW1lKSB0ID0gKHQgYXMgKCkgPT4gc3RyaW5nKSgpO1xuICAgICAgcmV0dXJuICh0IGFzIGFueSkubmFtZSB8fCB0O1xuICAgIH0pO1xuXG4gICAgaWYgKCFSZWZsZWN0aW9uLmV2YWx1YXRlRGVzaWduVHlwZXModmFsdWUsIHRzIGFzIGFueSkpXG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXNzYWdlKFxuICAgICAgICBtZXNzYWdlIHx8IHRoaXMubWVzc2FnZSxcbiAgICAgICAgdHlwZW9mIHRzID09PSBcInN0cmluZ1wiID8gdHMgOiBBcnJheS5pc0FycmF5KHRzKSA/IHRzLmpvaW4oXCIsIFwiKSA6IHRzLFxuICAgICAgICB0eXBlb2YgdmFsdWVcbiAgICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXIgdGhlIFR5cGVWYWxpZGF0b3Igd2l0aCB0aGUgVmFsaWRhdGlvbiByZWdpc3RyeVxuICogQHN1bW1hcnkgVGhpcyByZWdpc3RyYXRpb24gYXNzb2NpYXRlcyB0aGUgVHlwZVZhbGlkYXRvciB3aXRoIHRoZSBNb2RlbEtleXMuVFlQRSBrZXksXG4gKiBhbGxvd2luZyBpdCB0byBiZSB1c2VkIGZvciB2YWxpZGF0aW5nIGRlc2lnbiB0eXBlcy4gVGhlIHNhdmUgZmxhZyBpcyBzZXQgdG8gZmFsc2VcbiAqIHRvIHByZXZlbnQgdGhlIHZhbGlkYXRvciBmcm9tIGJlaW5nIHNhdmVkIGluIHRoZSBzdGFuZGFyZCB2YWxpZGF0b3IgcmVnaXN0cnkuXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5WYWxpZGF0aW9uLnJlZ2lzdGVyKHtcbiAgdmFsaWRhdG9yOiBUeXBlVmFsaWRhdG9yIGFzIFZhbGlkYXRvck9wdGlvbnMsXG4gIHZhbGlkYXRpb25LZXk6IE1vZGVsS2V5cy5UWVBFLFxuICBzYXZlOiBmYWxzZSxcbn0gYXMgVmFsaWRhdG9yRGVmaW5pdGlvbik7XG4iXX0=
|