@muziehdesign/forms 0.0.1-alpha.74 → 0.0.1-alpha.86

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.
@@ -0,0 +1,16 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class FieldErrorsComponent {
5
+ constructor() { }
6
+ ngOnInit() { }
7
+ }
8
+ FieldErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ FieldErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: FieldErrorsComponent, selector: "mz-field-errors", inputs: { field: "field" }, ngImport: i0, template: "<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.JsonPipe, name: "json" }] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'mz-field-errors', template: "<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n" }]
13
+ }], ctorParameters: function () { return []; }, propDecorators: { field: [{
14
+ type: Input
15
+ }] } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXJyb3JzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL2ZpZWxkLWVycm9ycy9maWVsZC1lcnJvcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZmllbGQtZXJyb3JzL2ZpZWxkLWVycm9ycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBUXpELE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQVcsQ0FBQzs7aUhBTFQsb0JBQW9CO3FHQUFwQixvQkFBb0IsbUZDUmpDLGdFQUlBOzJGRElhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUI7MEVBTWxCLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ216LWZpZWxkLWVycm9ycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1lcnJvcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZC1lcnJvcnMuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkRXJyb3JzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBmaWVsZD86IE5nQ29udHJvbDtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQgeyB9XG5cbn1cbiIsIjxkaXY+XG4gIGZpZWxkIGVycm9yczpcbiAge3sgZmllbGQ/LmVycm9ycyB8IGpzb24gfX1cbjwvZGl2PlxuIl19
@@ -1,14 +1,27 @@
1
+ import { CommonModule } from '@angular/common';
1
2
  import { NgModule } from '@angular/core';
3
+ import { FieldErrorsComponent } from './field-errors/field-errors.component';
2
4
  import * as i0 from "@angular/core";
3
5
  export class FormsModule {
4
6
  }
5
7
  FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
- FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
7
- FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
8
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, declarations: [FieldErrorsComponent], imports: [CommonModule // TODO: can remove once done with temp error displaying
9
+ ], exports: [FieldErrorsComponent] });
10
+ FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, imports: [CommonModule // TODO: can remove once done with temp error displaying
11
+ ] });
8
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, decorators: [{
9
13
  type: NgModule,
10
14
  args: [{
11
- providers: []
15
+ providers: [],
16
+ declarations: [
17
+ FieldErrorsComponent
18
+ ],
19
+ exports: [
20
+ FieldErrorsComponent
21
+ ],
22
+ imports: [
23
+ CommonModule // TODO: can remove once done with temp error displaying
24
+ ]
12
25
  }]
13
26
  }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZm9ybXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT3pDLE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVc7eUdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUh2QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgRm9ybXNNb2R1bGUgeyB9XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZm9ybXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQWdCN0UsTUFBTSxPQUFPLFdBQVc7O3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxpQkFUcEIsb0JBQW9CLGFBTXBCLFlBQVksQ0FBQyx3REFBd0Q7aUJBSHJFLG9CQUFvQjt5R0FNWCxXQUFXLFlBSHBCLFlBQVksQ0FBQyx3REFBd0Q7OzJGQUc1RCxXQUFXO2tCQVp2QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxFQUFFO29CQUNiLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZLENBQUMsd0RBQXdEO3FCQUN0RTtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkLWVycm9ycy9maWVsZC1lcnJvcnMuY29tcG9uZW50JztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW10sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZpZWxkRXJyb3JzQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGaWVsZEVycm9yc0NvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlIC8vIFRPRE86IGNhbiByZW1vdmUgb25jZSBkb25lIHdpdGggdGVtcCBlcnJvciBkaXNwbGF5aW5nXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9ybXNNb2R1bGUgeyB9XG4iXX0=
@@ -22,8 +22,6 @@ export class ModelSchemaFactory {
22
22
  }
23
23
  });
24
24
  const schema = object(shape);
25
- console.log(schema);
26
- console.log(schema.isValidSync({ instructions: null }));
27
25
  return new ModelValidator(schema);
28
26
  }
29
27
  buildStringSchema(options) {
@@ -34,6 +32,15 @@ export class ModelSchemaFactory {
34
32
  if (options.length) {
35
33
  schema = schema.length(options.length.length, options.length.message);
36
34
  }
35
+ if (options.maxLength) {
36
+ schema = schema.max(options.maxLength.maxLength, options.maxLength.message);
37
+ }
38
+ if (options.minLength) {
39
+ schema = schema.min(options.minLength.minLength, options.minLength.message);
40
+ }
41
+ if (options.pattern) {
42
+ schema = schema.matches(options.pattern.pattern, options.pattern.message);
43
+ }
37
44
  return schema;
38
45
  }
39
46
  buildBooleanSchema(options) {
@@ -82,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImpor
82
89
  providedIn: 'root',
83
90
  }]
