pwi-plata-type 0.4.141 → 0.4.142

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.
@@ -18,4 +18,5 @@ __exportStar(require("./model-validations"), exports);
18
18
  __exportStar(require("./model-template"), exports);
19
19
  __exportStar(require("./model-template-env"), exports);
20
20
  __exportStar(require("./model-template-union"), exports);
21
+ __exportStar(require("./model-template-combine"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,mDAAgC;AAChC,uDAAoC;AACpC,yDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,mDAAgC;AAChC,uDAAoC;AACpC,yDAAsC;AACtC,2DAAwC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelTemplateCombine = void 0;
4
+ class ModelTemplateCombine {
5
+ type;
6
+ models;
7
+ constructor(models) {
8
+ this.models = models;
9
+ }
10
+ async validate(obj) {
11
+ let v = obj;
12
+ for (let i = 0; i < this.models.length; i++) {
13
+ const model = this.models[i];
14
+ if (model.filter !== undefined) {
15
+ v = model.filter(v);
16
+ }
17
+ }
18
+ const promises = [];
19
+ for (let i = 0; i < this.models.length; i++) {
20
+ const model = this.models[i];
21
+ promises.push(Plata.FastPromise(() => model.validate(v, true)));
22
+ }
23
+ const results = await Promise.all(promises);
24
+ const errors = results
25
+ .filter((r) => r !== undefined)
26
+ .flatMap(r => r.errors);
27
+ if (errors.length !== 0) {
28
+ return {
29
+ value: undefined,
30
+ errors
31
+ };
32
+ }
33
+ return {
34
+ value: v,
35
+ errors: undefined
36
+ };
37
+ }
38
+ }
39
+ exports.ModelTemplateCombine = ModelTemplateCombine;
40
+ //# sourceMappingURL=model-template-combine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-template-combine.js","sourceRoot":"","sources":["../../../src/libs/models/model-template-combine.ts"],"names":[],"mappings":";;;AAAA,MAAa,oBAAoB;IACpB,IAAI,CAAyB;IAC7B,MAAM,CAAG;IAElB,YAAY,MAAS;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,GAAQ;QAC1B,IAAI,CAAC,GAAG,GAAG,CAAA;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAE5B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC5B,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;aACtB;SACJ;QAED,MAAM,QAAQ,GAAyC,EAAE,CAAA;QAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAE7B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;SAClE;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE3C,MAAM,MAAM,GAAG,OAAO;aACjB,MAAM,CAAC,CAAC,CAAC,EAAiC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;aAC7D,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAC1B;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,OAAO;gBACH,KAAK,EAAE,SAAS;gBAChB,MAAM;aACT,CAAA;SACJ;QAED,OAAO;YACH,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,SAAS;SACpB,CAAA;IACL,CAAC;CACJ;AA7CD,oDA6CC"}
@@ -25,7 +25,17 @@ class ModelTemplateUnion {
25
25
  value: value,
26
26
  };
27
27
  }
28
- async validate(value) {
28
+ filter(value) {
29
+ const extraced = this.getExtractFromUnion(value);
30
+ if (extraced.errorID !== undefined) {
31
+ return value;
32
+ }
33
+ if (extraced.model.filter !== undefined) {
34
+ value = extraced.model.filter(value);
35
+ }
36
+ return value;
37
+ }
38
+ async validate(value, skipFilter) {
29
39
  const extraced = this.getExtractFromUnion(value);
30
40
  if (extraced.errorID !== undefined) {
31
41
  return {
@@ -33,7 +43,7 @@ class ModelTemplateUnion {
33
43
  value: undefined
34
44
  };
35
45
  }
36
- const result = await extraced.model.validate(extraced.value);
46
+ const result = await extraced.model.validate(extraced.value, skipFilter);
37
47
  if (result.errors !== undefined) {
38
48
  return {
39
49
  errors: result.errors,
@@ -1 +1 @@
1
- {"version":3,"file":"model-template-union.js","sourceRoot":"","sources":["../../../src/libs/models/model-template-union.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAkB;IACX,MAAM,CAAG;IACT,SAAS,CAAG;IACZ,IAAI,CAAmC;IAEvD,YAAY,MAAS,EAAE,SAAY;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;IAEM,mBAAmB,CAAC,KAAU;QACjC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,OAAO;gBACH,OAAO,EAAE,mBAAmB;gBAC5B,GAAG,EAAE,cAAc,IAAI,CAAC,MAAM,CAAC,GAAG,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzF,KAAK,EAAE,IAAI;aACd,CAAA;SACJ;QAED,OAAO;YACH,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,KAAK;SACR,CAAA;IACZ,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAU;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO;gBACH,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAE5D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,OAAO;gBACH,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,OAAO;YACH,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACtB,CAAA;IACL,CAAC;CACJ;AAtDD,gDAsDC"}
1
+ {"version":3,"file":"model-template-union.js","sourceRoot":"","sources":["../../../src/libs/models/model-template-union.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAkB;IACX,MAAM,CAAG;IACT,SAAS,CAAG;IACZ,IAAI,CAAmC;IAEvD,YAAY,MAAS,EAAE,SAAY;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;IAEM,mBAAmB,CAAC,KAAU;QACjC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,QAAQ,KAAK,SAAS,EAAE;YACxB,OAAO;gBACH,OAAO,EAAE,mBAAmB;gBAC5B,GAAG,EAAE,cAAc,IAAI,CAAC,MAAM,CAAC,GAAG,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzF,KAAK,EAAE,IAAI;aACd,CAAA;SACJ;QAED,OAAO;YACH,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,KAAK;SACR,CAAA;IACZ,CAAC;IAKM,MAAM,CAAC,KAAU;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO,KAAK,CAAA;SACf;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YACrC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACvC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAU,EAAE,UAAiB;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAEhD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,OAAO;gBACH,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAExE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,OAAO;gBACH,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,SAAS;aACnB,CAAA;SACJ;QAED,OAAO;YACH,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACtB,CAAA;IACL,CAAC;CACJ;AAvED,gDAuEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pwi-plata-type",
3
- "version": "0.4.141",
3
+ "version": "0.4.142",
4
4
  "main": "__BUILD__/index",
5
5
  "types": "src/@types/exported.d.ts",
6
6
  "bin": {
@@ -104,4 +104,10 @@ interface PlataEnvConfig {
104
104
 
105
105
  type DeepWritable<T extends {}> = {
106
106
  -readonly [K in keyof T]: T[K] extends Dictionary<any> ? DeepWritable<T[K]> : T[K]
107
- }
107
+ }
108
+
109
+ type ArrayCombine<T extends readonly any[]> =
110
+ T extends readonly [ infer U extends T[number] ] ? U
111
+ : T extends readonly [ infer U extends T[number], ...infer R] ? U & ArrayCombine<R>
112
+ : never
113
+ ;
@@ -1,4 +1,5 @@
1
1
  export * from './model-validations'
2
2
  export * from './model-template'
3
3
  export * from './model-template-env'
4
- export * from './model-template-union'
4
+ export * from './model-template-union'
5
+ export * from './model-template-combine'
@@ -0,0 +1,46 @@
1
+ export class ModelTemplateCombine<const T extends readonly Model.ModelClass[]> {
2
+ readonly type: ArrayCombine<T>['type']
3
+ readonly models: T
4
+
5
+ constructor(models: T) {
6
+ this.models = models
7
+ }
8
+
9
+ public async validate(obj: any): Promise<Model.ModelValidateReturnHelper<typeof this.type, undefined>> {
10
+ let v = obj
11
+ for (let i = 0; i < this.models.length; i++) {
12
+ const model = this.models[i]
13
+
14
+ if (model.filter !== undefined) {
15
+ v = model.filter(v)
16
+ }
17
+ }
18
+
19
+ const promises: Promise<{ errors?: PlataError[] }>[] = []
20
+
21
+ for (let i = 0; i < this.models.length; i++) {
22
+ const model = this.models[i];
23
+
24
+ promises.push(Plata.FastPromise(() => model.validate(v, true)))
25
+ }
26
+
27
+ const results = await Promise.all(promises)
28
+
29
+ const errors = results
30
+ .filter((r): r is { errors: PlataError[] } => r !== undefined)
31
+ .flatMap(r => r.errors)
32
+ ;
33
+
34
+ if (errors.length !== 0) {
35
+ return {
36
+ value: undefined,
37
+ errors
38
+ }
39
+ }
40
+
41
+ return {
42
+ value: v,
43
+ errors: undefined
44
+ }
45
+ }
46
+ }
@@ -28,7 +28,24 @@ export class ModelTemplateUnion<const C extends Model.TemplateUnionConfig, const
28
28
  } as any
29
29
  }
30
30
 
31
- public async validate(value: any): Promise<Model.ModelValidateReturnHelper<typeof this.type, undefined>> {
31
+ /**
32
+ * Essa função so é para ser usada dentro da plataforma, considera que logo depois será rodado o validate
33
+ */
34
+ public filter(value: any): any {
35
+ const extraced = this.getExtractFromUnion(value)
36
+
37
+ if (extraced.errorID !== undefined) {
38
+ return value
39
+ }
40
+
41
+ if (extraced.model.filter !== undefined) {
42
+ value = extraced.model.filter(value)
43
+ }
44
+
45
+ return value
46
+ }
47
+
48
+ public async validate(value: any, skipFilter?: true): Promise<Model.ModelValidateReturnHelper<typeof this.type, undefined>> {
32
49
  const extraced = this.getExtractFromUnion(value)
33
50
 
34
51
  if (extraced.errorID !== undefined) {
@@ -38,7 +55,7 @@ export class ModelTemplateUnion<const C extends Model.TemplateUnionConfig, const
38
55
  }
39
56
  }
40
57
 
41
- const result = await extraced.model.validate(extraced.value)
58
+ const result = await extraced.model.validate(extraced.value, skipFilter)
42
59
 
43
60
  if (result.errors !== undefined) {
44
61
  return {