pwi-plata-type 0.4.140 → 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.
- 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 +40 -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/__BUILD__/libs/models/tools.js +1 -1
- package/__BUILD__/libs/models/tools.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 +46 -0
- package/src/libs/models/model-template-union.ts +19 -2
- package/src/libs/models/tools.ts +1 -1
- package/src/tests/model.test.ts +12 -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,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
|
-
|
|
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"}
|
|
@@ -46,7 +46,7 @@ var ModelsInternals;
|
|
|
46
46
|
value[param] = [value[param]];
|
|
47
47
|
}
|
|
48
48
|
for (let i = 0; i < value[param].length; i++) {
|
|
49
|
-
value[param][i] = ModelsInternals.filterValidation(value[param][i], t);
|
|
49
|
+
value[param][i] = ModelsInternals.filterValidation(value[param][i], t[0]);
|
|
50
50
|
}
|
|
51
51
|
continue;
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/libs/models/tools.ts"],"names":[],"mappings":";;;AACA,IAAiB,eAAe,CAiM/B;AAjMD,WAAiB,eAAe;IAC5B,SAAgB,QAAQ,CAAI,KAA2B;QACnD,IAAI,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,CACf;QAED,IAAI,KAAK,KAAK,SAAS;YACnB,OAAO,KAAK,CACf;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAVe,wBAAQ,WAUvB,CAAA;IAED,SAAgB,gBAAgB,CAAC,KAAU,EAAE,WAA4C;QAErF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAEjC,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE;gBACjC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;aACnC;SACJ;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAXe,gCAAgB,mBAW/B,CAAA;IAED,SAAgB,cAAc,CAA2B,KAAU,EAAE,QAAW;QAC5E,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;YAGzB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBACzC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;iBACrC;gBAED,KAAK,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAmB,CAAC,CAAA;gBAChE,SAAQ;aACX;YAGD,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBAC5B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBACzC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;iBACtB;gBAED,KAAK,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAoC,CAAC,CAAA;gBAEnG,SAAQ;aACX;YAGD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC3B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBACzC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;iBACpB;gBAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC9B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;iBAChC;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAoC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/libs/models/tools.ts"],"names":[],"mappings":"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"}
|
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,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
|
-
|
|
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 {
|
package/src/libs/models/tools.ts
CHANGED
|
@@ -61,7 +61,7 @@ export namespace ModelsInternals {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
for (let i = 0; i < value[param].length; i++) {
|
|
64
|
-
value[param][i] = ModelsInternals.filterValidation(value[param][i], t as Model.PrimitiveValidationType[])
|
|
64
|
+
value[param][i] = ModelsInternals.filterValidation(value[param][i], t[0] as Model.PrimitiveValidationType[])
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
continue
|
package/src/tests/model.test.ts
CHANGED
|
@@ -37,7 +37,8 @@ describe('PlataModels', () => {
|
|
|
37
37
|
subModel: {
|
|
38
38
|
required: 1,
|
|
39
39
|
optional: null
|
|
40
|
-
}
|
|
40
|
+
},
|
|
41
|
+
subModelArray: []
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
|
|
@@ -66,6 +67,10 @@ describe('PlataModels', () => {
|
|
|
66
67
|
optional: [ PlataModels.Optional(), PlataModels.Int() ],
|
|
67
68
|
required: [ PlataModels.Required(), PlataModels.Int() ],
|
|
68
69
|
} as const , {})) ],
|
|
70
|
+
subModelArray: [[ PlataModels.useModel(new PlataModels.ModelTemplate({
|
|
71
|
+
optional: [ PlataModels.Optional(), PlataModels.Int() ],
|
|
72
|
+
required: [ PlataModels.Required(), PlataModels.Int() ],
|
|
73
|
+
} as const , {})) ]],
|
|
69
74
|
array: [ [ PlataModels.VarChar(30) ] ],
|
|
70
75
|
array_objects: [{
|
|
71
76
|
param: [ PlataModels.Optional(), PlataModels.Decimal(10,2) ]
|
|
@@ -90,7 +95,8 @@ describe('PlataModels', () => {
|
|
|
90
95
|
|
|
91
96
|
it('Struct Filter', () => {
|
|
92
97
|
const InitObj = {
|
|
93
|
-
array_objects: [{ param: '123' }]
|
|
98
|
+
array_objects: [{ param: '123' }],
|
|
99
|
+
subModelArray: [{ required: 1 }]
|
|
94
100
|
}
|
|
95
101
|
|
|
96
102
|
const FilteredObj = modelStruct.filter(InitObj)
|
|
@@ -104,6 +110,10 @@ describe('PlataModels', () => {
|
|
|
104
110
|
required: null,
|
|
105
111
|
optional: null,
|
|
106
112
|
},
|
|
113
|
+
subModelArray: [{
|
|
114
|
+
required: 1,
|
|
115
|
+
optional: null,
|
|
116
|
+
}],
|
|
107
117
|
array: [],
|
|
108
118
|
array_objects: [{
|
|
109
119
|
param: '123'
|