84
91
  }], ctorParameters: function () { return []; } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBQThELGNBQWMsRUFBMkQsTUFBTSxvQkFBb0IsQ0FBQztBQUN6SyxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQzs7QUFLM0IsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBSSxLQUFRO1FBQ2YsTUFBTSxRQUFRLEdBQXVDLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0csSUFBSSxLQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzlCLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQThCLENBQUMsQ0FBQzthQUNyRTtpQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDekQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUErQixDQUFDLENBQUM7YUFDdkU7aUJBQU0s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QUNsQyxPQUFPLE9BQU8sQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2FBQUMsQ0FBQyxDQUFDO1NBQ0w7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzsrR0F0RVUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2JqZWN0LCBTY2hlbWFPZiB9IGZyb20gJ3l1cCc7XG5pbXBvcnQgeyBNb2RlbFZhbGlkYXRvciB9IGZyb20gJy4vbW9kZWwtdmFsaWRhdG9yJztcbmltcG9ydCB7IFNDSEVNQV9NRVRBREFUQV9OQU1FU1BBQ0UgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPYmplY3RTaGFwZSB9IGZyb20gJ3l1cC9saWIvb2JqZWN0JztcbmltcG9ydCB7IEJvb2xlYW5UeXBlLCBCb29sZWFuVHlwZUFubm90YXRpb25zLCBDb25zdHJhaW50QW5ub3RhdGlvbnMsIENvbnN0cmFpbnRUeXBlLCBEYXRlVHlwZUFubm90YXRpb25zLCBTdHJpbmdUeXBlMiwgU3RyaW5nVHlwZUFubm90YXRpb25zIH0gZnJvbSAnLi90eXBlLWFubm90YXRpb25zJztcbmltcG9ydCAqIGFzIFl1cCBmcm9tICd5dXAnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWFGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGJ1aWxkPFQ+KG1vZGVsOiBUKTogTW9kZWxWYWxpZGF0b3I8VD4ge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBNYXA8c3RyaW5nLCBDb25zdHJhaW50QW5ub3RhdGlvbnM+ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShTQ0hFTUFfTUVUQURBVEFfTkFNRVNQQUNFLCBtb2RlbCk7XG4gICAgbGV0IHNoYXBlOiBPYmplY3RTaGFwZSA9IHt9O1xuICAgIG1ldGFkYXRhLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGlmICh2YWx1ZS5jb25zdHJhaW50VHlwZSA9PSBDb25zdHJhaW50VHlwZS5zdHJpbmcpIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuYnVpbGRTdHJpbmdTY2hlbWEodmFsdWUgYXMgU3RyaW5nVHlwZUFubm90YXRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuY29uc3RyYWludFR5cGUgPT0gQ29uc3RyYWludFR5cGUuYm9vbGVhbikge1xuICAgICAgICBzaGFwZVtrZXldID0gdGhpcy5idWlsZEJvb2xlYW5TY2hlbWEodmFsdWUgYXMgQm9vbGVhblR5cGVBbm5vdGF0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cmFpbnRUeXBlID09IENvbnN0cmFpbnRUeXBlLmRhdGUpIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuYnVpbGREYXRlU2NoZW1hKHZhbHVlIGFzIERhdGVUeXBlQW5ub3RhdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNjaGVtYSA9IG9iamVjdChzaGFwZSkgYXMgU2NoZW1hT2Y8VD47XG4gICAgY29uc29sZS5sb2coc2NoZW1hKTtcbiAgICBjb25zb2xlLmxvZyhzY2hlbWEuaXNWYWxpZFN5bmMoeyBpbnN0cnVjdGlvbnM6IG51bGwgfSkpO1xuICAgIHJldHVybiBuZXcgTW9kZWxWYWxpZGF0b3Ioc2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdHJpbmdTY2hlbWEob3B0aW9uczogU3RyaW5nVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5zdHJpbmcoKTtcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKG9wdGlvbnMucmVxdWlyZWQubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgc2NoZW1hID0gc2NoZW1hLmxlbmd0aChvcHRpb25zLmxlbmd0aC5sZW5ndGgsIG9wdGlvbnMubGVuZ3RoLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQm9vbGVhblNjaGVtYShvcHRpb25zOiBCb29sZWFuVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5ib29sZWFuKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lcXVhbHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmVxdWFscy5lcXVhbHMpIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLmlzVHJ1ZShvcHRpb25zLmVxdWFscy5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYSA9IHNjaGVtYS5pc0ZhbHNlKG9wdGlvbnMuZXF1YWxzLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRGF0ZVNjaGVtYShvcHRpb25zOiBEYXRlVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5kYXRlKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5taW4pIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5taW4ob3B0aW9ucy5taW4ubWluLCBvcHRpb25zLm1pbi5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWF4KSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF4KG9wdGlvbnMubWF4Lm1heCwgb3B0aW9ucy5tYXgubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRlc3QpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS50ZXN0KHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy50ZXN0Lm5hbWUsXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMudGVzdC5tZXNzYWdlLFxuICAgICAgICB0ZXN0OiAoZD86IERhdGUsIGNvbnRleHQ/OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMudGVzdCEudGVzdChkISk7XG4gICAgICB9fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxufVxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxLQUFLLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxPQUFPLEVBQThELGNBQWMsRUFBMkQsTUFBTSxvQkFBb0IsQ0FBQztBQUN6SyxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQzs7QUFLM0IsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBSSxLQUFRO1FBQ2YsTUFBTSxRQUFRLEdBQXVDLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0csSUFBSSxLQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzlCLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQThCLENBQUMsQ0FBQzthQUNyRTtpQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRTtnQkFDekQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUErQixDQUFDLENBQUM7YUFDdkU7aUJBQU0s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QUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJO2dCQUN2QixPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPO2dCQUM3QixJQUFJLEVBQUUsQ0FBQyxDQUFRLEVBQUUsT0FBYSxFQUFFLEVBQUU7b0JBQ2xDLE9BQU8sT0FBTyxDQUFDLElBQUssQ0FBQyxJQUFJLENBQUMsQ0FBRSxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7YUFBQyxDQUFDLENBQUM7U0FDTDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OytHQWhGVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvYmplY3QsIFNjaGVtYU9mIH0gZnJvbSAneXVwJztcbmltcG9ydCB7IE1vZGVsVmFsaWRhdG9yIH0gZnJvbSAnLi9tb2RlbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgU0NIRU1BX01FVEFEQVRBX05BTUVTUEFDRSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9iamVjdFNoYXBlIH0gZnJvbSAneXVwL2xpYi9vYmplY3QnO1xuaW1wb3J0IHsgQm9vbGVhblR5cGUsIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMsIENvbnN0cmFpbnRBbm5vdGF0aW9ucywgQ29uc3RyYWludFR5cGUsIERhdGVUeXBlQW5ub3RhdGlvbnMsIFN0cmluZ1R5cGUyLCBTdHJpbmdUeXBlQW5ub3RhdGlvbnMgfSBmcm9tICcuL3R5cGUtYW5ub3RhdGlvbnMnO1xuaW1wb3J0ICogYXMgWXVwIGZyb20gJ3l1cCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RlbFNjaGVtYUZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgYnVpbGQ8VD4obW9kZWw6IFQpOiBNb2RlbFZhbGlkYXRvcjxUPiB7XG4gICAgY29uc3QgbWV0YWRhdGE6IE1hcDxzdHJpbmcsIENvbnN0cmFpbnRBbm5vdGF0aW9ucz4gPSBSZWZsZWN0LmdldE1ldGFkYXRhKFNDSEVNQV9NRVRBREFUQV9OQU1FU1BBQ0UsIG1vZGVsKTtcbiAgICBsZXQgc2hhcGU6IE9iamVjdFNoYXBlID0ge307XG4gICAgbWV0YWRhdGEuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHZhbHVlLmNvbnN0cmFpbnRUeXBlID09IENvbnN0cmFpbnRUeXBlLnN0cmluZykge1xuICAgICAgICBzaGFwZVtrZXldID0gdGhpcy5idWlsZFN0cmluZ1NjaGVtYSh2YWx1ZSBhcyBTdHJpbmdUeXBlQW5ub3RhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJhaW50VHlwZSA9PSBDb25zdHJhaW50VHlwZS5ib29sZWFuKSB7XG4gICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLmJ1aWxkQm9vbGVhblNjaGVtYSh2YWx1ZSBhcyBCb29sZWFuVHlwZUFubm90YXRpb25zKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUuY29uc3RyYWludFR5cGUgPT0gQ29uc3RyYWludFR5cGUuZGF0ZSkge1xuICAgICAgICBzaGFwZVtrZXldID0gdGhpcy5idWlsZERhdGVTY2hlbWEodmFsdWUgYXMgRGF0ZVR5cGVBbm5vdGF0aW9ucyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2NoZW1hID0gb2JqZWN0KHNoYXBlKSBhcyBTY2hlbWFPZjxUPjtcbiAgICByZXR1cm4gbmV3IE1vZGVsVmFsaWRhdG9yKHNjaGVtYSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3RyaW5nU2NoZW1hKG9wdGlvbnM6IFN0cmluZ1R5cGVBbm5vdGF0aW9ucykge1xuICAgIGxldCBzY2hlbWEgPSBZdXAuc3RyaW5nKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5sZW5ndGgob3B0aW9ucy5sZW5ndGgubGVuZ3RoLCBvcHRpb25zLmxlbmd0aC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tYXhMZW5ndGgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5tYXgob3B0aW9ucy5tYXhMZW5ndGgubWF4TGVuZ3RoLCBvcHRpb25zLm1heExlbmd0aC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5taW5MZW5ndGgpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5taW4ob3B0aW9ucy5taW5MZW5ndGgubWluTGVuZ3RoLCBvcHRpb25zLm1pbkxlbmd0aC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wYXR0ZXJuKSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF0Y2hlcyhvcHRpb25zLnBhdHRlcm4ucGF0dGVybiwgb3B0aW9ucy5wYXR0ZXJuLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQm9vbGVhblNjaGVtYShvcHRpb25zOiBCb29sZWFuVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5ib29sZWFuKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lcXVhbHMpIHtcbiAgICAgIGlmIChvcHRpb25zLmVxdWFscy5lcXVhbHMpIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLmlzVHJ1ZShvcHRpb25zLmVxdWFscy5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYSA9IHNjaGVtYS5pc0ZhbHNlKG9wdGlvbnMuZXF1YWxzLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRGF0ZVNjaGVtYShvcHRpb25zOiBEYXRlVHlwZUFubm90YXRpb25zKSB7XG4gICAgbGV0IHNjaGVtYSA9IFl1cC5kYXRlKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChvcHRpb25zLnJlcXVpcmVkLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5taW4pIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS5taW4ob3B0aW9ucy5taW4ubWluLCBvcHRpb25zLm1pbi5tZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWF4KSB7XG4gICAgICBzY2hlbWEgPSBzY2hlbWEubWF4KG9wdGlvbnMubWF4Lm1heCwgb3B0aW9ucy5tYXgubWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRlc3QpIHtcbiAgICAgIHNjaGVtYSA9IHNjaGVtYS50ZXN0KHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy50ZXN0Lm5hbWUsXG4gICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMudGVzdC5tZXNzYWdlLFxuICAgICAgICB0ZXN0OiAoZD86IERhdGUsIGNvbnRleHQ/OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMudGVzdCEudGVzdChkISk7XG4gICAgICB9fSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxufVxuIl19
@@ -6,8 +6,8 @@ export class NgFormModelStateFactory {
6
6
  constructor(factory) {
7
7
  this.factory = factory;
8
8
  }
9
- create(form, model) {
10
- const modelState = new NgFormModelState(form, this.factory.build(model), model);
9
+ create(form, model, options) {
10
+ const modelState = new NgFormModelState(form, this.factory.build(model), model, options);
11
11
  return modelState;
12
12
  }
13
13
  }
@@ -20,7 +20,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImpor
20
20
  }]
21
21
  }], ctorParameters: function () { return [{ type: i1.ModelSchemaFactory }]; } });
