@muziehdesign/forms 18.2.0-beta.808 → 18.2.0-beta.825
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/esm2022/lib/field/field.component.mjs +13 -7
- package/esm2022/lib/form/form.directive.mjs +1 -3
- package/esm2022/lib/masks.mjs +1 -43
- package/esm2022/lib/model-schema.factory.mjs +6 -5
- package/esm2022/lib/model-schema.mjs +33 -0
- package/esm2022/lib/ngform-model-state.mjs +1 -2
- package/esm2022/lib/type-annotations.mjs +1 -2
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/muziehdesign-forms.mjs +32 -64
- package/fesm2022/muziehdesign-forms.mjs.map +1 -1
- package/lib/field/field.component.d.ts +10 -3
- package/lib/form/form.directive.d.ts +2 -2
- package/lib/masks.d.ts +0 -23
- package/lib/model-schema.d.ts +21 -0
- package/lib/model-schema.factory.d.ts +3 -3
- package/lib/ngform-model-state.d.ts +2 -2
- package/lib/type-annotations.d.ts +8 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2022/lib/model-validator.mjs +0 -26
- package/lib/model-validator.d.ts +0 -10
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { Component, ContentChild, Input } from '@angular/core';
|
|
1
|
+
import { Component, ContentChild, Input, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { NgModel } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class MzField {
|
|
5
|
-
constructor() {
|
|
5
|
+
constructor(elementRef) {
|
|
6
|
+
this.elementRef = elementRef;
|
|
6
7
|
this.checkbox = false;
|
|
7
8
|
}
|
|
9
|
+
ngAfterContentInit() {
|
|
10
|
+
//this.fieldMetadata = this.form.schema.getMetadata(this.ngModel?.path || []);
|
|
11
|
+
}
|
|
8
12
|
getErrorMessage() {
|
|
9
13
|
try {
|
|
10
14
|
const list = Object.values(this.ngModel.errors);
|
|
@@ -14,18 +18,20 @@ export class MzField {
|
|
|
14
18
|
return undefined;
|
|
15
19
|
}
|
|
16
20
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MzField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MzField, isStandalone: true, selector: "mz-field", inputs: { label: "label", checkbox: "checkbox" }, queries: [{ propertyName: "ngModel", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "<label class=\"field\">\n @if(label && !checkbox) {\n
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MzField, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MzField, isStandalone: true, selector: "mz-field", inputs: { label: "label", checkbox: "checkbox", schema: "schema" }, queries: [{ propertyName: "ngModel", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "<label class=\"field\">\n @if(label && !checkbox) {\n <span class=\"field-label\">\n {{ label }} \n </span>\n }\n <ng-content></ng-content>\n\n @if(checkbox && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n } \n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n", encapsulation: i0.ViewEncapsulation.None }); }
|
|
19
23
|
}
|
|
20
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MzField, decorators: [{
|
|
21
25
|
type: Component,
|
|
22
|
-
args: [{ selector: 'mz-field', standalone: true, imports: [], template: "<label class=\"field\">\n @if(label && !checkbox) {\n
|
|
23
|
-
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
26
|
+
args: [{ selector: 'mz-field', standalone: true, imports: [], encapsulation: ViewEncapsulation.None, template: "<label class=\"field\">\n @if(label && !checkbox) {\n <span class=\"field-label\">\n {{ label }} \n </span>\n }\n <ng-content></ng-content>\n\n @if(checkbox && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n } \n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n" }]
|
|
27
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { label: [{
|
|
24
28
|
type: Input
|
|
25
29
|
}], checkbox: [{
|
|
26
30
|
type: Input
|
|
31
|
+
}], schema: [{
|
|
32
|
+
type: Input
|
|
27
33
|
}], ngModel: [{
|
|
28
34
|
type: ContentChild,
|
|
29
35
|
args: [NgModel]
|
|
30
36
|
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZmllbGQvZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZmllbGQvZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsWUFBWSxFQUFjLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBWXpDLE1BQU0sT0FBTyxPQUFPO0lBT2hCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFMakMsYUFBUSxHQUFZLEtBQUssQ0FBQztJQUtVLENBQUM7SUFFOUMsa0JBQWtCO1FBQ2QsOEVBQThFO0lBQ2xGLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBUSxDQUFDLE1BQU8sQ0FBQyxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDTCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQzsrR0FwQlEsT0FBTzttR0FBUCxPQUFPLDZLQUlGLE9BQU8sZ0RDakJ6QixnYUFpQkE7OzRGREphLE9BQU87a0JBUG5CLFNBQVM7K0JBQ0ksVUFBVSxjQUNSLElBQUksV0FDUCxFQUFFLGlCQUVJLGlCQUFpQixDQUFDLElBQUk7K0VBRzVCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDaUIsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkU2NoZW1hIH0gZnJvbSAnLi4vZmllbGQtc2NoZW1hJztcbmltcG9ydCB7IE16Rm9ybSB9IGZyb20gJy4uL2Zvcm0vZm9ybS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmllbGRNZXRhZGF0YSB9IGZyb20gJy4uL21vZGVsLXNjaGVtYSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbXotZmllbGQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNekZpZWxkIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzY2hlbWE/OiBGaWVsZFNjaGVtYTxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoTmdNb2RlbCkgbmdNb2RlbD86IE5nTW9kZWw7XG5cbiAgICBmaWVsZE1ldGFkYXRhPzogRmllbGRNZXRhZGF0YTtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vdGhpcy5maWVsZE1ldGFkYXRhID0gdGhpcy5mb3JtLnNjaGVtYS5nZXRNZXRhZGF0YSh0aGlzLm5nTW9kZWw/LnBhdGggfHwgW10pO1xuICAgIH1cblxuICAgIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbGlzdCA9IE9iamVjdC52YWx1ZXModGhpcy5uZ01vZGVsIS5lcnJvcnMhKTtcbiAgICAgICAgICAgIHJldHVybiBsaXN0WzBdO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bGFiZWwgY2xhc3M9XCJmaWVsZFwiPlxuICAgIEBpZihsYWJlbCAmJiAhY2hlY2tib3gpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWVsZC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgbGFiZWwgfX0gXG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgQGlmKGNoZWNrYm94ICYmIGxhYmVsKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgIH0gXG4gICAgQGlmKG5nTW9kZWw/LnRvdWNoZWQgJiYgbmdNb2RlbD8uaW52YWxpZCkge1xuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1lcnJvclwiPlxuICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoKSB9fVxuICAgIDwvZGl2PlxuICAgIH1cbjwvbGFiZWw+XG4iXX0=
|
|
@@ -7,11 +7,9 @@ export class MzForm {
|
|
|
7
7
|
this.ngForm = ngForm;
|
|
8
8
|
}
|
|
9
9
|
ngAfterViewInit() {
|
|
10
|
-
console.log('this is form directive', this.ngForm.value, this.schema);
|
|
11
10
|
this.modelState = new NgFormModelState(this.ngForm, this.schema);
|
|
12
11
|
}
|
|
13
12
|
onSubmit(event) {
|
|
14
|
-
console.log('submitting');
|
|
15
13
|
this.ngForm.form.markAllAsTouched();
|
|
16
14
|
if (this.ngForm.invalid) {
|
|
17
15
|
event.preventDefault();
|
|
@@ -34,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
34
32
|
type: HostListener,
|
|
35
33
|
args: ['submit', ['$event']]
|
|
36
34
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQUtmLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBRWxDLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFHRCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BDLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7K0dBcEJRLE1BQU07bUdBQU4sTUFBTTs7NEZBQU4sTUFBTTtrQkFKbEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ25COzJFQUU4QixNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFhekIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNb2RlbFNjaGVtYSB9IGZyb20gJy4uL21vZGVsLXNjaGVtYSc7XG5pbXBvcnQgeyBOZ0Zvcm1Nb2RlbFN0YXRlIH0gZnJvbSAnLi4vbmdmb3JtLW1vZGVsLXN0YXRlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbXpGb3JtXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTXpGb3JtIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2NoZW1hITogTW9kZWxTY2hlbWE8dW5rbm93bj47XG5cbiAgICBwcml2YXRlIG1vZGVsU3RhdGUhOiBOZ0Zvcm1Nb2RlbFN0YXRlPHVua25vd24+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ0Zvcm06IE5nRm9ybSkge1xuXG4gICAgfVxuICAgIFxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbFN0YXRlID0gbmV3IE5nRm9ybU1vZGVsU3RhdGUodGhpcy5uZ0Zvcm0sIHRoaXMuc2NoZW1hKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdzdWJtaXQnLCBbJyRldmVudCddKVxuICAgIG9uU3VibWl0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLm5nRm9ybS5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgaWYodGhpcy5uZ0Zvcm0uaW52YWxpZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
package/esm2022/lib/masks.mjs
CHANGED
|
@@ -1,45 +1,3 @@
|
|
|
1
|
-
import { format, isValid, parse } from 'date-fns';
|
|
2
|
-
import * as IMask from 'imask';
|
|
3
|
-
export const dateMaskOptions = {
|
|
4
|
-
mask: 'MM/dd/yyyy',
|
|
5
|
-
format: (date) => {
|
|
6
|
-
if (!date) {
|
|
7
|
-
return '';
|
|
8
|
-
}
|
|
9
|
-
return format(date, 'MM/dd/yyyy');
|
|
10
|
-
},
|
|
11
|
-
parse: (str) => {
|
|
12
|
-
const dateRegex = /(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])\/([12]\d{3})/;
|
|
13
|
-
if (!str.match(dateRegex)) {
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
const parsed = parse(str, 'MM/dd/yyyy', new Date());
|
|
17
|
-
if (isValid(parsed)) {
|
|
18
|
-
return parsed;
|
|
19
|
-
}
|
|
20
|
-
return undefined;
|
|
21
|
-
},
|
|
22
|
-
blocks: {
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
24
|
-
MM: {
|
|
25
|
-
mask: IMask.MaskedRange,
|
|
26
|
-
from: 1,
|
|
27
|
-
to: 12,
|
|
28
|
-
},
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
30
|
-
dd: {
|
|
31
|
-
mask: IMask.MaskedRange,
|
|
32
|
-
from: 1,
|
|
33
|
-
to: 31,
|
|
34
|
-
},
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
36
|
-
yyyy: {
|
|
37
|
-
mask: IMask.MaskedRange,
|
|
38
|
-
from: 1000,
|
|
39
|
-
to: 9999,
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
1
|
export const phoneNumberOptions = {
|
|
44
2
|
mask: '(000) 000-0000',
|
|
45
3
|
};
|
|
@@ -62,4 +20,4 @@ export const integerOptions = {
|
|
|
62
20
|
radix: '.',
|
|
63
21
|
mapToRadix: ['.'],
|
|
64
22
|
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tYXNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxJQUFJLEVBQUUsZ0JBQWdCO0NBQ3ZCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsSUFBSSxFQUFFLGFBQWE7Q0FDcEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxDQUFDO0lBQ1Isa0JBQWtCLEVBQUUsR0FBRztJQUN2QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDO0NBQ2xCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsQ0FBQztJQUNSLGtCQUFrQixFQUFFLEdBQUc7SUFDdkIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixLQUFLLEVBQUUsR0FBRztJQUNWLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQztDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0LCBpc1ZhbGlkLCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCAqIGFzIElNYXNrIGZyb20gJ2ltYXNrJztcblxuZXhwb3J0IGNvbnN0IHBob25lTnVtYmVyT3B0aW9ucyA9IHtcbiAgbWFzazogJygwMDApIDAwMC0wMDAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBzc25PcHRpb25zID0ge1xuICBtYXNrOiAnMDAwLTAwLTAwMDAnLFxufTtcblxuZXhwb3J0IGNvbnN0IGN1cnJlbmN5T3B0aW9ucyA9IHtcbiAgbWFzazogTnVtYmVyLFxuICBzY2FsZTogMixcbiAgdGhvdXNhbmRzU2VwYXJhdG9yOiAnLCcsXG4gIHBhZEZyYWN0aW9uYWxaZXJvczogdHJ1ZSxcbiAgcmFkaXg6ICcuJyxcbiAgbWFwVG9SYWRpeDogWycuJ10sXG59O1xuXG5leHBvcnQgY29uc3QgaW50ZWdlck9wdGlvbnMgPSB7XG4gIG1hc2s6IE51bWJlcixcbiAgc2NhbGU6IDAsXG4gIHRob3VzYW5kc1NlcGFyYXRvcjogJywnLFxuICBwYWRGcmFjdGlvbmFsWmVyb3M6IHRydWUsXG4gIHJhZGl4OiAnLicsXG4gIG1hcFRvUmFkaXg6IFsnLiddLFxufTtcblxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { object } from 'yup';
|
|
3
|
-
import {
|
|
3
|
+
import { ModelSchema } from './model-schema';
|
|
4
4
|
import { SCHEMA_METADATA_NAMESPACE } from './constants';
|
|
5
5
|
import * as Yup from 'yup';
|
|
6
6
|
import { FieldSchemaType } from './field-schema';
|
|
@@ -20,12 +20,13 @@ export class ModelSchemaFactory {
|
|
|
20
20
|
constructor() { }
|
|
21
21
|
build(model) {
|
|
22
22
|
const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);
|
|
23
|
-
const
|
|
24
|
-
|
|
23
|
+
const schemaData = [...metadata.values()];
|
|
24
|
+
const schema = this.buildYupSchema(schemaData);
|
|
25
|
+
return new ModelSchema(schemaData, schema);
|
|
25
26
|
}
|
|
26
27
|
buildUntyped(raw) {
|
|
27
28
|
const schema = this.buildYupSchema(raw);
|
|
28
|
-
return new
|
|
29
|
+
return new ModelSchema(raw, schema);
|
|
29
30
|
}
|
|
30
31
|
buildYupSchema(fields) {
|
|
31
32
|
let shape = {};
|
|
@@ -191,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
191
192
|
providedIn: 'root',
|
|
192
193
|
}]
|
|
193
194
|
}], ctorParameters: () => [] });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQztBQUMzQixPQUFPLEVBQXVELGVBQWUsRUFBd0QsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFNUo7Ozs7Ozs7Ozs7RUFVRTtBQUtGLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsZ0JBQWUsQ0FBQztJQUVoQixLQUFLLENBQW1CLEtBQVE7UUFDOUIsTUFBTSxRQUFRLEdBQWtDLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBdUI7UUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBMEI7UUFDL0MsSUFBSSxLQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixN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RUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUFvQjtRQUMxQyxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0MsSUFBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0EzTFUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9iamVjdCwgU2NoZW1hT2YgfSBmcm9tICd5dXAnO1xuaW1wb3J0IHsgTW9kZWxWYWxpZGF0b3IgfSBmcm9tICcuL21vZGVsLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBTQ0hFTUFfTUVUQURBVEFfTkFNRVNQQUNFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT2JqZWN0U2hhcGUgfSBmcm9tICd5dXAvbGliL29iamVjdCc7XG5pbXBvcnQgKiBhcyBZdXAgZnJvbSAneXVwJztcbmltcG9ydCB7IEFycmF5U2NoZW1hLCBCb29sZWFuU2NoZW1hLCBEYXRlU2NoZW1hLCBGaWVsZFNjaGVtYSwgRmllbGRTY2hlbWFUeXBlLCBGaWxlU2NoZW1hLCBOdW1iZXJTY2hlbWEsIE9iamVjdFNjaGVtYSwgU3RyaW5nU2NoZW1hIH0gZnJvbSAnLi9maWVsZC1zY2hlbWEnO1xuXG4vKlxuU2NoZW1hIHJ1bGVzIG5lZWQgdG8gYmUgYnVpbHQgaW4gdGhlIG9yZGVyIHRoZXkgbmVlZCB0byBiZSBldmFsdWF0ZWQgaW4uXG5Gb3IgZXhhbXBsZSxcbiAgYGBgXG4gICAgc2NoZW1hLnJlcXVpcmVkKCkubWF4KC4uLikubWF0Y2hlcyguLi4pO1xuICBgYGBcbmV2YWx1YXRlcyB0aGUgMyBydWxlcyBpbiB0aGlzIG9yZGVyXG4gIC0gcmVxdWlyZWRcbiAgLSBtYXhcbiAgLSBtYXRjaGVzXG4qL1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWFGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGJ1aWxkPFQgZXh0ZW5kcyBvYmplY3Q+KG1vZGVsOiBUKTogTW9kZWxWYWxpZGF0b3I8VD4ge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBNYXA8c3RyaW5nLCBGaWVsZFNjaGVtYTxhbnk+PiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoU0NIRU1BX01FVEFEQVRBX05BTUVTUEFDRSwgbW9kZWwpO1xuICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuYnVpbGRZdXBTY2hlbWEoWy4uLm1ldGFkYXRhLnZhbHVlcygpXSk7XG4gICAgcmV0dXJuIG5ldyBNb2RlbFZhbGlkYXRvcihzY2hlbWEpO1xuICB9XG5cbiAgYnVpbGRVbnR5cGVkKHJhdzogRmllbGRTY2hlbWE8YW55PltdKSA6IE1vZGVsVmFsaWRhdG9yPHtba2V5OiBzdHJpbmddOiBzdHJpbmd9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5idWlsZFl1cFNjaGVtYShyYXcpO1xuICAgIHJldHVybiBuZXcgTW9kZWxWYWxpZGF0b3Ioc2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRZdXBTY2hlbWEoZmllbGRzOiBGaWVsZFNjaGVtYTxhbnk+W10pIDogWXVwLkFueU9iamVjdFNjaGVtYSB7XG4gICAgbGV0IHNoYXBlOiBPYmplY3RTaGFwZSA9IHt9O1xuICAgIGZpZWxkcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlLnR5cGUgPT0gRmllbGRTY2hlbWFUeXBlLnN0cmluZykge1xuICAgICAgICBzaGFwZVt2YWx1ZS5uYW1lXSA9IHRoaXMuYnVpbGRTdHJpbmdTY2hlbWEodmFsdWUgYXMgU3RyaW5nU2NoZW1hKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PSBGaWVsZFNjaGVtYVR5cGUuYm9vbGVhbikge1xuICAgICAgICBzaGFwZVt2YWx1ZS5uYW1lXSA9IHRoaXMuYnVpbGRCb29sZWFuU2NoZW1hKHZhbHVlIGFzIEJvb2xlYW5TY2hlbWEpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlID09IEZpZWxkU2NoZW1hVHlwZS5kYXRlKSB7XG4gICAgICAgIHNoYXBlW3ZhbHVlLm5hbWVdID0gdGhpcy5idWlsZERhdGVTY2hlbWEodmFsdWUgYXMgRGF0ZVNjaGVtYSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT0gRmllbGRTY2hlbWFUeXBlLm9iamVjdCkge1xuICAgICAgICBzaGFwZVt2YWx1ZS5uYW1lXSA9IHRoaXMuYnVpbGROZXN0ZWRPYmplY3RTY2hlbWEodmFsdWUgYXMgT2JqZWN0U2NoZW1hKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PSBGaWVsZFNjaGVtYVR5cGUubnVtYmVyKSB7XG4gICAgICAgIHNoYXBlW3ZhbHVlLm5hbWVdID0gdGhpcy5idWlsZE51bWJlclNjaGVtYSh2YWx1ZSBhcyBOdW1iZXJTY2hlbWEpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlID09IEZpZWxkU2NoZW1hVHlwZS5hcnJheSkge1xuICAgICAgICBzaGFwZVt2YWx1ZS5uYW1lXSA9IHRoaXMuYnVpbGRBcnJheVNjaGVtYSh2YWx1ZSBhcyBBcnJheVNjaGVtYSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT0gRmllbGRTY2hlbWFUeXBlLmZpbGUpIHtcbiAgICAgICAgc2hhcGVbdmFsdWUubmFtZV0gPSB0aGlzLmJ1aWxkRmlsZVNjaGVtYSh2YWx1ZSBhcyBGaWxlU2NoZW1hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIGZpZWxkIHNjaGVtYScpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iamVjdChzaGFwZSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3RyaW5nU2NoZW1hKG9yaWdpbmFsOiBTdHJpbmdTY2hlbWEpIHtcbiAgICBsZXQgc2NoZW1hID0gWXVwLnN0cmluZygpO1xuICAgIGlmKG9yaWdpbmFsLmxhYmVsKSB7XG4gICAgICBzY2hlbWEubGFiZWwob3JpZ2luYWwubGFiZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBvcmlnaW5hbC5jb25zdHJhaW50czsgICAgXG5cbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLmxlbmd0aChvcHRpb25zLmxlbmd0aC5sZW5ndGgsIG9wdGlvbnMubGVuZ3RoLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1heExlbmd0aCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1heChvcHRpb25zLm1heExlbmd0aC5tYXhMZW5ndGgsIG9wdGlvbnMubWF4TGVuZ3RoLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1pbkxlbmd0aCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1pbihvcHRpb25zLm1pbkxlbmd0aC5taW5MZW5ndGgsIG9wdGlvbnMubWluTGVuZ3RoLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBhdHRlcm4pIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXRjaGVzKG9wdGlvbnMucGF0dGVybi5wYXR0ZXJuLCB7IG1lc3NhZ2U6IG9wdGlvbnMucGF0dGVybi5tZXNzYWdlLCBleGNsdWRlRW1wdHlTdHJpbmc6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRCb29sZWFuU2NoZW1hKG9yaWdpbmFsOiBCb29sZWFuU2NoZW1hKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5ib29sZWFuKCk7XG4gICAgaWYob3JpZ2luYWwubGFiZWwpIHtcbiAgICAgIHNjaGVtYS5sYWJlbChvcmlnaW5hbC5sYWJlbCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG9yaWdpbmFsLmNvbnN0cmFpbnRzOyAgXG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lcXVhbHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmVxdWFscy5lcXVhbHMpIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLmlzVHJ1ZShvcHRpb25zLmVxdWFscy5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYSA9IHNjaGVtYS5pc0ZhbHNlKG9wdGlvbnMuZXF1YWxzLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRGF0ZVNjaGVtYShvcmlnaW5hbDogRGF0ZVNjaGVtYSkge1xuICAgIGxldCBzY2hlbWEgPSBZdXAuZGF0ZSgpO1xuICAgIGlmKG9yaWdpbmFsLmxhYmVsKSB7XG4gICAgICBzY2hlbWEubGFiZWwob3JpZ2luYWwubGFiZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBvcmlnaW5hbC5jb25zdHJhaW50czsgIFxuICAgIGlmIChvcHRpb25zLnJlcXVpcmVkKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQob3B0aW9ucy5yZXF1aXJlZC5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWluKG9wdGlvbnMubWluLm1pbiwgb3B0aW9ucy5taW4ubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1heCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1heChvcHRpb25zLm1heC5tYXgsIG9wdGlvbnMubWF4Lm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50ZXN0KSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEudGVzdCh7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMudGVzdC5uYW1lLFxuICAgICAgICBtZXNzYWdlOiBvcHRpb25zLnRlc3QubWVzc2FnZSxcbiAgICAgICAgdGVzdDogKGQ/OiBEYXRlLCBjb250ZXh0PzogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMudGVzdCEudGVzdChkISk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE51bWJlclNjaGVtYShvcmlnaW5hbDogTnVtYmVyU2NoZW1hKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5udW1iZXIoKTtcbiAgICBpZihvcmlnaW5hbC5sYWJlbCkge1xuICAgICAgc2NoZW1hLmxhYmVsKG9yaWdpbmFsLmxhYmVsKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gb3JpZ2luYWwuY29uc3RyYWludHM7ICBcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1pbikge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1pbihvcHRpb25zLm1pbi5taW4sIG9wdGlvbnMubWluLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXgob3B0aW9ucy5tYXgubWF4LCBvcHRpb25zLm1heC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEFycmF5U2NoZW1hKG9yaWdpbmFsOiBBcnJheVNjaGVtYSkge1xuICAgIGxldCBzY2hlbWEgPSBZdXAuYXJyYXkoKTtcbiAgICBpZihvcmlnaW5hbC5sYWJlbCkge1xuICAgICAgc2NoZW1hLmxhYmVsKG9yaWdpbmFsLmxhYmVsKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gb3JpZ2luYWwuY29uc3RyYWludHM7ICBcblxuICAgIGlmIChvcHRpb25zLm1pbikge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1pbihvcHRpb25zLm1pbi5taW4sIG9wdGlvbnMubWluLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5tYXgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXgob3B0aW9ucy5tYXgubWF4LCBvcHRpb25zLm1heC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE5lc3RlZE9iamVjdFNjaGVtYShvcmlnaW5hbDogT2JqZWN0U2NoZW1hKSB7XG4gICAgY29uc3QgbWV0YWRhdGE6IE1hcDxzdHJpbmcsIEZpZWxkU2NoZW1hPGFueT4+ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShTQ0hFTUFfTUVUQURBVEFfTkFNRVNQQUNFLCBvcmlnaW5hbC5jb25zdHJhaW50cy5nZXRJbnN0YW5jZSgpKTtcblxuICAgIGxldCBuZXN0ZWRTY2hlbWEgPSB0aGlzLmJ1aWxkWXVwU2NoZW1hKFsuLi5tZXRhZGF0YS52YWx1ZXMoKV0pO1xuICAgIGlmKG9yaWdpbmFsLmxhYmVsKSB7XG4gICAgICBuZXN0ZWRTY2hlbWEubGFiZWwob3JpZ2luYWwubGFiZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBvcmlnaW5hbC5jb25zdHJhaW50czsgIFxuICAgIGlmIChvcHRpb25zLnJlcXVpcmVkKSB7XG4gICAgICBuZXN0ZWRTY2hlbWEgPSBuZXN0ZWRTY2hlbWEucmVxdWlyZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmVzdGVkU2NoZW1hID0gbmVzdGVkU2NoZW1hLm5vdFJlcXVpcmVkKCkuZGVmYXVsdCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXN0ZWRTY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRmlsZVNjaGVtYShvcmlnaW5hbDogRmlsZVNjaGVtYSkge1xuICAgIGxldCBzY2hlbWEgPSBZdXAubWl4ZWQoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCk7XG4gICAgaWYob3JpZ2luYWwubGFiZWwpIHtcbiAgICAgIHNjaGVtYS5sYWJlbChvcmlnaW5hbC5sYWJlbCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG9yaWdpbmFsLmNvbnN0cmFpbnRzOyAgXG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cbn1cbiJdfQ==
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQztBQUMzQixPQUFPLEVBQXVELGVBQWUsRUFBd0QsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFNUo7Ozs7Ozs7Ozs7RUFVRTtBQUtGLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsZ0JBQWUsQ0FBQztJQUVoQixLQUFLLENBQW1CLEtBQVE7UUFDOUIsTUFBTSxRQUFRLEdBQWtDLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEcsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUF1QjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxjQUFj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UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDTixZQUFZLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUFvQjtRQUMxQyxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0MsSUFBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0E1TFUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9iamVjdCwgU2NoZW1hT2YgfSBmcm9tICd5dXAnO1xuaW1wb3J0IHsgTW9kZWxTY2hlbWEgfSBmcm9tICcuL21vZGVsLXNjaGVtYSc7XG5pbXBvcnQgeyBTQ0hFTUFfTUVUQURBVEFfTkFNRVNQQUNFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT2JqZWN0U2hhcGUgfSBmcm9tICd5dXAvbGliL29iamVjdCc7XG5pbXBvcnQgKiBhcyBZdXAgZnJvbSAneXVwJztcbmltcG9ydCB7IEFycmF5U2NoZW1hLCBCb29sZWFuU2NoZW1hLCBEYXRlU2NoZW1hLCBGaWVsZFNjaGVtYSwgRmllbGRTY2hlbWFUeXBlLCBGaWxlU2NoZW1hLCBOdW1iZXJTY2hlbWEsIE9iamVjdFNjaGVtYSwgU3RyaW5nU2NoZW1hIH0gZnJvbSAnLi9maWVsZC1zY2hlbWEnO1xuXG4vKlxuU2NoZW1hIHJ1bGVzIG5lZWQgdG8gYmUgYnVpbHQgaW4gdGhlIG9yZGVyIHRoZXkgbmVlZCB0byBiZSBldmFsdWF0ZWQgaW4uXG5Gb3IgZXhhbXBsZSxcbiAgYGBgXG4gICAgc2NoZW1hLnJlcXVpcmVkKCkubWF4KC4uLikubWF0Y2hlcyguLi4pO1xuICBgYGBcbmV2YWx1YXRlcyB0aGUgMyBydWxlcyBpbiB0aGlzIG9yZGVyXG4gIC0gcmVxdWlyZWRcbiAgLSBtYXhcbiAgLSBtYXRjaGVzXG4qL1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWFGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGJ1aWxkPFQgZXh0ZW5kcyBvYmplY3Q+KG1vZGVsOiBUKTogTW9kZWxTY2hlbWE8VD4ge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBNYXA8c3RyaW5nLCBGaWVsZFNjaGVtYTxhbnk+PiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoU0NIRU1BX01FVEFEQVRBX05BTUVTUEFDRSwgbW9kZWwpO1xuICAgIGNvbnN0IHNjaGVtYURhdGEgPSBbLi4ubWV0YWRhdGEudmFsdWVzKCldO1xuICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuYnVpbGRZdXBTY2hlbWEoc2NoZW1hRGF0YSk7XG4gICAgcmV0dXJuIG5ldyBNb2RlbFNjaGVtYShzY2hlbWFEYXRhLCBzY2hlbWEpO1xuICB9XG5cbiAgYnVpbGRVbnR5cGVkKHJhdzogRmllbGRTY2hlbWE8YW55PltdKSA6IE1vZGVsU2NoZW1hPHtba2V5OiBzdHJpbmddOiBzdHJpbmd9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5idWlsZFl1cFNjaGVtYShyYXcpO1xuICAgIHJldHVybiBuZXcgTW9kZWxTY2hlbWEocmF3LCBzY2hlbWEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFl1cFNjaGVtYShmaWVsZHM6IEZpZWxkU2NoZW1hPGFueT5bXSkgOiBZdXAuQW55T2JqZWN0U2NoZW1hIHtcbiAgICBsZXQgc2hhcGU6IE9iamVjdFNoYXBlID0ge307XG4gICAgZmllbGRzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUudHlwZSA9PSBGaWVsZFNjaGVtYVR5cGUuc3RyaW5nKSB7XG4gICAgICAgIHNoYXBlW3ZhbHVlLm5hbWVdID0gdGhpcy5idWlsZFN0cmluZ1NjaGVtYSh2YWx1ZSBhcyBTdHJpbmdTY2hlbWEpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlID09IEZpZWxkU2NoZW1hVHlwZS5ib29sZWFuKSB7XG4gICAgICAgIHNoYXBlW3ZhbHVlLm5hbWVdID0gdGhpcy5idWlsZEJvb2xlYW5TY2hlbWEodmFsdWUgYXMgQm9vbGVhblNjaGVtYSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT0gRmllbGRTY2hlbWFUeXBlLmRhdGUpIHtcbiAgICAgICAgc2hhcGVbdmFsdWUubmFtZV0gPSB0aGlzLmJ1aWxkRGF0ZVNjaGVtYSh2YWx1ZSBhcyBEYXRlU2NoZW1hKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PSBGaWVsZFNjaGVtYVR5cGUub2JqZWN0KSB7XG4gICAgICAgIHNoYXBlW3ZhbHVlLm5hbWVdID0gdGhpcy5idWlsZE5lc3RlZE9iamVjdFNjaGVtYSh2YWx1ZSBhcyBPYmplY3RTY2hlbWEpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlID09IEZpZWxkU2NoZW1hVHlwZS5udW1iZXIpIHtcbiAgICAgICAgc2hhcGVbdmFsdWUubmFtZV0gPSB0aGlzLmJ1aWxkTnVtYmVyU2NoZW1hKHZhbHVlIGFzIE51bWJlclNjaGVtYSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT0gRmllbGRTY2hlbWFUeXBlLmFycmF5KSB7XG4gICAgICAgIHNoYXBlW3ZhbHVlLm5hbWVdID0gdGhpcy5idWlsZEFycmF5U2NoZW1hKHZhbHVlIGFzIEFycmF5U2NoZW1hKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUudHlwZSA9PSBGaWVsZFNjaGVtYVR5cGUuZmlsZSkge1xuICAgICAgICBzaGFwZVt2YWx1ZS5uYW1lXSA9IHRoaXMuYnVpbGRGaWxlU2NoZW1hKHZhbHVlIGFzIEZpbGVTY2hlbWEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgZmllbGQgc2NoZW1hJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqZWN0KHNoYXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdHJpbmdTY2hlbWEob3JpZ2luYWw6IFN0cmluZ1NjaGVtYSkge1xuICAgIGxldCBzY2hlbWEgPSBZdXAuc3RyaW5nKCk7XG4gICAgaWYob3JpZ2luYWwubGFiZWwpIHtcbiAgICAgIHNjaGVtYS5sYWJlbChvcmlnaW5hbC5sYWJlbCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG9yaWdpbmFsLmNvbnN0cmFpbnRzOyAgICBcblxuICAgIGlmIChvcHRpb25zLnJlcXVpcmVkKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQob3B0aW9ucy5yZXF1aXJlZC5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubGVuZ3RoKG9wdGlvbnMubGVuZ3RoLmxlbmd0aCwgb3B0aW9ucy5sZW5ndGgubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubWF4TGVuZ3RoKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF4KG9wdGlvbnMubWF4TGVuZ3RoLm1heExlbmd0aCwgb3B0aW9ucy5tYXhMZW5ndGgubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubWluTGVuZ3RoKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWluKG9wdGlvbnMubWluTGVuZ3RoLm1pbkxlbmd0aCwgb3B0aW9ucy5taW5MZW5ndGgubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGF0dGVybikge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1hdGNoZXMob3B0aW9ucy5wYXR0ZXJuLnBhdHRlcm4sIHsgbWVzc2FnZTogb3B0aW9ucy5wYXR0ZXJuLm1lc3NhZ2UsIGV4Y2x1ZGVFbXB0eVN0cmluZzogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEJvb2xlYW5TY2hlbWEob3JpZ2luYWw6IEJvb2xlYW5TY2hlbWEpIHtcbiAgICBsZXQgc2NoZW1hID0gWXVwLmJvb2xlYW4oKTtcbiAgICBpZihvcmlnaW5hbC5sYWJlbCkge1xuICAgICAgc2NoZW1hLmxhYmVsKG9yaWdpbmFsLmxhYmVsKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gb3JpZ2luYWwuY29uc3RyYWludHM7ICBcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmVxdWFscykge1xuICAgICAgaWYgKG9wdGlvbnMuZXF1YWxzLmVxdWFscykge1xuICAgICAgICBzY2hlbWEgPSBzY2hlbWEuaXNUcnVlKG9wdGlvbnMuZXF1YWxzLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLmlzRmFsc2Uob3B0aW9ucy5lcXVhbHMubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREYXRlU2NoZW1hKG9yaWdpbmFsOiBEYXRlU2NoZW1hKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5kYXRlKCk7XG4gICAgaWYob3JpZ2luYWwubGFiZWwpIHtcbiAgICAgIHNjaGVtYS5sYWJlbChvcmlnaW5hbC5sYWJlbCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG9yaWdpbmFsLmNvbnN0cmFpbnRzOyAgXG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5taW4pIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5taW4ob3B0aW9ucy5taW4ubWluLCBvcHRpb25zLm1pbi5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWF4KSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF4KG9wdGlvbnMubWF4Lm1heCwgb3B0aW9ucy5tYXgubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRlc3QpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS50ZXN0KHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy50ZXN0Lm5hbWUsXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMudGVzdC5tZXNzYWdlLFxuICAgICAgICB0ZXN0OiAoZD86IERhdGUsIGNvbnRleHQ/OiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy50ZXN0IS50ZXN0KGQhKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTnVtYmVyU2NoZW1hKG9yaWdpbmFsOiBOdW1iZXJTY2hlbWEpIHtcbiAgICBsZXQgc2NoZW1hID0gWXVwLm51bWJlcigpO1xuICAgIGlmKG9yaWdpbmFsLmxhYmVsKSB7XG4gICAgICBzY2hlbWEubGFiZWwob3JpZ2luYWwubGFiZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBvcmlnaW5hbC5jb25zdHJhaW50czsgIFxuICAgIGlmIChvcHRpb25zLnJlcXVpcmVkKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQob3B0aW9ucy5yZXF1aXJlZC5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWluKG9wdGlvbnMubWluLm1pbiwgb3B0aW9ucy5taW4ubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1heCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1heChvcHRpb25zLm1heC5tYXgsIG9wdGlvbnMubWF4Lm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQXJyYXlTY2hlbWEob3JpZ2luYWw6IEFycmF5U2NoZW1hKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5hcnJheSgpO1xuICAgIGlmKG9yaWdpbmFsLmxhYmVsKSB7XG4gICAgICBzY2hlbWEubGFiZWwob3JpZ2luYWwubGFiZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBvcmlnaW5hbC5jb25zdHJhaW50czsgIFxuXG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWluKG9wdGlvbnMubWluLm1pbiwgb3B0aW9ucy5taW4ubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1heCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLm1heChvcHRpb25zLm1heC5tYXgsIG9wdGlvbnMubWF4Lm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTmVzdGVkT2JqZWN0U2NoZW1hKG9yaWdpbmFsOiBPYmplY3RTY2hlbWEpIHtcbiAgICBjb25zdCBtZXRhZGF0YTogTWFwPHN0cmluZywgRmllbGRTY2hlbWE8YW55Pj4gPSBSZWZsZWN0LmdldE1ldGFkYXRhKFNDSEVNQV9NRVRBREFUQV9OQU1FU1BBQ0UsIG9yaWdpbmFsLmNvbnN0cmFpbnRzLmdldEluc3RhbmNlKCkpO1xuXG4gICAgbGV0IG5lc3RlZFNjaGVtYSA9IHRoaXMuYnVpbGRZdXBTY2hlbWEoWy4uLm1ldGFkYXRhLnZhbHVlcygpXSk7XG4gICAgaWYob3JpZ2luYWwubGFiZWwpIHtcbiAgICAgIG5lc3RlZFNjaGVtYS5sYWJlbChvcmlnaW5hbC5sYWJlbCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG9yaWdpbmFsLmNvbnN0cmFpbnRzOyAgXG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIG5lc3RlZFNjaGVtYSA9IG5lc3RlZFNjaGVtYS5yZXF1aXJlZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXN0ZWRTY2hlbWEgPSBuZXN0ZWRTY2hlbWEubm90UmVxdWlyZWQoKS5kZWZhdWx0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5lc3RlZFNjaGVtYTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaWxlU2NoZW1hKG9yaWdpbmFsOiBGaWxlU2NoZW1hKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5taXhlZCgpLm51bGxhYmxlKCkub3B0aW9uYWwoKTtcbiAgICBpZihvcmlnaW5hbC5sYWJlbCkge1xuICAgICAgc2NoZW1hLmxhYmVsKG9yaWdpbmFsLmxhYmVsKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gb3JpZ2luYWwuY29uc3RyYWludHM7ICBcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class ModelSchema {
|
|
2
|
+
// TODO: need to keep track of internal and external
|
|
3
|
+
//private definitions?: {[K in keyof T]: FieldSchema<any>};
|
|
4
|
+
constructor(metadata, schema) {
|
|
5
|
+
this.metadata = metadata;
|
|
6
|
+
this.schema = schema;
|
|
7
|
+
}
|
|
8
|
+
getMetadata(paths) {
|
|
9
|
+
//console.log('fetching metadata for path: ', paths);
|
|
10
|
+
//console.log(this.schema.describe());
|
|
11
|
+
for (var i = 0; i < paths.length; i++) {
|
|
12
|
+
const field = this.metadata.find(f => f.name === paths[i]);
|
|
13
|
+
if (!field?.constraints.required || field.constraints.required.required === false) {
|
|
14
|
+
return { required: false };
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return { required: true };
|
|
18
|
+
}
|
|
19
|
+
validate(model) {
|
|
20
|
+
return this.schema
|
|
21
|
+
.validate(model, { abortEarly: false })
|
|
22
|
+
.then(() => {
|
|
23
|
+
return [];
|
|
24
|
+
})
|
|
25
|
+
.catch((e) => {
|
|
26
|
+
return e.inner.map((error) => ({ path: error.path, type: error.type, message: error.message }));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
cast(value) {
|
|
30
|
+
return this.schema.cast(value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbW9kZWwtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLG9EQUFvRDtJQUNwRCw0REFBNEQ7SUFDNUQsWUFBb0IsUUFBNEIsRUFBVSxNQUF1QjtRQUE3RCxhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWlCO0lBRWpGLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBZTtRQUN2QixxREFBcUQ7UUFDckQsc0NBQXNDO1FBQ3RDLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pELElBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUEwQixDQUFDO1lBQ3ZELENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQTBCLENBQUM7SUFFdEQsQ0FBQztJQUVELFFBQVEsQ0FBSSxLQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDYixRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLENBQWtCLEVBQUUsRUFBRTtZQUMxQixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQSxDQUFDLENBQUM7UUFDOUcsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQVU7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFueU9iamVjdFNjaGVtYSwgU2NoZW1hT2YsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ3l1cCc7XG5pbXBvcnQgeyBGaWVsZEVycm9yIH0gZnJvbSAnLi9maWVsZC1lcnJvcic7XG5pbXBvcnQgeyBGaWVsZFNjaGVtYSB9IGZyb20gJy4vZmllbGQtc2NoZW1hJztcbmV4cG9ydCBjbGFzcyBNb2RlbFNjaGVtYTxUPiB7XG4gICAgLy8gVE9ETzogbmVlZCB0byBrZWVwIHRyYWNrIG9mIGludGVybmFsIGFuZCBleHRlcm5hbFxuICAgIC8vcHJpdmF0ZSBkZWZpbml0aW9ucz86ICB7W0sgaW4ga2V5b2YgVF06IEZpZWxkU2NoZW1hPGFueT59O1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbWV0YWRhdGE6IEZpZWxkU2NoZW1hPGFueT5bXSwgcHJpdmF0ZSBzY2hlbWE6IEFueU9iamVjdFNjaGVtYSkge1xuXG4gICAgfVxuICAgIFxuICAgIGdldE1ldGFkYXRhKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKCdmZXRjaGluZyBtZXRhZGF0YSBmb3IgcGF0aDogJywgcGF0aHMpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuc2NoZW1hLmRlc2NyaWJlKCkpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgcGF0aHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5tZXRhZGF0YS5maW5kKGY9PmYubmFtZSA9PT0gcGF0aHNbaV0pO1xuICAgICAgICAgICAgaWYoIWZpZWxkPy5jb25zdHJhaW50cy5yZXF1aXJlZCB8fCBmaWVsZC5jb25zdHJhaW50cy5yZXF1aXJlZC5yZXF1aXJlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogZmFsc2UgfSBzYXRpc2ZpZXMgRmllbGRNZXRhZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9IHNhdGlzZmllcyBGaWVsZE1ldGFkYXRhO1xuXG4gICAgfVxuXG4gICAgdmFsaWRhdGU8VD4obW9kZWw6IFQpOiBQcm9taXNlPEZpZWxkRXJyb3JbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlbWFcbiAgICAgICAgICAgIC52YWxpZGF0ZShtb2RlbCwgeyBhYm9ydEVhcmx5OiBmYWxzZSB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGU6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmlubmVyLm1hcCgoZXJyb3IpID0+IDxGaWVsZEVycm9yPnsgcGF0aDogZXJyb3IucGF0aCwgdHlwZTogZXJyb3IudHlwZSwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNhc3QodmFsdWU6IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlbWEuY2FzdCh2YWx1ZSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBTY2hlbWFEZWZpbml0aW9uPFQ+ID0ge1xuICAgIC8vW0sgaW4ga2V5b2YgUmVxdWlyZWQ8VD5dOiBUW0tdIGV4dGVuZHMgb2JqZWN0ID8gU2NoZW1hRGVmaW5pdGlvbjxUW0tdPjogRmllbGRTY2hlbWE8YW55PjtcbiAgICBbSyBpbiBrZXlvZiBSZXF1aXJlZDxUPl06IEZpZWxkU2NoZW1hPGFueT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZE1ldGFkYXRhIHtcbiAgICByZXF1aXJlZDogYm9vbGVhbjtcbn0iXX0=
|
|
@@ -37,7 +37,6 @@ export class NgFormModelState {
|
|
|
37
37
|
async validate() {
|
|
38
38
|
const model = this.form.value;
|
|
39
39
|
const state = await this.runValidations(model, this.options?.onValidate);
|
|
40
|
-
console.log('running validations, result:', state);
|
|
41
40
|
this.setStateInternal(state);
|
|
42
41
|
return state;
|
|
43
42
|
}
|
|
@@ -103,4 +102,4 @@ export class NgFormModelState {
|
|
|
103
102
|
};
|
|
104
103
|
}
|
|
105
104
|
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdmb3JtLW1vZGVsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmdmb3JtLW1vZGVsLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsZUFBZSxFQUF3QixJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTlFLE1BQU0sT0FBTyxnQkFBZ0I7SUFJM0IsWUFBb0IsSUFBWSxFQUFVLGNBQWlDLEVBQVUsT0FBMkI7UUFBNUYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBSHhHLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQWtDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLFlBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRzNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7YUFDeEIsSUFBSSxDQUNILFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFRLEVBQUUsTUFBb0I7UUFDckMsTUFBTSxLQUFLLEdBQUc7WUFDWixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxN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TCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBSSxLQUFRLEVBQUUsUUFBd0Q7UUFDaEcsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLEtBQUssR0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUQsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDekIsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwLCBOZ0Zvcm0sIE5nTW9kZWxHcm91cCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb20sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmllbGRFcnJvciB9IGZyb20gJy4vZmllbGQtZXJyb3InO1xuaW1wb3J0IHsgTW9kZWxTdGF0ZU9wdGlvbnMgfSBmcm9tICcuL21vZGVsLXN0YXRlLW9wdGlvbnMnO1xuaW1wb3J0IHsgTW9kZWxTdGF0ZVJlc3VsdCB9IGZyb20gJy4vbW9kZWwtc3RhdGUtcmVzdWx0JztcbmltcG9ydCB7IE1vZGVsVmFsaWRhdG9yIH0gZnJvbSAnLi9tb2RlbC12YWxpZGF0b3InO1xuXG5leHBvcnQgY2xhc3MgTmdGb3JtTW9kZWxTdGF0ZTxUPiB7XG4gIHByaXZhdGUgY2hhbmdlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1vZGVsU3RhdGVSZXN1bHQ8VD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzID0gdGhpcy5jaGFuZ2VzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm06IE5nRm9ybSwgcHJpdmF0ZSBtb2RlbFZhbGlkYXRvcjogTW9kZWxWYWxpZGF0b3I8VD4sIHByaXZhdGUgb3B0aW9ucz86IE1vZGVsU3RhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5mb3JtLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jICh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZyb20odGhpcy52YWxpZGF0ZSgpKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldEN1cnJlbnQoKTogTW9kZWxTdGF0ZVJlc3VsdDxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlc1N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzZXRTdGF0ZShtb2RlbDogVCwgZXJyb3JzOiBGaWVsZEVycm9yW10pIHtcbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgIGVycm9yczogZXJyb3JzLFxuICAgICAgdmFsaWQ6IGVycm9ycy5sZW5ndGggPT09IDAsXG4gICAgfSBhcyBNb2RlbFN0YXRlUmVzdWx0PFQ+O1xuICAgIHRoaXMuc2V0U3RhdGVJbnRlcm5hbChzdGF0ZSk7XG4gIH1cblxuICBzZXRFcnJvcnMoZXJyb3JzOiBGaWVsZEVycm9yW10pIHtcbiAgICAvL3RoaXMuZXJyb3JzLm5leHQoZXJyb3JzKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25lZWRzIGltcGxlbWVudGF0aW9uJyk7XG4gIH1cblxuICBhcHBlbmRFcnJvcnMoZXJyb3JzOiBGaWVsZEVycm9yW10sIHNraXBFbWl0PzogYm9vbGVhbikge1xuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi4odGhpcy5jaGFuZ2VzU3ViamVjdC52YWx1ZT8uZXJyb3JzIHx8IFtdKSwgLi4uZXJyb3JzXTtcbiAgICBjb25zdCBzdGF0ZSA9IHsgLi4udGhpcy5jaGFuZ2VzU3ViamVjdC52YWx1ZSB9IGFzIE1vZGVsU3RhdGVSZXN1bHQ8VD47XG4gICAgc3RhdGUuZXJyb3JzID0gYWxsRXJyb3JzO1xuICAgIHRoaXMuc2V0U3RhdGVJbnRlcm5hbChzdGF0ZSk7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZSgpOiBQcm9taXNlPE1vZGVsU3RhdGVSZXN1bHQ8VD4+IHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IHRoaXMucnVuVmFsaWRhdGlvbnMobW9kZWwsIHRoaXMub3B0aW9ucz8ub25WYWxpZGF0ZSk7XG4gICAgY29uc29sZS5sb2coJ3J1bm5pbmcgdmFsaWRhdGlvbnMsIHJlc3VsdDonLCBzdGF0ZSk7XG4gICAgdGhpcy5zZXRTdGF0ZUludGVybmFsKHN0YXRlKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuXG4gIHByaXZhdGUgc2V0U3RhdGVJbnRlcm5hbChzdGF0ZTogTW9kZWxTdGF0ZVJlc3VsdDxUPikge1xuICAgIHRoaXMuZGVsZXRlRm9ybUVycm9ycygpO1xuXG4gICAgY29uc3QgZ3JvdXBlZCA9IHN0YXRlLmVycm9ycy5yZWR1Y2UoKGdyb3VwZWQsIHYpID0+IGdyb3VwZWQuc2V0KHYucGF0aCwgWy4uLihncm91cGVkLmdldCh2LnBhdGgpIHx8IFtdKSwgdl0pLCBuZXcgTWFwPHN0cmluZywgRmllbGRFcnJvcltdPigpKTtcbiAgICBncm91cGVkLmZvckVhY2goKHZhbHVlLCBwYXRoKSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGlvbkVycm9ycyA9IDxWYWxpZGF0aW9uRXJyb3JzPnt9O1xuICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4gKHZhbGlkYXRpb25FcnJvcnNbdi50eXBlXSA9IHYubWVzc2FnZSkpO1xuXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmZvcm0uZ2V0KHBhdGgpO1xuICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBhY3R1YWwgbG9nZ2luZyBzZXJ2aWNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyh2YWxpZGF0aW9uRXJyb3JzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhbmdlc1N1YmplY3QubmV4dChzdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUZvcm1FcnJvcnMoKSB7XG4gICAgdGhpcy5kZWxldGVFcnJvcnModGhpcy5mb3JtLmZvcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVFcnJvcnMocm9vdEZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XG4gICAgT2JqZWN0LmtleXMocm9vdEZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gcm9vdEZvcm1Hcm91cC5jb250cm9sc1trZXldO1xuXG4gICAgICBpZiAoIXRoaXMuaXNQYXJlbnRDb250cm9sKGNvbnRyb2wpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlRXJyb3JzRnJvbUNvbnRyb2woa2V5LCBjb250cm9sKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICB0aGlzLmRlbGV0ZUVycm9ycyhjb250cm9sIGFzIEZvcm1Hcm91cCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgdGhpcy5sb29wRm9ybUFycmF5KGNvbnRyb2wgYXMgRm9ybUFycmF5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlRXJyb3JzRnJvbUNvbnRyb2woa2V5OiBzdHJpbmcgfCBudW1iZXIsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BhcmVudENvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheTtcbiAgfVxuXG4gIHByaXZhdGUgbG9vcEZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSkge1xuICAgIGZvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzUGFyZW50Q29udHJvbChjb250cm9sKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZUVycm9yc0Zyb21Db250cm9sKGluZGV4LCBjb250cm9sKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICB0aGlzLmRlbGV0ZUVycm9ycyhjb250cm9sIGFzIEZvcm1Hcm91cCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgdGhpcy5sb29wRm9ybUFycmF5KGNvbnRyb2wgYXMgRm9ybUFycmF5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuVmFsaWRhdGlvbnM8VD4obW9kZWw6IFQsIGNhbGxiYWNrPzogKGxpc3Q6IEZpZWxkRXJyb3JbXSkgPT4gUHJvbWlzZTxGaWVsZEVycm9yW10+KTogUHJvbWlzZTxNb2RlbFN0YXRlUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMubW9kZWxWYWxpZGF0b3IudmFsaWRhdGUobW9kZWwpO1xuICAgIGNvbnN0IGZpbmFsID0gIGNhbGxiYWNrID8gKGF3YWl0IGNhbGxiYWNrPy4obGlzdCkpIDogbGlzdDtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IGZpbmFsLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9yczogZmluYWwsXG4gICAgICBtb2RlbDogbW9kZWwsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdmb3JtLW1vZGVsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmdmb3JtLW1vZGVsLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFNBQVMsRUFBNEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNeEQsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUFvQixJQUFZLEVBQVUsY0FBOEIsRUFBVSxPQUEyQjtRQUF6RixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFIckcsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBa0MsU0FBUyxDQUFDLENBQUM7UUFDekUsWUFBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTthQUN4QixJQUFJLENBQ0gsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVEsRUFBRSxNQUFvQjtRQUNyQyxNQUFNLEtBQUssR0FBRztZQUNaLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsTUFBTSxDQUFDLE1B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TUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLEtBQUssR0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUQsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDekIsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb20sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmllbGRFcnJvciB9IGZyb20gJy4vZmllbGQtZXJyb3InO1xuaW1wb3J0IHsgTW9kZWxTdGF0ZU9wdGlvbnMgfSBmcm9tICcuL21vZGVsLXN0YXRlLW9wdGlvbnMnO1xuaW1wb3J0IHsgTW9kZWxTdGF0ZVJlc3VsdCB9IGZyb20gJy4vbW9kZWwtc3RhdGUtcmVzdWx0JztcbmltcG9ydCB7IE1vZGVsU2NoZW1hIH0gZnJvbSAnLi9tb2RlbC1zY2hlbWEnO1xuXG5leHBvcnQgY2xhc3MgTmdGb3JtTW9kZWxTdGF0ZTxUPiB7XG4gIHByaXZhdGUgY2hhbmdlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1vZGVsU3RhdGVSZXN1bHQ8VD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzID0gdGhpcy5jaGFuZ2VzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm06IE5nRm9ybSwgcHJpdmF0ZSBtb2RlbFZhbGlkYXRvcjogTW9kZWxTY2hlbWE8VD4sIHByaXZhdGUgb3B0aW9ucz86IE1vZGVsU3RhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5mb3JtLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jICh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZyb20odGhpcy52YWxpZGF0ZSgpKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldEN1cnJlbnQoKTogTW9kZWxTdGF0ZVJlc3VsdDxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlc1N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzZXRTdGF0ZShtb2RlbDogVCwgZXJyb3JzOiBGaWVsZEVycm9yW10pIHtcbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgIGVycm9yczogZXJyb3JzLFxuICAgICAgdmFsaWQ6IGVycm9ycy5sZW5ndGggPT09IDAsXG4gICAgfSBhcyBNb2RlbFN0YXRlUmVzdWx0PFQ+O1xuICAgIHRoaXMuc2V0U3RhdGVJbnRlcm5hbChzdGF0ZSk7XG4gIH1cblxuICBzZXRFcnJvcnMoZXJyb3JzOiBGaWVsZEVycm9yW10pIHtcbiAgICAvL3RoaXMuZXJyb3JzLm5leHQoZXJyb3JzKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25lZWRzIGltcGxlbWVudGF0aW9uJyk7XG4gIH1cblxuICBhcHBlbmRFcnJvcnMoZXJyb3JzOiBGaWVsZEVycm9yW10sIHNraXBFbWl0PzogYm9vbGVhbikge1xuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi4odGhpcy5jaGFuZ2VzU3ViamVjdC52YWx1ZT8uZXJyb3JzIHx8IFtdKSwgLi4uZXJyb3JzXTtcbiAgICBjb25zdCBzdGF0ZSA9IHsgLi4udGhpcy5jaGFuZ2VzU3ViamVjdC52YWx1ZSB9IGFzIE1vZGVsU3RhdGVSZXN1bHQ8VD47XG4gICAgc3RhdGUuZXJyb3JzID0gYWxsRXJyb3JzO1xuICAgIHRoaXMuc2V0U3RhdGVJbnRlcm5hbChzdGF0ZSk7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZSgpOiBQcm9taXNlPE1vZGVsU3RhdGVSZXN1bHQ8VD4+IHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IHRoaXMucnVuVmFsaWRhdGlvbnMobW9kZWwsIHRoaXMub3B0aW9ucz8ub25WYWxpZGF0ZSk7XG4gICAgdGhpcy5zZXRTdGF0ZUludGVybmFsKHN0YXRlKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuXG4gIHByaXZhdGUgc2V0U3RhdGVJbnRlcm5hbChzdGF0ZTogTW9kZWxTdGF0ZVJlc3VsdDxUPikge1xuICAgIHRoaXMuZGVsZXRlRm9ybUVycm9ycygpO1xuXG4gICAgY29uc3QgZ3JvdXBlZCA9IHN0YXRlLmVycm9ycy5yZWR1Y2UoKGdyb3VwZWQsIHYpID0+IGdyb3VwZWQuc2V0KHYucGF0aCwgWy4uLihncm91cGVkLmdldCh2LnBhdGgpIHx8IFtdKSwgdl0pLCBuZXcgTWFwPHN0cmluZywgRmllbGRFcnJvcltdPigpKTtcbiAgICBncm91cGVkLmZvckVhY2goKHZhbHVlLCBwYXRoKSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGlvbkVycm9ycyA9IDxWYWxpZGF0aW9uRXJyb3JzPnt9O1xuICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4gKHZhbGlkYXRpb25FcnJvcnNbdi50eXBlXSA9IHYubWVzc2FnZSkpO1xuXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmZvcm0uZ2V0KHBhdGgpO1xuICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBhY3R1YWwgbG9nZ2luZyBzZXJ2aWNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyh2YWxpZGF0aW9uRXJyb3JzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2hhbmdlc1N1YmplY3QubmV4dChzdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUZvcm1FcnJvcnMoKSB7XG4gICAgdGhpcy5kZWxldGVFcnJvcnModGhpcy5mb3JtLmZvcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVFcnJvcnMocm9vdEZvcm1Hcm91cDogRm9ybUdyb3VwKSB7XG4gICAgT2JqZWN0LmtleXMocm9vdEZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gcm9vdEZvcm1Hcm91cC5jb250cm9sc1trZXldO1xuXG4gICAgICBpZiAoIXRoaXMuaXNQYXJlbnRDb250cm9sKGNvbnRyb2wpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlRXJyb3JzRnJvbUNvbnRyb2woa2V5LCBjb250cm9sKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICB0aGlzLmRlbGV0ZUVycm9ycyhjb250cm9sIGFzIEZvcm1Hcm91cCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgdGhpcy5sb29wRm9ybUFycmF5KGNvbnRyb2wgYXMgRm9ybUFycmF5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlRXJyb3JzRnJvbUNvbnRyb2woa2V5OiBzdHJpbmcgfCBudW1iZXIsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BhcmVudENvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgcmV0dXJuIGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheTtcbiAgfVxuXG4gIHByaXZhdGUgbG9vcEZvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSkge1xuICAgIGZvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzUGFyZW50Q29udHJvbChjb250cm9sKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZUVycm9yc0Zyb21Db250cm9sKGluZGV4LCBjb250cm9sKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICB0aGlzLmRlbGV0ZUVycm9ycyhjb250cm9sIGFzIEZvcm1Hcm91cCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgdGhpcy5sb29wRm9ybUFycmF5KGNvbnRyb2wgYXMgRm9ybUFycmF5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuVmFsaWRhdGlvbnM8VD4obW9kZWw6IFQsIGNhbGxiYWNrPzogKGxpc3Q6IEZpZWxkRXJyb3JbXSkgPT4gUHJvbWlzZTxGaWVsZEVycm9yW10+KTogUHJvbWlzZTxNb2RlbFN0YXRlUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgbGlzdCA9IGF3YWl0IHRoaXMubW9kZWxWYWxpZGF0b3IudmFsaWRhdGUobW9kZWwpO1xuICAgIGNvbnN0IGZpbmFsID0gIGNhbGxiYWNrID8gKGF3YWl0IGNhbGxiYWNrPy4obGlzdCkpIDogbGlzdDtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IGZpbmFsLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9yczogZmluYWwsXG4gICAgICBtb2RlbDogbW9kZWwsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -13,7 +13,6 @@ export function StringType(...annotations) {
|
|
|
13
13
|
type: FieldSchemaType.string,
|
|
14
14
|
constraints: Object.assign({}, ...annotations)
|
|
15
15
|
};
|
|
16
|
-
console.log(schema.constraints);
|
|
17
16
|
registerMetadata(target, propertyKey, schema);
|
|
18
17
|
};
|
|
19
18
|
}
|
|
@@ -107,4 +106,4 @@ export function max(value, message) {
|
|
|
107
106
|
export function test(name, test, message) {
|
|
108
107
|
return { test: { name: name, test: test, message: message } };
|
|
109
108
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1hbm5vdGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL3R5cGUtYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQXVELGVBQWUsRUFBd0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1SixNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQTJGdkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQWMsRUFBRSxXQUFtQixFQUFFLE1BQXdCLEVBQUUsRUFBRTtJQUN6RixNQUFNLFFBQVEsR0FBa0MsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDakksUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBRyxXQUFzRDtJQUNsRixPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2xELE1BQU0sTUFBTSxHQUFHO1lBQ2IsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxNQUFNO1lBQzVCLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLFdBQVcsQ0FBMEI7U0FDakQsQ0FBQztRQUV6QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVoQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFN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RSxPQUFPLEVBQUUsRUFBRSxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsR0FBRyxDQUFJLEtBQVEsRUFBRSxPQUFnQjtJQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBSSxLQUFRLEVBQUUsT0FBZ0I7SUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxJQUFJLENBQUksSUFBWSxFQUFFLElBQXVCLEVBQUUsT0FBZ0I7SUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IEFycmF5U2NoZW1hLCBCb29sZWFuU2NoZW1hLCBEYXRlU2NoZW1hLCBGaWVsZFNjaGVtYSwgRmllbGRTY2hlbWFUeXBlLCBGaWxlU2NoZW1hLCBOdW1iZXJTY2hlbWEsIE9iamVjdFNjaGVtYSwgU3RyaW5nU2NoZW1hIH0gZnJvbSAnLi9maWVsZC1zY2hlbWEnO1xuXG5jb25zdCBNRVRBREFUQV9LRVkgPSAnY3VzdG9tOm11emllaGRlc2lnbjphbm5vdGF0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RyYWludEFubm90YXRpb25zIHtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1R5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBsZW5ndGg/OiBMZW5ndGhBbm5vdGF0aW9uO1xuICBwYXR0ZXJuPzogUGF0dGVybkFubm90YXRpb247XG4gIG1heExlbmd0aD86IE1heExlbmd0aEFubm90YXRpb247XG4gIG1pbkxlbmd0aD86IE1pbkxlbmd0aEFubm90YXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhblR5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBlcXVhbHM/OiBFcXVhbHNBbm5vdGF0aW9uPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICByZXF1aXJlZD86IFJlcXVpcmVkQW5ub3RhdGlvbjtcbiAgbWluPzogTWluaW11bUFubm90YXRpb248RGF0ZT47XG4gIG1heD86IE1heGltdW1Bbm5vdGF0aW9uPERhdGU+O1xuICB0ZXN0PzogVGVzdEFubm90YXRpb248RGF0ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0VHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIGdldEluc3RhbmNlOiAoKSA9PiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIG1pbj86IE1pbmltdW1Bbm5vdGF0aW9uPG51bWJlcj47XG4gIG1heD86IE1heGltdW1Bbm5vdGF0aW9uPG51bWJlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJyYXlUeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICBtaW4/OiBNaW5pbXVtQW5ub3RhdGlvbjxudW1iZXI+O1xuICBtYXg/OiBNYXhpbXVtQW5ub3RhdGlvbjxudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVUeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICByZXF1aXJlZD86IFJlcXVpcmVkQW5ub3RhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWlyZWRBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICByZXF1aXJlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZW5ndGhBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBsZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgcGF0dGVybjogUmVnRXhwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9mVmFsdWVzQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgdmFsdWVzOiBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcXVhbHNBbm5vdGF0aW9uPFQ+IGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBlcXVhbHM6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaW11bUFubm90YXRpb248VD4gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1pbjogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXhpbXVtQW5ub3RhdGlvbjxUPiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWF4OiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RBbm5vdGF0aW9uPFQ+IGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICB0ZXN0OiAoZDogVCkgPT4gYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1heExlbmd0aEFubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1heExlbmd0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbkxlbmd0aEFubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1pbkxlbmd0aDogbnVtYmVyO1xufVxuXG5jb25zdCByZWdpc3Rlck1ldGFkYXRhID0gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBzY2hlbWE6IEZpZWxkU2NoZW1hPGFueT4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGE6IE1hcDxzdHJpbmcsIEZpZWxkU2NoZW1hPGFueT4+ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNRVRBREFUQV9LRVksIHRhcmdldCkgfHwgbmV3IE1hcDxzdHJpbmcsIEZpZWxkU2NoZW1hPGFueT4+KCk7XG4gIG1ldGFkYXRhLnNldChwcm9wZXJ0eUtleSwgc2NoZW1hKTtcbiAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShNRVRBREFUQV9LRVksIG1ldGFkYXRhLCB0YXJnZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ1R5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IEZpZWxkU2NoZW1hVHlwZS5zdHJpbmcsXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIFN0cmluZ1R5cGVBbm5vdGF0aW9uc1xuICAgIH0gc2F0aXNmaWVzIFN0cmluZ1NjaGVtYTtcblxuICAgIGNvbnNvbGUubG9nKHNjaGVtYS5jb25zdHJhaW50cyk7XG5cbiAgICByZWdpc3Rlck1ldGFkYXRhKHRhcmdldCwgcHJvcGVydHlLZXksIHNjaGVtYSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCb29sZWFuVHlwZSguLi5hbm5vdGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uQW5ub3RhdGlvbiB9W10pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIG5hbWU6IHByb3BlcnR5S2V5LFxuICAgICAgdHlwZTogRmllbGRTY2hlbWFUeXBlLmJvb2xlYW4sXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnNcbiAgICB9IHNhdGlzZmllcyBCb29sZWFuU2NoZW1hO1xuXG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBzY2hlbWEpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVR5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IEZpZWxkU2NoZW1hVHlwZS5kYXRlLFxuICAgICAgY29uc3RyYWludHM6IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBEYXRlVHlwZUFubm90YXRpb25zXG4gICAgfSBzYXRpc2ZpZXMgRGF0ZVNjaGVtYTtcblxuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgc2NoZW1hKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE51bWJlclR5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IEZpZWxkU2NoZW1hVHlwZS5udW1iZXIsXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIE51bWJlclR5cGVBbm5vdGF0aW9uc1xuICAgIH0gc2F0aXNmaWVzIE51bWJlclNjaGVtYTtcblxuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgc2NoZW1hKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE9iamVjdFR5cGU8VD4odHlwZTogeyBuZXcgKCk6IFQgfSwgLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IEZpZWxkU2NoZW1hVHlwZS5vYmplY3QsXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMsIHsgZ2V0SW5zdGFuY2U6ICgpID0+IG5ldyB0eXBlKCkgfSBhcyBQYXJ0aWFsPE9iamVjdFR5cGVBbm5vdGF0aW9ucz4pIGFzIE9iamVjdFR5cGVBbm5vdGF0aW9uc1xuICAgIH0gc2F0aXNmaWVzIE9iamVjdFNjaGVtYTtcblxuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgc2NoZW1hKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFycmF5VHlwZSguLi5hbm5vdGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uQW5ub3RhdGlvbiB9W10pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIG5hbWU6IHByb3BlcnR5S2V5LFxuICAgICAgdHlwZTogRmllbGRTY2hlbWFUeXBlLmFycmF5LFxuICAgICAgY29uc3RyYWludHM6IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBBcnJheVR5cGVBbm5vdGF0aW9uc1xuICAgIH0gc2F0aXNmaWVzIEFycmF5U2NoZW1hO1xuXG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBzY2hlbWEpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRmlsZVR5cGU8VD4oLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IEZpZWxkU2NoZW1hVHlwZS5maWxlLFxuICAgICAgY29uc3RyYWludHM6IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBGaWxlVHlwZUFubm90YXRpb25zXG4gICAgfSBzYXRpc2ZpZXMgRmlsZVNjaGVtYTtcblxuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgc2NoZW1hKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFJlcXVpcmVkQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcmVxdWlyZWQ6IHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihyZWdleDogUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBQYXR0ZXJuQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcGF0dGVybjogeyBwYXR0ZXJuOiByZWdleCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGgobGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IGxlbmd0aDogeyBsZW5ndGg6IGxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1heExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1heExlbmd0aDogeyBtYXhMZW5ndGg6IG1heExlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGgobWluTGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1pbkxlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1pbkxlbmd0aDogeyBtaW5MZW5ndGg6IG1pbkxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvZlZhbHVlcyh2YWx1ZXM6IFtdLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBPZlZhbHVlc0Fubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG9mVmFsdWVzOiB7IHZhbHVlczogdmFsdWVzLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsczxUPih2YWx1ZTogVCwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogRXF1YWxzQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgZXF1YWxzOiB7IGVxdWFsczogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluPFQ+KHZhbHVlOiBULCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBNaW5pbXVtQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgbWluOiB7IG1pbjogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4PFQ+KHZhbHVlOiBULCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBNYXhpbXVtQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgbWF4OiB7IG1heDogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdDxUPihuYW1lOiBzdHJpbmcsIHRlc3Q6IChkOiBUKSA9PiBib29sZWFuLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBUZXN0QW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgdGVzdDogeyBuYW1lOiBuYW1lLCB0ZXN0OiB0ZXN0LCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cbiJdfQ==
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1hbm5vdGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL3R5cGUtYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQXVELGVBQWUsRUFBd0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1SixNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQXNHdkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQWMsRUFBRSxXQUFtQixFQUFFLE1BQXdCLEVBQUUsRUFBRTtJQUN6RixNQUFNLFFBQVEsR0FBa0MsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDakksUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBRyxXQUFzRDtJQUNsRixPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2xELE1BQU0sTUFBTSxHQUFHO1lBQ2IsSUFBSSxFQUFFLFdBQVc7WUFDakIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxNQUFNO1lBQzVCLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLFdBQVcsQ0FBMEI7U0FDakQsQ0FBQztRQUV6QixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQUcsV0FBc0Q7SUFDbkYsT0FBTyxVQUFVLE1BQWMsRUFB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RyxDQUFJLEtBQVEsRUFBRSxPQUFnQjtJQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBSSxLQUFRLEVBQUUsT0FBZ0I7SUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxJQUFJLENBQUksSUFBWSxFQUFFLElBQXVCLEVBQUUsT0FBZ0I7SUFDN0UsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IEFycmF5U2NoZW1hLCBCb29sZWFuU2NoZW1hLCBEYXRlU2NoZW1hLCBGaWVsZFNjaGVtYSwgRmllbGRTY2hlbWFUeXBlLCBGaWxlU2NoZW1hLCBOdW1iZXJTY2hlbWEsIE9iamVjdFNjaGVtYSwgU3RyaW5nU2NoZW1hIH0gZnJvbSAnLi9maWVsZC1zY2hlbWEnO1xuXG5jb25zdCBNRVRBREFUQV9LRVkgPSAnY3VzdG9tOm11emllaGRlc2lnbjphbm5vdGF0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RyYWludEFubm90YXRpb25zIHtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1R5cGVDb25zdHJhaW50cyB7XG4gIHJlcXVpcmVkPzogdHJ1ZTtcbiAgcmVxdWlyZWRNZXNzYWdlPzogc3RyaW5nO1xuXG4gIHBhdHRlcm4/OiBSZWdFeHA7XG4gIHBhdHRlcm5NZXNzYWdlPzogc3RyaW5nO1xuXG4gIGxlbmd0aD86IG51bWJlcjtcbiAgbGVuZ3RoTWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICByZXF1aXJlZD86IFJlcXVpcmVkQW5ub3RhdGlvbjtcbiAgbGVuZ3RoPzogTGVuZ3RoQW5ub3RhdGlvbjtcbiAgcGF0dGVybj86IFBhdHRlcm5Bbm5vdGF0aW9uO1xuICBtYXhMZW5ndGg/OiBNYXhMZW5ndGhBbm5vdGF0aW9uO1xuICBtaW5MZW5ndGg/OiBNaW5MZW5ndGhBbm5vdGF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICByZXF1aXJlZD86IFJlcXVpcmVkQW5ub3RhdGlvbjtcbiAgZXF1YWxzPzogRXF1YWxzQW5ub3RhdGlvbjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIG1pbj86IE1pbmltdW1Bbm5vdGF0aW9uPERhdGU+O1xuICBtYXg/OiBNYXhpbXVtQW5ub3RhdGlvbjxEYXRlPjtcbiAgdGVzdD86IFRlc3RBbm5vdGF0aW9uPERhdGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFR5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBnZXRJbnN0YW5jZTogKCkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlclR5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBtaW4/OiBNaW5pbXVtQW5ub3RhdGlvbjxudW1iZXI+O1xuICBtYXg/OiBNYXhpbXVtQW5ub3RhdGlvbjxudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgbWluPzogTWluaW11bUFubm90YXRpb248bnVtYmVyPjtcbiAgbWF4PzogTWF4aW11bUFubm90YXRpb248bnVtYmVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVpcmVkQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVuZ3RoQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkFubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIHBhdHRlcm46IFJlZ0V4cDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZlZhbHVlc0Fubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIHZhbHVlczogW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXF1YWxzQW5ub3RhdGlvbjxUPiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgZXF1YWxzOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltdW1Bbm5vdGF0aW9uPFQ+IGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtaW46IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF4aW11bUFubm90YXRpb248VD4gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1heDogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0QW5ub3RhdGlvbjxUPiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgdGVzdDogKGQ6IFQpID0+IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXhMZW5ndGhBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtYXhMZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaW5MZW5ndGhBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtaW5MZW5ndGg6IG51bWJlcjtcbn1cblxuY29uc3QgcmVnaXN0ZXJNZXRhZGF0YSA9ICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZywgc2NoZW1hOiBGaWVsZFNjaGVtYTxhbnk+KSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhOiBNYXA8c3RyaW5nLCBGaWVsZFNjaGVtYTxhbnk+PiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTUVUQURBVEFfS0VZLCB0YXJnZXQpIHx8IG5ldyBNYXA8c3RyaW5nLCBGaWVsZFNjaGVtYTxhbnk+PigpO1xuICBtZXRhZGF0YS5zZXQocHJvcGVydHlLZXksIHNjaGVtYSk7XG4gIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoTUVUQURBVEFfS0VZLCBtZXRhZGF0YSwgdGFyZ2V0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdUeXBlKC4uLmFubm90YXRpb25zOiB7IFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25Bbm5vdGF0aW9uIH1bXSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgbmFtZTogcHJvcGVydHlLZXksXG4gICAgICB0eXBlOiBGaWVsZFNjaGVtYVR5cGUuc3RyaW5nLFxuICAgICAgY29uc3RyYWludHM6IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBTdHJpbmdUeXBlQW5ub3RhdGlvbnNcbiAgICB9IHNhdGlzZmllcyBTdHJpbmdTY2hlbWE7XG5cbiAgICByZWdpc3Rlck1ldGFkYXRhKHRhcmdldCwgcHJvcGVydHlLZXksIHNjaGVtYSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCb29sZWFuVHlwZSguLi5hbm5vdGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uQW5ub3RhdGlvbiB9W10pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIG5hbWU6IHByb3BlcnR5S2V5LFxuICAgICAgdHlwZTogRmllbGRTY2hlbWFUeXBlLmJvb2xlYW4sXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnNcbiAgICB9IHNhdGlzZmllcyBCb29sZWFuU2NoZW1hO1xuXG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBzY2hlbWEpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVR5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IEZpZWxkU2NoZW1hVHlwZS5kYXRlLFxuICAgICAgY29uc3RyYWludHM6IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBEYXRlVHlwZUFubm90YXRpb25zXG4gICAgfSBzYXRpc2ZpZXMgRGF0ZVNjaGVtYTtcblxuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgc2NoZW1hKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE51bWJlclR5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IEZpZWxkU2NoZW1hVHlwZS5udW1iZXIsXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIE51bWJlclR5cGVBbm5vdGF0aW9uc1xuICAgIH0gc2F0aXNmaWVzIE51bWJlclNjaGVtYTtcblxuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgc2NoZW1hKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE9iamVjdFR5cGU8VD4odHlwZTogeyBuZXcgKCk6IFQgfSwgLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIG5hbWU6IHByb3BlcnR5S2V5LFxuICAgICAgdHlwZTogRmllbGRTY2hlbWFUeXBlLm9iamVjdCxcbiAgICAgIGNvbnN0cmFpbnRzOiBPYmplY3QuYXNzaWduKHt9LCAuLi5hbm5vdGF0aW9ucywgeyBnZXRJbnN0YW5jZTogKCkgPT4gbmV3IHR5cGUoKSB9IGFzIFBhcnRpYWw8T2JqZWN0VHlwZUFubm90YXRpb25zPikgYXMgT2JqZWN0VHlwZUFubm90YXRpb25zXG4gICAgfSBzYXRpc2ZpZXMgT2JqZWN0U2NoZW1hO1xuXG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBzY2hlbWEpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQXJyYXlUeXBlKC4uLmFubm90YXRpb25zOiB7IFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25Bbm5vdGF0aW9uIH1bXSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgbmFtZTogcHJvcGVydHlLZXksXG4gICAgICB0eXBlOiBGaWVsZFNjaGVtYVR5cGUuYXJyYXksXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIEFycmF5VHlwZUFubm90YXRpb25zXG4gICAgfSBzYXRpc2ZpZXMgQXJyYXlTY2hlbWE7XG5cbiAgICByZWdpc3Rlck1ldGFkYXRhKHRhcmdldCwgcHJvcGVydHlLZXksIHNjaGVtYSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGaWxlVHlwZTxUPiguLi5hbm5vdGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uQW5ub3RhdGlvbiB9W10pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIG5hbWU6IHByb3BlcnR5S2V5LFxuICAgICAgdHlwZTogRmllbGRTY2hlbWFUeXBlLmZpbGUsXG4gICAgICBjb25zdHJhaW50czogT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIEZpbGVUeXBlQW5ub3RhdGlvbnNcbiAgICB9IHNhdGlzZmllcyBGaWxlU2NoZW1hO1xuXG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBzY2hlbWEpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWQobWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogUmVxdWlyZWRBbm5vdGF0aW9uIH0ge1xuICByZXR1cm4geyByZXF1aXJlZDogeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXR0ZXJuKHJlZ2V4OiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFBhdHRlcm5Bbm5vdGF0aW9uIH0ge1xuICByZXR1cm4geyBwYXR0ZXJuOiB7IHBhdHRlcm46IHJlZ2V4LCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlbmd0aChsZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogTGVuZ3RoQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgbGVuZ3RoOiB7IGxlbmd0aDogbGVuZ3RoLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heExlbmd0aChtYXhMZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogTWF4TGVuZ3RoQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgbWF4TGVuZ3RoOiB7IG1heExlbmd0aDogbWF4TGVuZ3RoLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbkxlbmd0aChtaW5MZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogTWluTGVuZ3RoQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgbWluTGVuZ3RoOiB7IG1pbkxlbmd0aDogbWluTGVuZ3RoLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9mVmFsdWVzKHZhbHVlczogW10sIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE9mVmFsdWVzQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgb2ZWYWx1ZXM6IHsgdmFsdWVzOiB2YWx1ZXMsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzPFQ+KHZhbHVlOiBULCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBFcXVhbHNBbm5vdGF0aW9uPFQ+IH0ge1xuICByZXR1cm4geyBlcXVhbHM6IHsgZXF1YWxzOiB2YWx1ZSwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW48VD4odmFsdWU6IFQsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1pbmltdW1Bbm5vdGF0aW9uPFQ+IH0ge1xuICByZXR1cm4geyBtaW46IHsgbWluOiB2YWx1ZSwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXg8VD4odmFsdWU6IFQsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1heGltdW1Bbm5vdGF0aW9uPFQ+IH0ge1xuICByZXR1cm4geyBtYXg6IHsgbWF4OiB2YWx1ZSwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0PFQ+KG5hbWU6IHN0cmluZywgdGVzdDogKGQ6IFQpID0+IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFRlc3RBbm5vdGF0aW9uPFQ+IH0ge1xuICByZXR1cm4geyB0ZXN0OiB7IG5hbWU6IG5hbWUsIHRlc3Q6IHRlc3QsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export * from './lib/field-error';
|
|
5
5
|
export * from './lib/model-state-result';
|
|
6
6
|
export * from './lib/model-schema.factory';
|
|
7
|
-
export
|
|
7
|
+
export { ModelSchema } from './lib/model-schema';
|
|
8
8
|
export * from './lib/type-annotations';
|
|
9
9
|
export * from './lib/ng-form-model-state.service';
|
|
10
10
|
export * from './lib/ngform-model-state';
|
|
@@ -16,4 +16,4 @@ export { MzCheckboxGroup } from './lib/checkbox-group/checkbox-group.component';
|
|
|
16
16
|
export { FormsModule, MzFormsModule } from './lib/forms.module';
|
|
17
17
|
export { MzForm } from './lib/form/form.directive';
|
|
18
18
|
export { MzField } from './lib/field/field.component';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQW9CLE1BQU0sb0JBQW9CLENBQUM7QUFDbkUsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGFBQWEsQ0FBQztBQUU1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQWUsZUFBZSxFQUFtRixpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoUCxPQUFPLEVBQUUsZUFBZSxFQUFlLE1BQU0sK0NBQStDLENBQUM7QUFFN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBmb3Jtc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC1lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC1zdGF0ZS1yZXN1bHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwtc2NoZW1hLmZhY3RvcnknO1xuZXhwb3J0IHsgTW9kZWxTY2hlbWEsIFNjaGVtYURlZmluaXRpb24gfSBmcm9tICcuL2xpYi9tb2RlbC1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZS1hbm5vdGF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1mb3JtLW1vZGVsLXN0YXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdmb3JtLW1vZGVsLXN0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLWVycm9ycy9maWVsZC1lcnJvcnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2tzJztcblxuZXhwb3J0IHsgRGF0ZVZhbHVlQWNjZXNzb3IgfSBmcm9tICcuL2xpYi9kYXRlLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBGaWVsZFNjaGVtYSwgRmllbGRTY2hlbWFUeXBlLCBTdHJpbmdTY2hlbWEsIE51bWJlclNjaGVtYSwgRGF0ZVNjaGVtYSwgQm9vbGVhblNjaGVtYSwgRmlsZVNjaGVtYSwgT2JqZWN0U2NoZW1hLCBidWlsZFN0cmluZ1NjaGVtYSwgYnVpbGROdW1iZXJTY2hlbWEsIGJ1aWxkRGF0ZVNjaGVtYSwgYnVpbGRCb29sZWFuU2NoZW1hLCBidWlsZEFycmF5U2NoZW1hIH0gZnJvbSAnLi9saWIvZmllbGQtc2NoZW1hJztcbmV4cG9ydCB7IE16Q2hlY2tib3hHcm91cCwgRmllbGRPcHRpb24gfSBmcm9tICcuL2xpYi9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC5jb21wb25lbnQnO1xuXG5leHBvcnQgeyBGb3Jtc01vZHVsZSwgTXpGb3Jtc01vZHVsZSB9IGZyb20gJy4vbGliL2Zvcm1zLm1vZHVsZSc7XG5leHBvcnQgeyBNekZvcm0gfSBmcm9tICcuL2xpYi9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcbmV4cG9ydCB7IE16RmllbGQgfSBmcm9tICcuL2xpYi9maWVsZC9maWVsZC5jb21wb25lbnQnOyJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, Input, forwardRef, Directive, ContentChild, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { Injectable, Component, Input, forwardRef, Directive, ViewEncapsulation, ContentChild, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as Yup from 'yup';
|
|
4
4
|
import { object } from 'yup';
|
|
5
5
|
import 'reflect-metadata';
|
|
@@ -8,19 +8,24 @@ import { FormGroup, FormArray, NG_VALUE_ACCESSOR, FormsModule as FormsModule$1,
|
|
|
8
8
|
import { BehaviorSubject, switchMap, from } from 'rxjs';
|
|
9
9
|
import * as i1 from '@angular/common';
|
|
10
10
|
import { CommonModule } from '@angular/common';
|
|
11
|
-
import { format, parse, isValid } from 'date-fns';
|
|
12
|
-
import * as IMask from 'imask';
|
|
13
11
|
|
|
14
|
-
class
|
|
15
|
-
|
|
12
|
+
class ModelSchema {
|
|
13
|
+
// TODO: need to keep track of internal and external
|
|
14
|
+
//private definitions?: {[K in keyof T]: FieldSchema<any>};
|
|
15
|
+
constructor(metadata, schema) {
|
|
16
|
+
this.metadata = metadata;
|
|
16
17
|
this.schema = schema;
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
getMetadata(paths) {
|
|
20
|
+
//console.log('fetching metadata for path: ', paths);
|
|
21
|
+
//console.log(this.schema.describe());
|
|
22
|
+
for (var i = 0; i < paths.length; i++) {
|
|
23
|
+
const field = this.metadata.find(f => f.name === paths[i]);
|
|
24
|
+
if (!field?.constraints.required || field.constraints.required.required === false) {
|
|
25
|
+
return { required: false };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { required: true };
|
|
24
29
|
}
|
|
25
30
|
validate(model) {
|
|
26
31
|
return this.schema
|
|
@@ -105,12 +110,13 @@ class ModelSchemaFactory {
|
|
|
105
110
|
constructor() { }
|
|
106
111
|
build(model) {
|
|
107
112
|
const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);
|
|
108
|
-
const
|
|
109
|
-
|
|
113
|
+
const schemaData = [...metadata.values()];
|
|
114
|
+
const schema = this.buildYupSchema(schemaData);
|
|
115
|
+
return new ModelSchema(schemaData, schema);
|
|
110
116
|
}
|
|
111
117
|
buildUntyped(raw) {
|
|
112
118
|
const schema = this.buildYupSchema(raw);
|
|
113
|
-
return new
|
|
119
|
+
return new ModelSchema(raw, schema);
|
|
114
120
|
}
|
|
115
121
|
buildYupSchema(fields) {
|
|
116
122
|
let shape = {};
|
|
@@ -290,7 +296,6 @@ function StringType(...annotations) {
|
|
|
290
296
|
type: FieldSchemaType.string,
|
|
291
297
|
constraints: Object.assign({}, ...annotations)
|
|
292
298
|
};
|
|
293
|
-
console.log(schema.constraints);
|
|
294
299
|
registerMetadata(target, propertyKey, schema);
|
|
295
300
|
};
|
|
296
301
|
}
|
|
@@ -422,7 +427,6 @@ class NgFormModelState {
|
|
|
422
427
|
async validate() {
|
|
423
428
|
const model = this.form.value;
|
|
424
429
|
const state = await this.runValidations(model, this.options?.onValidate);
|
|
425
|
-
console.log('running validations, result:', state);
|
|
426
430
|
this.setStateInternal(state);
|
|
427
431
|
return state;
|
|
428
432
|
}
|
|
@@ -522,46 +526,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
522
526
|
type: Input
|
|
523
527
|
}] } });
|
|
524
528
|
|
|
525
|
-
const dateMaskOptions = {
|
|
526
|
-
mask: 'MM/dd/yyyy',
|
|
527
|
-
format: (date) => {
|
|
528
|
-
if (!date) {
|
|
529
|
-
return '';
|
|
530
|
-
}
|
|
531
|
-
return format(date, 'MM/dd/yyyy');
|
|
532
|
-
},
|
|
533
|
-
parse: (str) => {
|
|
534
|
-
const dateRegex = /(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])\/([12]\d{3})/;
|
|
535
|
-
if (!str.match(dateRegex)) {
|
|
536
|
-
return undefined;
|
|
537
|
-
}
|
|
538
|
-
const parsed = parse(str, 'MM/dd/yyyy', new Date());
|
|
539
|
-
if (isValid(parsed)) {
|
|
540
|
-
return parsed;
|
|
541
|
-
}
|
|
542
|
-
return undefined;
|
|
543
|
-
},
|
|
544
|
-
blocks: {
|
|
545
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
546
|
-
MM: {
|
|
547
|
-
mask: IMask.MaskedRange,
|
|
548
|
-
from: 1,
|
|
549
|
-
to: 12,
|
|
550
|
-
},
|
|
551
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
552
|
-
dd: {
|
|
553
|
-
mask: IMask.MaskedRange,
|
|
554
|
-
from: 1,
|
|
555
|
-
to: 31,
|
|
556
|
-
},
|
|
557
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
558
|
-
yyyy: {
|
|
559
|
-
mask: IMask.MaskedRange,
|
|
560
|
-
from: 1000,
|
|
561
|
-
to: 9999,
|
|
562
|
-
},
|
|
563
|
-
},
|
|
564
|
-
};
|
|
565
529
|
const phoneNumberOptions = {
|
|
566
530
|
mask: '(000) 000-0000',
|
|
567
531
|
};
|
|
@@ -739,9 +703,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
739
703
|
}] } });
|
|
740
704
|
|
|
741
705
|
class MzField {
|
|
742
|
-
constructor() {
|
|
706
|
+
constructor(elementRef) {
|
|
707
|
+
this.elementRef = elementRef;
|
|
743
708
|
this.checkbox = false;
|
|
744
709
|
}
|
|
710
|
+
ngAfterContentInit() {
|
|
711
|
+
//this.fieldMetadata = this.form.schema.getMetadata(this.ngModel?.path || []);
|
|
712
|
+
}
|
|
745
713
|
getErrorMessage() {
|
|
746
714
|
try {
|
|
747
715
|
const list = Object.values(this.ngModel.errors);
|
|
@@ -751,16 +719,18 @@ class MzField {
|
|
|
751
719
|
return undefined;
|
|
752
720
|
}
|
|
753
721
|
}
|
|
754
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MzField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
755
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MzField, isStandalone: true, selector: "mz-field", inputs: { label: "label", checkbox: "checkbox" }, queries: [{ propertyName: "ngModel", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "<label class=\"field\">\n @if(label && !checkbox) {\n
|
|
722
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MzField, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
723
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MzField, isStandalone: true, selector: "mz-field", inputs: { label: "label", checkbox: "checkbox", schema: "schema" }, queries: [{ propertyName: "ngModel", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "<label class=\"field\">\n @if(label && !checkbox) {\n <span class=\"field-label\">\n {{ label }} \n </span>\n }\n <ng-content></ng-content>\n\n @if(checkbox && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n } \n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n", encapsulation: i0.ViewEncapsulation.None }); }
|
|
756
724
|
}
|
|
757
725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MzField, decorators: [{
|
|
758
726
|
type: Component,
|
|
759
|
-
args: [{ selector: 'mz-field', standalone: true, imports: [], template: "<label class=\"field\">\n @if(label && !checkbox) {\n
|
|
760
|
-
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
727
|
+
args: [{ selector: 'mz-field', standalone: true, imports: [], encapsulation: ViewEncapsulation.None, template: "<label class=\"field\">\n @if(label && !checkbox) {\n <span class=\"field-label\">\n {{ label }} \n </span>\n }\n <ng-content></ng-content>\n\n @if(checkbox && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n } \n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n" }]
|
|
728
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { label: [{
|
|
761
729
|
type: Input
|
|
762
730
|
}], checkbox: [{
|
|
763
731
|
type: Input
|
|
732
|
+
}], schema: [{
|
|
733
|
+
type: Input
|
|
764
734
|
}], ngModel: [{
|
|
765
735
|
type: ContentChild,
|
|
766
736
|
args: [NgModel]
|
|
@@ -771,11 +741,9 @@ class MzForm {
|
|
|
771
741
|
this.ngForm = ngForm;
|
|
772
742
|
}
|
|
773
743
|
ngAfterViewInit() {
|
|
774
|
-
console.log('this is form directive', this.ngForm.value, this.schema);
|
|
775
744
|
this.modelState = new NgFormModelState(this.ngForm, this.schema);
|
|
776
745
|
}
|
|
777
746
|
onSubmit(event) {
|
|
778
|
-
console.log('submitting');
|
|
779
747
|
this.ngForm.form.markAllAsTouched();
|
|
780
748
|
if (this.ngForm.invalid) {
|
|
781
749
|
event.preventDefault();
|
|
@@ -862,5 +830,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
862
830
|
* Generated bundle index. Do not edit.
|
|
863
831
|
*/
|
|
864
832
|
|
|
865
|
-
export { ArrayType, BooleanType, DateType, DateValueAccessor, FieldErrorsComponent, FieldSchemaType, FileType, FormsModule,
|
|
833
|
+
export { ArrayType, BooleanType, DateType, DateValueAccessor, FieldErrorsComponent, FieldSchemaType, FileType, FormsModule, ModelSchema, ModelSchemaFactory, MzCheckboxGroup, MzField, MzForm, MzFormsModule, NgFormModelState, NgFormModelStateFactory, NumberType, ObjectType, StringType, buildArraySchema, buildBooleanSchema, buildDateSchema, buildNumberSchema, buildStringSchema, currencyOptions, equals, integerOptions, length, max, maxLength, min, minLength, ofValues, pattern, phoneNumberOptions, required, ssnOptions, test };
|
|
866
834
|
//# 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/field-schema.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/ngform-model-state.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.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/masks.ts","../../../../projects/muziehdesign/forms/src/lib/date-value-accessor.directive.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.html","../../../../projects/muziehdesign/forms/src/lib/field/field.component.ts","../../../../projects/muziehdesign/forms/src/lib/field/field.component.html","../../../../projects/muziehdesign/forms/src/lib/form/form.directive.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { AnyObjectSchema, SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\nimport { ConstraintAnnotations } from './type-annotations';\n\nexport class ModelValidator<T> {\n constructor(private schema: AnyObjectSchema) {}\n\n get paths() {\n //return Array.from(this.metadata, ([key, value]) => ({ key, value }));\n return [];\n }\n\n keyValue(key: string) {\n return this.schema.fields[key];\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 cast(value: any) {\n return this.schema.cast(value);\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import { ArrayTypeAnnotations, BooleanTypeAnnotations, ConstraintAnnotations, DateTypeAnnotations, FileTypeAnnotations, NumberTypeAnnotations, ObjectTypeAnnotations, StringTypeAnnotations } from './type-annotations';\n\nexport enum FieldSchemaType {\n string = 'string',\n boolean = 'boolean',\n date = 'date',\n object = 'object',\n number = 'number',\n array = 'array',\n file = 'file',\n}\n\nexport interface FieldSchema<T extends ConstraintAnnotations> {\n name: string;\n type: FieldSchemaType;\n label?: string;\n constraints: T;\n}\n\nexport interface StringSchema extends FieldSchema<StringTypeAnnotations> {\n type: FieldSchemaType.string;\n}\n\nexport interface NumberSchema extends FieldSchema<NumberTypeAnnotations> {\n type: FieldSchemaType.number;\n}\n\nexport interface BooleanSchema extends FieldSchema<BooleanTypeAnnotations> {\n type: FieldSchemaType.boolean;\n}\n\nexport interface DateSchema extends FieldSchema<DateTypeAnnotations> {\n type: FieldSchemaType.date;\n}\n\nexport interface ArraySchema extends FieldSchema<ArrayTypeAnnotations> {\n type: FieldSchemaType.array;\n}\n\nexport interface FileSchema extends FieldSchema<FileTypeAnnotations> {\n type: FieldSchemaType.file;\n}\n\nexport interface ObjectSchema extends FieldSchema<ObjectTypeAnnotations> {\n type: FieldSchemaType.object;\n}\n\nexport const buildStringSchema = (path: string, constraints: StringTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.string,\n constraints: { ...constraints },\n } satisfies StringSchema;\n};\n\nexport const buildBooleanSchema = (path: string, constraints: BooleanTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.boolean,\n constraints: { ...constraints },\n } satisfies BooleanSchema;\n};\n\nexport const buildNumberSchema = (path: string, constraints: NumberTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.number,\n constraints: { ...constraints },\n } satisfies NumberSchema;\n};\n\nexport const buildDateSchema = (path: string, constraints: DateTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.date,\n constraints: { ...constraints },\n } satisfies DateSchema;\n};\n\nexport const buildArraySchema = (path: string, constraints: ArrayTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.array,\n constraints: { ...constraints },\n } satisfies ArraySchema;\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 * as Yup from 'yup';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\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 extends object>(model: T): ModelValidator<T> {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n const schema = this.buildYupSchema([...metadata.values()]);\n return new ModelValidator(schema);\n }\n\n buildUntyped(raw: FieldSchema<any>[]) : ModelValidator<{[key: string]: string}> {\n const schema = this.buildYupSchema(raw);\n return new ModelValidator(schema);\n }\n\n private buildYupSchema(fields: FieldSchema<any>[]) : Yup.AnyObjectSchema {\n let shape: ObjectShape = {};\n fields.forEach((value) => {\n if (value.type == FieldSchemaType.string) {\n shape[value.name] = this.buildStringSchema(value as StringSchema);\n } else if (value.type == FieldSchemaType.boolean) {\n shape[value.name] = this.buildBooleanSchema(value as BooleanSchema);\n } else if (value.type == FieldSchemaType.date) {\n shape[value.name] = this.buildDateSchema(value as DateSchema);\n } else if (value.type == FieldSchemaType.object) {\n shape[value.name] = this.buildNestedObjectSchema(value as ObjectSchema);\n } else if (value.type == FieldSchemaType.number) {\n shape[value.name] = this.buildNumberSchema(value as NumberSchema);\n } else if (value.type == FieldSchemaType.array) {\n shape[value.name] = this.buildArraySchema(value as ArraySchema);\n } else if (value.type == FieldSchemaType.file) {\n shape[value.name] = this.buildFileSchema(value as FileSchema);\n } else {\n throw new Error('Unrecognized field schema');\n }\n });\n\n return object(shape);\n }\n\n private buildStringSchema(original: StringSchema) {\n let schema = Yup.string();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n\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, { message: options.pattern.message, excludeEmptyString: true });\n }\n\n return schema;\n }\n\n private buildBooleanSchema(original: BooleanSchema) {\n let schema = Yup.boolean();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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(original: DateSchema) {\n let schema = Yup.date();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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\n return schema;\n }\n\n private buildNumberSchema(original: NumberSchema) {\n let schema = Yup.number();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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\n return schema;\n }\n\n private buildArraySchema(original: ArraySchema) {\n let schema = Yup.array();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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\n return schema;\n }\n\n private buildNestedObjectSchema(original: ObjectSchema) {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, original.constraints.getInstance());\n\n let nestedSchema = this.buildYupSchema([...metadata.values()]);\n if(original.label) {\n nestedSchema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n nestedSchema = nestedSchema.required();\n } else {\n nestedSchema = nestedSchema.notRequired().default(undefined);\n }\n\n return nestedSchema;\n }\n\n private buildFileSchema(original: FileSchema) {\n let schema = Yup.mixed().nullable().optional();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n schema = schema.required(options.required.message);\n }\n\n return schema;\n }\n}\n","import 'reflect-metadata';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport interface ConstraintAnnotations {\n\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 ObjectTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n getInstance: () => any;\n}\n\nexport interface NumberTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface ArrayTypeAnnotations extends ConstraintAnnotations {\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface FileTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\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, schema: FieldSchema<any>) => {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, FieldSchema<any>>();\n metadata.set(propertyKey, schema);\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 schema = {\n name: propertyKey,\n type: FieldSchemaType.string,\n constraints: Object.assign({}, ...annotations) as StringTypeAnnotations\n } satisfies StringSchema;\n\n console.log(schema.constraints);\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.boolean,\n constraints: Object.assign({}, ...annotations) as BooleanTypeAnnotations\n } satisfies BooleanSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function DateType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.date,\n constraints: Object.assign({}, ...annotations) as DateTypeAnnotations\n } satisfies DateSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function NumberType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.number,\n constraints: Object.assign({}, ...annotations) as NumberTypeAnnotations\n } satisfies NumberSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ObjectType<T>(type: { new (): T }, ...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.object,\n constraints: Object.assign({}, ...annotations, { getInstance: () => new type() } as Partial<ObjectTypeAnnotations>) as ObjectTypeAnnotations\n } satisfies ObjectSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ArrayType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.array,\n constraints: Object.assign({}, ...annotations) as ArrayTypeAnnotations\n } satisfies ArraySchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function FileType<T>(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.file,\n constraints: Object.assign({}, ...annotations) as FileTypeAnnotations\n } satisfies FileSchema;\n\n registerMetadata(target, propertyKey, schema);\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 { AbstractControl, FormArray, FormGroup, NgForm, NgModelGroup, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, distinctUntilChanged, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelStateOptions } from './model-state-options';\nimport { ModelStateResult } from './model-state-result';\nimport { ModelValidator } from './model-validator';\n\nexport class NgFormModelState<T> {\n private changesSubject = new BehaviorSubject<ModelStateResult<T> | undefined>(undefined);\n public readonly changes = this.changesSubject.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private options?: ModelStateOptions) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n return from(this.validate());\n })\n )\n .subscribe();\n }\n\n getCurrent(): ModelStateResult<T> | undefined {\n return this.changesSubject.value;\n }\n\n setState(model: T, errors: FieldError[]) {\n const state = {\n model: model,\n errors: errors,\n valid: errors.length === 0,\n } as ModelStateResult<T>;\n this.setStateInternal(state);\n }\n\n setErrors(errors: FieldError[]) {\n //this.errors.next(errors);\n throw new Error('needs implementation');\n }\n\n appendErrors(errors: FieldError[], skipEmit?: boolean) {\n const allErrors = [...(this.changesSubject.value?.errors || []), ...errors];\n const state = { ...this.changesSubject.value } as ModelStateResult<T>;\n state.errors = allErrors;\n this.setStateInternal(state);\n }\n\n async validate(): Promise<ModelStateResult<T>> {\n const model = this.form.value;\n const state = await this.runValidations(model, this.options?.onValidate);\n console.log('running validations, result:', state);\n this.setStateInternal(state);\n return state;\n }\n\n\n private setStateInternal(state: ModelStateResult<T>) {\n this.deleteFormErrors();\n\n const grouped = state.errors.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n grouped.forEach((value, path) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n\n const control = this.form.form.get(path);\n if (!control) {\n // TODO: use actual logging service\n } else {\n control.setErrors(validationErrors);\n }\n });\n\n this.changesSubject.next(state);\n }\n\n private deleteFormErrors() {\n this.deleteErrors(this.form.form);\n }\n\n private deleteErrors(rootFormGroup: FormGroup) {\n Object.keys(rootFormGroup.controls).forEach((key) => {\n const control = rootFormGroup.controls[key];\n\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(key, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private deleteErrorsFromControl(key: string | number, control: AbstractControl) {\n control.setErrors(null);\n }\n\n private isParentControl(control: AbstractControl) {\n return control instanceof FormGroup || control instanceof FormArray;\n }\n\n private loopFormArray(formArray: FormArray) {\n formArray.controls.forEach((control, index) => {\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(index, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private async runValidations<T>(model: T, callback?: (list: FieldError[]) => Promise<FieldError[]>): Promise<ModelStateResult<T>> {\n const list = await this.modelValidator.validate(model);\n const final = callback ? (await callback?.(list)) : list;\n return {\n valid: final.length === 0,\n errors: final,\n model: model,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelStateOptions } from './model-state-options';\nimport { NgFormModelState } from './ngform-model-state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T extends object>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), options);\n return modelState;\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 { format, isValid, parse } from 'date-fns';\nimport * as IMask from 'imask';\n\nexport const dateMaskOptions = {\n mask: 'MM/dd/yyyy',\n format: (date: Date | undefined): string => {\n if (!date) {\n return '';\n }\n return format(date, 'MM/dd/yyyy');\n },\n parse: (str: string): Date | undefined => {\n const dateRegex = /(0[1-9]|1[0-2])\\/(0[1-9]|[12]\\d|3[01])\\/([12]\\d{3})/;\n if (!str.match(dateRegex)) {\n return undefined;\n }\n const parsed = parse(str, 'MM/dd/yyyy', new Date());\n if (isValid(parsed)) {\n return parsed;\n }\n return undefined;\n },\n blocks: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n MM: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 12,\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n dd: {\n mask: IMask.MaskedRange,\n from: 1,\n to: 31,\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n yyyy: {\n mask: IMask.MaskedRange,\n from: 1000,\n to: 9999,\n },\n },\n};\n\nexport const phoneNumberOptions = {\n mask: '(000) 000-0000',\n};\n\nexport const ssnOptions = {\n mask: '000-00-0000',\n};\n\nexport const currencyOptions = {\n mask: Number,\n scale: 2,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n\nexport const integerOptions = {\n mask: Number,\n scale: 0,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n","import { formatDate } from '@angular/common';\nimport { Directive, ElementRef, Renderer2, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[mzDate]',\n standalone: true,\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateValueAccessor),\n multi: true,\n },\n ],\n})\nexport class DateValueAccessor implements ControlValueAccessor {\n onChange = (_: any) => {};\n onTouched = () => {};\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {}\n\n writeValue(obj?: Date): void {\n let normalizedValue = '';\n if (!obj) {\n normalizedValue = '';\n } else if (this._elementRef.nativeElement.type === 'date') {\n normalizedValue = obj.toISOString().split('T')[0];\n } else {\n normalizedValue = obj.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' }); // TODO: support other date formats\n }\n this.setProperty('value', normalizedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = (value) => {\n const parsed = this.parseDate(value);\n fn(parsed);\n };\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.setProperty('disabled', isDisabled);\n }\n protected setProperty(key: string, value: any): void {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n\n private parseDate(value: string): Date | undefined {\n const validFormat = this._elementRef.nativeElement.type === 'date' ? /^(\\d{4}-\\d{2}-\\d{2})$/.test(value) : /^(\\d{1,2}\\/\\d{1,2}\\/\\d{4})$/.test(value);\n if (!validFormat) {\n return undefined;\n }\n\n const entry = new Date(value).toISOString().split('T')[0];\n\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = entry.split('-').map((val: string) => +val);\n return this.createDate(y, m - 1, d);\n }\n\n private createDate(year: number, month: number, date: number): Date {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n\n return newDate;\n }\n}\n","import { Component, Input, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface FieldOption {\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'mz-checkbox-group',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './checkbox-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MzCheckboxGroup),\n multi: true\n }\n ]\n})\nexport class MzCheckboxGroup implements ControlValueAccessor {\n @Input({ required: true }) options!: FieldOption[];\n selections: any[] = [];\n\n onChange: (value: string[]) => void = () => {};\n onTouched: () => void = () => {};\n\n // Writes the selected values from the form model\n writeValue(values: any[]): void {\n this.selections = values || [];\n }\n\n // Registers the onChange function to propagate changes\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // Registers the onTouched function\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n \n }\n\n // Checks if a checkbox is selected\n isChecked(option: FieldOption): boolean {\n return this.selections.includes(option.value);\n }\n\n // Handles changes when checkboxes are clicked\n onCheckboxChange(event: Event, option: FieldOption): void {\n const checked = (event.target as HTMLInputElement).checked;\n\n if (checked) {\n this.selections = [...this.selections, option.value];\n } else {\n this.selections = this.selections.filter((val) => val !== option.value);\n }\n\n this.onChange(this.selections);\n this.onTouched();\n }\n}\n\n","@for(option of options; track $index) {\n<label class=\"field\">\n <input type=\"checkbox\" [value]=\"option.value\" [checked]=\"isChecked(option)\" (change)=\"onCheckboxChange($event, option)\" />\n <span class=\"checkbox-label\">{{option.label}}</span>\n</label>\n}\n","import { AfterContentInit, Component, ContentChild, ContentChildren, DestroyRef, Input, QueryList } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n@Component({\n selector: 'mz-field',\n standalone: true,\n imports: [],\n templateUrl: './field.component.html',\n})\nexport class MzField {\n @Input() label?: string;\n @Input() checkbox: boolean = false;\n @ContentChild(NgModel) ngModel?: NgModel;\n constructor() {}\n\n getErrorMessage(): string | undefined {\n try {\n const list = Object.values(this.ngModel!.errors!);\n return list[0];\n } catch {\n return undefined;\n }\n }\n}\n","<label class=\"field\">\n @if(label && !checkbox) {\n <span class=\"field-label\">{{ label }}</span>\n }\n <ng-content></ng-content>\n \n @if(checkbox && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n } \n \n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n","import { AfterViewInit, Directive, HostListener, Input, OnInit } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelValidator } from '../model-validator';\nimport { NgFormModelState } from '../ngform-model-state';\n\n@Directive({\n selector: '[mzForm]',\n standalone: true,\n})\nexport class MzForm implements AfterViewInit {\n @Input({ required: true }) schema!: ModelValidator<unknown>;\n\n private modelState!: NgFormModelState<unknown>;\n\n constructor(private ngForm: NgForm) {\n\n }\n \n ngAfterViewInit(): void {\n console.log('this is form directive', this.ngForm.value, this.schema);\n this.modelState = new NgFormModelState(this.ngForm, this.schema);\n }\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event) {\n console.log('submitting');\n this.ngForm.form.markAllAsTouched();\n if(this.ngForm.invalid) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\nimport { MzField } from './field/field.component';\nimport { MzForm } from './form/form.directive';\nimport { DateValueAccessor } from './date-value-accessor.directive';\nimport { MzCheckboxGroup } from './checkbox-group/checkbox-group.component';\n\n\n/**\n * @deprecated\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\n\n@NgModule({\n providers: [],\n exports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ],\n imports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ]\n})\nexport class MzFormsModule { }\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-state-result';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/ngform-model-state';\nexport * from './lib/field-errors/field-errors.component';\nexport * from './lib/masks';\n\nexport { DateValueAccessor } from './lib/date-value-accessor.directive';\nexport { FieldSchema, FieldSchemaType, StringSchema, NumberSchema, DateSchema, BooleanSchema, FileSchema, ObjectSchema, buildStringSchema, buildNumberSchema, buildDateSchema, buildBooleanSchema, buildArraySchema } from './lib/field-schema';\nexport { MzCheckboxGroup, FieldOption } from './lib/checkbox-group/checkbox-group.component';\n\nexport { FormsModule, MzFormsModule } from './lib/forms.module';\nexport { MzForm } from './lib/form/form.directive';\nexport { MzField } from './lib/field/field.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory","FormsModule","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-schema.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/field-schema.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/ngform-model-state.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.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/masks.ts","../../../../projects/muziehdesign/forms/src/lib/date-value-accessor.directive.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.ts","../../../../projects/muziehdesign/forms/src/lib/checkbox-group/checkbox-group.component.html","../../../../projects/muziehdesign/forms/src/lib/field/field.component.ts","../../../../projects/muziehdesign/forms/src/lib/field/field.component.html","../../../../projects/muziehdesign/forms/src/lib/form/form.directive.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { AnyObjectSchema, SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\nimport { FieldSchema } from './field-schema';\nexport class ModelSchema<T> {\n // TODO: need to keep track of internal and external\n //private definitions?: {[K in keyof T]: FieldSchema<any>};\n constructor(private metadata: FieldSchema<any>[], private schema: AnyObjectSchema) {\n\n }\n \n getMetadata(paths: string[]) {\n //console.log('fetching metadata for path: ', paths);\n //console.log(this.schema.describe());\n for(var i = 0; i < paths.length; i++) {\n const field = this.metadata.find(f=>f.name === paths[i]);\n if(!field?.constraints.required || field.constraints.required.required === false) {\n return { required: false } satisfies FieldMetadata;\n }\n }\n return { required: true } satisfies FieldMetadata;\n\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 cast(value: any) {\n return this.schema.cast(value);\n }\n}\n\nexport type SchemaDefinition<T> = {\n //[K in keyof Required<T>]: T[K] extends object ? SchemaDefinition<T[K]>: FieldSchema<any>;\n [K in keyof Required<T>]: FieldSchema<any>\n}\n\nexport interface FieldMetadata {\n required: boolean;\n}","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import { ArrayTypeAnnotations, BooleanTypeAnnotations, ConstraintAnnotations, DateTypeAnnotations, FileTypeAnnotations, NumberTypeAnnotations, ObjectTypeAnnotations, StringTypeAnnotations } from './type-annotations';\n\nexport enum FieldSchemaType {\n string = 'string',\n boolean = 'boolean',\n date = 'date',\n object = 'object',\n number = 'number',\n array = 'array',\n file = 'file',\n}\n\nexport interface FieldSchema<T extends ConstraintAnnotations> {\n name: string;\n type: FieldSchemaType;\n label?: string;\n constraints: T;\n}\n\nexport interface StringSchema extends FieldSchema<StringTypeAnnotations> {\n type: FieldSchemaType.string;\n}\n\nexport interface NumberSchema extends FieldSchema<NumberTypeAnnotations> {\n type: FieldSchemaType.number;\n}\n\nexport interface BooleanSchema extends FieldSchema<BooleanTypeAnnotations> {\n type: FieldSchemaType.boolean;\n}\n\nexport interface DateSchema extends FieldSchema<DateTypeAnnotations> {\n type: FieldSchemaType.date;\n}\n\nexport interface ArraySchema extends FieldSchema<ArrayTypeAnnotations> {\n type: FieldSchemaType.array;\n}\n\nexport interface FileSchema extends FieldSchema<FileTypeAnnotations> {\n type: FieldSchemaType.file;\n}\n\nexport interface ObjectSchema extends FieldSchema<ObjectTypeAnnotations> {\n type: FieldSchemaType.object;\n}\n\nexport const buildStringSchema = (path: string, constraints: StringTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.string,\n constraints: { ...constraints },\n } satisfies StringSchema;\n};\n\nexport const buildBooleanSchema = (path: string, constraints: BooleanTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.boolean,\n constraints: { ...constraints },\n } satisfies BooleanSchema;\n};\n\nexport const buildNumberSchema = (path: string, constraints: NumberTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.number,\n constraints: { ...constraints },\n } satisfies NumberSchema;\n};\n\nexport const buildDateSchema = (path: string, constraints: DateTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.date,\n constraints: { ...constraints },\n } satisfies DateSchema;\n};\n\nexport const buildArraySchema = (path: string, constraints: ArrayTypeAnnotations, label?: string) => {\n return {\n name: path,\n label: label,\n type: FieldSchemaType.array,\n constraints: { ...constraints },\n } satisfies ArraySchema;\n};\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelSchema } from './model-schema';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport * as Yup from 'yup';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\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 extends object>(model: T): ModelSchema<T> {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n const schemaData = [...metadata.values()];\n const schema = this.buildYupSchema(schemaData);\n return new ModelSchema(schemaData, schema);\n }\n\n buildUntyped(raw: FieldSchema<any>[]) : ModelSchema<{[key: string]: string}> {\n const schema = this.buildYupSchema(raw);\n return new ModelSchema(raw, schema);\n }\n\n private buildYupSchema(fields: FieldSchema<any>[]) : Yup.AnyObjectSchema {\n let shape: ObjectShape = {};\n fields.forEach((value) => {\n if (value.type == FieldSchemaType.string) {\n shape[value.name] = this.buildStringSchema(value as StringSchema);\n } else if (value.type == FieldSchemaType.boolean) {\n shape[value.name] = this.buildBooleanSchema(value as BooleanSchema);\n } else if (value.type == FieldSchemaType.date) {\n shape[value.name] = this.buildDateSchema(value as DateSchema);\n } else if (value.type == FieldSchemaType.object) {\n shape[value.name] = this.buildNestedObjectSchema(value as ObjectSchema);\n } else if (value.type == FieldSchemaType.number) {\n shape[value.name] = this.buildNumberSchema(value as NumberSchema);\n } else if (value.type == FieldSchemaType.array) {\n shape[value.name] = this.buildArraySchema(value as ArraySchema);\n } else if (value.type == FieldSchemaType.file) {\n shape[value.name] = this.buildFileSchema(value as FileSchema);\n } else {\n throw new Error('Unrecognized field schema');\n }\n });\n\n return object(shape);\n }\n\n private buildStringSchema(original: StringSchema) {\n let schema = Yup.string();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n\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, { message: options.pattern.message, excludeEmptyString: true });\n }\n\n return schema;\n }\n\n private buildBooleanSchema(original: BooleanSchema) {\n let schema = Yup.boolean();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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(original: DateSchema) {\n let schema = Yup.date();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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\n return schema;\n }\n\n private buildNumberSchema(original: NumberSchema) {\n let schema = Yup.number();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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\n return schema;\n }\n\n private buildArraySchema(original: ArraySchema) {\n let schema = Yup.array();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \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\n return schema;\n }\n\n private buildNestedObjectSchema(original: ObjectSchema) {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, original.constraints.getInstance());\n\n let nestedSchema = this.buildYupSchema([...metadata.values()]);\n if(original.label) {\n nestedSchema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n nestedSchema = nestedSchema.required();\n } else {\n nestedSchema = nestedSchema.notRequired().default(undefined);\n }\n\n return nestedSchema;\n }\n\n private buildFileSchema(original: FileSchema) {\n let schema = Yup.mixed().nullable().optional();\n if(original.label) {\n schema.label(original.label);\n }\n\n const options = original.constraints; \n if (options.required) {\n schema = schema.required(options.required.message);\n }\n\n return schema;\n }\n}\n","import 'reflect-metadata';\nimport { ArraySchema, BooleanSchema, DateSchema, FieldSchema, FieldSchemaType, FileSchema, NumberSchema, ObjectSchema, StringSchema } from './field-schema';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport interface ConstraintAnnotations {\n\n}\n\nexport interface StringTypeConstraints {\n required?: true;\n requiredMessage?: string;\n\n pattern?: RegExp;\n patternMessage?: string;\n\n length?: number;\n lengthMessage?: string;\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 ObjectTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n getInstance: () => any;\n}\n\nexport interface NumberTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface ArrayTypeAnnotations extends ConstraintAnnotations {\n min?: MinimumAnnotation<number>;\n max?: MaximumAnnotation<number>;\n}\n\nexport interface FileTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\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, schema: FieldSchema<any>) => {\n const metadata: Map<string, FieldSchema<any>> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, FieldSchema<any>>();\n metadata.set(propertyKey, schema);\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 schema = {\n name: propertyKey,\n type: FieldSchemaType.string,\n constraints: Object.assign({}, ...annotations) as StringTypeAnnotations\n } satisfies StringSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.boolean,\n constraints: Object.assign({}, ...annotations) as BooleanTypeAnnotations\n } satisfies BooleanSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function DateType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.date,\n constraints: Object.assign({}, ...annotations) as DateTypeAnnotations\n } satisfies DateSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function NumberType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.number,\n constraints: Object.assign({}, ...annotations) as NumberTypeAnnotations\n } satisfies NumberSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ObjectType<T>(type: { new (): T }, ...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.object,\n constraints: Object.assign({}, ...annotations, { getInstance: () => new type() } as Partial<ObjectTypeAnnotations>) as ObjectTypeAnnotations\n } satisfies ObjectSchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function ArrayType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.array,\n constraints: Object.assign({}, ...annotations) as ArrayTypeAnnotations\n } satisfies ArraySchema;\n\n registerMetadata(target, propertyKey, schema);\n };\n}\n\nexport function FileType<T>(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const schema = {\n name: propertyKey,\n type: FieldSchemaType.file,\n constraints: Object.assign({}, ...annotations) as FileTypeAnnotations\n } satisfies FileSchema;\n\n registerMetadata(target, propertyKey, schema);\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 { AbstractControl, FormArray, FormGroup, NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelStateOptions } from './model-state-options';\nimport { ModelStateResult } from './model-state-result';\nimport { ModelSchema } from './model-schema';\n\nexport class NgFormModelState<T> {\n private changesSubject = new BehaviorSubject<ModelStateResult<T> | undefined>(undefined);\n public readonly changes = this.changesSubject.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelSchema<T>, private options?: ModelStateOptions) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n return from(this.validate());\n })\n )\n .subscribe();\n }\n\n getCurrent(): ModelStateResult<T> | undefined {\n return this.changesSubject.value;\n }\n\n setState(model: T, errors: FieldError[]) {\n const state = {\n model: model,\n errors: errors,\n valid: errors.length === 0,\n } as ModelStateResult<T>;\n this.setStateInternal(state);\n }\n\n setErrors(errors: FieldError[]) {\n //this.errors.next(errors);\n throw new Error('needs implementation');\n }\n\n appendErrors(errors: FieldError[], skipEmit?: boolean) {\n const allErrors = [...(this.changesSubject.value?.errors || []), ...errors];\n const state = { ...this.changesSubject.value } as ModelStateResult<T>;\n state.errors = allErrors;\n this.setStateInternal(state);\n }\n\n async validate(): Promise<ModelStateResult<T>> {\n const model = this.form.value;\n const state = await this.runValidations(model, this.options?.onValidate);\n this.setStateInternal(state);\n return state;\n }\n\n\n private setStateInternal(state: ModelStateResult<T>) {\n this.deleteFormErrors();\n\n const grouped = state.errors.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n grouped.forEach((value, path) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n\n const control = this.form.form.get(path);\n if (!control) {\n // TODO: use actual logging service\n } else {\n control.setErrors(validationErrors);\n }\n });\n\n this.changesSubject.next(state);\n }\n\n private deleteFormErrors() {\n this.deleteErrors(this.form.form);\n }\n\n private deleteErrors(rootFormGroup: FormGroup) {\n Object.keys(rootFormGroup.controls).forEach((key) => {\n const control = rootFormGroup.controls[key];\n\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(key, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private deleteErrorsFromControl(key: string | number, control: AbstractControl) {\n control.setErrors(null);\n }\n\n private isParentControl(control: AbstractControl) {\n return control instanceof FormGroup || control instanceof FormArray;\n }\n\n private loopFormArray(formArray: FormArray) {\n formArray.controls.forEach((control, index) => {\n if (!this.isParentControl(control)) {\n this.deleteErrorsFromControl(index, control);\n } else if (control instanceof FormGroup) {\n this.deleteErrors(control as FormGroup);\n } else if (control instanceof FormArray) {\n this.loopFormArray(control as FormArray);\n }\n });\n }\n\n private async runValidations<T>(model: T, callback?: (list: FieldError[]) => Promise<FieldError[]>): Promise<ModelStateResult<T>> {\n const list = await this.modelValidator.validate(model);\n const final = callback ? (await callback?.(list)) : list;\n return {\n valid: final.length === 0,\n errors: final,\n model: model,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelStateOptions } from './model-state-options';\nimport { NgFormModelState } from './ngform-model-state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T extends object>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), options);\n return modelState;\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 { format, isValid, parse } from 'date-fns';\nimport * as IMask from 'imask';\n\nexport const phoneNumberOptions = {\n mask: '(000) 000-0000',\n};\n\nexport const ssnOptions = {\n mask: '000-00-0000',\n};\n\nexport const currencyOptions = {\n mask: Number,\n scale: 2,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n\nexport const integerOptions = {\n mask: Number,\n scale: 0,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n radix: '.',\n mapToRadix: ['.'],\n};\n\n","import { formatDate } from '@angular/common';\nimport { Directive, ElementRef, Renderer2, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[mzDate]',\n standalone: true,\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateValueAccessor),\n multi: true,\n },\n ],\n})\nexport class DateValueAccessor implements ControlValueAccessor {\n onChange = (_: any) => {};\n onTouched = () => {};\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {}\n\n writeValue(obj?: Date): void {\n let normalizedValue = '';\n if (!obj) {\n normalizedValue = '';\n } else if (this._elementRef.nativeElement.type === 'date') {\n normalizedValue = obj.toISOString().split('T')[0];\n } else {\n normalizedValue = obj.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' }); // TODO: support other date formats\n }\n this.setProperty('value', normalizedValue);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = (value) => {\n const parsed = this.parseDate(value);\n fn(parsed);\n };\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.setProperty('disabled', isDisabled);\n }\n protected setProperty(key: string, value: any): void {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n\n private parseDate(value: string): Date | undefined {\n const validFormat = this._elementRef.nativeElement.type === 'date' ? /^(\\d{4}-\\d{2}-\\d{2})$/.test(value) : /^(\\d{1,2}\\/\\d{1,2}\\/\\d{4})$/.test(value);\n if (!validFormat) {\n return undefined;\n }\n\n const entry = new Date(value).toISOString().split('T')[0];\n\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = entry.split('-').map((val: string) => +val);\n return this.createDate(y, m - 1, d);\n }\n\n private createDate(year: number, month: number, date: number): Date {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n\n return newDate;\n }\n}\n","import { Component, Input, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface FieldOption {\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'mz-checkbox-group',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './checkbox-group.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MzCheckboxGroup),\n multi: true\n }\n ]\n})\nexport class MzCheckboxGroup implements ControlValueAccessor {\n @Input({ required: true }) options!: FieldOption[];\n selections: any[] = [];\n\n onChange: (value: string[]) => void = () => {};\n onTouched: () => void = () => {};\n\n // Writes the selected values from the form model\n writeValue(values: any[]): void {\n this.selections = values || [];\n }\n\n // Registers the onChange function to propagate changes\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // Registers the onTouched function\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n \n }\n\n // Checks if a checkbox is selected\n isChecked(option: FieldOption): boolean {\n return this.selections.includes(option.value);\n }\n\n // Handles changes when checkboxes are clicked\n onCheckboxChange(event: Event, option: FieldOption): void {\n const checked = (event.target as HTMLInputElement).checked;\n\n if (checked) {\n this.selections = [...this.selections, option.value];\n } else {\n this.selections = this.selections.filter((val) => val !== option.value);\n }\n\n this.onChange(this.selections);\n this.onTouched();\n }\n}\n\n","@for(option of options; track $index) {\n<label class=\"field\">\n <input type=\"checkbox\" [value]=\"option.value\" [checked]=\"isChecked(option)\" (change)=\"onCheckboxChange($event, option)\" />\n <span class=\"checkbox-label\">{{option.label}}</span>\n</label>\n}\n","import { AfterContentInit, Component, ContentChild, ElementRef, Input, ViewEncapsulation } from '@angular/core';\nimport { NgModel } from '@angular/forms';\nimport { FieldSchema } from '../field-schema';\nimport { MzForm } from '../form/form.directive';\nimport { FieldMetadata } from '../model-schema';\n\n@Component({\n selector: 'mz-field',\n standalone: true,\n imports: [],\n templateUrl: './field.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class MzField implements AfterContentInit {\n @Input() label?: string;\n @Input() checkbox: boolean = false;\n @Input() schema?: FieldSchema<any>;\n @ContentChild(NgModel) ngModel?: NgModel;\n\n fieldMetadata?: FieldMetadata;\n constructor(private elementRef: ElementRef) {}\n\n ngAfterContentInit(): void {\n //this.fieldMetadata = this.form.schema.getMetadata(this.ngModel?.path || []);\n }\n\n getErrorMessage(): string | undefined {\n try {\n const list = Object.values(this.ngModel!.errors!);\n return list[0];\n } catch {\n return undefined;\n }\n }\n}\n","<label class=\"field\">\n @if(label && !checkbox) {\n <span class=\"field-label\">\n {{ label }} \n </span>\n }\n <ng-content></ng-content>\n\n @if(checkbox && label) {\n <span class=\"checkbox-label\">{{ label }}</span>\n } \n @if(ngModel?.touched && ngModel?.invalid) {\n <div class=\"field-error\">\n {{ getErrorMessage() }}\n </div>\n }\n</label>\n","import { AfterViewInit, Directive, HostListener, Input, OnInit } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ModelSchema } from '../model-schema';\nimport { NgFormModelState } from '../ngform-model-state';\n\n@Directive({\n selector: '[mzForm]',\n standalone: true,\n})\nexport class MzForm implements AfterViewInit {\n @Input({ required: true }) schema!: ModelSchema<unknown>;\n\n private modelState!: NgFormModelState<unknown>;\n\n constructor(private ngForm: NgForm) {\n\n }\n \n ngAfterViewInit(): void {\n this.modelState = new NgFormModelState(this.ngForm, this.schema);\n }\n\n @HostListener('submit', ['$event'])\n onSubmit(event: Event) {\n this.ngForm.form.markAllAsTouched();\n if(this.ngForm.invalid) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\nimport { MzField } from './field/field.component';\nimport { MzForm } from './form/form.directive';\nimport { DateValueAccessor } from './date-value-accessor.directive';\nimport { MzCheckboxGroup } from './checkbox-group/checkbox-group.component';\n\n\n/**\n * @deprecated\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\n\n@NgModule({\n providers: [],\n exports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ],\n imports: [\n MzField,\n MzForm,\n DateValueAccessor,\n MzCheckboxGroup\n ]\n})\nexport class MzFormsModule { }\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-state-result';\nexport * from './lib/model-schema.factory';\nexport { ModelSchema, SchemaDefinition } from './lib/model-schema';\nexport * from './lib/type-annotations';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/ngform-model-state';\nexport * from './lib/field-errors/field-errors.component';\nexport * from './lib/masks';\n\nexport { DateValueAccessor } from './lib/date-value-accessor.directive';\nexport { FieldSchema, FieldSchemaType, StringSchema, NumberSchema, DateSchema, BooleanSchema, FileSchema, ObjectSchema, buildStringSchema, buildNumberSchema, buildDateSchema, buildBooleanSchema, buildArraySchema } from './lib/field-schema';\nexport { MzCheckboxGroup, FieldOption } from './lib/checkbox-group/checkbox-group.component';\n\nexport { FormsModule, MzFormsModule } from './lib/forms.module';\nexport { MzForm } from './lib/form/form.directive';\nexport { MzField } from './lib/field/field.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory","FormsModule","i1"],"mappings":"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"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
+
import { AfterContentInit, ElementRef } from '@angular/core';
|
|
1
2
|
import { NgModel } from '@angular/forms';
|
|
3
|
+
import { FieldSchema } from '../field-schema';
|
|
4
|
+
import { FieldMetadata } from '../model-schema';
|
|
2
5
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class MzField {
|
|
6
|
+
export declare class MzField implements AfterContentInit {
|
|
7
|
+
private elementRef;
|
|
4
8
|
label?: string;
|
|
5
9
|
checkbox: boolean;
|
|
10
|
+
schema?: FieldSchema<any>;
|
|
6
11
|
ngModel?: NgModel;
|
|
7
|
-
|
|
12
|
+
fieldMetadata?: FieldMetadata;
|
|
13
|
+
constructor(elementRef: ElementRef);
|
|
14
|
+
ngAfterContentInit(): void;
|
|
8
15
|
getErrorMessage(): string | undefined;
|
|
9
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<MzField, never>;
|
|
10
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MzField, "mz-field", never, { "label": { "alias": "label"; "required": false; }; "checkbox": { "alias": "checkbox"; "required": false; }; }, {}, ["ngModel"], ["*"], true, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MzField, "mz-field", never, { "label": { "alias": "label"; "required": false; }; "checkbox": { "alias": "checkbox"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; }, {}, ["ngModel"], ["*"], true, never>;
|
|
11
18
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AfterViewInit } from '@angular/core';
|
|
2
2
|
import { NgForm } from '@angular/forms';
|
|
3
|
-
import {
|
|
3
|
+
import { ModelSchema } from '../model-schema';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class MzForm implements AfterViewInit {
|
|
6
6
|
private ngForm;
|
|
7
|
-
schema:
|
|
7
|
+
schema: ModelSchema<unknown>;
|
|
8
8
|
private modelState;
|
|
9
9
|
constructor(ngForm: NgForm);
|
|
10
10
|
ngAfterViewInit(): void;
|
package/lib/masks.d.ts
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
import * as IMask from 'imask';
|
|
2
|
-
export declare const dateMaskOptions: {
|
|
3
|
-
mask: string;
|
|
4
|
-
format: (date: Date | undefined) => string;
|
|
5
|
-
parse: (str: string) => Date | undefined;
|
|
6
|
-
blocks: {
|
|
7
|
-
MM: {
|
|
8
|
-
mask: typeof IMask.MaskedRange;
|
|
9
|
-
from: number;
|
|
10
|
-
to: number;
|
|
11
|
-
};
|
|
12
|
-
dd: {
|
|
13
|
-
mask: typeof IMask.MaskedRange;
|
|
14
|
-
from: number;
|
|
15
|
-
to: number;
|
|
16
|
-
};
|
|
17
|
-
yyyy: {
|
|
18
|
-
mask: typeof IMask.MaskedRange;
|
|
19
|
-
from: number;
|
|
20
|
-
to: number;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
1
|
export declare const phoneNumberOptions: {
|
|
25
2
|
mask: string;
|
|
26
3
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AnyObjectSchema } from 'yup';
|
|
2
|
+
import { FieldError } from './field-error';
|
|
3
|
+
import { FieldSchema } from './field-schema';
|
|
4
|
+
export declare class ModelSchema<T> {
|
|
5
|
+
private metadata;
|
|
6
|
+
private schema;
|
|
7
|
+
constructor(metadata: FieldSchema<any>[], schema: AnyObjectSchema);
|
|
8
|
+
getMetadata(paths: string[]): {
|
|
9
|
+
required: false;
|
|
10
|
+
} | {
|
|
11
|
+
required: true;
|
|
12
|
+
};
|
|
13
|
+
validate<T>(model: T): Promise<FieldError[]>;
|
|
14
|
+
cast(value: any): any;
|
|
15
|
+
}
|
|
16
|
+
export type SchemaDefinition<T> = {
|
|
17
|
+
[K in keyof Required<T>]: FieldSchema<any>;
|
|
18
|
+
};
|
|
19
|
+
export interface FieldMetadata {
|
|
20
|
+
required: boolean;
|
|
21
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ModelSchema } from './model-schema';
|
|
2
2
|
import { FieldSchema } from './field-schema';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class ModelSchemaFactory {
|
|
5
5
|
constructor();
|
|
6
|
-
build<T extends object>(model: T):
|
|
7
|
-
buildUntyped(raw: FieldSchema<any>[]):
|
|
6
|
+
build<T extends object>(model: T): ModelSchema<T>;
|
|
7
|
+
buildUntyped(raw: FieldSchema<any>[]): ModelSchema<{
|
|
8
8
|
[key: string]: string;
|
|
9
9
|
}>;
|
|
10
10
|
private buildYupSchema;
|
|
@@ -2,14 +2,14 @@ import { NgForm } from '@angular/forms';
|
|
|
2
2
|
import { FieldError } from './field-error';
|
|
3
3
|
import { ModelStateOptions } from './model-state-options';
|
|
4
4
|
import { ModelStateResult } from './model-state-result';
|
|
5
|
-
import {
|
|
5
|
+
import { ModelSchema } from './model-schema';
|
|
6
6
|
export declare class NgFormModelState<T> {
|
|
7
7
|
private form;
|
|
8
8
|
private modelValidator;
|
|
9
9
|
private options?;
|
|
10
10
|
private changesSubject;
|
|
11
11
|
readonly changes: import("rxjs").Observable<ModelStateResult<T> | undefined>;
|
|
12
|
-
constructor(form: NgForm, modelValidator:
|
|
12
|
+
constructor(form: NgForm, modelValidator: ModelSchema<T>, options?: ModelStateOptions | undefined);
|
|
13
13
|
getCurrent(): ModelStateResult<T> | undefined;
|
|
14
14
|
setState(model: T, errors: FieldError[]): void;
|
|
15
15
|
setErrors(errors: FieldError[]): void;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
export interface ConstraintAnnotations {
|
|
3
3
|
}
|
|
4
|
+
export interface StringTypeConstraints {
|
|
5
|
+
required?: true;
|
|
6
|
+
requiredMessage?: string;
|
|
7
|
+
pattern?: RegExp;
|
|
8
|
+
patternMessage?: string;
|
|
9
|
+
length?: number;
|
|
10
|
+
lengthMessage?: string;
|
|
11
|
+
}
|
|
4
12
|
export interface StringTypeAnnotations extends ConstraintAnnotations {
|
|
5
13
|
required?: RequiredAnnotation;
|
|
6
14
|
length?: LengthAnnotation;
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './lib/field-error';
|
|
2
2
|
export * from './lib/model-state-result';
|
|
3
3
|
export * from './lib/model-schema.factory';
|
|
4
|
-
export
|
|
4
|
+
export { ModelSchema, SchemaDefinition } from './lib/model-schema';
|
|
5
5
|
export * from './lib/type-annotations';
|
|
6
6
|
export * from './lib/ng-form-model-state.service';
|
|
7
7
|
export * from './lib/ngform-model-state';
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export class ModelValidator {
|
|
2
|
-
constructor(schema) {
|
|
3
|
-
this.schema = schema;
|
|
4
|
-
}
|
|
5
|
-
get paths() {
|
|
6
|
-
//return Array.from(this.metadata, ([key, value]) => ({ key, value }));
|
|
7
|
-
return [];
|
|
8
|
-
}
|
|
9
|
-
keyValue(key) {
|
|
10
|
-
return this.schema.fields[key];
|
|
11
|
-
}
|
|
12
|
-
validate(model) {
|
|
13
|
-
return this.schema
|
|
14
|
-
.validate(model, { abortEarly: false })
|
|
15
|
-
.then(() => {
|
|
16
|
-
return [];
|
|
17
|
-
})
|
|
18
|
-
.catch((e) => {
|
|
19
|
-
return e.inner.map((error) => ({ path: error.path, type: error.type, message: error.message }));
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
cast(value) {
|
|
23
|
-
return this.schema.cast(value);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbW9kZWwtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLFlBQW9CLE1BQXVCO1FBQXZCLFdBQU0sR0FBTixNQUFNLENBQWlCO0lBQUcsQ0FBQztJQUUvQyxJQUFJLEtBQUs7UUFDTCx1RUFBdUU7UUFDdkUsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFJLEtBQVE7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNiLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNQLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBa0IsRUFBRSxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBLENBQUMsQ0FBQztRQUM5RyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBVTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW55T2JqZWN0U2NoZW1hLCBTY2hlbWFPZiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAneXVwJztcbmltcG9ydCB7IEZpZWxkRXJyb3IgfSBmcm9tICcuL2ZpZWxkLWVycm9yJztcbmltcG9ydCB7IENvbnN0cmFpbnRBbm5vdGF0aW9ucyB9IGZyb20gJy4vdHlwZS1hbm5vdGF0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFZhbGlkYXRvcjxUPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzY2hlbWE6IEFueU9iamVjdFNjaGVtYSkge31cblxuICAgIGdldCBwYXRocygpIHtcbiAgICAgICAgLy9yZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm1ldGFkYXRhLCAoW2tleSwgdmFsdWVdKSA9PiAoeyBrZXksIHZhbHVlIH0pKTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGtleVZhbHVlKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjaGVtYS5maWVsZHNba2V5XTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZTxUPihtb2RlbDogVCk6IFByb21pc2U8RmllbGRFcnJvcltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjaGVtYVxuICAgICAgICAgICAgLnZhbGlkYXRlKG1vZGVsLCB7IGFib3J0RWFybHk6IGZhbHNlIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZTogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaW5uZXIubWFwKChlcnJvcikgPT4gPEZpZWxkRXJyb3I+eyBwYXRoOiBlcnJvci5wYXRoLCB0eXBlOiBlcnJvci50eXBlLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FzdCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjaGVtYS5jYXN0KHZhbHVlKTtcbiAgICB9XG59XG4iXX0=
|
package/lib/model-validator.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AnyObjectSchema } from 'yup';
|
|
2
|
-
import { FieldError } from './field-error';
|
|
3
|
-
export declare class ModelValidator<T> {
|
|
4
|
-
private schema;
|
|
5
|
-
constructor(schema: AnyObjectSchema);
|
|
6
|
-
get paths(): never[];
|
|
7
|
-
keyValue(key: string): any;
|
|
8
|
-
validate<T>(model: T): Promise<FieldError[]>;
|
|
9
|
-
cast(value: any): any;
|
|
10
|
-
}
|