@muziehdesign/forms 0.0.1-alpha.130 → 0.0.1-alpha.143
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/esm2020/lib/model-schema.factory.mjs +2 -2
- package/esm2020/lib/ng-form-model-state.service.mjs +2 -8
- package/esm2020/lib/type-annotations.mjs +14 -73
- package/fesm2015/muziehdesign-forms.mjs +17 -81
- package/fesm2015/muziehdesign-forms.mjs.map +1 -1
- package/fesm2020/muziehdesign-forms.mjs +16 -81
- package/fesm2020/muziehdesign-forms.mjs.map +1 -1
- package/lib/type-annotations.d.ts +15 -31
- package/package.json +1 -1
|
@@ -70,7 +70,7 @@ export class ModelSchemaFactory {
|
|
|
70
70
|
return schema;
|
|
71
71
|
}
|
|
72
72
|
buildDateSchema(options) {
|
|
73
|
-
let schema = Yup.date();
|
|
73
|
+
let schema = Yup.date().typeError('Please enter a valid date');
|
|
74
74
|
if (options.required) {
|
|
75
75
|
schema = schema.required(options.required.message);
|
|
76
76
|
}
|
|
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImpor
|
|
|
100
100
|
providedIn: 'root',
|
|
101
101
|
}]
|
|
102
102
|
}], ctorParameters: function () { return []; } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBQWlELGNBQWMsRUFBOEMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvSSxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQzs7QUFFM0I7Ozs7Ozs7Ozs7RUFVRTtBQUtGLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsZ0JBQWUsQ0FBQztJQUVoQixLQUFLLENBQUksS0FBUTtRQUNmLE1BQU0sUUFBUSxHQUF1QyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNHLElBQUksS0FBSyxHQUFnQixFQUFFLENBQUM7UUFDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRTtnQkFDakQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUE4QixDQUFDLENBQUM7YUFDckU7aUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3pELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBK0IsQ0FB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SUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzRDtRQUNELElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDbkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFDdkIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDN0IsSUFBSSxFQUFFLENBQUMsQ0FBUSxFQUFFLE9BQWEsRUFBRSxFQUFFO29CQUNsQyxPQUFPLE9BQU8sQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2FBQUMsQ0FBQyxDQUFDO1NBQ0w7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzsrR0FoRlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2JqZWN0LCBTY2hlbWFPZiB9IGZyb20gJ3l1cCc7XG5pbXBvcnQgeyBNb2RlbFZhbGlkYXRvciB9IGZyb20gJy4vbW9kZWwtdmFsaWRhdG9yJztcbmltcG9ydCB7IFNDSEVNQV9NRVRBREFUQV9OQU1FU1BBQ0UgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPYmplY3RTaGFwZSB9IGZyb20gJ3l1cC9saWIvb2JqZWN0JztcbmltcG9ydCB7IEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMsIENvbnN0cmFpbnRBbm5vdGF0aW9ucywgQ29uc3RyYWludFR5cGUsIERhdGVUeXBlQW5ub3RhdGlvbnMsIFN0cmluZ1R5cGVBbm5vdGF0aW9ucyB9IGZyb20gJy4vdHlwZS1hbm5vdGF0aW9ucyc7XG5pbXBvcnQgKiBhcyBZdXAgZnJvbSAneXVwJztcblxuLypcblNjaGVtYSBydWxlcyBuZWVkIHRvIGJlIGJ1aWx0IGluIHRoZSBvcmRlciB0aGV5IG5lZWQgdG8gYmUgZXZhbHVhdGVkIGluLlxuRm9yIGV4YW1wbGUsXG4gIGBgYFxuICAgIHNjaGVtYS5yZXF1aXJlZCgpLm1heCguLi4pLm1hdGNoZXMoLi4uKTtcbiAgYGBgXG5ldmFsdWF0ZXMgdGhlIDMgcnVsZXMgaW4gdGhpcyBvcmRlclxuICAtIHJlcXVpcmVkXG4gIC0gbWF4XG4gIC0gbWF0Y2hlc1xuKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsU2NoZW1hRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBidWlsZDxUPihtb2RlbDogVCk6IE1vZGVsVmFsaWRhdG9yPFQ+IHtcbiAgICBjb25zdCBtZXRhZGF0YTogTWFwPHN0cmluZywgQ29uc3RyYWludEFubm90YXRpb25zPiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoU0NIRU1BX01FVEFEQVRBX05BTUVTUEFDRSwgbW9kZWwpO1xuICAgIGxldCBzaGFwZTogT2JqZWN0U2hhcGUgPSB7fTtcbiAgICBtZXRhZGF0YS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBpZiAodmFsdWUuY29uc3RyYWludFR5cGUgPT0gQ29uc3RyYWludFR5cGUuc3RyaW5nKSB7XG4gICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLmJ1aWxkU3RyaW5nU2NoZW1hKHZhbHVlIGFzIFN0cmluZ1R5cGVBbm5vdGF0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cmFpbnRUeXBlID09IENvbnN0cmFpbnRUeXBlLmJvb2xlYW4pIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuYnVpbGRCb29sZWFuU2NoZW1hKHZhbHVlIGFzIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJhaW50VHlwZSA9PSBDb25zdHJhaW50VHlwZS5kYXRlKSB7XG4gICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLmJ1aWxkRGF0ZVNjaGVtYSh2YWx1ZSBhcyBEYXRlVHlwZUFubm90YXRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzY2hlbWEgPSBvYmplY3Qoc2hhcGUpIGFzIFNjaGVtYU9mPFQ+O1xuICAgIHJldHVybiBuZXcgTW9kZWxWYWxpZGF0b3Ioc2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdHJpbmdTY2hlbWEob3B0aW9uczogU3RyaW5nVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5zdHJpbmcoKTtcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLmxlbmd0aChvcHRpb25zLmxlbmd0aC5sZW5ndGgsIG9wdGlvbnMubGVuZ3RoLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1heExlbmd0aCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1heChvcHRpb25zLm1heExlbmd0aC5tYXhMZW5ndGgsIG9wdGlvbnMubWF4TGVuZ3RoLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1pbkxlbmd0aCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1pbihvcHRpb25zLm1pbkxlbmd0aC5taW5MZW5ndGgsIG9wdGlvbnMubWluTGVuZ3RoLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBhdHRlcm4pIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXRjaGVzKG9wdGlvbnMucGF0dGVybi5wYXR0ZXJuLCBvcHRpb25zLnBhdHRlcm4ubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRCb29sZWFuU2NoZW1hKG9wdGlvbnM6IEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMpIHtcbiAgICBsZXQgc2NoZW1hID0gWXVwLmJvb2xlYW4oKTtcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmVxdWFscykge1xuICAgICAgaWYgKG9wdGlvbnMuZXF1YWxzLmVxdWFscykge1xuICAgICAgICBzY2hlbWEgPSBzY2hlbWEuaXNUcnVlKG9wdGlvbnMuZXF1YWxzLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLmlzRmFsc2Uob3B0aW9ucy5lcXVhbHMubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREYXRlU2NoZW1hKG9wdGlvbnM6IERhdGVUeXBlQW5ub3RhdGlvbnMpIHtcbiAgICBsZXQgc2NoZW1hID0gWXVwLmRhdGUoKS50eXBlRXJyb3IoJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUnKTtcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1pbikge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1pbihvcHRpb25zLm1pbi5taW4sIG9wdGlvbnMubWluLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXgob3B0aW9ucy5tYXgubWF4LCBvcHRpb25zLm1heC5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudGVzdCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnRlc3Qoe1xuICAgICAgICBuYW1lOiBvcHRpb25zLnRlc3QubmFtZSxcbiAgICAgICAgbWVzc2FnZTogb3B0aW9ucy50ZXN0Lm1lc3NhZ2UsXG4gICAgICAgIHRlc3Q6IChkPzogRGF0ZSwgY29udGV4dD86IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy50ZXN0IS50ZXN0KGQhKTtcbiAgICAgIH19KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG59XG4iXX0=
|
|
@@ -38,13 +38,7 @@ export class NgFormModelState {
|
|
|
38
38
|
grouped.forEach((value, key) => {
|
|
39
39
|
let validationErrors = {};
|
|
40
40
|
value.forEach((v) => (validationErrors[v.type] = v.message));
|
|
41
|
-
|
|
42
|
-
this.form.controls[key].setErrors(validationErrors);
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
console.log('error setting form control', key);
|
|
46
|
-
throw e;
|
|
47
|
-
}
|
|
41
|
+
this.form.controls[key]?.setErrors(validationErrors);
|
|
48
42
|
});
|
|
49
43
|
});
|
|
50
44
|
}
|
|
@@ -67,4 +61,4 @@ export class NgFormModelState {
|
|
|
67
61
|
Object.keys(this.form.controls).forEach(key => this.form.controls[key].setErrors(null));
|
|
68
62
|
}
|
|
69
63
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQVUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBUWhFLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFBRyxDQUFDO0lBRW5ELE1BQU0sQ0FBSSxJQUFZLEVBQUUsS0FBUSxFQUFFLE9BQTJCO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztvSEFOVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBY0QsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUFvQixJQUFZLEVBQVUsY0FBaUMsRUFBVSxLQUFRLEVBQUUsT0FBMkI7UUFBdEcsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQUc7UUFKckYsV0FBTSxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUMvRSxZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUkxQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO2FBQ3hCLElBQUksQ0FDSCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDNUQsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUF3QixDQUFDLENBQUM7WUFFdkksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxnQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO2dCQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBb0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUE0QztRQUN2RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxNQUFNLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTk9fRVJST1JTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3JtLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGZyb20sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmllbGRFcnJvciB9IGZyb20gJy4vZmllbGQtZXJyb3InO1xuaW1wb3J0IHsgTW9kZWxTY2hlbWFGYWN0b3J5IH0gZnJvbSAnLi9tb2RlbC1zY2hlbWEuZmFjdG9yeSc7XG5pbXBvcnQgeyBNb2RlbFZhbGlkYXRvciB9IGZyb20gJy4vbW9kZWwtdmFsaWRhdG9yJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5nRm9ybU1vZGVsU3RhdGVGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYWN0b3J5OiBNb2RlbFNjaGVtYUZhY3RvcnkpIHt9XG5cbiAgY3JlYXRlPFQ+KGZvcm06IE5nRm9ybSwgbW9kZWw6IFQsIG9wdGlvbnM/OiBNb2RlbFN0YXRlT3B0aW9ucykge1xuICAgIGNvbnN0IG1vZGVsU3RhdGUgPSBuZXcgTmdGb3JtTW9kZWxTdGF0ZTxUPihmb3JtLCB0aGlzLmZhY3RvcnkuYnVpbGQobW9kZWwpLCBtb2RlbCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG1vZGVsU3RhdGU7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2RlbFN0YXRlT3B0aW9ucyB7XG4gIG9uVmFsaWRhdGU6IChlcnJvcnM6IEZpZWxkRXJyb3JbXSkgPT4gRmllbGRFcnJvcltdXG59XG5cbmV4cG9ydCBjbGFzcyBOZ0Zvcm1Nb2RlbFN0YXRlPFQ+IHtcbiAgcHJpdmF0ZSBlcnJvcnM6IEJlaGF2aW9yU3ViamVjdDxGaWVsZEVycm9yW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWVsZEVycm9yW10+KFtdKTtcbiAgcHVibGljIGVycm9ycyQgPSB0aGlzLmVycm9ycy5hc09ic2VydmFibGUoKTtcbiAgcHJpdmF0ZSBvcHRpb25zPzogTW9kZWxTdGF0ZU9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtOiBOZ0Zvcm0sIHByaXZhdGUgbW9kZWxWYWxpZGF0b3I6IE1vZGVsVmFsaWRhdG9yPFQ+LCBwcml2YXRlIG1vZGVsOiBULCBvcHRpb25zPzogTW9kZWxTdGF0ZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIFxuICAgIHRoaXMuZm9ybS5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhc3luYyAoeCkgPT4ge1xuICAgICAgICAgIHRoaXMubW9kZWwgPSB4O1xuICAgICAgICAgIHJldHVybiBmcm9tKHRoaXMucnVuVmFsaWRhdGlvbnModGhpcy5vcHRpb25zPy5vblZhbGlkYXRlKSlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuZXJyb3JzJC5zdWJzY3JpYmUoKGxpc3QpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwZWQgPSBsaXN0LnJlZHVjZSgoZ3JvdXBlZCwgdikgPT4gZ3JvdXBlZC5zZXQodi5wYXRoLCBbLi4uKGdyb3VwZWQuZ2V0KHYucGF0aCkgfHwgW10pLCB2XSksIG5ldyBNYXA8c3RyaW5nLCBGaWVsZEVycm9yW10+KCkpO1xuXG4gICAgICBncm91cGVkLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSA8VmFsaWRhdGlvbkVycm9ycz57fTtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4gKHZhbGlkYXRpb25FcnJvcnNbdi50eXBlXSA9IHYubWVzc2FnZSkpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XT8uc2V0RXJyb3JzKHZhbGlkYXRpb25FcnJvcnMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9ycy52YWx1ZS5sZW5ndGggPT0gMDtcbiAgfVxuXG4gIHNldEVycm9ycyhlcnJvcnM6IEZpZWxkRXJyb3JbXSkge1xuICAgIHRoaXMuZXJyb3JzLm5leHQoZXJyb3JzKTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJ1blZhbGlkYXRpb25zKHRoaXMub3B0aW9ucz8ub25WYWxpZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1blZhbGlkYXRpb25zKGNhbGxiYWNrPzogKGxpc3Q6RmllbGRFcnJvcltdKT0+RmllbGRFcnJvcltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5yZW1vdmVDdXJyZW50RXJyb3JzKCk7XG4gICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMubW9kZWxWYWxpZGF0b3IudmFsaWRhdGUodGhpcy5tb2RlbCk7XG4gICAgY29uc3QgZmluYWwgPSBjYWxsYmFjaz8uKGxpc3QpIHx8IGxpc3Q7XG4gICAgdGhpcy5lcnJvcnMubmV4dChmaW5hbCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUN1cnJlbnRFcnJvcnMoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB0aGlzLmZvcm0uY29udHJvbHNba2V5XS5zZXRFcnJvcnMobnVsbCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -11,11 +11,6 @@ const registerMetadata = (target, propertyKey, constraint) => {
|
|
|
11
11
|
metadata.set(propertyKey, constraint);
|
|
12
12
|
Reflect.defineMetadata(METADATA_KEY, metadata, target);
|
|
13
13
|
};
|
|
14
|
-
export function Annotate(a) {
|
|
15
|
-
return function (target, propertyKey) {
|
|
16
|
-
registerMetadata(target, propertyKey, a.annotations);
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
14
|
export function StringType(...annotations) {
|
|
20
15
|
return function (target, propertyKey) {
|
|
21
16
|
const o = Object.assign({}, ...annotations);
|
|
@@ -30,6 +25,13 @@ export function BooleanType(...annotations) {
|
|
|
30
25
|
registerMetadata(target, propertyKey, o);
|
|
31
26
|
};
|
|
32
27
|
}
|
|
28
|
+
export function DateType(...annotations) {
|
|
29
|
+
return function (target, propertyKey) {
|
|
30
|
+
const o = Object.assign({}, ...annotations);
|
|
31
|
+
o.constraintType = ConstraintType.date;
|
|
32
|
+
registerMetadata(target, propertyKey, o);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
33
35
|
export function required(message) {
|
|
34
36
|
return { required: { required: true, message: message } };
|
|
35
37
|
}
|
|
@@ -51,74 +53,13 @@ export function ofValues(values, message) {
|
|
|
51
53
|
export function equals(value, message) {
|
|
52
54
|
return { equals: { equals: value, message: message } };
|
|
53
55
|
}
|
|
54
|
-
export
|
|
55
|
-
}
|
|
56
|
-
export class StringType2 extends AnnotationType {
|
|
57
|
-
constructor() {
|
|
58
|
-
super(...arguments);
|
|
59
|
-
this.name = 'StringType';
|
|
60
|
-
this.annotations = {
|
|
61
|
-
constraintType: ConstraintType.string, // TODO
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
required(message) {
|
|
65
|
-
this.annotations.required = { required: true, message: message };
|
|
66
|
-
return this;
|
|
67
|
-
}
|
|
68
|
-
pattern(pattern, message) {
|
|
69
|
-
this.annotations.pattern = { pattern: pattern, message: message };
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
export class BooleanType2 extends AnnotationType {
|
|
74
|
-
constructor() {
|
|
75
|
-
super(...arguments);
|
|
76
|
-
this.name = 'BooleanType';
|
|
77
|
-
this.annotations = {
|
|
78
|
-
constraintType: ConstraintType.boolean, // TODO
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
required(message) {
|
|
82
|
-
this.annotations.required = { required: true, message: message };
|
|
83
|
-
return this;
|
|
84
|
-
}
|
|
85
|
-
equals(v, message) {
|
|
86
|
-
this.annotations.equals = { equals: v, message: message };
|
|
87
|
-
return this;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
export function string() {
|
|
91
|
-
return new StringType2();
|
|
92
|
-
}
|
|
93
|
-
export function boolean() {
|
|
94
|
-
return new BooleanType2();
|
|
56
|
+
export function min(value, message) {
|
|
57
|
+
return { min: { min: value, message: message } };
|
|
95
58
|
}
|
|
96
|
-
export
|
|
97
|
-
|
|
98
|
-
super(...arguments);
|
|
99
|
-
this.name = 'DateType';
|
|
100
|
-
this.annotations = {
|
|
101
|
-
constraintType: ConstraintType.date, // TODO
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
required(message) {
|
|
105
|
-
this.annotations.required = { required: true, message: message };
|
|
106
|
-
return this;
|
|
107
|
-
}
|
|
108
|
-
min(v, message) {
|
|
109
|
-
this.annotations.min = { min: v, message: message };
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
max(v, message) {
|
|
113
|
-
this.annotations.max = { max: v, message: message };
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
test(name, v, message) {
|
|
117
|
-
this.annotations.test = { name: name, test: v, message: message };
|
|
118
|
-
return this;
|
|
119
|
-
}
|
|
59
|
+
export function max(value, message) {
|
|
60
|
+
return { max: { max: value, message: message } };
|
|
120
61
|
}
|
|
121
|
-
export function
|
|
122
|
-
return
|
|
62
|
+
export function test(name, test, message) {
|
|
63
|
+
return { test: { name: name, test: test, message: message } };
|
|
123
64
|
}
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1hbm5vdGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL3R5cGUtYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQUV2RCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHVEQUFNLENBQUE7SUFDTix5REFBTyxDQUFBO0lBQ1AsbURBQUksQ0FBQTtBQUNOLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQXVFRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsVUFBaUMsRUFBRSxFQUFFO0lBQ2xHLE1BQU0sUUFBUSxHQUFxQixPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBZSxDQUFDO0lBQ3ZHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsUUFBUSxDQUFrQyxDQUFvQjtJQUM1RSxPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2xELGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQW9DLENBQUMsQ0FBQztJQUNoRixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFHLFdBQXNEO0lBQ2xGLE9BQU8sVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDbEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUs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LEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxHQUFHLENBQUMsQ0FBTyxFQUFFLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sSUFBSSxDQUFDLElBQVksRUFBRSxDQUF1QixFQUFFLE9BQWdCO1FBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxJQUFJO0lBQ2xCLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcblxuY29uc3QgTUVUQURBVEFfS0VZID0gJ2N1c3RvbTptdXppZWhkZXNpZ246YW5ub3RhdGlvbnMnO1xuXG5leHBvcnQgZW51bSBDb25zdHJhaW50VHlwZSB7XG4gIHN0cmluZyxcbiAgYm9vbGVhbixcbiAgZGF0ZSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICBjb25zdHJhaW50VHlwZTogQ29uc3RyYWludFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIGxlbmd0aD86IExlbmd0aEFubm90YXRpb247XG4gIHBhdHRlcm4/OiBQYXR0ZXJuQW5ub3RhdGlvbjtcbiAgbWF4TGVuZ3RoPzogTWF4TGVuZ3RoQW5ub3RhdGlvbjtcbiAgbWluTGVuZ3RoPzogTWluTGVuZ3RoQW5ub3RhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIGVxdWFscz86IEVxdWFsc0Fubm90YXRpb248Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVR5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBtaW4/OiBNaW5pbXVtQW5ub3RhdGlvbjxEYXRlPjtcbiAgbWF4PzogTWF4aW11bUFubm90YXRpb248RGF0ZT47XG4gIHRlc3Q/OiBUZXN0QW5ub3RhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWlyZWRBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICByZXF1aXJlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZW5ndGhBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBsZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgcGF0dGVybjogUmVnRXhwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9mVmFsdWVzQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgdmFsdWVzOiBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcXVhbHNBbm5vdGF0aW9uPFQ+IGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBlcXVhbHM6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaW11bUFubm90YXRpb248VD4gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1pbjogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXhpbXVtQW5ub3RhdGlvbjxUPiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWF4OiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICB0ZXN0OiAoZDpEYXRlKSA9PiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF4TGVuZ3RoQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWF4TGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluTGVuZ3RoQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWluTGVuZ3RoOiBudW1iZXI7XG59XG5cbmNvbnN0IHJlZ2lzdGVyTWV0YWRhdGEgPSAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGNvbnN0cmFpbnQ6IENvbnN0cmFpbnRBbm5vdGF0aW9ucykgPT4ge1xuICBjb25zdCBtZXRhZGF0YTogTWFwPHN0cmluZywgYW55PiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTUVUQURBVEFfS0VZLCB0YXJnZXQpIHx8IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIG1ldGFkYXRhLnNldChwcm9wZXJ0eUtleSwgY29uc3RyYWludCk7XG4gIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoTUVUQURBVEFfS0VZLCBtZXRhZGF0YSwgdGFyZ2V0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBBbm5vdGF0ZTxUIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zPihhOiBBbm5vdGF0aW9uVHlwZTxUPikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhLmFubm90YXRpb25zIGFzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdUeXBlKC4uLmFubm90YXRpb25zOiB7IFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25Bbm5vdGF0aW9uIH1bXSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgbyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBTdHJpbmdUeXBlQW5ub3RhdGlvbnM7XG4gICAgby5jb25zdHJhaW50VHlwZSA9IENvbnN0cmFpbnRUeXBlLnN0cmluZztcbiAgICByZWdpc3Rlck1ldGFkYXRhKHRhcmdldCwgcHJvcGVydHlLZXksIG8pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhblR5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnM7XG4gICAgby5jb25zdHJhaW50VHlwZSA9IENvbnN0cmFpbnRUeXBlLmJvb2xlYW47XG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBvKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFJlcXVpcmVkQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcmVxdWlyZWQ6IHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihyZWdleDogUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBQYXR0ZXJuQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcGF0dGVybjogeyBwYXR0ZXJuOiByZWdleCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGgobGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IGxlbmd0aDogeyBsZW5ndGg6IGxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1heExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1heExlbmd0aDogeyBtYXhMZW5ndGg6IG1heExlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGgobWluTGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1pbkxlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1pbkxlbmd0aDogeyBtaW5MZW5ndGg6IG1pbkxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvZlZhbHVlcyh2YWx1ZXM6IFtdLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBPZlZhbHVlc0Fubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG9mVmFsdWVzOiB7IHZhbHVlczogdmFsdWVzLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsczxUPih2YWx1ZTogVCwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogRXF1YWxzQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgZXF1YWxzOiB7IGVxdWFsczogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQW5ub3RhdGlvblR5cGU8VD4ge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgYW5ub3RhdGlvbnM/OiBUO1xufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nVHlwZTIgZXh0ZW5kcyBBbm5vdGF0aW9uVHlwZTxTdHJpbmdUeXBlQW5ub3RhdGlvbnM+IHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyA9ICdTdHJpbmdUeXBlJztcbiAgcHVibGljIGFubm90YXRpb25zOiBTdHJpbmdUeXBlQW5ub3RhdGlvbnMgPSB7XG4gICAgY29uc3RyYWludFR5cGU6IENvbnN0cmFpbnRUeXBlLnN0cmluZywgLy8gVE9ET1xuICB9O1xuXG4gIHB1YmxpYyByZXF1aXJlZChtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5yZXF1aXJlZCA9IHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBwYXR0ZXJuKHBhdHRlcm46IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMucGF0dGVybiA9IHsgcGF0dGVybjogcGF0dGVybiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb29sZWFuVHlwZTIgZXh0ZW5kcyBBbm5vdGF0aW9uVHlwZTxCb29sZWFuVHlwZUFubm90YXRpb25zPiB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcgPSAnQm9vbGVhblR5cGUnO1xuICBwdWJsaWMgYW5ub3RhdGlvbnM6IEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMgPSB7XG4gICAgY29uc3RyYWludFR5cGU6IENvbnN0cmFpbnRUeXBlLmJvb2xlYW4sIC8vIFRPRE9cbiAgfTtcblxuICBwdWJsaWMgcmVxdWlyZWQobWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMucmVxdWlyZWQgPSB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiBtZXNzYWdlIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKHY6IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFubm90YXRpb25zLmVxdWFscyA9IHsgZXF1YWxzOiB2LCBtZXNzYWdlOiBtZXNzYWdlIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZygpIHtcbiAgcmV0dXJuIG5ldyBTdHJpbmdUeXBlMigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm9vbGVhbigpIHtcbiAgcmV0dXJuIG5ldyBCb29sZWFuVHlwZTIoKTtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGVUeXBlIGV4dGVuZHMgQW5ub3RhdGlvblR5cGU8RGF0ZVR5cGVBbm5vdGF0aW9ucz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nID0gJ0RhdGVUeXBlJztcbiAgcHVibGljIGFubm90YXRpb25zOiBEYXRlVHlwZUFubm90YXRpb25zID0ge1xuICAgIGNvbnN0cmFpbnRUeXBlOiBDb25zdHJhaW50VHlwZS5kYXRlLCAvLyBUT0RPXG4gIH07XG5cbiAgcHVibGljIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFubm90YXRpb25zLnJlcXVpcmVkID0geyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG1pbih2OiBEYXRlLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5taW4gPSB7IG1pbjogdiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG1heCh2OiBEYXRlLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5tYXggPSB7IG1heDogdiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRlc3QobmFtZTogc3RyaW5nLCB2OiAoZDogRGF0ZSkgPT4gYm9vbGVhbiwgbWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMudGVzdCA9IHsgbmFtZTogbmFtZSwgdGVzdDogdiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlKCkge1xuICByZXR1cm4gbmV3IERhdGVUeXBlKCk7XG59XG4iXX0=
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1hbm5vdGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL3R5cGUtYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQUV2RCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHVEQUFNLENBQUE7SUFDTix5REFBTyxDQUFBO0lBQ1AsbURBQUksQ0FBQTtBQUNOLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQXVFRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsVUFBaUMsRUFBRSxFQUFFO0lBQ2xHLE1BQU0sUUFBUSxHQUFxQixPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBZSxDQUFDO0lBQ3ZHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQUcsV0FBc0Q7SUFDbEYsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNsRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLFdBQVcsQ0FBMEIsQ0FBQztRQUNyRSxDQUFDLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDekMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFB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QUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG5jb25zdCBNRVRBREFUQV9LRVkgPSAnY3VzdG9tOm11emllaGRlc2lnbjphbm5vdGF0aW9ucyc7XG5cbmV4cG9ydCBlbnVtIENvbnN0cmFpbnRUeXBlIHtcbiAgc3RyaW5nLFxuICBib29sZWFuLFxuICBkYXRlLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIGNvbnN0cmFpbnRUeXBlOiBDb25zdHJhaW50VHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICByZXF1aXJlZD86IFJlcXVpcmVkQW5ub3RhdGlvbjtcbiAgbGVuZ3RoPzogTGVuZ3RoQW5ub3RhdGlvbjtcbiAgcGF0dGVybj86IFBhdHRlcm5Bbm5vdGF0aW9uO1xuICBtYXhMZW5ndGg/OiBNYXhMZW5ndGhBbm5vdGF0aW9uO1xuICBtaW5MZW5ndGg/OiBNaW5MZW5ndGhBbm5vdGF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICByZXF1aXJlZD86IFJlcXVpcmVkQW5ub3RhdGlvbjtcbiAgZXF1YWxzPzogRXF1YWxzQW5ub3RhdGlvbjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIG1pbj86IE1pbmltdW1Bbm5vdGF0aW9uPERhdGU+O1xuICBtYXg/OiBNYXhpbXVtQW5ub3RhdGlvbjxEYXRlPjtcbiAgdGVzdD86IFRlc3RBbm5vdGF0aW9uPERhdGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlZEFubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlbmd0aEFubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIGxlbmd0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5Bbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBwYXR0ZXJuOiBSZWdFeHA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2ZWYWx1ZXNBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICB2YWx1ZXM6IFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVxdWFsc0Fubm90YXRpb248VD4gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIGVxdWFsczogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5pbXVtQW5ub3RhdGlvbjxUPiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWluOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1heGltdW1Bbm5vdGF0aW9uPFQ+IGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtYXg6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEFubm90YXRpb248VD4gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIHRlc3Q6IChkOlQpID0+IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXhMZW5ndGhBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtYXhMZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5MZW5ndGhBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtaW5MZW5ndGg6IG51bWJlcjtcbn1cblxuY29uc3QgcmVnaXN0ZXJNZXRhZGF0YSA9ICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZywgY29uc3RyYWludDogQ29uc3RyYWludEFubm90YXRpb25zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhOiBNYXA8c3RyaW5nLCBhbnk+ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNRVRBREFUQV9LRVksIHRhcmdldCkgfHwgbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgbWV0YWRhdGEuc2V0KHByb3BlcnR5S2V5LCBjb25zdHJhaW50KTtcbiAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShNRVRBREFUQV9LRVksIG1ldGFkYXRhLCB0YXJnZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ1R5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIFN0cmluZ1R5cGVBbm5vdGF0aW9ucztcbiAgICBvLmNvbnN0cmFpbnRUeXBlID0gQ29uc3RyYWludFR5cGUuc3RyaW5nO1xuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgbyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCb29sZWFuVHlwZSguLi5hbm5vdGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uQW5ub3RhdGlvbiB9W10pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IG8gPSBPYmplY3QuYXNzaWduKHt9LCAuLi5hbm5vdGF0aW9ucykgYXMgQm9vbGVhblR5cGVBbm5vdGF0aW9ucztcbiAgICBvLmNvbnN0cmFpbnRUeXBlID0gQ29uc3RyYWludFR5cGUuYm9vbGVhbjtcbiAgICByZWdpc3Rlck1ldGFkYXRhKHRhcmdldCwgcHJvcGVydHlLZXksIG8pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVR5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIERhdGVUeXBlQW5ub3RhdGlvbnM7XG4gICAgby5jb25zdHJhaW50VHlwZSA9IENvbnN0cmFpbnRUeXBlLmRhdGU7XG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBvKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFJlcXVpcmVkQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcmVxdWlyZWQ6IHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihyZWdleDogUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBQYXR0ZXJuQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcGF0dGVybjogeyBwYXR0ZXJuOiByZWdleCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGgobGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IGxlbmd0aDogeyBsZW5ndGg6IGxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1heExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1heExlbmd0aDogeyBtYXhMZW5ndGg6IG1heExlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGgobWluTGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1pbkxlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1pbkxlbmd0aDogeyBtaW5MZW5ndGg6IG1pbkxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvZlZhbHVlcyh2YWx1ZXM6IFtdLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBPZlZhbHVlc0Fubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG9mVmFsdWVzOiB7IHZhbHVlczogdmFsdWVzLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsczxUPih2YWx1ZTogVCwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogRXF1YWxzQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgZXF1YWxzOiB7IGVxdWFsczogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluPFQ+KHZhbHVlOiBULCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBNaW5pbXVtQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgbWluOiB7IG1pbjogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4PFQ+KHZhbHVlOiBULCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBNYXhpbXVtQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgbWF4OiB7IG1heDogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdDxUPihuYW1lOiBzdHJpbmcsIHRlc3Q6IChkOlQpID0+IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFRlc3RBbm5vdGF0aW9uPFQ+IH0ge1xuICByZXR1cm4geyB0ZXN0OiB7IG5hbWU6IG5hbWUsIHRlc3Q6IHRlc3QsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuIl19
|
|
@@ -38,11 +38,6 @@ const registerMetadata = (target, propertyKey, constraint) => {
|
|
|
38
38
|
metadata.set(propertyKey, constraint);
|
|
39
39
|
Reflect.defineMetadata(METADATA_KEY, metadata, target);
|
|
40
40
|
};
|
|
41
|
-
function Annotate(a) {
|
|
42
|
-
return function (target, propertyKey) {
|
|
43
|
-
registerMetadata(target, propertyKey, a.annotations);
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
41
|
function StringType(...annotations) {
|
|
47
42
|
return function (target, propertyKey) {
|
|
48
43
|
const o = Object.assign({}, ...annotations);
|
|
@@ -57,6 +52,13 @@ function BooleanType(...annotations) {
|
|
|
57
52
|
registerMetadata(target, propertyKey, o);
|
|
58
53
|
};
|
|
59
54
|
}
|
|
55
|
+
function DateType(...annotations) {
|
|
56
|
+
return function (target, propertyKey) {
|
|
57
|
+
const o = Object.assign({}, ...annotations);
|
|
58
|
+
o.constraintType = ConstraintType.date;
|
|
59
|
+
registerMetadata(target, propertyKey, o);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
60
62
|
function required(message) {
|
|
61
63
|
return { required: { required: true, message: message } };
|
|
62
64
|
}
|
|
@@ -78,75 +80,14 @@ function ofValues(values, message) {
|
|
|
78
80
|
function equals(value, message) {
|
|
79
81
|
return { equals: { equals: value, message: message } };
|
|
80
82
|
}
|
|
81
|
-
|
|
83
|
+
function min(value, message) {
|
|
84
|
+
return { min: { min: value, message: message } };
|
|
82
85
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
super(...arguments);
|
|
86
|
-
this.name = 'StringType';
|
|
87
|
-
this.annotations = {
|
|
88
|
-
constraintType: ConstraintType.string, // TODO
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
required(message) {
|
|
92
|
-
this.annotations.required = { required: true, message: message };
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
pattern(pattern, message) {
|
|
96
|
-
this.annotations.pattern = { pattern: pattern, message: message };
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
86
|
+
function max(value, message) {
|
|
87
|
+
return { max: { max: value, message: message } };
|
|
99
88
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
super(...arguments);
|
|
103
|
-
this.name = 'BooleanType';
|
|
104
|
-
this.annotations = {
|
|
105
|
-
constraintType: ConstraintType.boolean, // TODO
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
required(message) {
|
|
109
|
-
this.annotations.required = { required: true, message: message };
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
equals(v, message) {
|
|
113
|
-
this.annotations.equals = { equals: v, message: message };
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function string() {
|
|
118
|
-
return new StringType2();
|
|
119
|
-
}
|
|
120
|
-
function boolean() {
|
|
121
|
-
return new BooleanType2();
|
|
122
|
-
}
|
|
123
|
-
class DateType extends AnnotationType {
|
|
124
|
-
constructor() {
|
|
125
|
-
super(...arguments);
|
|
126
|
-
this.name = 'DateType';
|
|
127
|
-
this.annotations = {
|
|
128
|
-
constraintType: ConstraintType.date, // TODO
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
required(message) {
|
|
132
|
-
this.annotations.required = { required: true, message: message };
|
|
133
|
-
return this;
|
|
134
|
-
}
|
|
135
|
-
min(v, message) {
|
|
136
|
-
this.annotations.min = { min: v, message: message };
|
|
137
|
-
return this;
|
|
138
|
-
}
|
|
139
|
-
max(v, message) {
|
|
140
|
-
this.annotations.max = { max: v, message: message };
|
|
141
|
-
return this;
|
|
142
|
-
}
|
|
143
|
-
test(name, v, message) {
|
|
144
|
-
this.annotations.test = { name: name, test: v, message: message };
|
|
145
|
-
return this;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
function date() {
|
|
149
|
-
return new DateType();
|
|
89
|
+
function test(name, test, message) {
|
|
90
|
+
return { test: { name: name, test: test, message: message } };
|
|
150
91
|
}
|
|
151
92
|
|
|
152
93
|
/*
|
|
@@ -214,7 +155,7 @@ class ModelSchemaFactory {
|
|
|
214
155
|
return schema;
|
|
215
156
|
}
|
|
216
157
|
buildDateSchema(options) {
|
|
217
|
-
let schema = Yup.date();
|
|
158
|
+
let schema = Yup.date().typeError('Please enter a valid date');
|
|
218
159
|
if (options.required) {
|
|
219
160
|
schema = schema.required(options.required.message);
|
|
220
161
|
}
|
|
@@ -319,15 +260,10 @@ class NgFormModelState {
|
|
|
319
260
|
this.errors$.subscribe((list) => {
|
|
320
261
|
const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map());
|
|
321
262
|
grouped.forEach((value, key) => {
|
|
263
|
+
var _a;
|
|
322
264
|
let validationErrors = {};
|
|
323
265
|
value.forEach((v) => (validationErrors[v.type] = v.message));
|
|
324
|
-
|
|
325
|
-
this.form.controls[key].setErrors(validationErrors);
|
|
326
|
-
}
|
|
327
|
-
catch (e) {
|
|
328
|
-
console.log('error setting form control', key);
|
|
329
|
-
throw e;
|
|
330
|
-
}
|
|
266
|
+
(_a = this.form.controls[key]) === null || _a === void 0 ? void 0 : _a.setErrors(validationErrors);
|
|
331
267
|
});
|
|
332
268
|
});
|
|
333
269
|
}
|
|
@@ -364,5 +300,5 @@ class NgFormModelState {
|
|
|
364
300
|
* Generated bundle index. Do not edit.
|
|
365
301
|
*/
|
|
366
302
|
|
|
367
|
-
export {
|
|
303
|
+
export { BooleanType, ConstraintType, DateType, FieldErrorsComponent, FormsModule, ModelSchemaFactory, ModelValidator, NgFormModelState, NgFormModelStateFactory, StringType, equals, length, max, maxLength, min, minLength, ofValues, pattern, required, test };
|
|
368
304
|
//# sourceMappingURL=muziehdesign-forms.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n this.removeCurrentErrors();\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n\n private removeCurrentErrors() {\n Object.keys(this.form.controls).forEach(key => this.form.controls[key].setErrors(null));\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation<Date>;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation<T> extends ValidationAnnotation {\n test: (d:T) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function DateType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as DateTypeAnnotations;\n o.constraintType = ConstraintType.date;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport function min<T>(value: T, message?: string): { [key: string]: MinimumAnnotation<T> } {\n return { min: { min: value, message: message } };\n}\n\nexport function max<T>(value: T, message?: string): { [key: string]: MaximumAnnotation<T> } {\n return { max: { max: value, message: message } };\n}\n\nexport function test<T>(name: string, test: (d:T) => boolean, message?: string): { [key: string]: TestAnnotation<T> } {\n return { test: { name: name, test: test, message: message } };\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date().typeError('Please enter a valid date');\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n this.form.controls[key]?.setErrors(validationErrors);\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n this.removeCurrentErrors();\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n\n private removeCurrentErrors() {\n Object.keys(this.form.controls).forEach(key => this.form.controls[key].setErrors(null));\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
|
|
@@ -37,11 +37,6 @@ const registerMetadata = (target, propertyKey, constraint) => {
|
|
|
37
37
|
metadata.set(propertyKey, constraint);
|
|
38
38
|
Reflect.defineMetadata(METADATA_KEY, metadata, target);
|
|
39
39
|
};
|
|
40
|
-
function Annotate(a) {
|
|
41
|
-
return function (target, propertyKey) {
|
|
42
|
-
registerMetadata(target, propertyKey, a.annotations);
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
40
|
function StringType(...annotations) {
|
|
46
41
|
return function (target, propertyKey) {
|
|
47
42
|
const o = Object.assign({}, ...annotations);
|
|
@@ -56,6 +51,13 @@ function BooleanType(...annotations) {
|
|
|
56
51
|
registerMetadata(target, propertyKey, o);
|
|
57
52
|
};
|
|
58
53
|
}
|
|
54
|
+
function DateType(...annotations) {
|
|
55
|
+
return function (target, propertyKey) {
|
|
56
|
+
const o = Object.assign({}, ...annotations);
|
|
57
|
+
o.constraintType = ConstraintType.date;
|
|
58
|
+
registerMetadata(target, propertyKey, o);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
59
61
|
function required(message) {
|
|
60
62
|
return { required: { required: true, message: message } };
|
|
61
63
|
}
|
|
@@ -77,75 +79,14 @@ function ofValues(values, message) {
|
|
|
77
79
|
function equals(value, message) {
|
|
78
80
|
return { equals: { equals: value, message: message } };
|
|
79
81
|
}
|
|
80
|
-
|
|
82
|
+
function min(value, message) {
|
|
83
|
+
return { min: { min: value, message: message } };
|
|
81
84
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
super(...arguments);
|
|
85
|
-
this.name = 'StringType';
|
|
86
|
-
this.annotations = {
|
|
87
|
-
constraintType: ConstraintType.string, // TODO
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
required(message) {
|
|
91
|
-
this.annotations.required = { required: true, message: message };
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
pattern(pattern, message) {
|
|
95
|
-
this.annotations.pattern = { pattern: pattern, message: message };
|
|
96
|
-
return this;
|
|
97
|
-
}
|
|
85
|
+
function max(value, message) {
|
|
86
|
+
return { max: { max: value, message: message } };
|
|
98
87
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
super(...arguments);
|
|
102
|
-
this.name = 'BooleanType';
|
|
103
|
-
this.annotations = {
|
|
104
|
-
constraintType: ConstraintType.boolean, // TODO
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
required(message) {
|
|
108
|
-
this.annotations.required = { required: true, message: message };
|
|
109
|
-
return this;
|
|
110
|
-
}
|
|
111
|
-
equals(v, message) {
|
|
112
|
-
this.annotations.equals = { equals: v, message: message };
|
|
113
|
-
return this;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
function string() {
|
|
117
|
-
return new StringType2();
|
|
118
|
-
}
|
|
119
|
-
function boolean() {
|
|
120
|
-
return new BooleanType2();
|
|
121
|
-
}
|
|
122
|
-
class DateType extends AnnotationType {
|
|
123
|
-
constructor() {
|
|
124
|
-
super(...arguments);
|
|
125
|
-
this.name = 'DateType';
|
|
126
|
-
this.annotations = {
|
|
127
|
-
constraintType: ConstraintType.date, // TODO
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
required(message) {
|
|
131
|
-
this.annotations.required = { required: true, message: message };
|
|
132
|
-
return this;
|
|
133
|
-
}
|
|
134
|
-
min(v, message) {
|
|
135
|
-
this.annotations.min = { min: v, message: message };
|
|
136
|
-
return this;
|
|
137
|
-
}
|
|
138
|
-
max(v, message) {
|
|
139
|
-
this.annotations.max = { max: v, message: message };
|
|
140
|
-
return this;
|
|
141
|
-
}
|
|
142
|
-
test(name, v, message) {
|
|
143
|
-
this.annotations.test = { name: name, test: v, message: message };
|
|
144
|
-
return this;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
function date() {
|
|
148
|
-
return new DateType();
|
|
88
|
+
function test(name, test, message) {
|
|
89
|
+
return { test: { name: name, test: test, message: message } };
|
|
149
90
|
}
|
|
150
91
|
|
|
151
92
|
/*
|
|
@@ -213,7 +154,7 @@ class ModelSchemaFactory {
|
|
|
213
154
|
return schema;
|
|
214
155
|
}
|
|
215
156
|
buildDateSchema(options) {
|
|
216
|
-
let schema = Yup.date();
|
|
157
|
+
let schema = Yup.date().typeError('Please enter a valid date');
|
|
217
158
|
if (options.required) {
|
|
218
159
|
schema = schema.required(options.required.message);
|
|
219
160
|
}
|
|
@@ -318,13 +259,7 @@ class NgFormModelState {
|
|
|
318
259
|
grouped.forEach((value, key) => {
|
|
319
260
|
let validationErrors = {};
|
|
320
261
|
value.forEach((v) => (validationErrors[v.type] = v.message));
|
|
321
|
-
|
|
322
|
-
this.form.controls[key].setErrors(validationErrors);
|
|
323
|
-
}
|
|
324
|
-
catch (e) {
|
|
325
|
-
console.log('error setting form control', key);
|
|
326
|
-
throw e;
|
|
327
|
-
}
|
|
262
|
+
this.form.controls[key]?.setErrors(validationErrors);
|
|
328
263
|
});
|
|
329
264
|
});
|
|
330
265
|
}
|
|
@@ -356,5 +291,5 @@ class NgFormModelState {
|
|
|
356
291
|
* Generated bundle index. Do not edit.
|
|
357
292
|
*/
|
|
358
293
|
|
|
359
|
-
export {
|
|
294
|
+
export { BooleanType, ConstraintType, DateType, FieldErrorsComponent, FormsModule, ModelSchemaFactory, ModelValidator, NgFormModelState, NgFormModelStateFactory, StringType, equals, length, max, maxLength, min, minLength, ofValues, pattern, required, test };
|
|
360
295
|
//# sourceMappingURL=muziehdesign-forms.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n this.removeCurrentErrors();\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n\n private removeCurrentErrors() {\n Object.keys(this.form.controls).forEach(key => this.form.controls[key].setErrors(null));\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation<Date>;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation<T> extends ValidationAnnotation {\n test: (d:T) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function DateType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as DateTypeAnnotations;\n o.constraintType = ConstraintType.date;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport function min<T>(value: T, message?: string): { [key: string]: MinimumAnnotation<T> } {\n return { min: { min: value, message: message } };\n}\n\nexport function max<T>(value: T, message?: string): { [key: string]: MaximumAnnotation<T> } {\n return { max: { max: value, message: message } };\n}\n\nexport function test<T>(name: string, test: (d:T) => boolean, message?: string): { [key: string]: TestAnnotation<T> } {\n return { test: { name: name, test: test, message: message } };\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n/*\nSchema rules need to be built in the order they need to be evaluated in.\nFor example,\n ```\n schema.required().max(...).matches(...);\n ```\nevaluates the 3 rules in this order\n - required\n - max\n - matches\n*/\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date().typeError('Please enter a valid date');\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NgControl, ValidationErrors } from '@angular/forms';\n\n@Component({\n selector: 'mz-field-errors',\n templateUrl: './field-errors.component.html',\n styleUrls: ['./field-errors.component.css'],\n})\nexport class FieldErrorsComponent {\n @Input() field?: NgControl;\n\n get errorMessage(): string {\n const errorKeys = Object.keys(this.field?.errors || {});\n return errorKeys.length > 0 ? (this.field?.errors as ValidationErrors)[errorKeys[0]] : '';\n }\n}\n","<div class=\"field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n onValidate: (errors: FieldError[]) => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n private options?: ModelStateOptions;\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.options = options;\n \n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(this.options?.onValidate))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n this.form.controls[key]?.setErrors(validationErrors);\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n async validate(): Promise<void> {\n return await this.runValidations(this.options?.onValidate);\n }\n\n private async runValidations(callback?: (list:FieldError[])=>FieldError[]): Promise<void> {\n this.removeCurrentErrors();\n const list = await this.modelValidator.validate(this.model);\n const final = callback?.(list) || list;\n this.errors.next(final);\n }\n\n private removeCurrentErrors() {\n Object.keys(this.form.controls).forEach(key => this.form.controls[key].setErrors(null));\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export interface DateTypeAnnotations extends ConstraintAnnotations {
|
|
|
22
22
|
required?: RequiredAnnotation;
|
|
23
23
|
min?: MinimumAnnotation<Date>;
|
|
24
24
|
max?: MaximumAnnotation<Date>;
|
|
25
|
-
test?: TestAnnotation
|
|
25
|
+
test?: TestAnnotation<Date>;
|
|
26
26
|
}
|
|
27
27
|
export interface ValidationAnnotation {
|
|
28
28
|
message?: string;
|
|
@@ -48,8 +48,8 @@ export interface MinimumAnnotation<T> extends ValidationAnnotation {
|
|
|
48
48
|
export interface MaximumAnnotation<T> extends ValidationAnnotation {
|
|
49
49
|
max: T;
|
|
50
50
|
}
|
|
51
|
-
export interface TestAnnotation extends ValidationAnnotation {
|
|
52
|
-
test: (d:
|
|
51
|
+
export interface TestAnnotation<T> extends ValidationAnnotation {
|
|
52
|
+
test: (d: T) => boolean;
|
|
53
53
|
name: string;
|
|
54
54
|
}
|
|
55
55
|
export interface MaxLengthAnnotation extends ValidationAnnotation {
|
|
@@ -58,13 +58,15 @@ export interface MaxLengthAnnotation extends ValidationAnnotation {
|
|
|
58
58
|
export interface MinLengthAnnotation extends ValidationAnnotation {
|
|
59
59
|
minLength: number;
|
|
60
60
|
}
|
|
61
|
-
export declare function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>): (target: Object, propertyKey: string) => void;
|
|
62
61
|
export declare function StringType(...annotations: {
|
|
63
62
|
[key: string]: ValidationAnnotation;
|
|
64
63
|
}[]): (target: Object, propertyKey: string) => void;
|
|
65
64
|
export declare function BooleanType(...annotations: {
|
|
66
65
|
[key: string]: ValidationAnnotation;
|
|
67
66
|
}[]): (target: Object, propertyKey: string) => void;
|
|
67
|
+
export declare function DateType(...annotations: {
|
|
68
|
+
[key: string]: ValidationAnnotation;
|
|
69
|
+
}[]): (target: Object, propertyKey: string) => void;
|
|
68
70
|
export declare function required(message?: string): {
|
|
69
71
|
[key: string]: RequiredAnnotation;
|
|
70
72
|
};
|
|
@@ -86,30 +88,12 @@ export declare function ofValues(values: [], message?: string): {
|
|
|
86
88
|
export declare function equals<T>(value: T, message?: string): {
|
|
87
89
|
[key: string]: EqualsAnnotation<T>;
|
|
88
90
|
};
|
|
89
|
-
export declare
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
export declare class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {
|
|
100
|
-
readonly name: string;
|
|
101
|
-
annotations: BooleanTypeAnnotations;
|
|
102
|
-
required(message?: string): this;
|
|
103
|
-
equals(v: boolean, message?: string): this;
|
|
104
|
-
}
|
|
105
|
-
export declare function string(): StringType2;
|
|
106
|
-
export declare function boolean(): BooleanType2;
|
|
107
|
-
export declare class DateType extends AnnotationType<DateTypeAnnotations> {
|
|
108
|
-
readonly name: string;
|
|
109
|
-
annotations: DateTypeAnnotations;
|
|
110
|
-
required(message?: string): this;
|
|
111
|
-
min(v: Date, message?: string): this;
|
|
112
|
-
max(v: Date, message?: string): this;
|
|
113
|
-
test(name: string, v: (d: Date) => boolean, message?: string): this;
|
|
114
|
-
}
|
|
115
|
-
export declare function date(): DateType;
|
|
91
|
+
export declare function min<T>(value: T, message?: string): {
|
|
92
|
+
[key: string]: MinimumAnnotation<T>;
|
|
93
|
+
};
|
|
94
|
+
export declare function max<T>(value: T, message?: string): {
|
|
95
|
+
[key: string]: MaximumAnnotation<T>;
|
|
96
|
+
};
|
|
97
|
+
export declare function test<T>(name: string, test: (d: T) => boolean, message?: string): {
|
|
98
|
+
[key: string]: TestAnnotation<T>;
|
|
99
|
+
};
|