22
22
  export class NgFormModelState {
23
- constructor(form, modelValidator, model) {
23
+ constructor(form, modelValidator, model, options) {
24
24
  this.form = form;
25
25
  this.modelValidator = modelValidator;
26
26
  this.model = model;
@@ -28,11 +28,11 @@ export class NgFormModelState {
28
28
  this.errors$ = this.errors.asObservable();
29
29
  this.form.form.valueChanges
30
30
  .pipe(switchMap(async (x) => {
31
- return from(this.runValidations());
31
+ this.model = x;
32
+ return from(this.runValidations(options?.validateCallback));
32
33
  }))
33
34
  .subscribe();
34
35
  this.errors$.subscribe((list) => {
35
- console.log('all errors', list);
36
36
  const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map());
37
37
  grouped.forEach((value, key) => {
38
38
  let validationErrors = {};
@@ -56,10 +56,10 @@ export class NgFormModelState {
56
56
  validate() {
57
57
  return this.runValidations().then((x) => true);
58
58
  }
59
- async runValidations() {
60
- console.log('validating', this.model);
59
+ async runValidations(callback) {
61
60
  const errors = await this.modelValidator.validate(this.model);
62
- this.errors.next(errors);
61
+ const additional = callback?.() || [];
62
+ this.errors.next(errors.concat(additional));
63
63
  }
64
64
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQVUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBUWhFLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFBRyxDQUFDO0lBRW5ELE1BQU0sQ0FBSSxJQUFZLEVBQUUsS0FBUTtRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFJLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztvSEFOVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBVUQsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUFvQixJQUFZLEVBQVUsY0FBaUMsRUFBVSxLQUFRO1FBQXpFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFHO1FBSHJGLFdBQU0sR0FBa0MsSUFBSSxlQUFlLENBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0UsWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTthQUN4QixJQUFJLENBQ0gsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQXdCLENBQUMsQ0FBQztZQUV2SSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUM3QixJQUFJLGdCQUFnQixHQUFxQixFQUFFLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJO29CQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUNyRDtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDVixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUMvQyxNQUFNLENBQUMsQ0FBQztpQkFDVDtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQW9CO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5PX0VSUk9SU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBmcm9tLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpZWxkRXJyb3IgfSBmcm9tICcuL2ZpZWxkLWVycm9yJztcbmltcG9ydCB7IE1vZGVsU2NoZW1hRmFjdG9yeSB9IGZyb20gJy4vbW9kZWwtc2NoZW1hLmZhY3RvcnknO1xuaW1wb3J0IHsgTW9kZWxWYWxpZGF0b3IgfSBmcm9tICcuL21vZGVsLXZhbGlkYXRvcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOZ0Zvcm1Nb2RlbFN0YXRlRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmFjdG9yeTogTW9kZWxTY2hlbWFGYWN0b3J5KSB7fVxuXG4gIGNyZWF0ZTxUPihmb3JtOiBOZ0Zvcm0sIG1vZGVsOiBUKSB7XG4gICAgY29uc3QgbW9kZWxTdGF0ZSA9IG5ldyBOZ0Zvcm1Nb2RlbFN0YXRlPFQ+KGZvcm0sIHRoaXMuZmFjdG9yeS5idWlsZChtb2RlbCksIG1vZGVsKTtcbiAgICByZXR1cm4gbW9kZWxTdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmdGb3JtTW9kZWxTdGF0ZTxUPiB7XG4gIHByaXZhdGUgZXJyb3JzOiBCZWhhdmlvclN1YmplY3Q8RmllbGRFcnJvcltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmllbGRFcnJvcltdPihbXSk7XG4gIHB1YmxpYyBlcnJvcnMkID0gdGhpcy5lcnJvcnMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtOiBOZ0Zvcm0sIHByaXZhdGUgbW9kZWxWYWxpZGF0b3I6IE1vZGVsVmFsaWRhdG9yPFQ+LCBwcml2YXRlIG1vZGVsOiBUKSB7XG4gICAgdGhpcy5mb3JtLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jICh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZyb20odGhpcy5ydW5WYWxpZGF0aW9ucygpKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuZXJyb3JzJC5zdWJzY3JpYmUoKGxpc3QpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdhbGwgZXJyb3JzJywgbGlzdCk7XG5cbiAgICAgIGNvbnN0IGdyb3VwZWQgPSBsaXN0LnJlZHVjZSgoZ3JvdXBlZCwgdikgPT4gZ3JvdXBlZC5zZXQodi5wYXRoLCBbLi4uKGdyb3VwZWQuZ2V0KHYucGF0aCkgfHwgW10pLCB2XSksIG5ldyBNYXA8c3RyaW5nLCBGaWVsZEVycm9yW10+KCkpO1xuXG4gICAgICBncm91cGVkLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSA8VmFsaWRhdGlvbkVycm9ycz57fTtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4gKHZhbGlkYXRpb25FcnJvcnNbdi50eXBlXSA9IHYubWVzc2FnZSkpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1trZXldLnNldEVycm9ycyh2YWxpZGF0aW9uRXJyb3JzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzZXR0aW5nIGZvcm0gY29udHJvbCcsIGtleSk7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9ycy52YWx1ZS5sZW5ndGggPT0gMDtcbiAgfVxuXG4gIHNldEVycm9ycyhlcnJvcnM6IEZpZWxkRXJyb3JbXSkge1xuICAgIHRoaXMuZXJyb3JzLm5leHQoZXJyb3JzKTtcbiAgfVxuXG4gIHZhbGlkYXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJ1blZhbGlkYXRpb25zKCkudGhlbigoeCkgPT4gdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1blZhbGlkYXRpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0aW5nJywgdGhpcy5tb2RlbCk7XG4gICAgY29uc3QgZXJyb3JzID0gYXdhaXQgdGhpcy5tb2RlbFZhbGlkYXRvci52YWxpZGF0ZSh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLmVycm9ycy5uZXh0KGVycm9ycyk7XG4gIH1cbn1cbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQVUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBUWhFLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFBRyxDQUFDO0lBRW5ELE1BQU0sQ0FBSSxJQUFZLEVBQUUsS0FBUSxFQUFFLE9BQTJCO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOztvSEFOVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBY0QsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUFvQixJQUFZLEVBQVUsY0FBaUMsRUFBVSxLQUFRLEVBQUUsT0FBMkI7UUFBdEcsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUFVLFVBQUssR0FBTCxLQUFLLENBQUc7UUFIckYsV0FBTSxHQUFrQyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUMvRSxZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUcxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO2FBQ3hCLElBQUksQ0FDSCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO1FBQzdELENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBd0IsQ0FBQyxDQUFDO1lBRXZJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksZ0JBQWdCLEdBQXFCLEVBQUUsQ0FBQztnQkFDNUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQzdELElBQUk7b0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3JEO2dCQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQy9DLE1BQU0sQ0FBQyxDQUFDO2lCQUNUO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBb0I7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQTJCO1FBQ3RELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOT19FUlJPUlNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0sIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgZnJvbSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWVsZEVycm9yIH0gZnJvbSAnLi9maWVsZC1lcnJvcic7XG5pbXBvcnQgeyBNb2RlbFNjaGVtYUZhY3RvcnkgfSBmcm9tICcuL21vZGVsLXNjaGVtYS5mYWN0b3J5JztcbmltcG9ydCB7IE1vZGVsVmFsaWRhdG9yIH0gZnJvbSAnLi9tb2RlbC12YWxpZGF0b3InO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmdGb3JtTW9kZWxTdGF0ZUZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZhY3Rvcnk6IE1vZGVsU2NoZW1hRmFjdG9yeSkge31cblxuICBjcmVhdGU8VD4oZm9ybTogTmdGb3JtLCBtb2RlbDogVCwgb3B0aW9ucz86IE1vZGVsU3RhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgbW9kZWxTdGF0ZSA9IG5ldyBOZ0Zvcm1Nb2RlbFN0YXRlPFQ+KGZvcm0sIHRoaXMuZmFjdG9yeS5idWlsZChtb2RlbCksIG1vZGVsLCBvcHRpb25zKTtcbiAgICByZXR1cm4gbW9kZWxTdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsU3RhdGVPcHRpb25zIHtcbiAgdmFsaWRhdGVDYWxsYmFjazogKCkgPT4gRmllbGRFcnJvcltdXG59XG5cbmV4cG9ydCBjbGFzcyBOZ0Zvcm1Nb2RlbFN0YXRlPFQ+IHtcbiAgcHJpdmF0ZSBlcnJvcnM6IEJlaGF2aW9yU3ViamVjdDxGaWVsZEVycm9yW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWVsZEVycm9yW10+KFtdKTtcbiAgcHVibGljIGVycm9ycyQgPSB0aGlzLmVycm9ycy5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm06IE5nRm9ybSwgcHJpdmF0ZSBtb2RlbFZhbGlkYXRvcjogTW9kZWxWYWxpZGF0b3I8VD4sIHByaXZhdGUgbW9kZWw6IFQsIG9wdGlvbnM/OiBNb2RlbFN0YXRlT3B0aW9ucykge1xuICAgIHRoaXMuZm9ybS5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhc3luYyAoeCkgPT4ge1xuICAgICAgICAgIHRoaXMubW9kZWwgPSB4O1xuICAgICAgICAgIHJldHVybiBmcm9tKHRoaXMucnVuVmFsaWRhdGlvbnMob3B0aW9ucz8udmFsaWRhdGVDYWxsYmFjaykpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLmVycm9ycyQuc3Vic2NyaWJlKChsaXN0KSA9PiB7XG4gICAgICBjb25zdCBncm91cGVkID0gbGlzdC5yZWR1Y2UoKGdyb3VwZWQsIHYpID0+IGdyb3VwZWQuc2V0KHYucGF0aCwgWy4uLihncm91cGVkLmdldCh2LnBhdGgpIHx8IFtdKSwgdl0pLCBuZXcgTWFwPHN0cmluZywgRmllbGRFcnJvcltdPigpKTtcblxuICAgICAgZ3JvdXBlZC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0aW9uRXJyb3JzID0gPFZhbGlkYXRpb25FcnJvcnM+e307XG4gICAgICAgIHZhbHVlLmZvckVhY2goKHYpID0+ICh2YWxpZGF0aW9uRXJyb3JzW3YudHlwZV0gPSB2Lm1lc3NhZ2UpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XS5zZXRFcnJvcnModmFsaWRhdGlvbkVycm9ycyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3Igc2V0dGluZyBmb3JtIGNvbnRyb2wnLCBrZXkpO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMudmFsdWUubGVuZ3RoID09IDA7XG4gIH1cblxuICBzZXRFcnJvcnMoZXJyb3JzOiBGaWVsZEVycm9yW10pIHtcbiAgICB0aGlzLmVycm9ycy5uZXh0KGVycm9ycyk7XG4gIH1cblxuICB2YWxpZGF0ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5ydW5WYWxpZGF0aW9ucygpLnRoZW4oKHgpID0+IHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5WYWxpZGF0aW9ucyhjYWxsYmFjaz86ICgpPT5GaWVsZEVycm9yW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCB0aGlzLm1vZGVsVmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMubW9kZWwpO1xuICAgIGNvbnN0IGFkZGl0aW9uYWwgPSBjYWxsYmFjaz8uKCkgfHwgW107XG4gICAgdGhpcy5lcnJvcnMubmV4dChlcnJvcnMuY29uY2F0KGFkZGl0aW9uYWwpKTtcbiAgfVxufVxuIl19
@@ -11,17 +11,8 @@ const registerMetadata = (target, propertyKey, constraint) => {
11
11
  metadata.set(propertyKey, constraint);
12
12
  Reflect.defineMetadata(METADATA_KEY, metadata, target);
13
13
  };
14
- /*
15
- export function OfValues<T>(values: T[], message?: string) {
16
- return function (target: Object, propertyKey: string) {
17
- const o = { values: values, message: message } as OfValuesAnnotations;
18
- o.constraintType = OfValues.name;
19
- registerMetadata(target, propertyKey, o);
20
- };
21
- }*/
22
14
  export function Annotate(a) {
23
15
  return function (target, propertyKey) {
24
- console.log('annotations', a.annotations);
25
16
  registerMetadata(target, propertyKey, a.annotations);
26
17
  };
27
18
  }
@@ -48,6 +39,12 @@ export function pattern(regex, message) {
48
39
  export function length(length, message) {
49
40
  return { length: { length: length, message: message } };
50
41
  }
42
+ export function maxLength(maxLength, message) {
43
+ return { maxLength: { maxLength: maxLength, message: message } };
44
+ }
45
+ export function minLength(minLength, message) {
46
+ return { minLength: { minLength: minLength, message: message } };
47
+ }
51
48
  export function ofValues(values, message) {
52
49
  return { ofValues: { values: values, message: message } };
53
50
  }
@@ -124,4 +121,4 @@ export class DateType extends AnnotationType {
124
121
  export function date() {
125
122
  return new DateType();
126
123
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1hbm5vdGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL3R5cGUtYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQUV2RCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHVEQUFNLENBQUE7SUFDTix5REFBTyxDQUFBO0lBQ1AsbURBQUksQ0FBQTtBQUNOLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQTZERCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsVUFBaUMsRUFBRSxFQUFFO0lBQ2xHLE1BQU0sUUFBUSxHQUFxQixPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBZSxDQUFDO0lBQ3ZHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBRUgsTUFBTSxVQUFVLFFBQVEsQ0FBa0MsQ0FBb0I7SUFDNUUsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBb0MsQ0FBQyxDQUFDO0lBQ2hGLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQUcsV0FBc0Q7SUFDbEYs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QU8sRUFBRSxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLElBQUksQ0FBQyxJQUFZLEVBQUUsQ0FBdUIsRUFBRSxPQUFnQjtRQUNqRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsSUFBSTtJQUNsQixPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5cbmNvbnN0IE1FVEFEQVRBX0tFWSA9ICdjdXN0b206bXV6aWVoZGVzaWduOmFubm90YXRpb25zJztcblxuZXhwb3J0IGVudW0gQ29uc3RyYWludFR5cGUge1xuICBzdHJpbmcsXG4gIGJvb2xlYW4sXG4gIGRhdGUsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgY29uc3RyYWludFR5cGU6IENvbnN0cmFpbnRUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1R5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBsZW5ndGg/OiBMZW5ndGhBbm5vdGF0aW9uO1xuICBwYXR0ZXJuPzogUGF0dGVybkFubm90YXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhblR5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBlcXVhbHM/OiBFcXVhbHNBbm5vdGF0aW9uPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUeXBlQW5ub3RhdGlvbnMgZXh0ZW5kcyBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICByZXF1aXJlZD86IFJlcXVpcmVkQW5ub3RhdGlvbjtcbiAgbWluPzogTWluaW11bUFubm90YXRpb248RGF0ZT47XG4gIG1heD86IE1heGltdW1Bbm5vdGF0aW9uPERhdGU+O1xuICB0ZXN0PzogVGVzdEFubm90YXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVpcmVkQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVuZ3RoQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkFubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIHBhdHRlcm46IFJlZ0V4cDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZlZhbHVlc0Fubm90YXRpb24gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIHZhbHVlczogW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXF1YWxzQW5ub3RhdGlvbjxUPiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgZXF1YWxzOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltdW1Bbm5vdGF0aW9uPFQ+IGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBtaW46IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF4aW11bUFubm90YXRpb248VD4gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1heDogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0QW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgdGVzdDogKGQ6RGF0ZSkgPT4gYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCByZWdpc3Rlck1ldGFkYXRhID0gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBjb25zdHJhaW50OiBDb25zdHJhaW50QW5ub3RhdGlvbnMpID0+IHtcbiAgY29uc3QgbWV0YWRhdGE6IE1hcDxzdHJpbmcsIGFueT4gPSBSZWZsZWN0LmdldE1ldGFkYXRhKE1FVEFEQVRBX0tFWSwgdGFyZ2V0KSB8fCBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICBtZXRhZGF0YS5zZXQocHJvcGVydHlLZXksIGNvbnN0cmFpbnQpO1xuICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKE1FVEFEQVRBX0tFWSwgbWV0YWRhdGEsIHRhcmdldCk7XG59O1xuXG4vKlxuZXhwb3J0IGZ1bmN0aW9uIE9mVmFsdWVzPFQ+KHZhbHVlczogVFtdLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvID0geyB2YWx1ZXM6IHZhbHVlcywgbWVzc2FnZTogbWVzc2FnZSB9IGFzIE9mVmFsdWVzQW5ub3RhdGlvbnM7XG4gICAgby5jb25zdHJhaW50VHlwZSA9IE9mVmFsdWVzLm5hbWU7XG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBvKTtcbiAgfTtcbn0qL1xuXG5leHBvcnQgZnVuY3Rpb24gQW5ub3RhdGU8VCBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucz4oYTogQW5ub3RhdGlvblR5cGU8VD4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKCdhbm5vdGF0aW9ucycsIGEuYW5ub3RhdGlvbnMpO1xuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYS5hbm5vdGF0aW9ucyBhcyBDb25zdHJhaW50QW5ub3RhdGlvbnMpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3RyaW5nVHlwZSguLi5hbm5vdGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBWYWxpZGF0aW9uQW5ub3RhdGlvbiB9W10pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IG8gPSBPYmplY3QuYXNzaWduKHt9LCAuLi5hbm5vdGF0aW9ucykgYXMgU3RyaW5nVHlwZUFubm90YXRpb25zO1xuICAgIG8uY29uc3RyYWludFR5cGUgPSBDb25zdHJhaW50VHlwZS5zdHJpbmc7XG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBvKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5UeXBlKC4uLmFubm90YXRpb25zOiB7IFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25Bbm5vdGF0aW9uIH1bXSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgbyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBCb29sZWFuVHlwZUFubm90YXRpb25zO1xuICAgIG8uY29uc3RyYWludFR5cGUgPSBDb25zdHJhaW50VHlwZS5ib29sZWFuO1xuICAgIHJlZ2lzdGVyTWV0YWRhdGEodGFyZ2V0LCBwcm9wZXJ0eUtleSwgbyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBSZXF1aXJlZEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IHJlcXVpcmVkOiB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdHRlcm4ocmVnZXg6IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogUGF0dGVybkFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IHBhdHRlcm46IHsgcGF0dGVybjogcmVnZXgsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVuZ3RoKGxlbmd0aDogbnVtYmVyLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBMZW5ndGhBbm5vdGF0aW9uIH0ge1xuICByZXR1cm4geyBsZW5ndGg6IHsgbGVuZ3RoOiBsZW5ndGgsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2ZWYWx1ZXModmFsdWVzOiBbXSwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogT2ZWYWx1ZXNBbm5vdGF0aW9uIH0ge1xuICByZXR1cm4geyBvZlZhbHVlczogeyB2YWx1ZXM6IHZhbHVlcywgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHM8VD4odmFsdWU6IFQsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IEVxdWFsc0Fubm90YXRpb248VD4gfSB7XG4gIHJldHVybiB7IGVxdWFsczogeyBlcXVhbHM6IHZhbHVlLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFubm90YXRpb25UeXBlPFQ+IHtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IGFubm90YXRpb25zPzogVDtcbn1cblxuZXhwb3J0IGNsYXNzIFN0cmluZ1R5cGUyIGV4dGVuZHMgQW5ub3RhdGlvblR5cGU8U3RyaW5nVHlwZUFubm90YXRpb25zPiB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcgPSAnU3RyaW5nVHlwZSc7XG4gIHB1YmxpYyBhbm5vdGF0aW9uczogU3RyaW5nVHlwZUFubm90YXRpb25zID0ge1xuICAgIGNvbnN0cmFpbnRUeXBlOiBDb25zdHJhaW50VHlwZS5zdHJpbmcsIC8vIFRPRE9cbiAgfTtcblxuICBwdWJsaWMgcmVxdWlyZWQobWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMucmVxdWlyZWQgPSB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiBtZXNzYWdlIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcGF0dGVybihwYXR0ZXJuOiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFubm90YXRpb25zLnBhdHRlcm4gPSB7IHBhdHRlcm46IHBhdHRlcm4sIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9vbGVhblR5cGUyIGV4dGVuZHMgQW5ub3RhdGlvblR5cGU8Qm9vbGVhblR5cGVBbm5vdGF0aW9ucz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nID0gJ0Jvb2xlYW5UeXBlJztcbiAgcHVibGljIGFubm90YXRpb25zOiBCb29sZWFuVHlwZUFubm90YXRpb25zID0ge1xuICAgIGNvbnN0cmFpbnRUeXBlOiBDb25zdHJhaW50VHlwZS5ib29sZWFuLCAvLyBUT0RPXG4gIH07XG5cbiAgcHVibGljIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFubm90YXRpb25zLnJlcXVpcmVkID0geyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGVxdWFscyh2OiBib29sZWFuLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5lcXVhbHMgPSB7IGVxdWFsczogdiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcoKSB7XG4gIHJldHVybiBuZXcgU3RyaW5nVHlwZTIoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4oKSB7XG4gIHJldHVybiBuZXcgQm9vbGVhblR5cGUyKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRlVHlwZSBleHRlbmRzIEFubm90YXRpb25UeXBlPERhdGVUeXBlQW5ub3RhdGlvbnM+IHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyA9ICdEYXRlVHlwZSc7XG4gIHB1YmxpYyBhbm5vdGF0aW9uczogRGF0ZVR5cGVBbm5vdGF0aW9ucyA9IHtcbiAgICBjb25zdHJhaW50VHlwZTogQ29uc3RyYWludFR5cGUuZGF0ZSwgLy8gVE9ET1xuICB9O1xuXG4gIHB1YmxpYyByZXF1aXJlZChtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5yZXF1aXJlZCA9IHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBtaW4odjogRGF0ZSwgbWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMubWluID0geyBtaW46IHYsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBtYXgodjogRGF0ZSwgbWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMubWF4ID0geyBtYXg6IHYsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0ZXN0KG5hbWU6IHN0cmluZywgdjogKGQ6IERhdGUpID0+IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFubm90YXRpb25zLnRlc3QgPSB7IG5hbWU6IG5hbWUsIHRlc3Q6IHYsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZSgpIHtcbiAgcmV0dXJuIG5ldyBEYXRlVHlwZSgpO1xufVxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1hbm5vdGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL3R5cGUtYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQUV2RCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHVEQUFNLENBQUE7SUFDTix5REFBTyxDQUFBO0lBQ1AsbURBQUksQ0FBQTtBQUNOLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQXVFRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsVUFBaUMsRUFBRSxFQUFFO0lBQ2xHLE1BQU0sUUFBUSxHQUFxQixPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBZSxDQUFDO0lBQ3ZHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsUUFBUSxDQUFrQyxDQUFvQjtJQUM1RSxPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQW1CO1FBQ2xELGdCQUFnQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQW9DLENBQUMsQ0FBQztJQUNoRixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFHLFdBQXNEO0lBQ2xGLE9BQU8sVUFBVSxNQUFjLEVBQUUsV0FBbUI7UUFDbEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUs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LEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxHQUFHLENBQUMsQ0FBTyxFQUFFLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sSUFBSSxDQUFDLElBQVksRUFBRSxDQUF1QixFQUFFLE9BQWdCO1FBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxJQUFJO0lBQ2xCLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcblxuY29uc3QgTUVUQURBVEFfS0VZID0gJ2N1c3RvbTptdXppZWhkZXNpZ246YW5ub3RhdGlvbnMnO1xuXG5leHBvcnQgZW51bSBDb25zdHJhaW50VHlwZSB7XG4gIHN0cmluZyxcbiAgYm9vbGVhbixcbiAgZGF0ZSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJhaW50QW5ub3RhdGlvbnMge1xuICBjb25zdHJhaW50VHlwZTogQ29uc3RyYWludFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5nVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIGxlbmd0aD86IExlbmd0aEFubm90YXRpb247XG4gIHBhdHRlcm4/OiBQYXR0ZXJuQW5ub3RhdGlvbjtcbiAgbWF4TGVuZ3RoPzogTWF4TGVuZ3RoQW5ub3RhdGlvbjtcbiAgbWluTGVuZ3RoPzogTWluTGVuZ3RoQW5ub3RhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuVHlwZUFubm90YXRpb25zIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zIHtcbiAgcmVxdWlyZWQ/OiBSZXF1aXJlZEFubm90YXRpb247XG4gIGVxdWFscz86IEVxdWFsc0Fubm90YXRpb248Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVR5cGVBbm5vdGF0aW9ucyBleHRlbmRzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyB7XG4gIHJlcXVpcmVkPzogUmVxdWlyZWRBbm5vdGF0aW9uO1xuICBtaW4/OiBNaW5pbXVtQW5ub3RhdGlvbjxEYXRlPjtcbiAgbWF4PzogTWF4aW11bUFubm90YXRpb248RGF0ZT47XG4gIHRlc3Q/OiBUZXN0QW5ub3RhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWlyZWRBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICByZXF1aXJlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZW5ndGhBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBsZW5ndGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgcGF0dGVybjogUmVnRXhwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9mVmFsdWVzQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgdmFsdWVzOiBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcXVhbHNBbm5vdGF0aW9uPFQ+IGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICBlcXVhbHM6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluaW11bUFubm90YXRpb248VD4gZXh0ZW5kcyBWYWxpZGF0aW9uQW5ub3RhdGlvbiB7XG4gIG1pbjogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXhpbXVtQW5ub3RhdGlvbjxUPiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWF4OiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RBbm5vdGF0aW9uIGV4dGVuZHMgVmFsaWRhdGlvbkFubm90YXRpb24ge1xuICB0ZXN0OiAoZDpEYXRlKSA9PiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF4TGVuZ3RoQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWF4TGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluTGVuZ3RoQW5ub3RhdGlvbiBleHRlbmRzIFZhbGlkYXRpb25Bbm5vdGF0aW9uIHtcbiAgbWluTGVuZ3RoOiBudW1iZXI7XG59XG5cbmNvbnN0IHJlZ2lzdGVyTWV0YWRhdGEgPSAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGNvbnN0cmFpbnQ6IENvbnN0cmFpbnRBbm5vdGF0aW9ucykgPT4ge1xuICBjb25zdCBtZXRhZGF0YTogTWFwPHN0cmluZywgYW55PiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTUVUQURBVEFfS0VZLCB0YXJnZXQpIHx8IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIG1ldGFkYXRhLnNldChwcm9wZXJ0eUtleSwgY29uc3RyYWludCk7XG4gIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoTUVUQURBVEFfS0VZLCBtZXRhZGF0YSwgdGFyZ2V0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBBbm5vdGF0ZTxUIGV4dGVuZHMgQ29uc3RyYWludEFubm90YXRpb25zPihhOiBBbm5vdGF0aW9uVHlwZTxUPikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhLmFubm90YXRpb25zIGFzIENvbnN0cmFpbnRBbm5vdGF0aW9ucyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdUeXBlKC4uLmFubm90YXRpb25zOiB7IFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25Bbm5vdGF0aW9uIH1bXSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgbyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmFubm90YXRpb25zKSBhcyBTdHJpbmdUeXBlQW5ub3RhdGlvbnM7XG4gICAgby5jb25zdHJhaW50VHlwZSA9IENvbnN0cmFpbnRUeXBlLnN0cmluZztcbiAgICByZWdpc3Rlck1ldGFkYXRhKHRhcmdldCwgcHJvcGVydHlLZXksIG8pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhblR5cGUoLi4uYW5ub3RhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogVmFsaWRhdGlvbkFubm90YXRpb24gfVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uYW5ub3RhdGlvbnMpIGFzIEJvb2xlYW5UeXBlQW5ub3RhdGlvbnM7XG4gICAgby5jb25zdHJhaW50VHlwZSA9IENvbnN0cmFpbnRUeXBlLmJvb2xlYW47XG4gICAgcmVnaXN0ZXJNZXRhZGF0YSh0YXJnZXQsIHByb3BlcnR5S2V5LCBvKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFJlcXVpcmVkQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcmVxdWlyZWQ6IHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihyZWdleDogUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBQYXR0ZXJuQW5ub3RhdGlvbiB9IHtcbiAgcmV0dXJuIHsgcGF0dGVybjogeyBwYXR0ZXJuOiByZWdleCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGgobGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IGxlbmd0aDogeyBsZW5ndGg6IGxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1heExlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1heExlbmd0aDogeyBtYXhMZW5ndGg6IG1heExlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGgobWluTGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IE1pbkxlbmd0aEFubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG1pbkxlbmd0aDogeyBtaW5MZW5ndGg6IG1pbkxlbmd0aCwgbWVzc2FnZTogbWVzc2FnZSB9IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvZlZhbHVlcyh2YWx1ZXM6IFtdLCBtZXNzYWdlPzogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBPZlZhbHVlc0Fubm90YXRpb24gfSB7XG4gIHJldHVybiB7IG9mVmFsdWVzOiB7IHZhbHVlczogdmFsdWVzLCBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsczxUPih2YWx1ZTogVCwgbWVzc2FnZT86IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogRXF1YWxzQW5ub3RhdGlvbjxUPiB9IHtcbiAgcmV0dXJuIHsgZXF1YWxzOiB7IGVxdWFsczogdmFsdWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfSB9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQW5ub3RhdGlvblR5cGU8VD4ge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgYW5ub3RhdGlvbnM/OiBUO1xufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nVHlwZTIgZXh0ZW5kcyBBbm5vdGF0aW9uVHlwZTxTdHJpbmdUeXBlQW5ub3RhdGlvbnM+IHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyA9ICdTdHJpbmdUeXBlJztcbiAgcHVibGljIGFubm90YXRpb25zOiBTdHJpbmdUeXBlQW5ub3RhdGlvbnMgPSB7XG4gICAgY29uc3RyYWludFR5cGU6IENvbnN0cmFpbnRUeXBlLnN0cmluZywgLy8gVE9ET1xuICB9O1xuXG4gIHB1YmxpYyByZXF1aXJlZChtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5yZXF1aXJlZCA9IHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBwYXR0ZXJuKHBhdHRlcm46IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMucGF0dGVybiA9IHsgcGF0dGVybjogcGF0dGVybiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb29sZWFuVHlwZTIgZXh0ZW5kcyBBbm5vdGF0aW9uVHlwZTxCb29sZWFuVHlwZUFubm90YXRpb25zPiB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcgPSAnQm9vbGVhblR5cGUnO1xuICBwdWJsaWMgYW5ub3RhdGlvbnM6IEJvb2xlYW5UeXBlQW5ub3RhdGlvbnMgPSB7XG4gICAgY29uc3RyYWludFR5cGU6IENvbnN0cmFpbnRUeXBlLmJvb2xlYW4sIC8vIFRPRE9cbiAgfTtcblxuICBwdWJsaWMgcmVxdWlyZWQobWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMucmVxdWlyZWQgPSB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiBtZXNzYWdlIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKHY6IGJvb2xlYW4sIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFubm90YXRpb25zLmVxdWFscyA9IHsgZXF1YWxzOiB2LCBtZXNzYWdlOiBtZXNzYWdlIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZygpIHtcbiAgcmV0dXJuIG5ldyBTdHJpbmdUeXBlMigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm9vbGVhbigpIHtcbiAgcmV0dXJuIG5ldyBCb29sZWFuVHlwZTIoKTtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGVUeXBlIGV4dGVuZHMgQW5ub3RhdGlvblR5cGU8RGF0ZVR5cGVBbm5vdGF0aW9ucz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nID0gJ0RhdGVUeXBlJztcbiAgcHVibGljIGFubm90YXRpb25zOiBEYXRlVHlwZUFubm90YXRpb25zID0ge1xuICAgIGNvbnN0cmFpbnRUeXBlOiBDb25zdHJhaW50VHlwZS5kYXRlLCAvLyBUT0RPXG4gIH07XG5cbiAgcHVibGljIHJlcXVpcmVkKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFubm90YXRpb25zLnJlcXVpcmVkID0geyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG1pbih2OiBEYXRlLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5taW4gPSB7IG1pbjogdiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG1heCh2OiBEYXRlLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9ucy5tYXggPSB7IG1heDogdiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRlc3QobmFtZTogc3RyaW5nLCB2OiAoZDogRGF0ZSkgPT4gYm9vbGVhbiwgbWVzc2FnZT86IHN0cmluZykge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMudGVzdCA9IHsgbmFtZTogbmFtZSwgdGVzdDogdiwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlKCkge1xuICByZXR1cm4gbmV3IERhdGVUeXBlKCk7XG59XG4iXX0=
@@ -7,4 +7,5 @@ export * from './lib/model-validator';
7
7
  export * from './lib/type-annotations';
8
8
  export * from './lib/forms.module';
9
9
  export * from './lib/ng-form-model-state.service';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBmb3Jtc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC1lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC12YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZS1hbm5vdGF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctZm9ybS1tb2RlbC1zdGF0ZS5zZXJ2aWNlJztcbiJdfQ==
10
+ export * from './lib/field-errors/field-errors.component';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGZvcm1zXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLWVycm9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsLXNjaGVtYS5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsLXZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlLWFubm90YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1mb3JtLW1vZGVsLXN0YXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtZXJyb3JzL2ZpZWxkLWVycm9ycy5jb21wb25lbnQnO1xuIl19
@@ -1,8 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
2
+ import { Injectable, Component, Input, NgModule } from '@angular/core';
3
3
  import * as Yup from 'yup';
4
4
  import { object } from 'yup';
5
5
  import 'reflect-metadata';
6
+ import * as i1 from '@angular/common';
7
+ import { CommonModule } from '@angular/common';
6
8
  import { __awaiter } from 'tslib';
7
9
  import { BehaviorSubject, switchMap, from } from 'rxjs';
8
10
 
@@ -36,17 +38,8 @@ const registerMetadata = (target, propertyKey, constraint) => {
36
38
  metadata.set(propertyKey, constraint);
37
39
  Reflect.defineMetadata(METADATA_KEY, metadata, target);
38
40
  };
39
- /*
40
- export function OfValues<T>(values: T[], message?: string) {
41
- return function (target: Object, propertyKey: string) {
42
- const o = { values: values, message: message } as OfValuesAnnotations;
43
- o.constraintType = OfValues.name;
44
- registerMetadata(target, propertyKey, o);
45
- };
46
- }*/
47
41
  function Annotate(a) {
48
42
  return function (target, propertyKey) {
49
- console.log('annotations', a.annotations);
50
43
  registerMetadata(target, propertyKey, a.annotations);
51
44
  };
52
45
  }
@@ -73,6 +66,12 @@ function pattern(regex, message) {
73
66
  function length(length, message) {
74
67
  return { length: { length: length, message: message } };
75
68
  }
69
+ function maxLength(maxLength, message) {
70
+ return { maxLength: { maxLength: maxLength, message: message } };
71
+ }
72
+ function minLength(minLength, message) {
73
+ return { minLength: { minLength: minLength, message: message } };
74
+ }
76
75
  function ofValues(values, message) {
77
76
  return { ofValues: { values: values, message: message } };
78
77
  }
@@ -167,8 +166,6 @@ class ModelSchemaFactory {
167
166
  }
168
167
  });
169
168
  const schema = object(shape);
170
- console.log(schema);
171
- console.log(schema.isValidSync({ instructions: null }));
172
169
  return new ModelValidator(schema);
173
170
  }
174
171
  buildStringSchema(options) {
@@ -179,6 +176,15 @@ class ModelSchemaFactory {
179
176
  if (options.length) {
180
177
  schema = schema.length(options.length.length, options.length.message);
181
178
  }
179
+ if (options.maxLength) {
180
+ schema = schema.max(options.maxLength.maxLength, options.maxLength.message);
181
+ }
182
+ if (options.minLength) {
183
+ schema = schema.min(options.minLength.minLength, options.minLength.message);
184
+ }
185
+ if (options.pattern) {
186
+ schema = schema.matches(options.pattern.pattern, options.pattern.message);
187
+ }
182
188
  return schema;
183
189
  }
184
190
  buildBooleanSchema(options) {
@@ -228,15 +234,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImpor
228
234
  }]
229
235
  }], ctorParameters: function () { return []; } });
230
236
 
237
+ class FieldErrorsComponent {
238
+ constructor() { }
239
+ ngOnInit() { }
240
+ }
241
+ FieldErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
242
+ FieldErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: FieldErrorsComponent, selector: "mz-field-errors", inputs: { field: "field" }, ngImport: i0, template: "<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.JsonPipe, name: "json" }] });
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, decorators: [{
244
+ type: Component,
245
+ args: [{ selector: 'mz-field-errors', template: "<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n" }]
246
+ }], ctorParameters: function () { return []; }, propDecorators: { field: [{
247
+ type: Input
248
+ }] } });
249
+
231
250
  class FormsModule {
232
251
  }
233
252
  FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
234
- FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
235
- FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
253
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, declarations: [FieldErrorsComponent], imports: [CommonModule // TODO: can remove once done with temp error displaying
254
+ ], exports: [FieldErrorsComponent] });
255
+ FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, imports: [CommonModule // TODO: can remove once done with temp error displaying
256
+ ] });
236
257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, decorators: [{
237
258
  type: NgModule,
238
259
  args: [{
239
- providers: []
260
+ providers: [],
261
+ declarations: [
262
+ FieldErrorsComponent
263
+ ],
264
+ exports: [
265
+ FieldErrorsComponent
266
+ ],
267
+ imports: [
268
+ CommonModule // TODO: can remove once done with temp error displaying
269
+ ]
240
270
  }]
241
271
  }] });
