@muziehdesign/forms 0.0.1-alpha.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # Forms
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.0.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project forms` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project forms`.
8
+ > Note: Don't forget to add `--project forms` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build forms` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build forms`, go to the dist folder `cd dist/forms` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test forms` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,2 @@
1
+ export const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:schema';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNDSEVNQV9NRVRBREFUQV9OQU1FU1BBQ0UgPSAnY3VzdG9tOm11emllaGRlc2lnbjpzY2hlbWEnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9maWVsZC1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWVsZEVycm9yIHtcbiAgcGF0aDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { NgModule } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FormsModule {
4
+ }
5
+ 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
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, decorators: [{
9
+ type: NgModule,
10
+ args: [{
11
+ providers: []
12
+ }]
13
+ }] });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvZm9ybXMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT3pDLE1BQU0sT0FBTyxXQUFXOzt3R0FBWCxXQUFXO3lHQUFYLFdBQVc7eUdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUh2QixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgRm9ybXNNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { boolean, object, string } from 'yup';
3
+ import { ModelValidator } from './model-validator';
4
+ import { SCHEMA_METADATA_NAMESPACE } from './constants';
5
+ import { PropertyType } from './property-type.enum';
6
+ import * as i0 from "@angular/core";
7
+ export class ModelSchemaFactory {
8
+ constructor() { }
9
+ build(model) {
10
+ const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);
11
+ let shape = {};
12
+ metadata.forEach((element) => {
13
+ if (element.type == PropertyType.string) {
14
+ shape[element.name] = this.buildStringSchema(element.options || {});
15
+ }
16
+ else if (element.type == PropertyType.boolean) {
17
+ shape[element.name] = this.buildBooleanSchema(element.options || {});
18
+ }
19
+ });
20
+ const schema = object(shape);
21
+ return new ModelValidator(schema);
22
+ }
23
+ buildStringSchema(options) {
24
+ let stringSchema = string();
25
+ if (options.required) {
26
+ stringSchema = stringSchema.required();
27
+ }
28
+ if (options.length) {
29
+ stringSchema = stringSchema.length(options.length);
30
+ }
31
+ if (options.minimum) {
32
+ stringSchema = stringSchema.min(options.minimum);
33
+ }
34
+ if (options.maximum) {
35
+ stringSchema = stringSchema.max(options.maximum);
36
+ }
37
+ return stringSchema;
38
+ }
39
+ buildBooleanSchema(options) {
40
+ let booleanSchema = boolean();
41
+ if (options.equals) {
42
+ return booleanSchema.test({
43
+ name: 'mustBe',
44
+ test: (value) => value == options.equals
45
+ });
46
+ }
47
+ return booleanSchema;
48
+ }
49
+ }
50
+ ModelSchemaFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
+ ModelSchemaFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, providedIn: 'root' });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, decorators: [{
53
+ type: Injectable,
54
+ args: [{
55
+ providedIn: 'root',
56
+ }]
57
+ }], ctorParameters: function () { return []; } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtc2NoZW1hLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tdXppZWhkZXNpZ24vZm9ybXMvc3JjL2xpYi9tb2RlbC1zY2hlbWEuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFZLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBSSxLQUFRO1FBQ2YsTUFBTSxRQUFRLEdBQTRDLE9BQU8sQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEgsSUFBSSxLQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7YUFDckU7aUJBQU0sSUFBRyxPQUFPLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUU7Z0JBQzlDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7YUFDdEU7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQWdCLENBQUM7UUFDNUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBNEI7UUFDcEQsSUFBSSxZQUFZLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDNUIsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BCLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEIsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQixZQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBNkI7UUFDdEQsSUFBSSxhQUFhLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU07YUFDeEMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOzsrR0E3Q1Usa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYm9vbGVhbiwgb2JqZWN0LCBTY2hlbWFPZiwgc3RyaW5nIH0gZnJvbSAneXVwJztcbmltcG9ydCB7IE1vZGVsVmFsaWRhdG9yIH0gZnJvbSAnLi9tb2RlbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgQm9vbGVhblNjaGVtYU9wdGlvbnMsIFNjaGVtYU9wdGlvbnMsIFN0cmluZ1NjaGVtYU9wdGlvbnMgfSBmcm9tICcuL3N0cmluZy1zY2hlbWEnO1xuaW1wb3J0IHsgU0NIRU1BX01FVEFEQVRBX05BTUVTUEFDRSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9iamVjdFNoYXBlIH0gZnJvbSAneXVwL2xpYi9vYmplY3QnO1xuaW1wb3J0IHsgUHJvcGVydHlTY2hlbWFNZXRhZGF0YSB9IGZyb20gJy4vcHJvcGVydHktc2NoZW1hLW1ldGFkYXRhJztcbmltcG9ydCB7IFByb3BlcnR5VHlwZSB9IGZyb20gJy4vcHJvcGVydHktdHlwZS5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGVsU2NoZW1hRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBidWlsZDxUPihtb2RlbDogVCk6IE1vZGVsVmFsaWRhdG9yPFQ+IHtcbiAgICBjb25zdCBtZXRhZGF0YTogUHJvcGVydHlTY2hlbWFNZXRhZGF0YTxTY2hlbWFPcHRpb25zPltdID0gUmVmbGVjdC5nZXRNZXRhZGF0YShTQ0hFTUFfTUVUQURBVEFfTkFNRVNQQUNFLCBtb2RlbCk7XG4gICAgbGV0IHNoYXBlOiBPYmplY3RTaGFwZSA9IHt9O1xuICAgIG1ldGFkYXRhLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gUHJvcGVydHlUeXBlLnN0cmluZykge1xuICAgICAgICBzaGFwZVtlbGVtZW50Lm5hbWVdID0gdGhpcy5idWlsZFN0cmluZ1NjaGVtYShlbGVtZW50Lm9wdGlvbnMgfHwge30pO1xuICAgICAgfSBlbHNlIGlmKGVsZW1lbnQudHlwZSA9PSBQcm9wZXJ0eVR5cGUuYm9vbGVhbikge1xuICAgICAgICBzaGFwZVtlbGVtZW50Lm5hbWVdID0gdGhpcy5idWlsZEJvb2xlYW5TY2hlbWEoZWxlbWVudC5vcHRpb25zIHx8IHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzY2hlbWEgPSBvYmplY3Qoc2hhcGUpIGFzIFNjaGVtYU9mPFQ+O1xuICAgIHJldHVybiBuZXcgTW9kZWxWYWxpZGF0b3Ioc2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdHJpbmdTY2hlbWEob3B0aW9uczogU3RyaW5nU2NoZW1hT3B0aW9ucykge1xuICAgIGxldCBzdHJpbmdTY2hlbWEgPSBzdHJpbmcoKTtcbiAgICBpZiAob3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLnJlcXVpcmVkKCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLmxlbmd0aChvcHRpb25zLmxlbmd0aCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1pbmltdW0pIHtcbiAgICAgIHN0cmluZ1NjaGVtYSA9IHN0cmluZ1NjaGVtYS5taW4ob3B0aW9ucy5taW5pbXVtKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWF4aW11bSkge1xuICAgICAgc3RyaW5nU2NoZW1hID0gc3RyaW5nU2NoZW1hLm1heChvcHRpb25zLm1heGltdW0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdTY2hlbWE7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQm9vbGVhblNjaGVtYShvcHRpb25zOiBCb29sZWFuU2NoZW1hT3B0aW9ucykge1xuICAgIGxldCBib29sZWFuU2NoZW1hID0gYm9vbGVhbigpO1xuICAgIGlmKG9wdGlvbnMuZXF1YWxzKSB7XG4gICAgICByZXR1cm4gYm9vbGVhblNjaGVtYS50ZXN0KHtcbiAgICAgICAgbmFtZTogJ211c3RCZScsXG4gICAgICAgIHRlc3Q6ICh2YWx1ZSk9PiB2YWx1ZSA9PSBvcHRpb25zLmVxdWFsc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvb2xlYW5TY2hlbWE7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ export class ModelValidator {
2
+ constructor(modelSchema) {
3
+ this.schema = modelSchema;
4
+ }
5
+ validate(model) {
6
+ return this.schema
7
+ .validate(model, { abortEarly: false })
8
+ .then(() => {
9
+ return [];
10
+ })
11
+ .catch((e) => {
12
+ return e.inner.map((error) => ({ path: error.path, type: error.type, message: error.message }));
13
+ });
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvbW9kZWwtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQVksV0FBd0I7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVEsQ0FBSSxLQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLENBQWtCLEVBQUUsRUFBRTtZQUM1QixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQSxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2hlbWFPZiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAneXVwJztcbmltcG9ydCB7IEZpZWxkRXJyb3IgfSBmcm9tICcuL2ZpZWxkLWVycm9yJztcblxuZXhwb3J0IGNsYXNzIE1vZGVsVmFsaWRhdG9yPFQ+IHtcbiAgcHJpdmF0ZSBzY2hlbWE6IFNjaGVtYU9mPFQ+O1xuICBjb25zdHJ1Y3Rvcihtb2RlbFNjaGVtYTogU2NoZW1hT2Y8VD4pIHtcbiAgICB0aGlzLnNjaGVtYSA9IG1vZGVsU2NoZW1hO1xuICB9XG5cbiAgdmFsaWRhdGU8VD4obW9kZWw6IFQpOiBQcm9taXNlPEZpZWxkRXJyb3JbXT4ge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYVxuICAgICAgLnZhbGlkYXRlKG1vZGVsLCB7IGFib3J0RWFybHk6IGZhbHNlIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGU6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gZS5pbm5lci5tYXAoKGVycm9yKSA9PiA8RmllbGRFcnJvcj57IHBhdGg6IGVycm9yLnBhdGgsIHR5cGU6IGVycm9yLnR5cGUsIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktc2NoZW1hLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvcHJvcGVydHktc2NoZW1hLW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eVR5cGUgfSBmcm9tIFwiLi9wcm9wZXJ0eS10eXBlLmVudW1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eVNjaGVtYU1ldGFkYXRhPFQ+IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBQcm9wZXJ0eVR5cGU7XG4gIG9wdGlvbnM6IFQ7XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export var PropertyType;
2
+ (function (PropertyType) {
3
+ PropertyType[PropertyType["string"] = 0] = "string";
4
+ PropertyType[PropertyType["number"] = 1] = "number";
5
+ PropertyType[PropertyType["array"] = 2] = "array";
6
+ PropertyType[PropertyType["boolean"] = 3] = "boolean";
7
+ })(PropertyType || (PropertyType = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktdHlwZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9saWIvcHJvcGVydHktdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFlBS1g7QUFMRCxXQUFZLFlBQVk7SUFDdEIsbURBQU0sQ0FBQTtJQUNOLG1EQUFNLENBQUE7SUFDTixpREFBSyxDQUFBO0lBQ0wscURBQU8sQ0FBQTtBQUNULENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFByb3BlcnR5VHlwZSB7XG4gIHN0cmluZyxcbiAgbnVtYmVyLFxuICBhcnJheSxcbiAgYm9vbGVhblxufVxuIl19
@@ -0,0 +1,27 @@
1
+ import 'reflect-metadata';
2
+ import { PropertyType } from './property-type.enum';
3
+ export function StringSchema(options) {
4
+ return function (target, propertyKey) {
5
+ const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];
6
+ metadata.push({
7
+ name: propertyKey,
8
+ type: PropertyType.string,
9
+ options: options,
10
+ });
11
+ // TODO: define on property
12
+ Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);
13
+ };
14
+ }
15
+ export function BooleanSchema(options) {
16
+ return function (target, propertyKey) {
17
+ const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];
18
+ metadata.push({
19
+ name: propertyKey,
20
+ type: PropertyType.boolean,
21
+ options: options,
22
+ });
23
+ // TODO: define on property
24
+ Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);
25
+ };
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvbGliL3N0cmluZy1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZcEQsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUE2QjtJQUN4RCxPQUFPLFVBQVUsTUFBYyxFQUFFLFdBQTRCO1FBQzNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsNEJBQTRCLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pGLFFBQVEsQ0FBQyxJQUFJLENBQThDO1lBQ3pELElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxZQUFZLENBQUMsTUFBTTtZQUN6QixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7UUFDSCwyQkFBMkI7UUFDM0IsT0FBTyxDQUFDLGNBQWMsQ0FBQyw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQU1ELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBOEI7SUFDMUQsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUE0QjtRQUMzRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRixRQUFRLENBQUMsSUFBSSxDQUE4QztZQUN6RCxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU87WUFDMUIsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQyxDQUFDO1FBQ0gsMkJBQTJCO1FBQzNCLE9BQU8sQ0FBQyxjQUFjLENBQUMsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgUHJvcGVydHlTY2hlbWFNZXRhZGF0YSB9IGZyb20gJy4vcHJvcGVydHktc2NoZW1hLW1ldGFkYXRhJztcbmltcG9ydCB7IFByb3BlcnR5VHlwZSB9IGZyb20gJy4vcHJvcGVydHktdHlwZS5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdTY2hlbWFPcHRpb25zIGV4dGVuZHMgU2NoZW1hT3B0aW9ucyB7XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgbWluaW11bT86IG51bWJlcjtcbiAgbWF4aW11bT86IG51bWJlcjtcbiAgcGF0dGVybj86IFJlZ0V4cDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hT3B0aW9ucyB7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ1NjaGVtYShvcHRpb25zPzogU3RyaW5nU2NoZW1hT3B0aW9ucykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgU3ltYm9sKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdjdXN0b206bXV6aWVoZGVzaWduOnNjaGVtYScsIHRhcmdldCkgfHwgW107XG4gICAgbWV0YWRhdGEucHVzaCg8UHJvcGVydHlTY2hlbWFNZXRhZGF0YTxTdHJpbmdTY2hlbWFPcHRpb25zPj57XG4gICAgICBuYW1lOiBwcm9wZXJ0eUtleSxcbiAgICAgIHR5cGU6IFByb3BlcnR5VHlwZS5zdHJpbmcsXG4gICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIH0pO1xuICAgIC8vIFRPRE86IGRlZmluZSBvbiBwcm9wZXJ0eVxuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbTptdXppZWhkZXNpZ246c2NoZW1hJywgbWV0YWRhdGEsIHRhcmdldCk7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhblNjaGVtYU9wdGlvbnMgZXh0ZW5kcyBTY2hlbWFPcHRpb25zIHtcbiAgZXF1YWxzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5TY2hlbWEob3B0aW9ucz86IEJvb2xlYW5TY2hlbWFPcHRpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBTeW1ib2wpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2N1c3RvbTptdXppZWhkZXNpZ246c2NoZW1hJywgdGFyZ2V0KSB8fCBbXTtcbiAgICBtZXRhZGF0YS5wdXNoKDxQcm9wZXJ0eVNjaGVtYU1ldGFkYXRhPFN0cmluZ1NjaGVtYU9wdGlvbnM+PntcbiAgICAgIG5hbWU6IHByb3BlcnR5S2V5LFxuICAgICAgdHlwZTogUHJvcGVydHlUeXBlLmJvb2xlYW4sXG4gICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgIH0pO1xuICAgIC8vIFRPRE86IGRlZmluZSBvbiBwcm9wZXJ0eVxuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ2N1c3RvbTptdXppZWhkZXNpZ246c2NoZW1hJywgbWV0YWRhdGEsIHRhcmdldCk7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV6aWVoZGVzaWduLWZvcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbXV6aWVoZGVzaWduL2Zvcm1zL3NyYy9tdXppZWhkZXNpZ24tZm9ybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Public API Surface of forms
3
+ */
4
+ export * from './lib/field-error';
5
+ export * from './lib/model-schema.factory';
6
+ export * from './lib/model-validator';
7
+ export * from './lib/string-schema';
8
+ export * from './lib/forms.module';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL211emllaGRlc2lnbi9mb3Jtcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZm9ybXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtZXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwtc2NoZW1hLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwtdmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmluZy1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMubW9kdWxlJztcbiJdfQ==
@@ -0,0 +1,130 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, NgModule } from '@angular/core';
3
+ import { object, string, boolean } from 'yup';
4
+ import 'reflect-metadata';
5
+
6
+ class ModelValidator {
7
+ constructor(modelSchema) {
8
+ this.schema = modelSchema;
9
+ }
10
+ validate(model) {
11
+ return this.schema
12
+ .validate(model, { abortEarly: false })
13
+ .then(() => {
14
+ return [];
15
+ })
16
+ .catch((e) => {
17
+ return e.inner.map((error) => ({ path: error.path, type: error.type, message: error.message }));
18
+ });
19
+ }
20
+ }
21
+
22
+ const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:schema';
23
+
24
+ var PropertyType;
25
+ (function (PropertyType) {
26
+ PropertyType[PropertyType["string"] = 0] = "string";
27
+ PropertyType[PropertyType["number"] = 1] = "number";
28
+ PropertyType[PropertyType["array"] = 2] = "array";
29
+ PropertyType[PropertyType["boolean"] = 3] = "boolean";
30
+ })(PropertyType || (PropertyType = {}));
31
+
32
+ class ModelSchemaFactory {
33
+ constructor() { }
34
+ build(model) {
35
+ const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);
36
+ let shape = {};
37
+ metadata.forEach((element) => {
38
+ if (element.type == PropertyType.string) {
39
+ shape[element.name] = this.buildStringSchema(element.options || {});
40
+ }
41
+ else if (element.type == PropertyType.boolean) {
42
+ shape[element.name] = this.buildBooleanSchema(element.options || {});
43
+ }
44
+ });
45
+ const schema = object(shape);
46
+ return new ModelValidator(schema);
47
+ }
48
+ buildStringSchema(options) {
49
+ let stringSchema = string();
50
+ if (options.required) {
51
+ stringSchema = stringSchema.required();
52
+ }
53
+ if (options.length) {
54
+ stringSchema = stringSchema.length(options.length);
55
+ }
56
+ if (options.minimum) {
57
+ stringSchema = stringSchema.min(options.minimum);
58
+ }
59
+ if (options.maximum) {
60
+ stringSchema = stringSchema.max(options.maximum);
61
+ }
62
+ return stringSchema;
63
+ }
64
+ buildBooleanSchema(options) {
65
+ let booleanSchema = boolean();
66
+ if (options.equals) {
67
+ return booleanSchema.test({
68
+ name: 'mustBe',
69
+ test: (value) => value == options.equals
70
+ });
71
+ }
72
+ return booleanSchema;
73
+ }
74
+ }
75
+ ModelSchemaFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
76
+ ModelSchemaFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, providedIn: 'root' });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, decorators: [{
78
+ type: Injectable,
79
+ args: [{
80
+ providedIn: 'root',
81
+ }]
82
+ }], ctorParameters: function () { return []; } });
83
+
84
+ function StringSchema(options) {
85
+ return function (target, propertyKey) {
86
+ const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];
87
+ metadata.push({
88
+ name: propertyKey,
89
+ type: PropertyType.string,
90
+ options: options,
91
+ });
92
+ // TODO: define on property
93
+ Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);
94
+ };
95
+ }
96
+ function BooleanSchema(options) {
97
+ return function (target, propertyKey) {
98
+ const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];
99
+ metadata.push({
100
+ name: propertyKey,
101
+ type: PropertyType.boolean,
102
+ options: options,
103
+ });
104
+ // TODO: define on property
105
+ Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);
106
+ };
107
+ }
108
+
109
+ class FormsModule {
110
+ }
111
+ FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
112
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
113
+ FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, decorators: [{
115
+ type: NgModule,
116
+ args: [{
117
+ providers: []
118
+ }]
119
+ }] });
120
+
121
+ /*
122
+ * Public API Surface of forms
123
+ */
124
+
125
+ /**
126
+ * Generated bundle index. Do not edit.
127
+ */
128
+
129
+ export { BooleanSchema, FormsModule, ModelSchemaFactory, ModelValidator, StringSchema };
130
+ //# sourceMappingURL=muziehdesign-forms.mjs.map
@@ -0,0 +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/property-type.enum.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/string-schema.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { 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:schema';\n","export enum PropertyType {\n string,\n number,\n array,\n boolean\n}\n","import { Injectable } from '@angular/core';\nimport { boolean, object, SchemaOf, string } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { BooleanSchemaOptions, SchemaOptions, StringSchemaOptions } from './string-schema';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { PropertySchemaMetadata } from './property-schema-metadata';\nimport { PropertyType } from './property-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: PropertySchemaMetadata<SchemaOptions>[] = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((element) => {\n if (element.type == PropertyType.string) {\n shape[element.name] = this.buildStringSchema(element.options || {});\n } else if(element.type == PropertyType.boolean) {\n shape[element.name] = this.buildBooleanSchema(element.options || {});\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringSchemaOptions) {\n let stringSchema = string();\n if (options.required) {\n stringSchema = stringSchema.required();\n }\n if (options.length) {\n stringSchema = stringSchema.length(options.length);\n }\n if (options.minimum) {\n stringSchema = stringSchema.min(options.minimum);\n }\n if (options.maximum) {\n stringSchema = stringSchema.max(options.maximum);\n }\n\n return stringSchema;\n }\n\n private buildBooleanSchema(options: BooleanSchemaOptions) {\n let booleanSchema = boolean();\n if(options.equals) {\n return booleanSchema.test({\n name: 'mustBe',\n test: (value)=> value == options.equals\n });\n }\n\n return booleanSchema;\n }\n}\n","import 'reflect-metadata';\nimport { PropertySchemaMetadata } from './property-schema-metadata';\nimport { PropertyType } from './property-type.enum';\n\nexport interface StringSchemaOptions extends SchemaOptions {\n length?: number;\n minimum?: number;\n maximum?: number;\n pattern?: RegExp;\n}\nexport interface SchemaOptions {\n required?: boolean;\n}\n\nexport function StringSchema(options?: StringSchemaOptions) {\n return function (target: Object, propertyKey: string | Symbol) {\n const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];\n metadata.push(<PropertySchemaMetadata<StringSchemaOptions>>{\n name: propertyKey,\n type: PropertyType.string,\n options: options,\n });\n // TODO: define on property\n Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);\n };\n}\n\nexport interface BooleanSchemaOptions extends SchemaOptions {\n equals?: boolean;\n}\n\nexport function BooleanSchema(options?: BooleanSchemaOptions) {\n return function (target: Object, propertyKey: string | Symbol) {\n const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];\n metadata.push(<PropertySchemaMetadata<StringSchemaOptions>>{\n name: propertyKey,\n type: PropertyType.boolean,\n options: options,\n });\n // TODO: define on property\n Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);\n };\n}\n","import { NgModule } from '@angular/core';\n\n\n\n@NgModule({\n providers: []\n})\nexport class FormsModule { }\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/string-schema';\nexport * from './lib/forms.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, NgModule } from '@angular/core';
3
+ import { object, string, boolean } from 'yup';
4
+ import 'reflect-metadata';
5
+
6
+ class ModelValidator {
7
+ constructor(modelSchema) {
8
+ this.schema = modelSchema;
9
+ }
10
+ validate(model) {
11
+ return this.schema
12
+ .validate(model, { abortEarly: false })
13
+ .then(() => {
14
+ return [];
15
+ })
16
+ .catch((e) => {
17
+ return e.inner.map((error) => ({ path: error.path, type: error.type, message: error.message }));
18
+ });
19
+ }
20
+ }
21
+
22
+ const SCHEMA_METADATA_NAMESPACE = 'custom:muziehdesign:schema';
23
+
24
+ var PropertyType;
25
+ (function (PropertyType) {
26
+ PropertyType[PropertyType["string"] = 0] = "string";
27
+ PropertyType[PropertyType["number"] = 1] = "number";
28
+ PropertyType[PropertyType["array"] = 2] = "array";
29
+ PropertyType[PropertyType["boolean"] = 3] = "boolean";
30
+ })(PropertyType || (PropertyType = {}));
31
+
32
+ class ModelSchemaFactory {
33
+ constructor() { }
34
+ build(model) {
35
+ const metadata = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);
36
+ let shape = {};
37
+ metadata.forEach((element) => {
38
+ if (element.type == PropertyType.string) {
39
+ shape[element.name] = this.buildStringSchema(element.options || {});
40
+ }
41
+ else if (element.type == PropertyType.boolean) {
42
+ shape[element.name] = this.buildBooleanSchema(element.options || {});
43
+ }
44
+ });
45
+ const schema = object(shape);
46
+ return new ModelValidator(schema);
47
+ }
48
+ buildStringSchema(options) {
49
+ let stringSchema = string();
50
+ if (options.required) {
51
+ stringSchema = stringSchema.required();
52
+ }
53
+ if (options.length) {
54
+ stringSchema = stringSchema.length(options.length);
55
+ }
56
+ if (options.minimum) {
57
+ stringSchema = stringSchema.min(options.minimum);
58
+ }
59
+ if (options.maximum) {
60
+ stringSchema = stringSchema.max(options.maximum);
61
+ }
62
+ return stringSchema;
63
+ }
64
+ buildBooleanSchema(options) {
65
+ let booleanSchema = boolean();
66
+ if (options.equals) {
67
+ return booleanSchema.test({
68
+ name: 'mustBe',
69
+ test: (value) => value == options.equals
70
+ });
71
+ }
72
+ return booleanSchema;
73
+ }
74
+ }
75
+ ModelSchemaFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
76
+ ModelSchemaFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, providedIn: 'root' });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ModelSchemaFactory, decorators: [{
78
+ type: Injectable,
79
+ args: [{
80
+ providedIn: 'root',
81
+ }]
82
+ }], ctorParameters: function () { return []; } });
83
+
84
+ function StringSchema(options) {
85
+ return function (target, propertyKey) {
86
+ const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];
87
+ metadata.push({
88
+ name: propertyKey,
89
+ type: PropertyType.string,
90
+ options: options,
91
+ });
92
+ // TODO: define on property
93
+ Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);
94
+ };
95
+ }
96
+ function BooleanSchema(options) {
97
+ return function (target, propertyKey) {
98
+ const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];
99
+ metadata.push({
100
+ name: propertyKey,
101
+ type: PropertyType.boolean,
102
+ options: options,
103
+ });
104
+ // TODO: define on property
105
+ Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);
106
+ };
107
+ }
108
+
109
+ class FormsModule {
110
+ }
111
+ FormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
112
+ FormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
113
+ FormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: FormsModule, decorators: [{
115
+ type: NgModule,
116
+ args: [{
117
+ providers: []
118
+ }]
119
+ }] });
120
+
121
+ /*
122
+ * Public API Surface of forms
123
+ */
124
+
125
+ /**
126
+ * Generated bundle index. Do not edit.
127
+ */
128
+
129
+ export { BooleanSchema, FormsModule, ModelSchemaFactory, ModelValidator, StringSchema };
130
+ //# sourceMappingURL=muziehdesign-forms.mjs.map
@@ -0,0 +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/property-type.enum.ts","../../../../projects/muziehdesign/forms/src/lib/model-schema.factory.ts","../../../../projects/muziehdesign/forms/src/lib/string-schema.ts","../../../../projects/muziehdesign/forms/src/lib/forms.module.ts","../../../../projects/muziehdesign/forms/src/public-api.ts","../../../../projects/muziehdesign/forms/src/muziehdesign-forms.ts"],"sourcesContent":["import { 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:schema';\n","export enum PropertyType {\n string,\n number,\n array,\n boolean\n}\n","import { Injectable } from '@angular/core';\nimport { boolean, object, SchemaOf, string } from 'yup';\nimport { ModelValidator } from './model-validator';\nimport { BooleanSchemaOptions, SchemaOptions, StringSchemaOptions } from './string-schema';\nimport { SCHEMA_METADATA_NAMESPACE } from './constants';\nimport { ObjectShape } from 'yup/lib/object';\nimport { PropertySchemaMetadata } from './property-schema-metadata';\nimport { PropertyType } from './property-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModelSchemaFactory {\n constructor() {}\n\n build<T>(model: T): ModelValidator<T> {\n const metadata: PropertySchemaMetadata<SchemaOptions>[] = Reflect.getMetadata(SCHEMA_METADATA_NAMESPACE, model);\n let shape: ObjectShape = {};\n metadata.forEach((element) => {\n if (element.type == PropertyType.string) {\n shape[element.name] = this.buildStringSchema(element.options || {});\n } else if(element.type == PropertyType.boolean) {\n shape[element.name] = this.buildBooleanSchema(element.options || {});\n }\n });\n const schema = object(shape) as SchemaOf<T>;\n return new ModelValidator(schema);\n }\n\n private buildStringSchema(options: StringSchemaOptions) {\n let stringSchema = string();\n if (options.required) {\n stringSchema = stringSchema.required();\n }\n if (options.length) {\n stringSchema = stringSchema.length(options.length);\n }\n if (options.minimum) {\n stringSchema = stringSchema.min(options.minimum);\n }\n if (options.maximum) {\n stringSchema = stringSchema.max(options.maximum);\n }\n\n return stringSchema;\n }\n\n private buildBooleanSchema(options: BooleanSchemaOptions) {\n let booleanSchema = boolean();\n if(options.equals) {\n return booleanSchema.test({\n name: 'mustBe',\n test: (value)=> value == options.equals\n });\n }\n\n return booleanSchema;\n }\n}\n","import 'reflect-metadata';\nimport { PropertySchemaMetadata } from './property-schema-metadata';\nimport { PropertyType } from './property-type.enum';\n\nexport interface StringSchemaOptions extends SchemaOptions {\n length?: number;\n minimum?: number;\n maximum?: number;\n pattern?: RegExp;\n}\nexport interface SchemaOptions {\n required?: boolean;\n}\n\nexport function StringSchema(options?: StringSchemaOptions) {\n return function (target: Object, propertyKey: string | Symbol) {\n const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];\n metadata.push(<PropertySchemaMetadata<StringSchemaOptions>>{\n name: propertyKey,\n type: PropertyType.string,\n options: options,\n });\n // TODO: define on property\n Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);\n };\n}\n\nexport interface BooleanSchemaOptions extends SchemaOptions {\n equals?: boolean;\n}\n\nexport function BooleanSchema(options?: BooleanSchemaOptions) {\n return function (target: Object, propertyKey: string | Symbol) {\n const metadata = Reflect.getMetadata('custom:muziehdesign:schema', target) || [];\n metadata.push(<PropertySchemaMetadata<StringSchemaOptions>>{\n name: propertyKey,\n type: PropertyType.boolean,\n options: options,\n });\n // TODO: define on property\n Reflect.defineMetadata('custom:muziehdesign:schema', metadata, target);\n };\n}\n","import { NgModule } from '@angular/core';\n\n\n\n@NgModule({\n providers: []\n})\nexport class FormsModule { }\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/string-schema';\nexport * from './lib/forms.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@muziehdesign/forms" />
5
+ export * from './public-api';
@@ -0,0 +1 @@
1
+ export declare const SCHEMA_METADATA_NAMESPACE = "custom:muziehdesign:schema";
@@ -0,0 +1,5 @@
1
+ export interface FieldError {
2
+ path: string;
3
+ type: string;
4
+ message: string;
5
+ }
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class FormsModule {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormsModule, never>;
4
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FormsModule, never, never, never>;
5
+ static ɵinj: i0.ɵɵInjectorDeclaration<FormsModule>;
6
+ }
@@ -0,0 +1,10 @@
1
+ import { ModelValidator } from './model-validator';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ModelSchemaFactory {
4
+ constructor();
5
+ build<T>(model: T): ModelValidator<T>;
6
+ private buildStringSchema;
7
+ private buildBooleanSchema;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ModelSchemaFactory, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<ModelSchemaFactory>;
10
+ }
@@ -0,0 +1,7 @@
1
+ import { SchemaOf } from 'yup';
2
+ import { FieldError } from './field-error';
3
+ export declare class ModelValidator<T> {
4
+ private schema;
5
+ constructor(modelSchema: SchemaOf<T>);
6
+ validate<T>(model: T): Promise<FieldError[]>;
7
+ }
@@ -0,0 +1,6 @@
1
+ import { PropertyType } from "./property-type.enum";
2
+ export interface PropertySchemaMetadata<T> {
3
+ name: string;
4
+ type: PropertyType;
5
+ options: T;
6
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum PropertyType {
2
+ string = 0,
3
+ number = 1,
4
+ array = 2,
5
+ boolean = 3
6
+ }
@@ -0,0 +1,15 @@
1
+ import 'reflect-metadata';
2
+ export interface StringSchemaOptions extends SchemaOptions {
3
+ length?: number;
4
+ minimum?: number;
5
+ maximum?: number;
6
+ pattern?: RegExp;
7
+ }
8
+ export interface SchemaOptions {
9
+ required?: boolean;
10
+ }
11
+ export declare function StringSchema(options?: StringSchemaOptions): (target: Object, propertyKey: string | Symbol) => void;
12
+ export interface BooleanSchemaOptions extends SchemaOptions {
13
+ equals?: boolean;
14
+ }
15
+ export declare function BooleanSchema(options?: BooleanSchemaOptions): (target: Object, propertyKey: string | Symbol) => void;
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@muziehdesign/forms",
3
+ "version": "0.0.1-alpha.36",
4
+ "peerDependencies": {
5
+ "@angular/common": "^14.0.0",
6
+ "@angular/core": "^14.0.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "module": "fesm2015/muziehdesign-forms.mjs",
12
+ "es2020": "fesm2020/muziehdesign-forms.mjs",
13
+ "esm2020": "esm2020/muziehdesign-forms.mjs",
14
+ "fesm2020": "fesm2020/muziehdesign-forms.mjs",
15
+ "fesm2015": "fesm2015/muziehdesign-forms.mjs",
16
+ "typings": "index.d.ts",
17
+ "exports": {
18
+ "./package.json": {
19
+ "default": "./package.json"
20
+ },
21
+ ".": {
22
+ "types": "./index.d.ts",
23
+ "esm2020": "./esm2020/muziehdesign-forms.mjs",
24
+ "es2020": "./fesm2020/muziehdesign-forms.mjs",
25
+ "es2015": "./fesm2015/muziehdesign-forms.mjs",
26
+ "node": "./fesm2015/muziehdesign-forms.mjs",
27
+ "default": "./fesm2020/muziehdesign-forms.mjs"
28
+ }
29
+ },
30
+ "sideEffects": false
31
+ }
@@ -0,0 +1,5 @@
1
+ export * from './lib/field-error';
2
+ export * from './lib/model-schema.factory';
3
+ export * from './lib/model-validator';
4
+ export * from './lib/string-schema';
5
+ export * from './lib/forms.module';