pwi-plata-type 0.4.141 → 0.4.143

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelTemplateCombine = void 0;
4
+ class ModelTemplateCombine {
5
+ type;
6
+ models;
7
+ validations;
8
+ constructor(models) {
9
+ this.models = models;
10
+ }
11
+ addValidation(callback) {
12
+ this.validations.add(callback);
13
+ }
14
+ async validate(obj) {
15
+ let v = obj;
16
+ for (let i = 0; i < this.models.length; i++) {
17
+ const model = this.models[i];
18
+ if (model.filter !== undefined) {
19
+ v = model.filter(v);
20
+ }
21
+ }
22
+ {
23
+ const promises = [];
24
+ for (let i = 0; i < this.models.length; i++) {
25
+ const model = this.models[i];
26
+ promises.push(Plata.FastPromise(() => model.validate(v, true)));
27
+ }
28
+ const results = await Promise.all(promises);
29
+ const errors = results
30
+ .filter((r) => r !== undefined)
31
+ .flatMap(r => r.errors);
32
+ if (errors.length !== 0) {
33
+ return {
34
+ value: undefined,
35
+ errors
36
+ };
37
+ }
38
+ }
39
+ {
40
+ const promises = [];
41
+ this.validations.forEach(va => promises.push(Plata.FastPromise(() => va(v))));
42
+ const result = await Promise.all(promises);
43
+ const errors = result.filter(Boolean);
44
+ if (errors.length !== 0) {
45
+ return {
46
+ errors,
47
+ value: undefined
48
+ };
49
+ }
50
+ }
51
+ return {
52
+ value: v,
53
+ errors: undefined
54
+ };
55
+ }
56
+ }
57
+ exports.ModelTemplateCombine = ModelTemplateCombine;
58
+ //# 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;IACF,WAAW,CAAiE;IAE5F,YAAY,MAAS;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,aAAa,CAAC,QAAoE;QACrF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClC,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;YACI,MAAM,QAAQ,GAAyC,EAAE,CAAA;YAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAE7B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;aAClE;YAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAE3C,MAAM,MAAM,GAAG,OAAO;iBACjB,MAAM,CAAC,CAAC,CAAC,EAAiC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;iBAC7D,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAC1B;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,OAAO;oBACH,KAAK,EAAE,SAAS;oBAChB,MAAM;iBACT,CAAA;aACJ;SACJ;QAID;YACI,MAAM,QAAQ,GAAoC,EAAE,CAAA;YAEpD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAC1B,QAAQ,CAAC,IAAI,CACT,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACjC,CACJ,CAAA;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAErC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,OAAQ;oBACJ,MAAM;oBACN,KAAK,EAAE,SAAS;iBACnB,CAAA;aACJ;SACJ;QAED,OAAO;YACH,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,SAAS;SACpB,CAAA;IACL,CAAC;CACJ;AA3ED,oDA2EC"}
@@ -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.143",
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,76 @@
1
+ export class ModelTemplateCombine<const T extends readonly Model.ModelClass[]> {
2
+ readonly type: ArrayCombine<T>['type']
3
+ readonly models: T
4
+ public readonly validations: Set<(value: typeof this.type) => Promise<Model.ValidateReturn>>
5
+
6
+ constructor(models: T) {
7
+ this.models = models
8
+ }
9
+
10
+ public addValidation(callback: (value: typeof this.type) => Promise<Model.ValidateReturn>) {
11
+ this.validations.add(callback)
12
+ }
13
+
14
+ public async validate(obj: any): Promise<Model.ModelValidateReturnHelper<typeof this.type, undefined>> {
15
+ let v = obj
16
+ for (let i = 0; i < this.models.length; i++) {
17
+ const model = this.models[i]
18
+
19
+ if (model.filter !== undefined) {
20
+ v = model.filter(v)
21
+ }
22
+ }
23
+
24
+ { // Valida as models
25
+ const promises: Promise<{ errors?: PlataError[] }>[] = []
26
+
27
+ for (let i = 0; i < this.models.length; i++) {
28
+ const model = this.models[i];
29
+
30
+ promises.push(Plata.FastPromise(() => model.validate(v, true)))
31
+ }
32
+
33
+ const results = await Promise.all(promises)
34
+
35
+ const errors = results
36
+ .filter((r): r is { errors: PlataError[] } => r !== undefined)
37
+ .flatMap(r => r.errors)
38
+ ;
39
+
40
+ if (errors.length !== 0) {
41
+ return {
42
+ value: undefined,
43
+ errors
44
+ }
45
+ }
46
+ }
47
+
48
+
49
+
50
+ { // Validacoes adicionais
51
+ const promises: Promise<Model.ValidateReturn>[] = []
52
+
53
+ this.validations.forEach(va =>
54
+ promises.push(
55
+ Plata.FastPromise(() => va(v))
56
+ )
57
+ )
58
+
59
+ const result = await Promise.all(promises)
60
+
61
+ const errors = result.filter(Boolean)
62
+
63
+ if (errors.length !== 0) {
64
+ return {
65
+ errors,
66
+ value: undefined
67
+ }
68
+ }
69
+ }
70
+
71
+ return {
72
+ value: v,
73
+ errors: undefined
74
+ }
75
+ }
76
+ }
@@ -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 {