242
272
 
@@ -244,8 +274,8 @@ class NgFormModelStateFactory {
244
274
  constructor(factory) {
245
275
  this.factory = factory;
246
276
  }
247
- create(form, model) {
248
- const modelState = new NgFormModelState(form, this.factory.build(model), model);
277
+ create(form, model, options) {
278
+ const modelState = new NgFormModelState(form, this.factory.build(model), model, options);
249
279
  return modelState;
250
280
  }
251
281
  }
@@ -258,7 +288,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImpor
258
288
  }]
259
289
  }], ctorParameters: function () { return [{ type: ModelSchemaFactory }]; } });
260
290
  class NgFormModelState {
261
- constructor(form, modelValidator, model) {
291
+ constructor(form, modelValidator, model, options) {
262
292
  this.form = form;
263
293
  this.modelValidator = modelValidator;
264
294
  this.model = model;
@@ -266,11 +296,11 @@ class NgFormModelState {
266
296
  this.errors$ = this.errors.asObservable();
267
297
  this.form.form.valueChanges
268
298
  .pipe(switchMap((x) => __awaiter(this, void 0, void 0, function* () {
269
- return from(this.runValidations());
299
+ this.model = x;
300
+ return from(this.runValidations(options === null || options === void 0 ? void 0 : options.validateCallback));
270
301
  })))
271
302
  .subscribe();
272
303
  this.errors$.subscribe((list) => {
273
- console.log('all errors', list);
274
304
  const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map());
275
305
  grouped.forEach((value, key) => {
276
306
  let validationErrors = {};
@@ -294,11 +324,11 @@ class NgFormModelState {
294
324
  validate() {
295
325
  return this.runValidations().then((x) => true);
296
326
  }
297
- runValidations() {
327
+ runValidations(callback) {
298
328
  return __awaiter(this, void 0, void 0, function* () {
299
- console.log('validating', this.model);
300
329
  const errors = yield this.modelValidator.validate(this.model);
301
- this.errors.next(errors);
330
+ const additional = (callback === null || callback === void 0 ? void 0 : callback()) || [];
331
+ this.errors.next(errors.concat(additional));
302
332
  });
303
333
  }
304
334
  }
@@ -311,5 +341,5 @@ class NgFormModelState {
311
341
  * Generated bundle index. Do not edit.
312
342
  */
313
343
 
314
- export { Annotate, AnnotationType, BooleanType, BooleanType2, ConstraintType, DateType, FormsModule, ModelSchemaFactory, ModelValidator, NgFormModelState, NgFormModelStateFactory, StringType, StringType2, boolean, date, equals, length, ofValues, pattern, required, string };
344
+ export { Annotate, AnnotationType, BooleanType, BooleanType2, ConstraintType, DateType, FieldErrorsComponent, FormsModule, ModelSchemaFactory, ModelValidator, NgFormModelState, NgFormModelStateFactory, StringType, StringType2, boolean, date, equals, length, maxLength, minLength, ofValues, pattern, required, string };
315
345
  //# sourceMappingURL=muziehdesign-forms.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\n/*\nexport function OfValues<T>(values: T[], message?: string) {\n return function (target: Object, propertyKey: string) {\n const o = { values: values, message: message } as OfValuesAnnotations;\n o.constraintType = OfValues.name;\n registerMetadata(target, propertyKey, o);\n };\n}*/\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n console.log('annotations', a.annotations);\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n console.log(schema);\n console.log(schema.isValidSync({ instructions: null }));\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { NgModule } from '@angular/core';\n\n\n\n@NgModule({\n providers: []\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model);\n return modelState;\n }\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n return from(this.runValidations());\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n console.log('all errors', list);\n\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n validate(): Promise<boolean> {\n return this.runValidations().then((x) => true);\n }\n\n private async runValidations(): Promise<void> {\n console.log('validating', this.model);\n const errors = await this.modelValidator.validate(this.model);\n this.errors.next(errors);\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
1
+ {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AbstractControl, NgControl, NgModel } 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 implements OnInit {\n\n @Input() field?: NgControl;\n constructor() {}\n\n ngOnInit(): void { }\n\n}\n","<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n validateCallback: () => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(options?.validateCallback))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n validate(): Promise<boolean> {\n return this.runValidations().then((x) => true);\n }\n\n private async runValidations(callback?: ()=>FieldError[]): Promise<void> {\n const errors = await this.modelValidator.validate(this.model);\n const additional = callback?.() || [];\n this.errors.next(errors.concat(additional));\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
2
+ import { Injectable, Component, Input, NgModule } from '@angular/core';
3
3
  import * as Yup from 'yup';
4
4
  import { object } from 'yup';
5
5
  import 'reflect-metadata';
6
+ import * as i1 from '@angular/common';
7
+ import { CommonModule } from '@angular/common';
6
8
  import { BehaviorSubject, switchMap, from } from 'rxjs';
7
9
 
8
10
  class ModelValidator {
@@ -35,17 +37,8 @@ const registerMetadata = (target, propertyKey, constraint) => {
35
37
  metadata.set(propertyKey, constraint);
36
38
  Reflect.defineMetadata(METADATA_KEY, metadata, target);
37
39
  };
38
- /*
39
- export function OfValues<T>(values: T[], message?: string) {
40
- return function (target: Object, propertyKey: string) {
41
- const o = { values: values, message: message } as OfValuesAnnotations;
42
- o.constraintType = OfValues.name;
43
- registerMetadata(target, propertyKey, o);
44
- };
45
- }*/
46
40
  function Annotate(a) {
47
41
  return function (target, propertyKey) {
48
- console.log('annotations', a.annotations);
49
42
  registerMetadata(target, propertyKey, a.annotations);
50
43
  };
51
44
  }
@@ -72,6 +65,12 @@ function pattern(regex, message) {
72
65
  function length(length, message) {
73
66
  return { length: { length: length, message: message } };
74
67
  }
68
+ function maxLength(maxLength, message) {
69
+ return { maxLength: { maxLength: maxLength, message: message } };
70
+ }
71
+ function minLength(minLength, message) {
72
+ return { minLength: { minLength: minLength, message: message } };
73
+ }
75
74
  function ofValues(values, message) {
76
75
  return { ofValues: { values: values, message: message } };
77
76
  }
@@ -166,8 +165,6 @@ class ModelSchemaFactory {
166
165
  }
167
166
  });
168
167
  const schema = object(shape);
169
- console.log(schema);
170
- console.log(schema.isValidSync({ instructions: null }));
171
168
  return new ModelValidator(schema);
172
169
  }
173
170
  buildStringSchema(options) {
@@ -178,6 +175,15 @@ class ModelSchemaFactory {
178
175
  if (options.length) {
179
176
  schema = schema.length(options.length.length, options.length.message);
180
177
  }
178
+ if (options.maxLength) {
179
+ schema = schema.max(options.maxLength.maxLength, options.maxLength.message);
180
+ }
181
+ if (options.minLength) {
182
+ schema = schema.min(options.minLength.minLength, options.minLength.message);
183
+ }
184
+ if (options.pattern) {
185
+ schema = schema.matches(options.pattern.pattern, options.pattern.message);
186
+ }
181
187
  return schema;
182
188
  }
183
189
  buildBooleanSchema(options) {
@@ -227,15 +233,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImpor
227
233
  }]
228
234
  }], ctorParameters: function () { return []; } });
229
235
 
236
+ class FieldErrorsComponent {
237
+ constructor() { }
238
+ ngOnInit() { }
239
+ }
240
+ FieldErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
241
+ FieldErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: FieldErrorsComponent, selector: "mz-field-errors", inputs: { field: "field" }, ngImport: i0, template: "<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.JsonPipe, name: "json" }] });
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FieldErrorsComponent, decorators: [{
243
+ type: Component,
244
+ args: [{ selector: 'mz-field-errors', template: "<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n" }]
245
+ }], ctorParameters: function () { return []; }, propDecorators: { field: [{
246
+ type: Input
247
+ }] } });
248
+
230
249
  class FormsModule {
231
250
  }
232
251
  FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
233
- FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
234
- FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
252
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, declarations: [FieldErrorsComponent], imports: [CommonModule // TODO: can remove once done with temp error displaying
253
+ ], exports: [FieldErrorsComponent] });
254
+ FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, imports: [CommonModule // TODO: can remove once done with temp error displaying
255
+ ] });
235
256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, decorators: [{
236
257
  type: NgModule,
237
258
  args: [{
238
- providers: []
259
+ providers: [],
260
+ declarations: [
261
+ FieldErrorsComponent
262
+ ],
263
+ exports: [
264
+ FieldErrorsComponent
265
+ ],
266
+ imports: [
267
+ CommonModule // TODO: can remove once done with temp error displaying
268
+ ]
239
269
  }]
240
270
  }] });
