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.
- package/__BUILD__/libs/models/index.js +1 -0
- package/__BUILD__/libs/models/index.js.map +1 -1
- package/__BUILD__/libs/models/model-template-combine.js +58 -0
- package/__BUILD__/libs/models/model-template-combine.js.map +1 -0
- package/__BUILD__/libs/models/model-template-union.js +12 -2
- package/__BUILD__/libs/models/model-template-union.js.map +1 -1
- package/package.json +1 -1
- package/src/@types/global.d.ts +7 -1
- package/src/libs/models/index.ts +2 -1
- package/src/libs/models/model-template-combine.ts +76 -0
- package/src/libs/models/model-template-union.ts +19 -2
|
@@ -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
|
-
|
|
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;
|
|
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
package/src/@types/global.d.ts
CHANGED
|
@@ -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
|
+
;
|
package/src/libs/models/index.ts
CHANGED
|
@@ -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
|
-
|
|
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 {
|