@datacapy/schema 0.1.0
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/LICENSE +29 -0
- package/README.md +113 -0
- package/dist/builder/builder-array.d.ts +11 -0
- package/dist/builder/builder-array.js +35 -0
- package/dist/builder/builder-array.js.map +1 -0
- package/dist/builder/builder-base.d.ts +25 -0
- package/dist/builder/builder-base.js +140 -0
- package/dist/builder/builder-base.js.map +1 -0
- package/dist/builder/builder-boolean.d.ts +5 -0
- package/dist/builder/builder-boolean.js +12 -0
- package/dist/builder/builder-boolean.js.map +1 -0
- package/dist/builder/builder-date.d.ts +5 -0
- package/dist/builder/builder-date.js +12 -0
- package/dist/builder/builder-date.js.map +1 -0
- package/dist/builder/builder-mixed.d.ts +7 -0
- package/dist/builder/builder-mixed.js +16 -0
- package/dist/builder/builder-mixed.js.map +1 -0
- package/dist/builder/builder-number.d.ts +5 -0
- package/dist/builder/builder-number.js +12 -0
- package/dist/builder/builder-number.js.map +1 -0
- package/dist/builder/builder-object.d.ts +17 -0
- package/dist/builder/builder-object.js +47 -0
- package/dist/builder/builder-object.js.map +1 -0
- package/dist/builder/builder-or.d.ts +9 -0
- package/dist/builder/builder-or.js +23 -0
- package/dist/builder/builder-or.js.map +1 -0
- package/dist/builder/builder-schema.d.ts +18 -0
- package/dist/builder/builder-schema.js +68 -0
- package/dist/builder/builder-schema.js.map +1 -0
- package/dist/builder/builder-string.d.ts +17 -0
- package/dist/builder/builder-string.js +106 -0
- package/dist/builder/builder-string.js.map +1 -0
- package/dist/builder/index.d.ts +14 -0
- package/dist/builder/index.js +28 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/builder/schema-builder.d.ts +25 -0
- package/dist/builder/schema-builder.js +46 -0
- package/dist/builder/schema-builder.js.map +1 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -0
- package/dist/encryption/encryption-service.d.ts +4 -0
- package/dist/encryption/encryption-service.js +3 -0
- package/dist/encryption/encryption-service.js.map +1 -0
- package/dist/encryption/index.d.ts +1 -0
- package/dist/encryption/index.js +18 -0
- package/dist/encryption/index.js.map +1 -0
- package/dist/filter/filter-abstract.d.ts +9 -0
- package/dist/filter/filter-abstract.js +11 -0
- package/dist/filter/filter-abstract.js.map +1 -0
- package/dist/filter/filter-callback.d.ts +6 -0
- package/dist/filter/filter-callback.js +18 -0
- package/dist/filter/filter-callback.js.map +1 -0
- package/dist/filter/filter-condition.d.ts +8 -0
- package/dist/filter/filter-condition.js +15 -0
- package/dist/filter/filter-condition.js.map +1 -0
- package/dist/filter/filter-default-value.d.ts +10 -0
- package/dist/filter/filter-default-value.js +29 -0
- package/dist/filter/filter-default-value.js.map +1 -0
- package/dist/filter/filter-lowercase.d.ts +6 -0
- package/dist/filter/filter-lowercase.js +17 -0
- package/dist/filter/filter-lowercase.js.map +1 -0
- package/dist/filter/filter-postcode.d.ts +7 -0
- package/dist/filter/filter-postcode.js +30 -0
- package/dist/filter/filter-postcode.js.map +1 -0
- package/dist/filter/filter-prepend-http.d.ts +6 -0
- package/dist/filter/filter-prepend-http.js +17 -0
- package/dist/filter/filter-prepend-http.js.map +1 -0
- package/dist/filter/filter-strip-html.d.ts +13 -0
- package/dist/filter/filter-strip-html.js +96 -0
- package/dist/filter/filter-strip-html.js.map +1 -0
- package/dist/filter/filter-trim.d.ts +6 -0
- package/dist/filter/filter-trim.js +17 -0
- package/dist/filter/filter-trim.js.map +1 -0
- package/dist/filter/filter-uppercase.d.ts +6 -0
- package/dist/filter/filter-uppercase.js +17 -0
- package/dist/filter/filter-uppercase.js.map +1 -0
- package/dist/filter/filter.d.ts +7 -0
- package/dist/filter/filter.js +59 -0
- package/dist/filter/filter.js.map +1 -0
- package/dist/filter/index.d.ts +9 -0
- package/dist/filter/index.js +26 -0
- package/dist/filter/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/inquisitor.d.ts +9 -0
- package/dist/inquisitor.js +44 -0
- package/dist/inquisitor.js.map +1 -0
- package/dist/iterator.d.ts +70 -0
- package/dist/iterator.js +339 -0
- package/dist/iterator.js.map +1 -0
- package/dist/manager.d.ts +30 -0
- package/dist/manager.js +55 -0
- package/dist/manager.js.map +1 -0
- package/dist/processors/field-filter.d.ts +32 -0
- package/dist/processors/field-filter.js +114 -0
- package/dist/processors/field-filter.js.map +1 -0
- package/dist/processors/field-private-filter.d.ts +9 -0
- package/dist/processors/field-private-filter.js +84 -0
- package/dist/processors/field-private-filter.js.map +1 -0
- package/dist/processors/field-type-caster.d.ts +12 -0
- package/dist/processors/field-type-caster.js +89 -0
- package/dist/processors/field-type-caster.js.map +1 -0
- package/dist/processors/field-validator.d.ts +36 -0
- package/dist/processors/field-validator.js +171 -0
- package/dist/processors/field-validator.js.map +1 -0
- package/dist/processors/index.d.ts +5 -0
- package/dist/processors/index.js +22 -0
- package/dist/processors/index.js.map +1 -0
- package/dist/processors/transient-processor.d.ts +23 -0
- package/dist/processors/transient-processor.js +124 -0
- package/dist/processors/transient-processor.js.map +1 -0
- package/dist/schema.d.ts +104 -0
- package/dist/schema.js +400 -0
- package/dist/schema.js.map +1 -0
- package/dist/spec.d.ts +69 -0
- package/dist/spec.js +3 -0
- package/dist/spec.js.map +1 -0
- package/dist/type/PropsOf.d.ts +5 -0
- package/dist/type/PropsOf.js +3 -0
- package/dist/type/PropsOf.js.map +1 -0
- package/dist/type/index.d.ts +1 -0
- package/dist/type/index.js +18 -0
- package/dist/type/index.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.js +21 -0
- package/dist/types.js.map +1 -0
- package/dist/utilities/collection.d.ts +10 -0
- package/dist/utilities/collection.js +41 -0
- package/dist/utilities/collection.js.map +1 -0
- package/dist/utilities/index.d.ts +4 -0
- package/dist/utilities/index.js +21 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/object-path-accessor.d.ts +16 -0
- package/dist/utilities/object-path-accessor.js +132 -0
- package/dist/utilities/object-path-accessor.js.map +1 -0
- package/dist/utilities/type-caster.d.ts +10 -0
- package/dist/utilities/type-caster.js +126 -0
- package/dist/utilities/type-caster.js.map +1 -0
- package/dist/utilities/utility.d.ts +8 -0
- package/dist/utilities/utility.js +53 -0
- package/dist/utilities/utility.js.map +1 -0
- package/dist/validator/index.d.ts +12 -0
- package/dist/validator/index.js +29 -0
- package/dist/validator/index.js.map +1 -0
- package/dist/validator/validator-callback.d.ts +6 -0
- package/dist/validator/validator-callback.js +15 -0
- package/dist/validator/validator-callback.js.map +1 -0
- package/dist/validator/validator-email.d.ts +5 -0
- package/dist/validator/validator-email.js +20 -0
- package/dist/validator/validator-email.js.map +1 -0
- package/dist/validator/validator-equality.d.ts +5 -0
- package/dist/validator/validator-equality.js +19 -0
- package/dist/validator/validator-equality.js.map +1 -0
- package/dist/validator/validator-in-array.d.ts +5 -0
- package/dist/validator/validator-in-array.js +17 -0
- package/dist/validator/validator-in-array.js.map +1 -0
- package/dist/validator/validator-interface.d.ts +5 -0
- package/dist/validator/validator-interface.js +3 -0
- package/dist/validator/validator-interface.js.map +1 -0
- package/dist/validator/validator-is-empty.d.ts +5 -0
- package/dist/validator/validator-is-empty.js +37 -0
- package/dist/validator/validator-is-empty.js.map +1 -0
- package/dist/validator/validator-not-empty.d.ts +5 -0
- package/dist/validator/validator-not-empty.js +21 -0
- package/dist/validator/validator-not-empty.js.map +1 -0
- package/dist/validator/validator-not-null.d.ts +5 -0
- package/dist/validator/validator-not-null.js +19 -0
- package/dist/validator/validator-not-null.js.map +1 -0
- package/dist/validator/validator-regex.d.ts +5 -0
- package/dist/validator/validator-regex.js +20 -0
- package/dist/validator/validator-regex.js.map +1 -0
- package/dist/validator/validator-required.d.ts +5 -0
- package/dist/validator/validator-required.js +18 -0
- package/dist/validator/validator-required.js.map +1 -0
- package/dist/validator/validator-value-length.d.ts +5 -0
- package/dist/validator/validator-value-length.js +39 -0
- package/dist/validator/validator-value-length.js.map +1 -0
- package/dist/validator/validator.d.ts +7 -0
- package/dist/validator/validator.js +72 -0
- package/dist/validator/validator.js.map +1 -0
- package/package.json +51 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SchemaFieldPrivateFilter = void 0;
|
|
7
|
+
const type_caster_1 = __importDefault(require("../utilities/type-caster"));
|
|
8
|
+
class SchemaFieldPrivateFilter {
|
|
9
|
+
filterPrivate(object, iterator, mode, iteratorType) {
|
|
10
|
+
mode = mode ? mode : true;
|
|
11
|
+
var deleteRefs = [];
|
|
12
|
+
var valueReplaceRefs = [];
|
|
13
|
+
var iteratorType = iteratorType == 'iteratePaths' ? 'iteratePaths' : 'iterate';
|
|
14
|
+
var result = object
|
|
15
|
+
? iterator[iteratorType](object, (opts) => {
|
|
16
|
+
let { spec, fieldName, container } = opts;
|
|
17
|
+
const filters = spec && spec.$filter ? spec.$filter : {};
|
|
18
|
+
if (filters.private === true || filters.private == mode) {
|
|
19
|
+
if (container)
|
|
20
|
+
deleteRefs.push({ container, fieldName });
|
|
21
|
+
}
|
|
22
|
+
if (filters.privateValue === true || filters.privateValue == mode) {
|
|
23
|
+
if (container)
|
|
24
|
+
valueReplaceRefs.push({ container, fieldName });
|
|
25
|
+
}
|
|
26
|
+
if (spec && spec.$or && container && container[fieldName] != null) {
|
|
27
|
+
this.collectPrivateRefsInOrValue(container[fieldName], spec.$or, mode, iterator, deleteRefs, valueReplaceRefs);
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
: object;
|
|
31
|
+
valueReplaceRefs.forEach((ref) => {
|
|
32
|
+
if (ref.container && ref.container[ref.fieldName]) {
|
|
33
|
+
ref.container[ref.fieldName] =
|
|
34
|
+
ref.container[ref.fieldName] == undefined
|
|
35
|
+
? ref.container[ref.fieldName]
|
|
36
|
+
: true;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
deleteRefs.forEach((ref) => {
|
|
40
|
+
if (ref.container && ref.container[ref.fieldName])
|
|
41
|
+
delete ref.container[ref.fieldName];
|
|
42
|
+
});
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
collectPrivateRefsInOrValue(value, orAlternatives, mode, iterator, deleteRefs, valueReplaceRefs) {
|
|
46
|
+
var _a;
|
|
47
|
+
const valueType = type_caster_1.default.getType(value);
|
|
48
|
+
for (const altSpec of orAlternatives) {
|
|
49
|
+
if (!altSpec || typeof altSpec !== 'object')
|
|
50
|
+
continue;
|
|
51
|
+
let altType = altSpec.constructor == String ? altSpec : type_caster_1.default.getType(altSpec);
|
|
52
|
+
if (altType == Object && altSpec.$type !== undefined) {
|
|
53
|
+
altType = altSpec.$type;
|
|
54
|
+
}
|
|
55
|
+
if (altType !== valueType)
|
|
56
|
+
continue;
|
|
57
|
+
const resolvedSpec = (_a = altSpec.$spec) !== null && _a !== void 0 ? _a : altSpec;
|
|
58
|
+
iterator.mapField({
|
|
59
|
+
spec: resolvedSpec,
|
|
60
|
+
specParent: null,
|
|
61
|
+
fieldName: 'value',
|
|
62
|
+
container: { value },
|
|
63
|
+
path: '',
|
|
64
|
+
callback: (opts) => {
|
|
65
|
+
const { spec: fieldSpec, fieldName, container } = opts;
|
|
66
|
+
const filters = fieldSpec && fieldSpec.$filter ? fieldSpec.$filter : {};
|
|
67
|
+
if (filters.private === true || filters.private == mode) {
|
|
68
|
+
if (container)
|
|
69
|
+
deleteRefs.push({ container, fieldName });
|
|
70
|
+
}
|
|
71
|
+
if (filters.privateValue === true || filters.privateValue == mode) {
|
|
72
|
+
if (container)
|
|
73
|
+
valueReplaceRefs.push({ container, fieldName });
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
config: {},
|
|
77
|
+
meta: { errors: {} },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.SchemaFieldPrivateFilter = SchemaFieldPrivateFilter;
|
|
83
|
+
exports.default = SchemaFieldPrivateFilter;
|
|
84
|
+
//# sourceMappingURL=field-private-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-private-filter.js","sourceRoot":"","sources":["../../src/processors/field-private-filter.ts"],"names":[],"mappings":";;;;;;AACA,2EAAiD;AAyCjD,MAAa,wBAAwB;IAgBnC,aAAa,CACX,MAAW,EACX,QAAwB,EACxB,IAAuB,EACvB,YAAqB;QAErB,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QACzB,IAAI,UAAU,GAAG,EAAE,CAAA;QACnB,IAAI,gBAAgB,GAAG,EAAE,CAAA;QACzB,IAAI,YAAY,GACd,YAAY,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7D,IAAI,MAAM,GAAG,MAAM;YACjB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;gBACzC,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;gBACxD,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;oBAIxD,IAAI,SAAS;wBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC1D,CAAC;gBACD,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;oBAGlE,IAAI,SAAS;wBAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;gBAChE,CAAC;gBAOD,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;oBAClE,IAAI,CAAC,2BAA2B,CAC9B,SAAS,CAAC,SAAS,CAAC,EACpB,IAAI,CAAC,GAAG,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,gBAAgB,CACjB,CAAA;gBACH,CAAC;YACH,CAAC,CAAC;YACJ,CAAC,CAAC,MAAM,CAAA;QAEV,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;wBACvC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;wBAC9B,CAAC,CAAC,IAAI,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,CAAA;QACF,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC/C,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAUO,2BAA2B,CACjC,KAAU,EACV,cAA4B,EAC5B,IAAsB,EACtB,QAAwB,EACxB,UAAiE,EACjE,gBAAuE;;QAEvE,MAAM,SAAS,GAAG,qBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE3C,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,SAAQ;YAErD,IAAI,OAAO,GACT,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACvE,IAAI,OAAO,IAAI,MAAM,IAAK,OAAsB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACrE,OAAO,GAAI,OAAsB,CAAC,KAAK,CAAA;YACzC,CAAC;YACD,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAQ;YAEnC,MAAM,YAAY,GAAG,MAAC,OAAsB,CAAC,KAAK,mCAAI,OAAO,CAAA;YAE7D,QAAQ,CAAC,QAAQ,CAAC;gBAChB,IAAI,EAAE,YAA0B;gBAChC,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,EAAE,KAAK,EAAE;gBACpB,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACjB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;oBACtD,MAAM,OAAO,GACX,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;oBACzD,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;wBACxD,IAAI,SAAS;4BAAE,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;oBAC1D,CAAC;oBACD,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;wBAClE,IAAI,SAAS;4BAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;oBAChE,CAAC;gBACH,CAAC;gBACD,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAwB;aAC3C,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF;AAhID,4DAgIC;AAED,kBAAe,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import SchemaSpec from '../spec';
|
|
2
|
+
import { SchemaValidationMeta } from '../schema';
|
|
3
|
+
export interface SchemaFieldTypeCasterInterface {
|
|
4
|
+
typeCast(requiredType: any, value: any, path?: string | number, meta?: SchemaValidationMeta): any;
|
|
5
|
+
specToFieldType(spec: SchemaSpec, value: any): any;
|
|
6
|
+
}
|
|
7
|
+
export declare class SchemaFieldTypeCaster implements SchemaFieldTypeCasterInterface {
|
|
8
|
+
specToFieldType(spec: SchemaSpec, value: any): any;
|
|
9
|
+
typeCast(requiredType: any, value: any, path?: string | number, meta?: SchemaValidationMeta): any;
|
|
10
|
+
private appendError;
|
|
11
|
+
}
|
|
12
|
+
export default SchemaFieldTypeCaster;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SchemaFieldTypeCaster = void 0;
|
|
7
|
+
const type_caster_1 = __importDefault(require("../utilities/type-caster"));
|
|
8
|
+
const types_1 = __importDefault(require("../types"));
|
|
9
|
+
class SchemaFieldTypeCaster {
|
|
10
|
+
specToFieldType(spec, value) {
|
|
11
|
+
var fieldType = undefined;
|
|
12
|
+
if (spec) {
|
|
13
|
+
if (spec.$or && Array.isArray(spec.$or)) {
|
|
14
|
+
for (const orSpec of spec.$or) {
|
|
15
|
+
const orFieldType = this.specToFieldType(orSpec, value);
|
|
16
|
+
if (orFieldType) {
|
|
17
|
+
const valueType = type_caster_1.default.getType(value);
|
|
18
|
+
const orTypeName = type_caster_1.default.getTypeName(orFieldType);
|
|
19
|
+
const valueTypeName = type_caster_1.default.getTypeName(value);
|
|
20
|
+
if (orTypeName === valueTypeName ||
|
|
21
|
+
orFieldType === valueType ||
|
|
22
|
+
(orFieldType === Object && valueType === Object) ||
|
|
23
|
+
(orFieldType === Array && Array.isArray(value))) {
|
|
24
|
+
return orFieldType;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (spec.$or.length > 0) {
|
|
29
|
+
return this.specToFieldType(spec.$or[0], value);
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
if (spec.constructor == String) {
|
|
34
|
+
fieldType = spec;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
fieldType = type_caster_1.default.getType(spec);
|
|
38
|
+
if (fieldType === Object) {
|
|
39
|
+
if (spec.$type !== undefined) {
|
|
40
|
+
fieldType = this.specToFieldType(spec.$type, value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (fieldType && fieldType.constructor == String) {
|
|
46
|
+
fieldType = types_1.default[fieldType];
|
|
47
|
+
}
|
|
48
|
+
return fieldType;
|
|
49
|
+
}
|
|
50
|
+
typeCast(requiredType, value, path, meta) {
|
|
51
|
+
var meta = meta ? meta : { errors: {} };
|
|
52
|
+
var skip = (requiredType === Object &&
|
|
53
|
+
Array.isArray(value) == false &&
|
|
54
|
+
Object(value) === value) ||
|
|
55
|
+
(requiredType === Array && Array.isArray(value));
|
|
56
|
+
var result = value;
|
|
57
|
+
if (!skip) {
|
|
58
|
+
var result = value;
|
|
59
|
+
var requiredTypeName = type_caster_1.default.getTypeName(requiredType);
|
|
60
|
+
var valueTypeName = type_caster_1.default.getTypeName(value);
|
|
61
|
+
if (requiredTypeName != valueTypeName) {
|
|
62
|
+
result = type_caster_1.default.cast(requiredType, value);
|
|
63
|
+
let resultTypeName = type_caster_1.default.getTypeName(result);
|
|
64
|
+
if (resultTypeName != requiredTypeName ||
|
|
65
|
+
(valueTypeName != 'Number' &&
|
|
66
|
+
resultTypeName == 'Number' &&
|
|
67
|
+
isNaN(result))) {
|
|
68
|
+
let origValue = ['String', 'Number', 'Boolean'].indexOf(valueTypeName) != -1
|
|
69
|
+
? "'" + value + "'"
|
|
70
|
+
: '';
|
|
71
|
+
this.appendError(meta, path, origValue +
|
|
72
|
+
' of type ' +
|
|
73
|
+
valueTypeName +
|
|
74
|
+
' cannot be cast to type ' +
|
|
75
|
+
requiredTypeName);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
appendError(meta, path, error) {
|
|
82
|
+
var errors = Array.isArray(meta.errors[path]) ? meta.errors[path] : [];
|
|
83
|
+
errors.push(error);
|
|
84
|
+
meta.errors[path] = errors;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.SchemaFieldTypeCaster = SchemaFieldTypeCaster;
|
|
88
|
+
exports.default = SchemaFieldTypeCaster;
|
|
89
|
+
//# sourceMappingURL=field-type-caster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-type-caster.js","sourceRoot":"","sources":["../../src/processors/field-type-caster.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import SchemaSpec from '../spec';
|
|
2
|
+
import SchemaConfig from '../config';
|
|
3
|
+
import { SchemaValidationMeta } from '../schema';
|
|
4
|
+
import { SchemaIteratorMeta } from '../iterator';
|
|
5
|
+
import SchemaFieldFilter from './field-filter';
|
|
6
|
+
import SchemaFieldTypeCaster from './field-type-caster';
|
|
7
|
+
export interface SchemaFieldValidatorInterface {
|
|
8
|
+
validateField(opts: {
|
|
9
|
+
spec: SchemaSpec;
|
|
10
|
+
specParent: SchemaSpec;
|
|
11
|
+
fieldName: string | number;
|
|
12
|
+
value: any;
|
|
13
|
+
path: string | number;
|
|
14
|
+
config?: SchemaConfig;
|
|
15
|
+
meta?: SchemaValidationMeta;
|
|
16
|
+
mapperMeta?: SchemaIteratorMeta;
|
|
17
|
+
}): Promise<any>;
|
|
18
|
+
}
|
|
19
|
+
export declare class SchemaFieldValidator implements SchemaFieldValidatorInterface {
|
|
20
|
+
private fieldFilter;
|
|
21
|
+
private fieldTypeCaster;
|
|
22
|
+
private config;
|
|
23
|
+
constructor(config: SchemaConfig, fieldTypeCaster: SchemaFieldTypeCaster, fieldFilter: SchemaFieldFilter);
|
|
24
|
+
validateField(opts: {
|
|
25
|
+
spec: SchemaSpec;
|
|
26
|
+
specParent: SchemaSpec;
|
|
27
|
+
fieldName: string | number;
|
|
28
|
+
value: any;
|
|
29
|
+
path: string | number;
|
|
30
|
+
config?: SchemaConfig;
|
|
31
|
+
meta?: SchemaValidationMeta;
|
|
32
|
+
mapperMeta?: SchemaIteratorMeta;
|
|
33
|
+
}): Promise<any>;
|
|
34
|
+
private appendError;
|
|
35
|
+
}
|
|
36
|
+
export default SchemaFieldValidator;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SchemaFieldValidator = void 0;
|
|
7
|
+
const validator_1 = __importDefault(require("../validator/validator"));
|
|
8
|
+
const utility_1 = __importDefault(require("../utilities/utility"));
|
|
9
|
+
const types_1 = __importDefault(require("../types"));
|
|
10
|
+
const type_caster_1 = __importDefault(require("../utilities/type-caster"));
|
|
11
|
+
class SchemaFieldValidator {
|
|
12
|
+
constructor(config, fieldTypeCaster, fieldFilter) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.fieldTypeCaster = fieldTypeCaster;
|
|
15
|
+
this.fieldFilter = fieldFilter;
|
|
16
|
+
}
|
|
17
|
+
async validateField(opts) {
|
|
18
|
+
var _a;
|
|
19
|
+
var { spec, specParent, fieldName, value, path, config, meta, mapperMeta } = opts;
|
|
20
|
+
path = path ? path : fieldName;
|
|
21
|
+
config = config ? config : {};
|
|
22
|
+
meta = meta ? meta : { errors: [] };
|
|
23
|
+
mapperMeta = mapperMeta ? mapperMeta : {};
|
|
24
|
+
if (spec && spec.$or && Array.isArray(spec.$or)) {
|
|
25
|
+
if (spec.$noCast === true) {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
const orSpecs = spec.$or;
|
|
29
|
+
const orErrors = [];
|
|
30
|
+
let matchedSpec = null;
|
|
31
|
+
let matchedValue = value;
|
|
32
|
+
let bestMatch = null;
|
|
33
|
+
const valueTypeName = value == null ? null : type_caster_1.default.getTypeName(value);
|
|
34
|
+
for (const orSpec of orSpecs) {
|
|
35
|
+
const tempMeta = { errors: {} };
|
|
36
|
+
try {
|
|
37
|
+
const testValue = await this.validateField({
|
|
38
|
+
spec: orSpec,
|
|
39
|
+
specParent,
|
|
40
|
+
fieldName: 'tempField',
|
|
41
|
+
value,
|
|
42
|
+
path,
|
|
43
|
+
config,
|
|
44
|
+
meta: tempMeta,
|
|
45
|
+
mapperMeta,
|
|
46
|
+
});
|
|
47
|
+
if (Object.keys(tempMeta.errors).length === 0) {
|
|
48
|
+
const resultTypeName = testValue == null ? null : type_caster_1.default.getTypeName(testValue);
|
|
49
|
+
const typeCasted = valueTypeName !== resultTypeName;
|
|
50
|
+
if (!bestMatch || (!typeCasted && bestMatch.typeCasted)) {
|
|
51
|
+
bestMatch = { spec: orSpec, value: testValue, typeCasted };
|
|
52
|
+
if (!typeCasted) {
|
|
53
|
+
matchedSpec = orSpec;
|
|
54
|
+
matchedValue = testValue;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (!bestMatch.typeCasted && !typeCasted) {
|
|
59
|
+
matchedSpec = orSpec;
|
|
60
|
+
matchedValue = testValue;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
orErrors.push(tempMeta.errors);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
orErrors.push({ [path]: [e.toString()] });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (bestMatch && !matchedSpec) {
|
|
73
|
+
matchedSpec = bestMatch.spec;
|
|
74
|
+
matchedValue = bestMatch.value;
|
|
75
|
+
}
|
|
76
|
+
if (matchedSpec) {
|
|
77
|
+
return matchedValue;
|
|
78
|
+
}
|
|
79
|
+
if (orErrors.length > 0) {
|
|
80
|
+
orErrors.forEach((errorSet, index) => {
|
|
81
|
+
for (const errorPath in errorSet) {
|
|
82
|
+
errorSet[errorPath].forEach((error) => {
|
|
83
|
+
this.appendError(meta, path, ` [Option ${index + 1}] ${error}`);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
const validators = spec && spec.$validate ? spec.$validate : {};
|
|
91
|
+
const label = spec && spec.$label ? spec.$label : fieldName;
|
|
92
|
+
const strict = spec && spec.$strict !== undefined
|
|
93
|
+
? spec.$strict
|
|
94
|
+
: specParent && specParent.$strict !== undefined
|
|
95
|
+
? specParent.$strict
|
|
96
|
+
: undefined;
|
|
97
|
+
if (!utility_1.default.isValidFieldName(fieldName)) {
|
|
98
|
+
this.appendError(meta, path, 'Invalid field name');
|
|
99
|
+
}
|
|
100
|
+
const fieldType = this.fieldTypeCaster.specToFieldType(spec, value);
|
|
101
|
+
value = await this.fieldFilter.filterField(opts);
|
|
102
|
+
const matchAllSpec = (spec && spec.$spec && spec.$spec['*']) || (spec && spec['*']);
|
|
103
|
+
if (fieldType === Object &&
|
|
104
|
+
value &&
|
|
105
|
+
typeof value === 'object' &&
|
|
106
|
+
!Array.isArray(value) &&
|
|
107
|
+
matchAllSpec) {
|
|
108
|
+
const inheritedMatchAllSpec = {
|
|
109
|
+
...matchAllSpec,
|
|
110
|
+
...((spec === null || spec === void 0 ? void 0 : spec.$noCast) !== undefined &&
|
|
111
|
+
matchAllSpec.$noCast === undefined && { $noCast: spec.$noCast }),
|
|
112
|
+
...((spec === null || spec === void 0 ? void 0 : spec.$strict) !== undefined &&
|
|
113
|
+
matchAllSpec.$strict === undefined && { $strict: spec.$strict }),
|
|
114
|
+
};
|
|
115
|
+
for (const propName in value) {
|
|
116
|
+
if (typeof value[propName] === 'function')
|
|
117
|
+
continue;
|
|
118
|
+
const propValue = await this.validateField({
|
|
119
|
+
spec: inheritedMatchAllSpec,
|
|
120
|
+
specParent: spec,
|
|
121
|
+
fieldName: propName,
|
|
122
|
+
value: value[propName],
|
|
123
|
+
path: path ? `${path}.${propName}` : propName,
|
|
124
|
+
config,
|
|
125
|
+
meta,
|
|
126
|
+
mapperMeta,
|
|
127
|
+
});
|
|
128
|
+
value[propName] = propValue;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (fieldType == Object && strict) {
|
|
132
|
+
for (let fieldName in value) {
|
|
133
|
+
if (typeof value[fieldName] == 'function')
|
|
134
|
+
continue;
|
|
135
|
+
const hasMatchAll = ((_a = spec.$spec) === null || _a === void 0 ? void 0 : _a['*']) !== undefined || spec['*'] !== undefined;
|
|
136
|
+
const fieldDefined = spec[fieldName] !== undefined ||
|
|
137
|
+
(spec.$spec && spec.$spec[fieldName] !== undefined);
|
|
138
|
+
if (!fieldDefined && !hasMatchAll) {
|
|
139
|
+
this.appendError(meta, fieldName, 'Field not specified');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
validators.notNull =
|
|
144
|
+
validators.notNull !== undefined
|
|
145
|
+
? validators.notNull
|
|
146
|
+
: this.config.defaultNotNull;
|
|
147
|
+
if (![types_1.default.Array, types_1.default.Object].includes(fieldType) &&
|
|
148
|
+
((value === null && !validators.notNull) ||
|
|
149
|
+
(value === undefined && !validators.required))) {
|
|
150
|
+
return value;
|
|
151
|
+
}
|
|
152
|
+
var validateResults = await validator_1.default.validate(value, validators, {
|
|
153
|
+
label,
|
|
154
|
+
root: mapperMeta.root,
|
|
155
|
+
});
|
|
156
|
+
if (Array.isArray(validateResults)) {
|
|
157
|
+
validateResults.forEach((result) => {
|
|
158
|
+
this.appendError(meta, path, result);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
return value;
|
|
162
|
+
}
|
|
163
|
+
appendError(meta, path, error) {
|
|
164
|
+
var errors = Array.isArray(meta.errors[path]) ? meta.errors[path] : [];
|
|
165
|
+
errors.push(error);
|
|
166
|
+
meta.errors[path] = errors;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
exports.SchemaFieldValidator = SchemaFieldValidator;
|
|
170
|
+
exports.default = SchemaFieldValidator;
|
|
171
|
+
//# sourceMappingURL=field-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-validator.js","sourceRoot":"","sources":["../../src/processors/field-validator.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA8C;AAC9C,mEAAgD;AAChD,qDAAkC;AAOlC,2EAAiD;AAwCjD,MAAa,oBAAoB;IAK/B,YACE,MAAoB,EACpB,eAAsC,EACtC,WAA8B;QAE9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IAkBD,KAAK,CAAC,aAAa,CAAC,IASnB;;QACC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GACxE,IAAI,CAAA;QAEN,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9B,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7B,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;QACnC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;QAGzC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAEhD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAG1B,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;YACxB,MAAM,QAAQ,GAAwC,EAAE,CAAA;YACxD,IAAI,WAAW,GAAsB,IAAI,CAAA;YACzC,IAAI,YAAY,GAAQ,KAAK,CAAA;YAC7B,IAAI,SAAS,GAIF,IAAI,CAAA;YAEf,MAAM,aAAa,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAE1E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAE7B,MAAM,QAAQ,GAAyB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;gBAErD,IAAI,CAAC;oBAEH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;wBACzC,IAAI,EAAE,MAAM;wBACZ,UAAU;wBACV,SAAS,EAAE,WAAW;wBACtB,KAAK;wBACL,IAAI;wBACJ,MAAM;wBACN,IAAI,EAAE,QAAQ;wBACd,UAAU;qBACX,CAAC,CAAA;oBAGF,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAE9C,MAAM,cAAc,GAClB,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;wBAE9D,MAAM,UAAU,GAAG,aAAa,KAAK,cAAc,CAAA;wBAGnD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;4BACxD,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;4BAG1D,IAAI,CAAC,UAAU,EAAE,CAAC;gCAChB,WAAW,GAAG,MAAM,CAAA;gCACpB,YAAY,GAAG,SAAS,CAAA;gCACxB,MAAK;4BACP,CAAC;wBACH,CAAC;6BAAM,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;4BAEhD,WAAW,GAAG,MAAM,CAAA;4BACpB,YAAY,GAAG,SAAS,CAAA;4BACxB,MAAK;wBACP,CAAC;oBACH,CAAC;yBAAM,CAAC;wBAEN,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;oBAChC,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBAEX,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAc,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;YAGD,IAAI,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC9B,WAAW,GAAG,SAAS,CAAC,IAAI,CAAA;gBAC5B,YAAY,GAAG,SAAS,CAAC,KAAK,CAAA;YAChC,CAAC;YAGD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,YAAY,CAAA;YACrB,CAAC;YAGD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;oBACnC,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;wBACjC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;4BACpC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;wBAClE,CAAC,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/D,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;QAC3D,MAAM,MAAM,GACV,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAChC,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS;gBAC9C,CAAC,CAAC,UAAU,CAAC,OAAO;gBACpB,CAAC,CAAC,SAAS,CAAA;QAEjB,IAAI,CAAC,iBAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAA;QACpD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAGnE,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAIhD,MAAM,YAAY,GAChB,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAEhE,IACE,SAAS,KAAK,MAAM;YACpB,KAAK;YACL,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,YAAY,EACZ,CAAC;YAGD,MAAM,qBAAqB,GAAG;gBAC5B,GAAG,YAAY;gBACf,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,MAAK,SAAS;oBAC7B,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClE,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,MAAK,SAAS;oBAC7B,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;aACnE,CAAA;YAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,UAAU;oBAAE,SAAQ;gBAEnD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;oBACzC,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;oBACtB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ;oBAC7C,MAAM;oBACN,IAAI;oBACJ,UAAU;iBACX,CAAC,CAAA;gBACF,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAA;YAC7B,CAAC;QACH,CAAC;QAED,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YAElC,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBAC5B,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU;oBAAE,SAAQ;gBAEnD,MAAM,WAAW,GACf,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAG,GAAG,CAAC,MAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAA;gBAE5D,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS;oBAC7B,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;gBACrD,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;oBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAA;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAGD,UAAU,CAAC,OAAO;YAChB,UAAU,CAAC,OAAO,KAAK,SAAS;gBAC9B,CAAC,CAAC,UAAU,CAAC,OAAO;gBACpB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;QAEhC,IACE,CAAC,CAAC,eAAW,CAAC,KAAK,EAAE,eAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC5D,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACtC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAChD,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,eAAe,GAAG,MAAM,mBAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE;YAChE,KAAK;YACL,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC,CAAA;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YACtC,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAQO,WAAW,CACjB,IAA0B,EAC1B,IAAqB,EACrB,KAAa;QAEb,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;IAC5B,CAAC;CACF;AAtQD,oDAsQC;AAED,kBAAe,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./field-type-caster"), exports);
|
|
18
|
+
__exportStar(require("./field-filter"), exports);
|
|
19
|
+
__exportStar(require("./field-validator"), exports);
|
|
20
|
+
__exportStar(require("./field-private-filter"), exports);
|
|
21
|
+
__exportStar(require("./transient-processor"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/processors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,iDAA8B;AAC9B,oDAAiC;AACjC,yDAAsC;AACtC,wDAAqC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SchemaIterator } from '../iterator';
|
|
2
|
+
import SchemaFieldTypeCaster from './field-type-caster';
|
|
3
|
+
export interface SchemaTransientProcessorInterface {
|
|
4
|
+
applyTransients(object: any, iterator: SchemaIterator, constructors: {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}, schemas: {
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
}, schemaName: string): any;
|
|
9
|
+
stripTransients(object: any, iterator: SchemaIterator, iteratorType?: string): any;
|
|
10
|
+
stripFunctions(obj: any): any;
|
|
11
|
+
}
|
|
12
|
+
export declare class SchemaTransientProcessor implements SchemaTransientProcessorInterface {
|
|
13
|
+
private fieldTypeCaster;
|
|
14
|
+
constructor(fieldTypeCaster: SchemaFieldTypeCaster);
|
|
15
|
+
applyTransients(object: any, iterator: SchemaIterator, constructors: {
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
}, _schemas: {
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
}, schemaName: string): any;
|
|
20
|
+
stripTransients(object: any, iterator: SchemaIterator, iteratorType?: string): any;
|
|
21
|
+
stripFunctions(obj: any): any;
|
|
22
|
+
}
|
|
23
|
+
export default SchemaTransientProcessor;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SchemaTransientProcessor = void 0;
|
|
7
|
+
const collection_1 = __importDefault(require("../utilities/collection"));
|
|
8
|
+
const types_1 = __importDefault(require("../types"));
|
|
9
|
+
const object_path_accessor_1 = __importDefault(require("../utilities/object-path-accessor"));
|
|
10
|
+
class SchemaTransientProcessor {
|
|
11
|
+
constructor(fieldTypeCaster) {
|
|
12
|
+
this.fieldTypeCaster = fieldTypeCaster;
|
|
13
|
+
}
|
|
14
|
+
applyTransients(object, iterator, constructors, _schemas, schemaName) {
|
|
15
|
+
return object && constructors
|
|
16
|
+
? iterator.iterate(object, (opts) => {
|
|
17
|
+
var _a, _b, _c;
|
|
18
|
+
let { spec, fieldName, container, path, meta: mapperMeta } = opts;
|
|
19
|
+
if (!container)
|
|
20
|
+
return;
|
|
21
|
+
let pathRef = spec ? spec.$pathRef : null;
|
|
22
|
+
if (pathRef) {
|
|
23
|
+
container[fieldName] = object_path_accessor_1.default.getPath(pathRef, mapperMeta.root);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const noCast = (spec === null || spec === void 0 ? void 0 : spec.$noCast) === true;
|
|
27
|
+
if (!noCast) {
|
|
28
|
+
const fieldType = this.fieldTypeCaster.specToFieldType(spec, container[fieldName]);
|
|
29
|
+
if (container[fieldName] != undefined) {
|
|
30
|
+
if (fieldType && fieldType != types_1.default.Mixed) {
|
|
31
|
+
container[fieldName] = this.fieldTypeCaster.typeCast(fieldType, container[fieldName], path);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
let construct;
|
|
37
|
+
if (container[fieldName] && Array.isArray(container[fieldName])) {
|
|
38
|
+
construct =
|
|
39
|
+
(spec === null || spec === void 0 ? void 0 : spec.$constructCollection) ||
|
|
40
|
+
((_a = spec === null || spec === void 0 ? void 0 : spec.$spec) === null || _a === void 0 ? void 0 : _a.$constructCollection) ||
|
|
41
|
+
(spec === null || spec === void 0 ? void 0 : spec.$construct) ||
|
|
42
|
+
collection_1.default;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
construct = (spec === null || spec === void 0 ? void 0 : spec.$construct) || ((_b = spec === null || spec === void 0 ? void 0 : spec.$spec) === null || _b === void 0 ? void 0 : _b.$construct);
|
|
46
|
+
}
|
|
47
|
+
const isNullable = (spec === null || spec === void 0 ? void 0 : spec.$nullable) || ((_c = spec === null || spec === void 0 ? void 0 : spec.$spec) === null || _c === void 0 ? void 0 : _c.$nullable);
|
|
48
|
+
const isNull = container[fieldName] === null;
|
|
49
|
+
if (construct && !(isNull && isNullable)) {
|
|
50
|
+
let constructorFunction = null;
|
|
51
|
+
if (typeof construct === 'string' && constructors[construct]) {
|
|
52
|
+
constructorFunction = constructors[construct];
|
|
53
|
+
}
|
|
54
|
+
else if (typeof construct === 'function') {
|
|
55
|
+
constructorFunction = construct;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
throw new Error(`Constructor "${construct}" not found for path "${path}" in schema ${schemaName}`);
|
|
59
|
+
}
|
|
60
|
+
if (constructorFunction) {
|
|
61
|
+
if (Array.isPrototypeOf(constructorFunction) &&
|
|
62
|
+
(!container[fieldName] || Array.isArray(container[fieldName]))) {
|
|
63
|
+
if ('fromArray' in constructorFunction.prototype) {
|
|
64
|
+
container[fieldName] = new constructorFunction().fromArray(container[fieldName]);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
container[fieldName] = container[fieldName]
|
|
68
|
+
? new constructorFunction(...container[fieldName])
|
|
69
|
+
: Object.create(constructorFunction.prototype);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
container[fieldName] = Reflect.construct(constructorFunction, [
|
|
74
|
+
container[fieldName],
|
|
75
|
+
]);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
: object;
|
|
81
|
+
}
|
|
82
|
+
stripTransients(object, iterator, iteratorType) {
|
|
83
|
+
var iteratorType = iteratorType == 'iteratePaths' ? 'iteratePaths' : 'iterate';
|
|
84
|
+
var deleteRefs = [];
|
|
85
|
+
var result = object
|
|
86
|
+
? iterator[iteratorType](object, (opts) => {
|
|
87
|
+
var { spec, fieldName, container } = opts;
|
|
88
|
+
if (spec && container) {
|
|
89
|
+
if (spec.$pathRef !== undefined || spec.$relation) {
|
|
90
|
+
deleteRefs.push({ container, fieldName });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
: object;
|
|
95
|
+
deleteRefs.forEach((ref) => {
|
|
96
|
+
if (ref.container && ref.container[ref.fieldName])
|
|
97
|
+
delete ref.container[ref.fieldName];
|
|
98
|
+
});
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
stripFunctions(obj) {
|
|
102
|
+
if (obj === null || typeof obj !== 'object') {
|
|
103
|
+
return obj;
|
|
104
|
+
}
|
|
105
|
+
if (Array.isArray(obj)) {
|
|
106
|
+
return obj
|
|
107
|
+
.filter((item) => typeof item !== 'function')
|
|
108
|
+
.map((item) => this.stripFunctions(item));
|
|
109
|
+
}
|
|
110
|
+
const result = {};
|
|
111
|
+
for (const key in obj) {
|
|
112
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
113
|
+
const value = obj[key];
|
|
114
|
+
if (typeof value !== 'function') {
|
|
115
|
+
result[key] = this.stripFunctions(value);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.SchemaTransientProcessor = SchemaTransientProcessor;
|
|
123
|
+
exports.default = SchemaTransientProcessor;
|
|
124
|
+
//# sourceMappingURL=transient-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transient-processor.js","sourceRoot":"","sources":["../../src/processors/transient-processor.ts"],"names":[],"mappings":";;;;;;AACA,yEAAgD;AAChD,qDAAkC;AAClC,6FAAkE;AA+DlE,MAAa,wBAAwB;IAGnC,YAAY,eAAsC;QAChD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAkBD,eAAe,CACb,MAAW,EACX,QAAwB,EACxB,YAAoC,EACpC,QAAgC,EAChC,UAAkB;QAElB,OAAO,MAAM,IAAI,YAAY;YAC3B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;;gBAChC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;gBACjE,IAAI,CAAC,SAAS;oBAAE,OAAM;gBAEtB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACZ,SAAS,CAAC,SAAS,CAAC,GAAG,8BAAkB,CAAC,OAAO,CAC/C,OAAO,EACP,UAAU,CAAC,IAAI,CAChB,CAAA;gBACH,CAAC;qBAAM,CAAC;oBAEN,MAAM,MAAM,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,MAAK,IAAI,CAAA;oBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CACpD,IAAI,EACJ,SAAS,CAAC,SAAS,CAAC,CACrB,CAAA;wBACD,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;4BAItC,IAAI,SAAS,IAAI,SAAS,IAAI,eAAW,CAAC,KAAK,EAAE,CAAC;gCAChD,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAClD,SAAS,EACT,SAAS,CAAC,SAAS,CAAC,EACpB,IAAI,CACL,CAAA;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,SAAS,CAAA;gBACb,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;oBAChE,SAAS;wBACP,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,oBAAoB;6BAC1B,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,0CAAE,oBAAoB,CAAA;6BACjC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAA;4BAChB,oBAAU,CAAA;gBACd,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,MAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,0CAAE,UAAU,CAAA,CAAA;gBACzD,CAAC;gBAED,MAAM,UAAU,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,MAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,0CAAE,SAAS,CAAA,CAAA;gBAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;gBAC5C,IAAI,SAAS,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC;oBACzC,IAAI,mBAAmB,GAAG,IAAI,CAAA;oBAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7D,mBAAmB,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;oBAC/C,CAAC;yBAAM,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;wBAC3C,mBAAmB,GAAG,SAAS,CAAA;oBACjC,CAAC;yBAAM,CAAC;wBAEN,MAAM,IAAI,KAAK,CACb,gBAAgB,SAAS,yBAAyB,IAAI,eAAe,UAAU,EAAE,CAClF,CAAA;oBACH,CAAC;oBACD,IAAI,mBAAmB,EAAE,CAAC;wBACxB,IACE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC;4BACxC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAC9D,CAAC;4BACD,IAAI,WAAW,IAAI,mBAAmB,CAAC,SAAS,EAAE,CAAC;gCACjD,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,mBAAmB,EAAE,CAAC,SAAS,CACxD,SAAS,CAAC,SAAS,CAAC,CACrB,CAAA;4BACH,CAAC;iCAAM,CAAC;gCACN,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC;oCACzC,CAAC,CAAC,IAAI,mBAAmB,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;oCAClD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAA;4BAClD,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE;gCAC5D,SAAS,CAAC,SAAS,CAAC;6BACrB,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACJ,CAAC,CAAC,MAAM,CAAA;IACZ,CAAC;IAcD,eAAe,CACb,MAAW,EACX,QAAwB,EACxB,YAAqB;QAErB,IAAI,YAAY,GACd,YAAY,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7D,IAAI,UAAU,GAAG,EAAE,CAAA;QACnB,IAAI,MAAM,GAAG,MAAM;YACjB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;gBACzC,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;oBACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBAClD,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;oBAC3C,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACJ,CAAC,CAAC,MAAM,CAAA;QACV,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC/C,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IASD,cAAc,CAAC,GAAQ;QACrB,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG;iBACP,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;iBAC5C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;gBACtB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAnLD,4DAmLC;AAED,kBAAe,wBAAwB,CAAA"}
|