241
271
 
@@ -243,8 +273,8 @@ class NgFormModelStateFactory {
243
273
  constructor(factory) {
244
274
  this.factory = factory;
245
275
  }
246
- create(form, model) {
247
- const modelState = new NgFormModelState(form, this.factory.build(model), model);
276
+ create(form, model, options) {
277
+ const modelState = new NgFormModelState(form, this.factory.build(model), model, options);
248
278
  return modelState;
249
279
  }
250
280
  }
@@ -257,7 +287,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImpor
257
287
  }]
258
288
  }], ctorParameters: function () { return [{ type: ModelSchemaFactory }]; } });
259
289
  class NgFormModelState {
260
- constructor(form, modelValidator, model) {
290
+ constructor(form, modelValidator, model, options) {
261
291
  this.form = form;
262
292
  this.modelValidator = modelValidator;
263
293
  this.model = model;
@@ -265,11 +295,11 @@ class NgFormModelState {
265
295
  this.errors$ = this.errors.asObservable();
266
296
  this.form.form.valueChanges
267
297
  .pipe(switchMap(async (x) => {
268
- return from(this.runValidations());
298
+ this.model = x;
299
+ return from(this.runValidations(options?.validateCallback));
269
300
  }))
270
301
  .subscribe();
271
302
  this.errors$.subscribe((list) => {
272
- console.log('all errors', list);
273
303
  const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map());
274
304
  grouped.forEach((value, key) => {
275
305
  let validationErrors = {};
@@ -293,10 +323,10 @@ class NgFormModelState {
293
323
  validate() {
294
324
  return this.runValidations().then((x) => true);
295
325
  }
296
- async runValidations() {
297
- console.log('validating', this.model);
326
+ async runValidations(callback) {
298
327
  const errors = await this.modelValidator.validate(this.model);
299
- this.errors.next(errors);
328
+ const additional = callback?.() || [];
329
+ this.errors.next(errors.concat(additional));
300
330
  }
301
331
  }
302
332
 
@@ -308,5 +338,5 @@ class NgFormModelState {
308
338
  * Generated bundle index. Do not edit.
309
339
  */
310
340
 
311
- export { Annotate, AnnotationType, BooleanType, BooleanType2, ConstraintType, DateType, FormsModule, ModelSchemaFactory, ModelValidator, NgFormModelState, NgFormModelStateFactory, StringType, StringType2, boolean, date, equals, length, ofValues, pattern, required, string };
341
+ export { Annotate, AnnotationType, BooleanType, BooleanType2, ConstraintType, DateType, FieldErrorsComponent, FormsModule, ModelSchemaFactory, ModelValidator, NgFormModelState, NgFormModelStateFactory, StringType, StringType2, boolean, date, equals, length, maxLength, minLength, ofValues, pattern, required, string };
312
342
  //# sourceMappingURL=muziehdesign-forms.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\n/*\nexport function OfValues<T>(values: T[], message?: string) {\n return function (target: Object, propertyKey: string) {\n const o = { values: values, message: message } as OfValuesAnnotations;\n o.constraintType = OfValues.name;\n registerMetadata(target, propertyKey, o);\n };\n}*/\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n console.log('annotations', a.annotations);\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n console.log(schema);\n console.log(schema.isValidSync({ instructions: null }));\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { NgModule } from '@angular/core';\n\n\n\n@NgModule({\n providers: []\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model);\n return modelState;\n }\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n return from(this.runValidations());\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n console.log('all errors', list);\n\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n validate(): Promise<boolean> {\n return this.runValidations().then((x) => true);\n }\n\n private async runValidations(): Promise<void> {\n console.log('validating', this.model);\n const errors = await this.modelValidator.validate(this.model);\n this.errors.next(errors);\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
1
+ {"version":3,"file":"muziehdesign-forms.mjs","sources":["../../../../projects/muziehdesign/forms/src/lib/model-validator.ts","../../../../projects/muziehdesign/forms/src/lib/constants.ts","../../../../projects/muziehdesign/forms/src/lib/type-annotations.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.ts","../../../../projects/muziehdesign/forms/src/lib/field-errors/field-errors.component.html","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/lib/ng-form-model-state.service.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { SchemaOf, ValidationError } from 'yup';\nimport { FieldError } from './field-error';\n\nexport class ModelValidator<T> {\n private schema: SchemaOf<T>;\n constructor(modelSchema: SchemaOf<T>) {\n this.schema = modelSchema;\n }\n\n validate<T>(model: T): Promise<FieldError[]> {\n return this.schema\n .validate(model, { abortEarly: false })\n .then(() => {\n return [];\n })\n .catch((e: ValidationError) => {\n return e.inner.map((error) => <FieldError>{ path: error.path, type: error.type, message: error.message });\n });\n }\n}\n","export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:annotations';\n","import 'reflect-metadata';\n\nconst METADATA_KEY = 'custom:muziehdesign:annotations';\n\nexport enum ConstraintType {\n string,\n boolean,\n date,\n}\n\nexport interface ConstraintAnnotations {\n constraintType: ConstraintType;\n}\n\nexport interface StringTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n length?: LengthAnnotation;\n pattern?: PatternAnnotation;\n maxLength?: MaxLengthAnnotation;\n minLength?: MinLengthAnnotation;\n}\n\nexport interface BooleanTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n equals?: EqualsAnnotation<boolean>;\n}\n\nexport interface DateTypeAnnotations extends ConstraintAnnotations {\n required?: RequiredAnnotation;\n min?: MinimumAnnotation<Date>;\n max?: MaximumAnnotation<Date>;\n test?: TestAnnotation;\n}\n\nexport interface ValidationAnnotation {\n message?: string;\n}\n\nexport interface RequiredAnnotation extends ValidationAnnotation {\n required: boolean;\n}\n\nexport interface LengthAnnotation extends ValidationAnnotation {\n length: number;\n}\n\nexport interface PatternAnnotation extends ValidationAnnotation {\n pattern: RegExp;\n}\n\nexport interface OfValuesAnnotation extends ValidationAnnotation {\n values: [];\n}\n\nexport interface EqualsAnnotation<T> extends ValidationAnnotation {\n equals: T;\n}\n\nexport interface MinimumAnnotation<T> extends ValidationAnnotation {\n min: T;\n}\n\nexport interface MaximumAnnotation<T> extends ValidationAnnotation {\n max: T;\n}\n\nexport interface TestAnnotation extends ValidationAnnotation {\n test: (d:Date) => boolean;\n name: string;\n}\n\nexport interface MaxLengthAnnotation extends ValidationAnnotation {\n maxLength: number;\n}\n\nexport interface MinLengthAnnotation extends ValidationAnnotation {\n minLength: number;\n}\n\nconst registerMetadata = (target: Object, propertyKey: string, constraint: ConstraintAnnotations) => {\n const metadata: Map<string, any> = Reflect.getMetadata(METADATA_KEY, target) || new Map<string, any>();\n metadata.set(propertyKey, constraint);\n Reflect.defineMetadata(METADATA_KEY, metadata, target);\n};\n\nexport function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>) {\n return function (target: Object, propertyKey: string) {\n registerMetadata(target, propertyKey, a.annotations as ConstraintAnnotations);\n };\n}\n\nexport function StringType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as StringTypeAnnotations;\n o.constraintType = ConstraintType.string;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function BooleanType(...annotations: { [key: string]: ValidationAnnotation }[]) {\n return function (target: Object, propertyKey: string) {\n const o = Object.assign({}, ...annotations) as BooleanTypeAnnotations;\n o.constraintType = ConstraintType.boolean;\n registerMetadata(target, propertyKey, o);\n };\n}\n\nexport function required(message?: string): { [key: string]: RequiredAnnotation } {\n return { required: { required: true, message: message } };\n}\n\nexport function pattern(regex: RegExp, message?: string): { [key: string]: PatternAnnotation } {\n return { pattern: { pattern: regex, message: message } };\n}\n\nexport function length(length: number, message?: string): { [key: string]: LengthAnnotation } {\n return { length: { length: length, message: message } };\n}\n\nexport function maxLength(maxLength: number, message?: string): { [key: string]: MaxLengthAnnotation } {\n return { maxLength: { maxLength: maxLength, message: message } };\n}\n\nexport function minLength(minLength: number, message?: string): { [key: string]: MinLengthAnnotation } {\n return { minLength: { minLength: minLength, message: message } };\n}\n\nexport function ofValues(values: [], message?: string): { [key: string]: OfValuesAnnotation } {\n return { ofValues: { values: values, message: message } };\n}\n\nexport function equals<T>(value: T, message?: string): { [key: string]: EqualsAnnotation<T> } {\n return { equals: { equals: value, message: message } };\n}\n\nexport abstract class AnnotationType<T> {\n public abstract readonly name: string;\n public abstract annotations?: T;\n}\n\nexport class StringType2 extends AnnotationType<StringTypeAnnotations> {\n public readonly name: string = 'StringType';\n public annotations: StringTypeAnnotations = {\n constraintType: ConstraintType.string, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public pattern(pattern: RegExp, message?: string) {\n this.annotations.pattern = { pattern: pattern, message: message };\n return this;\n }\n}\n\nexport class BooleanType2 extends AnnotationType<BooleanTypeAnnotations> {\n public readonly name: string = 'BooleanType';\n public annotations: BooleanTypeAnnotations = {\n constraintType: ConstraintType.boolean, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public equals(v: boolean, message?: string) {\n this.annotations.equals = { equals: v, message: message };\n return this;\n }\n}\n\nexport function string() {\n return new StringType2();\n}\n\nexport function boolean() {\n return new BooleanType2();\n}\n\nexport class DateType extends AnnotationType<DateTypeAnnotations> {\n public readonly name: string = 'DateType';\n public annotations: DateTypeAnnotations = {\n constraintType: ConstraintType.date, // TODO\n };\n\n public required(message?: string) {\n this.annotations.required = { required: true, message: message };\n return this;\n }\n\n public min(v: Date, message?: string) {\n this.annotations.min = { min: v, message: message };\n return this;\n }\n\n public max(v: Date, message?: string) {\n this.annotations.max = { max: v, message: message };\n return this;\n }\n\n public test(name: string, v: (d: Date) => boolean, message?: string) {\n this.annotations.test = { name: name, test: v, message: message };\n return this;\n }\n}\n\nexport function date() {\n return new DateType();\n}\n","import { Injectable } from '@angular/core';\nimport { object, SchemaOf } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { BooleanType, BooleanTypeAnnotations, ConstraintAnnotations, ConstraintType, DateTypeAnnotations, StringType2, StringTypeAnnotations } from './type-annotations';\nimport * as Yup from 'yup';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: Map<string, ConstraintAnnotations> = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((value, key) => {\n if (value.constraintType == ConstraintType.string) {\n shape[key] = this.buildStringSchema(value as StringTypeAnnotations);\n } else if (value.constraintType == ConstraintType.boolean) {\n shape[key] = this.buildBooleanSchema(value as BooleanTypeAnnotations);\n } else if (value.constraintType == ConstraintType.date) {\n shape[key] = this.buildDateSchema(value as DateTypeAnnotations);\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringTypeAnnotations) {\n let schema = Yup.string();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.length) {\n schema = schema.length(options.length.length, options.length.message);\n }\n\n if (options.maxLength) {\n schema = schema.max(options.maxLength.maxLength, options.maxLength.message);\n }\n\n if (options.minLength) {\n schema = schema.min(options.minLength.minLength, options.minLength.message);\n }\n\n if (options.pattern) {\n schema = schema.matches(options.pattern.pattern, options.pattern.message);\n }\n\n return schema;\n }\n\n private buildBooleanSchema(options: BooleanTypeAnnotations) {\n let schema = Yup.boolean();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.equals) {\n if (options.equals.equals) {\n schema = schema.isTrue(options.equals.message);\n } else {\n schema = schema.isFalse(options.equals.message);\n }\n }\n\n return schema;\n }\n\n private buildDateSchema(options: DateTypeAnnotations) {\n let schema = Yup.date();\n if (options.required) {\n schema = schema.required(options.required.message);\n }\n if (options.min) {\n schema = schema.min(options.min.min, options.min.message);\n }\n if (options.max) {\n schema = schema.max(options.max.max, options.max.message);\n }\n if (options.test) {\n schema = schema.test({\n name: options.test.name,\n message: options.test.message,\n test: (d?: Date, context?: any) => {\n return options.test!.test(d!);\n }});\n }\n\n return schema;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AbstractControl, NgControl, NgModel } 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 implements OnInit {\n\n @Input() field?: NgControl;\n constructor() {}\n\n ngOnInit(): void { }\n\n}\n","<div>\n field errors:\n {{ field?.errors | json }}\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldErrorsComponent } from './field-errors/field-errors.component';\n\n\n\n@NgModule({\n providers: [],\n declarations: [\n FieldErrorsComponent\n ],\n exports: [\n FieldErrorsComponent\n ],\n imports: [\n CommonModule // TODO: can remove once done with temp error displaying\n ]\n})\nexport class FormsModule { }\n","import { Injectable, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { NgForm, ValidationErrors } from '@angular/forms';\nimport { BehaviorSubject, filter, from, switchMap } from 'rxjs';\nimport { FieldError } from './field-error';\nimport { ModelSchemaFactory } from './model-schema.factory';\nimport { ModelValidator } from './model-validator';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgFormModelStateFactory {\n constructor(private factory: ModelSchemaFactory) {}\n\n create<T>(form: NgForm, model: T, options?: ModelStateOptions) {\n const modelState = new NgFormModelState<T>(form, this.factory.build(model), model, options);\n return modelState;\n }\n}\n\nexport interface ModelStateOptions {\n validateCallback: () => FieldError[]\n}\n\nexport class NgFormModelState<T> {\n private errors: BehaviorSubject<FieldError[]> = new BehaviorSubject<FieldError[]>([]);\n public errors$ = this.errors.asObservable();\n\n constructor(private form: NgForm, private modelValidator: ModelValidator<T>, private model: T, options?: ModelStateOptions) {\n this.form.form.valueChanges\n .pipe(\n switchMap(async (x) => {\n this.model = x;\n return from(this.runValidations(options?.validateCallback))\n })\n )\n .subscribe();\n\n this.errors$.subscribe((list) => {\n const grouped = list.reduce((grouped, v) => grouped.set(v.path, [...(grouped.get(v.path) || []), v]), new Map<string, FieldError[]>());\n\n grouped.forEach((value, key) => {\n let validationErrors = <ValidationErrors>{};\n value.forEach((v) => (validationErrors[v.type] = v.message));\n try {\n this.form.controls[key].setErrors(validationErrors);\n } catch (e) {\n console.log('error setting form control', key);\n throw e;\n }\n });\n });\n }\n\n isValid(): boolean {\n return this.errors.value.length == 0;\n }\n\n setErrors(errors: FieldError[]) {\n this.errors.next(errors);\n }\n\n validate(): Promise<boolean> {\n return this.runValidations().then((x) => true);\n }\n\n private async runValidations(callback?: ()=>FieldError[]): Promise<void> {\n const errors = await this.modelValidator.validate(this.model);\n const additional = callback?.() || [];\n this.errors.next(errors.concat(additional));\n }\n}\n","/*\n * Public API Surface of forms\n */\nexport * from './lib/field-error';\nexport * from './lib/model-schema.factory';\nexport * from './lib/model-validator';\nexport * from './lib/type-annotations';\nexport * from './lib/forms.module';\nexport * from './lib/ng-form-model-state.service';\nexport * from './lib/field-errors/field-errors.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModelSchemaFactory"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FieldErrorsComponent implements OnInit {
5
+ field?: NgControl;
6
+ constructor();
7
+ ngOnInit(): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<FieldErrorsComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldErrorsComponent, "mz-field-errors", never, { "field": "field"; }, {}, never, never, false>;
10
+ }
@@ -1,6 +1,8 @@
1
1
  import * as i0 from "@angular/core";
2
+ import * as i1 from "./field-errors/field-errors.component";
3
+ import * as i2 from "@angular/common";
2
4
  export declare class FormsModule {
3
5
  static ɵfac: i0.ɵɵFactoryDeclaration<FormsModule, never>;
4
- static ɵmod: i0.ɵɵNgModuleDeclaration<FormsModule, never, never, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FormsModule, [typeof i1.FieldErrorsComponent], [typeof i2.CommonModule], [typeof i1.FieldErrorsComponent]>;
5
7
  static ɵinj: i0.ɵɵInjectorDeclaration<FormsModule>;
6
8
  }
@@ -6,17 +6,20 @@ import * as i0 from "@angular/core";
6
6
  export declare class NgFormModelStateFactory {
7
7
  private factory;
8
8
  constructor(factory: ModelSchemaFactory);
9
- create<T>(form: NgForm, model: T): NgFormModelState<T>;
9
+ create<T>(form: NgForm, model: T, options?: ModelStateOptions): NgFormModelState<T>;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<NgFormModelStateFactory, never>;
11
11
  static ɵprov: i0.ɵɵInjectableDeclaration<NgFormModelStateFactory>;
12
12
  }
13
+ export interface ModelStateOptions {
14
+ validateCallback: () => FieldError[];
15
+ }
13
16
  export declare class NgFormModelState<T> {
14
17
  private form;
15
18
  private modelValidator;
16
19
  private model;
17
20
  private errors;
18
21
  errors$: import("rxjs").Observable<FieldError[]>;
19
- constructor(form: NgForm, modelValidator: ModelValidator<T>, model: T);
22
+ constructor(form: NgForm, modelValidator: ModelValidator<T>, model: T, options?: ModelStateOptions);
20
23
  isValid(): boolean;
21
24
  setErrors(errors: FieldError[]): void;
22
25
  validate(): Promise<boolean>;
@@ -11,6 +11,8 @@ export interface StringTypeAnnotations extends ConstraintAnnotations {
11
11
  required?: RequiredAnnotation;
12
12
  length?: LengthAnnotation;
13
13
  pattern?: PatternAnnotation;
14
+ maxLength?: MaxLengthAnnotation;
15
+ minLength?: MinLengthAnnotation;
14
16
  }
15
17
  export interface BooleanTypeAnnotations extends ConstraintAnnotations {
16
18
  required?: RequiredAnnotation;
@@ -50,6 +52,12 @@ export interface TestAnnotation extends ValidationAnnotation {
50
52
  test: (d: Date) => boolean;
51
53
  name: string;
52
54
  }
55
+ export interface MaxLengthAnnotation extends ValidationAnnotation {
56
+ maxLength: number;
57
+ }
58
+ export interface MinLengthAnnotation extends ValidationAnnotation {
59
+ minLength: number;
60
+ }
53
61
  export declare function Annotate<T extends ConstraintAnnotations>(a: AnnotationType<T>): (target: Object, propertyKey: string) => void;
54
62
  export declare function StringType(...annotations: {
55
63
  [key: string]: ValidationAnnotation;
@@ -66,6 +74,12 @@ export declare function pattern(regex: RegExp, message?: string): {
66
74
  export declare function length(length: number, message?: string): {
67
75
  [key: string]: LengthAnnotation;
68
76
  };
77
+ export declare function maxLength(maxLength: number, message?: string): {
78
+ [key: string]: MaxLengthAnnotation;
79
+ };
80
+ export declare function minLength(minLength: number, message?: string): {
81
+ [key: string]: MinLengthAnnotation;
82
+ };
69
83
  export declare function ofValues(values: [], message?: string): {
70
84
  [key: string]: OfValuesAnnotation;
71
85
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muziehdesign/forms",
3
- "version": "0.0.1-alpha.74",
3
+ "version": "0.0.1-alpha.86",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0"
package/public-api.d.ts CHANGED
@@ -4,3 +4,4 @@ export * from './lib/model-validator';
4
4
  export * from './lib/type-annotations';
5
5
  export * from './lib/forms.module';
6
6
  export * from './lib/ng-form-model-state.service';
7
+ export * from './lib/field-errors/field-errors.component';