@allgemein/expressions 1.1.0 → 1.2.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 +1 -1
- package/browser.js +1 -2
- package/browser.js.map +1 -1
- package/index.js +6 -3
- package/index.js.map +1 -1
- package/libs/descriptors/AndDesc.js +3 -4
- package/libs/descriptors/AndDesc.js.map +1 -1
- package/libs/descriptors/EqDesc.js +4 -5
- package/libs/descriptors/EqDesc.js.map +1 -1
- package/libs/descriptors/ExprDesc.js +20 -18
- package/libs/descriptors/ExprDesc.js.map +1 -1
- package/libs/descriptors/GeDesc.js +3 -4
- package/libs/descriptors/GeDesc.js.map +1 -1
- package/libs/descriptors/GroupDesc.js +1 -2
- package/libs/descriptors/GroupDesc.js.map +1 -1
- package/libs/descriptors/GtDesc.js +3 -4
- package/libs/descriptors/GtDesc.js.map +1 -1
- package/libs/descriptors/IExpr.js +1 -2
- package/libs/descriptors/IExpr.js.map +1 -1
- package/libs/descriptors/InDesc.js +3 -4
- package/libs/descriptors/InDesc.js.map +1 -1
- package/libs/descriptors/KeyDesc.js +3 -4
- package/libs/descriptors/KeyDesc.js.map +1 -1
- package/libs/descriptors/LeDesc.js +3 -4
- package/libs/descriptors/LeDesc.js.map +1 -1
- package/libs/descriptors/LikeDesc.js +3 -4
- package/libs/descriptors/LikeDesc.js.map +1 -1
- package/libs/descriptors/LtDesc.js +3 -4
- package/libs/descriptors/LtDesc.js.map +1 -1
- package/libs/descriptors/NeqDesc.js +3 -4
- package/libs/descriptors/NeqDesc.js.map +1 -1
- package/libs/descriptors/OpDesc.js +3 -4
- package/libs/descriptors/OpDesc.js.map +1 -1
- package/libs/descriptors/OrDesc.js +3 -4
- package/libs/descriptors/OrDesc.js.map +1 -1
- package/libs/descriptors/Selector.js +1 -2
- package/libs/descriptors/Selector.js.map +1 -1
- package/libs/descriptors/ValueDesc.js +3 -4
- package/libs/descriptors/ValueDesc.js.map +1 -1
- package/libs/exceptions/ExpressionValidationError.js +1 -2
- package/libs/exceptions/ExpressionValidationError.js.map +1 -1
- package/libs/expressions/ExpressionInterpreter.js +24 -24
- package/libs/expressions/ExpressionInterpreter.js.map +1 -1
- package/libs/expressions/Expressions.d.ts +13 -0
- package/libs/expressions/Expressions.js +48 -56
- package/libs/expressions/Expressions.js.map +1 -1
- package/package.json +11 -37
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ValueDesc = void 0;
|
|
4
|
+
exports.Value = Value;
|
|
4
5
|
const Selector_1 = require("./Selector");
|
|
5
6
|
class ValueDesc extends Selector_1.Selector {
|
|
6
7
|
constructor(value) {
|
|
@@ -20,6 +21,4 @@ exports.ValueDesc = ValueDesc;
|
|
|
20
21
|
function Value(v) {
|
|
21
22
|
return new ValueDesc(v);
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=ValueDesc.js.map
|
|
24
|
+
//# sourceMappingURL=ValueDesc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"file":"ValueDesc.js","sourceRoot":"","sources":["../../../../src/libs/descriptors/ValueDesc.ts"],"names":[],"mappings":";;;AAsBA,sBAEC;AAxBD,yCAAoC;AAEpC,MAAa,SAAU,SAAQ,mBAAQ;IAIrC,YAAY,KAAsB;QAChC,KAAK,EAAE,CAAC;QAJD,SAAI,GAAU,OAAO,CAAC;QAK7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CAEF;AAbD,8BAaC;AAGD;;;GAGG;AACH,SAAgB,KAAK,CAAC,CAAkB;IACtC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"file":"ExpressionValidationError.js","sourceRoot":"","sources":["../../../../src/libs/exceptions/ExpressionValidationError.ts"],"names":[],"mappings":";;;AAEA,MAAa,yBAA0B,SAAQ,KAAK;IAElD,YAAY,GAAU;QACpB,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CAEF;AAPD,8DAOC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExpressionInterpreter = void 0;
|
|
4
|
-
const _ = require("lodash");
|
|
5
4
|
const LikeDesc_1 = require("../descriptors/LikeDesc");
|
|
6
5
|
const LtDesc_1 = require("../descriptors/LtDesc");
|
|
7
6
|
const GtDesc_1 = require("../descriptors/GtDesc");
|
|
@@ -15,6 +14,7 @@ const GeDesc_1 = require("../descriptors/GeDesc");
|
|
|
15
14
|
const GroupDesc_1 = require("../descriptors/GroupDesc");
|
|
16
15
|
const AndDesc_1 = require("../descriptors/AndDesc");
|
|
17
16
|
const OrDesc_1 = require("../descriptors/OrDesc");
|
|
17
|
+
const lodash_1 = require("lodash");
|
|
18
18
|
class ExpressionInterpreter {
|
|
19
19
|
constructor() {
|
|
20
20
|
//rootEntityDef:EntityDef;
|
|
@@ -70,16 +70,16 @@ class ExpressionInterpreter {
|
|
|
70
70
|
}
|
|
71
71
|
interprete(str) {
|
|
72
72
|
this.fragmentize(str);
|
|
73
|
-
return
|
|
73
|
+
return (0, lodash_1.first)(this.res);
|
|
74
74
|
}
|
|
75
75
|
fragmentize(str) {
|
|
76
|
-
let lastState =
|
|
76
|
+
let lastState = (0, lodash_1.last)(this.queue);
|
|
77
77
|
let currentOps = this.ops.filter(x => {
|
|
78
78
|
let _true = true;
|
|
79
79
|
if (x.condition) {
|
|
80
80
|
_true = x.condition();
|
|
81
81
|
}
|
|
82
|
-
if (
|
|
82
|
+
if ((0, lodash_1.isEmpty)(x.after)) {
|
|
83
83
|
return _true;
|
|
84
84
|
}
|
|
85
85
|
if (!lastState) {
|
|
@@ -99,14 +99,15 @@ class ExpressionInterpreter {
|
|
|
99
99
|
const regex = new RegExp('^\\s*' + currentOps.map(x => '(' + x.regex.source + ')').join('|'), 'gim');
|
|
100
100
|
let arr = regex.exec(str);
|
|
101
101
|
if (arr) {
|
|
102
|
-
let index =
|
|
102
|
+
// let index = arr.findIndex(x => !isUndefined(x));
|
|
103
|
+
let index = (0, lodash_1.findIndex)(arr, x => !(0, lodash_1.isUndefined)(x), 1) - 1;
|
|
103
104
|
if (index > -1) {
|
|
104
105
|
let opId = map[index];
|
|
105
106
|
let op = currentOps[opId];
|
|
106
107
|
// console.log(map, regex, arr, regex.lastIndex,op.name);
|
|
107
108
|
op.method.apply(this, [arr[index + 1], str]);
|
|
108
109
|
const nextStr = str.substring(regex.lastIndex);
|
|
109
|
-
if (!
|
|
110
|
+
if (!(0, lodash_1.isEmpty)(nextStr)) {
|
|
110
111
|
this.fragmentize(nextStr);
|
|
111
112
|
}
|
|
112
113
|
}
|
|
@@ -176,28 +177,28 @@ class ExpressionInterpreter {
|
|
|
176
177
|
if (op.state == 'onOperator' && key && key.state == 'onKey') {
|
|
177
178
|
switch (op.value.trim().toLowerCase()) {
|
|
178
179
|
case '=':
|
|
179
|
-
erg = EqDesc_1.Eq(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
180
|
+
erg = (0, EqDesc_1.Eq)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
180
181
|
break;
|
|
181
182
|
case 'like':
|
|
182
|
-
erg = LikeDesc_1.Like(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
183
|
+
erg = (0, LikeDesc_1.Like)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
183
184
|
break;
|
|
184
185
|
case '<=':
|
|
185
|
-
erg = LeDesc_1.Le(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
186
|
+
erg = (0, LeDesc_1.Le)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
186
187
|
break;
|
|
187
188
|
case '>=':
|
|
188
|
-
erg = GeDesc_1.Ge(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
189
|
+
erg = (0, GeDesc_1.Ge)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
189
190
|
break;
|
|
190
191
|
case '<':
|
|
191
|
-
erg = LtDesc_1.Lt(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
192
|
+
erg = (0, LtDesc_1.Lt)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
192
193
|
break;
|
|
193
194
|
case '>':
|
|
194
|
-
erg = GtDesc_1.Gt(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
195
|
+
erg = (0, GtDesc_1.Gt)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
195
196
|
break;
|
|
196
197
|
case 'in':
|
|
197
|
-
erg = InDesc_1.In(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
198
|
+
erg = (0, InDesc_1.In)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
198
199
|
break;
|
|
199
200
|
case '<>':
|
|
200
|
-
erg = NeqDesc_1.Neq(KeyDesc_1.Key(key.value), ValueDesc_1.Value(value));
|
|
201
|
+
erg = (0, NeqDesc_1.Neq)((0, KeyDesc_1.Key)(key.value), (0, ValueDesc_1.Value)(value));
|
|
201
202
|
break;
|
|
202
203
|
default:
|
|
203
204
|
throw new Error('operator not found');
|
|
@@ -214,7 +215,7 @@ class ExpressionInterpreter {
|
|
|
214
215
|
key: key,
|
|
215
216
|
desc: erg
|
|
216
217
|
});
|
|
217
|
-
let res =
|
|
218
|
+
let res = (0, lodash_1.last)(this.res);
|
|
218
219
|
if (res instanceof GroupDesc_1.GroupDesc) {
|
|
219
220
|
res.values.push(erg);
|
|
220
221
|
}
|
|
@@ -234,12 +235,12 @@ class ExpressionInterpreter {
|
|
|
234
235
|
});
|
|
235
236
|
}
|
|
236
237
|
leaveGroup() {
|
|
237
|
-
let group =
|
|
238
|
+
let group = this.res.find(g => g instanceof GroupDesc_1.GroupDesc ? g.id == this.groupLevel : false);
|
|
238
239
|
if (group && group.type == 'group') {
|
|
239
|
-
|
|
240
|
+
(0, lodash_1.remove)(this.res, g => g instanceof GroupDesc_1.GroupDesc ? g.id == this.groupLevel : false);
|
|
240
241
|
// embedded withotu bool
|
|
241
242
|
let prevGid = this.groupLevel - 1;
|
|
242
|
-
let prevGroup =
|
|
243
|
+
let prevGroup = this.res.find(g => g instanceof GroupDesc_1.GroupDesc ? g.id == prevGid : false);
|
|
243
244
|
if (prevGroup) {
|
|
244
245
|
group.values.forEach((v) => prevGroup.values.push(v));
|
|
245
246
|
group.values = [];
|
|
@@ -269,10 +270,10 @@ class ExpressionInterpreter {
|
|
|
269
270
|
// undefined
|
|
270
271
|
switch (bool) {
|
|
271
272
|
case 'AND':
|
|
272
|
-
group = AndDesc_1.And(...last.values);
|
|
273
|
+
group = (0, AndDesc_1.And)(...last.values);
|
|
273
274
|
break;
|
|
274
275
|
case 'OR':
|
|
275
|
-
group = OrDesc_1.Or(...last.values);
|
|
276
|
+
group = (0, OrDesc_1.Or)(...last.values);
|
|
276
277
|
break;
|
|
277
278
|
}
|
|
278
279
|
group.id = this.groupLevel;
|
|
@@ -281,10 +282,10 @@ class ExpressionInterpreter {
|
|
|
281
282
|
else {
|
|
282
283
|
switch (bool) {
|
|
283
284
|
case 'AND':
|
|
284
|
-
group = AndDesc_1.And(last);
|
|
285
|
+
group = (0, AndDesc_1.And)(last);
|
|
285
286
|
break;
|
|
286
287
|
case 'OR':
|
|
287
|
-
group = OrDesc_1.Or(last);
|
|
288
|
+
group = (0, OrDesc_1.Or)(last);
|
|
288
289
|
break;
|
|
289
290
|
}
|
|
290
291
|
group.id = this.groupLevel;
|
|
@@ -299,5 +300,4 @@ class ExpressionInterpreter {
|
|
|
299
300
|
}
|
|
300
301
|
}
|
|
301
302
|
exports.ExpressionInterpreter = ExpressionInterpreter;
|
|
302
|
-
|
|
303
|
-
//# sourceMappingURL=ExpressionInterpreter.js.map
|
|
303
|
+
//# sourceMappingURL=ExpressionInterpreter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/libs/expressions/ExpressionInterpreter.ts"],"names":[],"mappings":"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","file":"ExpressionInterpreter.js","sourcesContent":["import * as _ from 'lodash';\nimport {Like} from \"../descriptors/LikeDesc\";\nimport {Lt} from \"../descriptors/LtDesc\";\nimport {Gt} from \"../descriptors/GtDesc\";\nimport {In} from \"../descriptors/InDesc\";\nimport {Neq} from \"../descriptors/NeqDesc\";\nimport {ExprDesc} from \"../descriptors/ExprDesc\";\nimport {Eq} from \"../descriptors/EqDesc\";\nimport {Le} from \"../descriptors/LeDesc\";\nimport {Key} from \"../descriptors/KeyDesc\";\nimport {Value} from \"../descriptors/ValueDesc\";\nimport {Ge} from \"../descriptors/GeDesc\";\nimport {GroupDesc} from \"../descriptors/GroupDesc\";\nimport {And} from \"../descriptors/AndDesc\";\nimport {Or} from \"../descriptors/OrDesc\";\n\n\nexport class ExpressionInterpreter {\n\n //rootEntityDef:EntityDef;\n\n groupLevel: number = 0;\n\n ops: any[] = [\n {\n name: 'visitGroup',\n regex: /\\(/,\n method: this.visitGroup,\n after: [null, 'visitGroup', 'onBool']\n },\n {\n name: 'leaveGroup',\n regex: /\\)/,\n method: this.leaveGroup,\n condition: () => {\n return this.groupLevel > 0;\n },\n after: ['onValue', 'leaveGroup']\n },\n {\n name: 'onKey',\n regex: /('[^']+')|(\"[^\"]+\")|(\\w|\\.|\\d)+/,\n method: this.onKey,\n skipIndex: 3,\n after: [null, 'visitGroup', 'onBool']\n },\n {\n name: 'onBool',\n regex: / (and|AND|or|OR) /,\n method: this.onBool,\n skipIndex: 1,\n after: ['leaveGroup', 'onValue']\n },\n {\n name: 'onOperator',\n regex: /(>=|<=|<>|>|<|=| in | IN | like | LIKE )/,\n method: this.onOperator,\n skipIndex: 1,\n after: ['onKey']\n },\n {\n name: 'onValue',\n regex: /('[^']*')|(\"[^\"]*\")|\\d+|\\d+.\\d+|(\\(((('[^']*')|(\"[^\"]*\")|\\d+|\\d+.\\d+)\\s*,?\\s*)+\\))/,\n method: this.onValue,\n skipIndex: 7,\n after: ['onOperator']\n },\n ];\n\n res: ExprDesc[] = [];\n\n queue: any[] = [];\n\n regex: RegExp;\n\n constructor() {\n //this.rootEntityDef = entityDef;\n }\n\n\n interprete(str: string) {\n this.fragmentize(str);\n return _.first(this.res);\n }\n\n\n fragmentize(str: string) {\n let lastState = _.last(this.queue);\n\n let currentOps = this.ops.filter(x => {\n let _true = true;\n if (x.condition) {\n _true = x.condition();\n }\n if (_.isEmpty(x.after)) {\n return _true;\n }\n\n if (!lastState) {\n return _true && x.after.indexOf(null) > -1\n } else {\n return _true && x.after.indexOf(lastState.state) > -1\n }\n\n });\n //console.log(currentOps.map(x => x.name));\n let inc = 0;\n let map: any = {};\n currentOps.map((x, index) => {\n map[inc] = index;\n inc = x.skipIndex ? inc + x.skipIndex : inc + 1;\n });\n\n const regex = new RegExp('^\\\\s*' + currentOps.map(x => '(' + x.regex.source + ')').join('|'), 'gim');\n let arr = regex.exec(str);\n if (arr) {\n let index = _.findIndex(arr, x => !_.isUndefined(x), 1) - 1;\n\n if (index > -1) {\n let opId = map[index]\n let op = currentOps[opId];\n // console.log(map, regex, arr, regex.lastIndex,op.name);\n op.method.apply(this, [arr[index + 1], str]);\n const nextStr = str.substring(regex.lastIndex);\n if (!_.isEmpty(nextStr)) {\n this.fragmentize(nextStr);\n }\n } else {\n throw new Error('no match found at \"' + JSON.stringify(arr) + '\"');\n }\n } else {\n throw new Error('nothing found at \"' + str + '\" with regex '+regex.source);\n }\n }\n\n /*\n escape(x: string) {\n const specials = [\n '/', '.', '*', '+', '?', '|',\n '(', ')', '[', ']', '{', '}', '\\\\'\n ];\n const regex = new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'gim');\n return x.replace(regex, '\\\\$1');\n }\n */\n\n onKey(match: string, str: string) {\n let key = match.replace(/^('|\")|('|\")$/g, '');\n this.queue.push({\n group: this.groupLevel,\n value: key,\n state: 'onKey'\n });\n\n }\n\n\n onOperator(match: string, str: string) {\n this.queue.push({\n group: this.groupLevel,\n value: match,\n state: 'onOperator'\n });\n }\n\n\n onValue(match: string, str: string) {\n let value: any;\n if (/^('|\")|('|\")$/.test(match)) {\n value = match.replace(/^('|\")|('|\")$/g, '');\n } else if (/^\\d+$/.test(match)) {\n value = parseInt(match);\n } else if (/^\\d+\\.\\d+$/.test(match)) {\n value = parseFloat(match);\n } else if (/^\\(.*\\)$/.test(match)) {\n value = match.replace(/^\\(|\\)$/g, '').split(',').map(x => x.trim())\n .map(x => {\n let value2: any = x;\n if (/^('|\")|('|\")$/.test(x)) {\n value2 = x.replace(/^('|\")|('|\")$/g, '');\n } else if (/^\\d+$/.test(x)) {\n value2 = parseInt(x);\n } else if (/^\\d+\\.\\d+$/.test(x)) {\n value2 = parseFloat(x);\n }\n return value2;\n });\n }\n\n\n let op = this.queue.pop();\n let key = this.queue.pop();\n\n\n let erg: ExprDesc;\n if (op.state == 'onOperator' && key && key.state == 'onKey') {\n switch (op.value.trim().toLowerCase()) {\n case '=':\n erg = Eq(Key(key.value), Value(value));\n break;\n case 'like':\n erg = Like(Key(key.value), Value(value));\n break;\n case '<=':\n erg = Le(Key(key.value), Value(value));\n break;\n case '>=':\n erg = Ge(Key(key.value), Value(value));\n break;\n case '<':\n erg = Lt(Key(key.value), Value(value));\n break;\n case '>':\n erg = Gt(Key(key.value), Value(value));\n break;\n case 'in':\n erg = In(Key(key.value), Value(value));\n break;\n case '<>':\n erg = Neq(Key(key.value), Value(value));\n break;\n default:\n throw new Error('operator not found');\n }\n } else {\n throw new Error('operator not found');\n }\n\n\n this.queue.push({\n group: this.groupLevel,\n value: value,\n state: 'onValue',\n op: op,\n key: key,\n desc: erg\n });\n\n\n let res = _.last(this.res);\n if (res instanceof GroupDesc) {\n res.values.push(erg);\n } else {\n this.res.push(erg);\n }\n }\n\n\n visitGroup() {\n this.groupLevel++;\n\n\n let groupDesc = new GroupDesc();\n groupDesc.id = this.groupLevel;\n this.res.push(groupDesc);\n\n this.queue.push({\n group: this.groupLevel,\n desc: groupDesc,\n state: 'visitGroup'\n });\n }\n\n\n leaveGroup() {\n\n let group = _.find(this.res, g => g instanceof GroupDesc ? g.id == this.groupLevel : false);\n if (group && group.type == 'group') {\n _.remove(this.res, g => g instanceof GroupDesc ? g.id == this.groupLevel : false)\n // embedded withotu bool\n let prevGid = this.groupLevel - 1;\n let prevGroup = _.find(this.res, g => g instanceof GroupDesc ? g.id == prevGid : false);\n if (prevGroup) {\n group.values.forEach((v: ExprDesc) => prevGroup.values.push(v));\n group.values = [];\n } else {\n throw new Error('cant find previous group to move values to ... ');\n }\n }\n\n this.queue.push({\n group: this.groupLevel,\n state: 'leaveGroup',\n desc: group\n });\n\n\n //this.\n\n this.groupLevel--;\n }\n\n onBool(match: string) {\n let bool = match.trim().toLocaleUpperCase();\n let last = this.res.pop();\n let group: GroupDesc;\n\n if (last instanceof GroupDesc && last.id == this.groupLevel && last.type.toLowerCase() == bool.toLowerCase()) {\n // DO NOTTING\n group = last;\n this.res.push(group);\n } else if (last instanceof GroupDesc && last.type == 'group') {\n // undefined\n switch (bool) {\n case 'AND':\n group = And(...last.values);\n break;\n case 'OR':\n group = Or(...last.values);\n break;\n }\n group.id = this.groupLevel;\n this.res.push(group);\n } else {\n switch (bool) {\n case 'AND':\n group = And(last);\n break;\n case 'OR':\n group = Or(last);\n break;\n }\n group.id = this.groupLevel;\n this.res.push(group);\n }\n\n this.queue.push({\n group: this.groupLevel,\n value: match.trim().toLocaleUpperCase(),\n state: 'onBool',\n desc: group\n });\n\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"file":"ExpressionInterpreter.js","sourceRoot":"","sources":["../../../../src/libs/expressions/ExpressionInterpreter.ts"],"names":[],"mappings":";;;AAAA,sDAA6C;AAC7C,kDAAyC;AACzC,kDAAyC;AACzC,kDAAyC;AACzC,oDAA2C;AAE3C,kDAAyC;AACzC,kDAAyC;AACzC,oDAA2C;AAC3C,wDAA+C;AAC/C,kDAAyC;AACzC,wDAAmD;AACnD,oDAA2C;AAC3C,kDAAyC;AACzC,mCAA4E;AAG5E,MAAa,qBAAqB;IA0DhC;QAxDA,0BAA0B;QAE1B,eAAU,GAAW,CAAC,CAAC;QAEvB,QAAG,GAAU;YACX;gBACE,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC;aACtC;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,SAAS,EAAE,GAAG,EAAE;oBACd,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBACD,KAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;aACjC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,iCAAiC;gBACxC,MAAM,EAAE,IAAI,CAAC,KAAK;gBAClB,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC;aACtC;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;aACjC;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,0CAA0C;gBACjD,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,OAAO,CAAC;aACjB;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,oFAAoF;gBAC3F,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC,YAAY,CAAC;aACtB;SACF,CAAC;QAEF,QAAG,GAAe,EAAE,CAAC;QAErB,UAAK,GAAU,EAAE,CAAC;QAKhB,iCAAiC;IACnC,CAAC;IAGD,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAGD,WAAW,CAAC,GAAW;QACrB,IAAI,SAAS,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAChB,KAAK,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,IAAA,gBAAO,EAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC5C,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;YACvD,CAAC;QAEH,CAAC,CAAC,CAAC;QACH,2CAA2C;QAC3C,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,GAAG,GAAQ,EAAE,CAAC;QAClB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACjB,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACrG,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,mDAAmD;YACnD,IAAI,KAAK,GAAG,IAAA,kBAAS,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAA,oBAAW,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAExD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;gBACrB,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC1B,yDAAyD;gBACzD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/C,IAAI,CAAC,IAAA,gBAAO,EAAC,OAAO,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,GAAG,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED;;;;;;;;;MASE;IAEF,KAAK,CAAC,KAAa,EAAE,GAAW;QAC9B,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IAEL,CAAC;IAGD,UAAU,CAAC,KAAa,EAAE,GAAW;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC;IAGD,OAAO,CAAC,KAAa,EAAE,GAAW;QAChC,IAAI,KAAU,CAAC;QACf,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAChE,GAAG,CAAC,CAAC,CAAC,EAAE;gBACP,IAAI,MAAM,GAAQ,CAAC,CAAC;gBACpB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5B,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;gBAC3C,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3B,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC;qBAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC;QAGD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAG3B,IAAI,GAAa,CAAC;QAClB,IAAI,EAAE,CAAC,KAAK,IAAI,YAAY,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5D,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtC,KAAK,GAAG;oBACN,GAAG,GAAG,IAAA,WAAE,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,MAAM;oBACT,GAAG,GAAG,IAAA,eAAI,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACzC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,IAAA,WAAE,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,IAAA,WAAE,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,GAAG;oBACN,GAAG,GAAG,IAAA,WAAE,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,GAAG;oBACN,GAAG,GAAG,IAAA,WAAE,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,IAAA,WAAE,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,IAAA,aAAG,EAAC,IAAA,aAAG,EAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAA,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;oBACxC,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAGD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,SAAS;YAChB,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QAGH,IAAI,GAAG,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,GAAG,YAAY,qBAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAGD,UAAU;QACR,IAAI,CAAC,UAAU,EAAE,CAAC;QAGlB,IAAI,SAAS,GAAG,IAAI,qBAAS,EAAE,CAAC;QAChC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC;IAGD,UAAU;QAER,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,qBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzF,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;YACnC,IAAA,eAAM,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,qBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YAC/E,wBAAwB;YACxB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAClC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,qBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrF,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAGH,OAAO;QAEP,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAC5C,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,KAAgB,CAAC;QAErB,IAAI,IAAI,YAAY,qBAAS,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7G,aAAa;YACb,KAAK,GAAG,IAAI,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,YAAY,qBAAS,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;YAC7D,YAAY;YACZ,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,KAAK;oBACR,KAAK,GAAG,IAAA,aAAG,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,IAAI;oBACP,KAAK,GAAG,IAAA,WAAE,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,MAAM;YACV,CAAC;YACD,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,KAAK;oBACR,KAAK,GAAG,IAAA,aAAG,EAAC,IAAI,CAAC,CAAC;oBAClB,MAAM;gBACR,KAAK,IAAI;oBACP,KAAK,GAAG,IAAA,WAAE,EAAC,IAAI,CAAC,CAAC;oBACjB,MAAM;YACV,CAAC;YACD,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE;YACvC,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IAEL,CAAC;CAGF;AAhUD,sDAgUC"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { ExprDesc } from '../descriptors/ExprDesc';
|
|
2
|
+
import { KeyDesc } from '../descriptors/KeyDesc';
|
|
2
3
|
import { IClassRef, IEntityRef } from '@allgemein/schema-api';
|
|
4
|
+
import { Selector } from '../descriptors/Selector';
|
|
3
5
|
export declare class Expressions {
|
|
6
|
+
static EXPR_REGISTRY: {
|
|
7
|
+
$eq: (k: KeyDesc, v: Selector) => import("../descriptors/EqDesc").EqDesc;
|
|
8
|
+
$ne: (k: KeyDesc, v: Selector) => import("../descriptors/NeqDesc").NeqDesc;
|
|
9
|
+
$le: (k: KeyDesc, v: Selector) => import("../descriptors/LeDesc").LeDesc;
|
|
10
|
+
$lt: (k: KeyDesc, v: Selector) => import("../descriptors/LtDesc").LtDesc;
|
|
11
|
+
$ge: (k: KeyDesc, v: Selector) => import("../descriptors/GeDesc").GeDesc;
|
|
12
|
+
$gt: (k: KeyDesc, v: Selector) => import("../descriptors/GtDesc").GtDesc;
|
|
13
|
+
$like: (k: KeyDesc, v: Selector) => import("../descriptors/LikeDesc").LikeDesc;
|
|
14
|
+
$in: (k: KeyDesc, v: Selector) => import("../descriptors/InDesc").InDesc;
|
|
15
|
+
};
|
|
4
16
|
static parse(str: any): ExprDesc;
|
|
17
|
+
static exprKeys(): string[];
|
|
5
18
|
static fromJson(object: any, srcKey?: string, parent?: ExprDesc): ExprDesc;
|
|
6
19
|
static parseLookupConditions(ref: IClassRef | IEntityRef, id: any): any | any[];
|
|
7
20
|
static buildLookupConditions(ref: IClassRef | IEntityRef, data: any | any[]): string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Expressions = void 0;
|
|
4
|
-
const _ = require("lodash");
|
|
5
4
|
const base_1 = require("@allgemein/base");
|
|
6
5
|
const InDesc_1 = require("../descriptors/InDesc");
|
|
7
6
|
const NeqDesc_1 = require("../descriptors/NeqDesc");
|
|
@@ -16,6 +15,8 @@ const OrDesc_1 = require("../descriptors/OrDesc");
|
|
|
16
15
|
const ValueDesc_1 = require("../descriptors/ValueDesc");
|
|
17
16
|
const GroupDesc_1 = require("../descriptors/GroupDesc");
|
|
18
17
|
const ExpressionInterpreter_1 = require("./ExpressionInterpreter");
|
|
18
|
+
const LikeDesc_1 = require("../descriptors/LikeDesc");
|
|
19
|
+
const lodash_1 = require("lodash");
|
|
19
20
|
const REGEX_ID = /^(([\w_]+)=((\d+)|(\d+(\.|\,)\d+)|\'([^\']*)\'),?)$/;
|
|
20
21
|
const REGEX_ID_G = /^(([\w_]+)=((\d+)|(\d+(\.|\,)\d+)|\'([^\']*)\'),?)$ /g;
|
|
21
22
|
const REGEX_ID_K = /^((\d+)|(\d+(\.|\,)\d+),?)+$/;
|
|
@@ -23,7 +24,7 @@ const REGEX_ID_KG = /^((\d+)|(\d+(\.|\,)\d+),?)+$/g;
|
|
|
23
24
|
const REGEX_ID_W = /^(\'([^\']*)\',?)+$/;
|
|
24
25
|
class Expressions {
|
|
25
26
|
static parse(str) {
|
|
26
|
-
if (
|
|
27
|
+
if ((0, lodash_1.isString)(str)) {
|
|
27
28
|
// check if JSON string
|
|
28
29
|
try {
|
|
29
30
|
let obj = JSON.parse(str.trim());
|
|
@@ -39,7 +40,7 @@ class Expressions {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
else if (
|
|
43
|
+
else if ((0, lodash_1.isPlainObject)(str)) {
|
|
43
44
|
return this.fromJson(str);
|
|
44
45
|
}
|
|
45
46
|
else {
|
|
@@ -54,7 +55,7 @@ class Expressions {
|
|
|
54
55
|
Helper.walk(object, (data: WalkValues) => {
|
|
55
56
|
console.log(data)
|
|
56
57
|
let op: CondDesc = null;
|
|
57
|
-
if (/^(\$and|\$or)$/.test(data.key) &&
|
|
58
|
+
if (/^(\$and|\$or)$/.test(data.key) && isArray(data.value)) {
|
|
58
59
|
console.log(data.key);
|
|
59
60
|
|
|
60
61
|
if (data.key == '$and') {
|
|
@@ -63,11 +64,11 @@ class Expressions {
|
|
|
63
64
|
op = Or()
|
|
64
65
|
}
|
|
65
66
|
(<any>data).cond = op;
|
|
66
|
-
} else if (data.key.startsWith('$') && !
|
|
67
|
+
} else if (data.key.startsWith('$') && !isPlainObject(data.value)) {
|
|
67
68
|
if (data.key == '$eq') {
|
|
68
69
|
let value = null;
|
|
69
|
-
if (
|
|
70
|
-
if (
|
|
70
|
+
if (isPlainObject(data.value)) {
|
|
71
|
+
if (has(data.value, '$key')) {
|
|
71
72
|
value = Key(data.value.key);
|
|
72
73
|
} else {
|
|
73
74
|
// ???
|
|
@@ -80,7 +81,7 @@ class Expressions {
|
|
|
80
81
|
|
|
81
82
|
}
|
|
82
83
|
} else if (!data.key.startsWith('$')) {
|
|
83
|
-
if (
|
|
84
|
+
if (isPlainObject(data.value)) {
|
|
84
85
|
|
|
85
86
|
} else {
|
|
86
87
|
// eq k = v
|
|
@@ -98,10 +99,13 @@ class Expressions {
|
|
|
98
99
|
return cond;
|
|
99
100
|
}
|
|
100
101
|
*/
|
|
102
|
+
static exprKeys() {
|
|
103
|
+
return Object.keys(this.EXPR_REGISTRY);
|
|
104
|
+
}
|
|
101
105
|
static fromJson(object, srcKey = null, parent = null) {
|
|
102
|
-
if (
|
|
106
|
+
if ((0, lodash_1.isArray)(object)) {
|
|
103
107
|
if (!parent || !(parent instanceof GroupDesc_1.GroupDesc)) {
|
|
104
|
-
parent = OrDesc_1.Or();
|
|
108
|
+
parent = (0, OrDesc_1.Or)();
|
|
105
109
|
}
|
|
106
110
|
for (let obj of object) {
|
|
107
111
|
let sub = this.fromJson(obj, null, parent);
|
|
@@ -111,14 +115,14 @@ class Expressions {
|
|
|
111
115
|
}
|
|
112
116
|
return parent;
|
|
113
117
|
}
|
|
114
|
-
else if (
|
|
115
|
-
let keys =
|
|
118
|
+
else if ((0, lodash_1.isPlainObject)(object)) {
|
|
119
|
+
let keys = Object.keys(object);
|
|
116
120
|
let operator = keys.filter(k => k.startsWith('$'));
|
|
117
121
|
if (keys.length == 1 && operator.length == 1) {
|
|
118
122
|
let op = operator.shift();
|
|
119
123
|
if (op == '$or' || op == '$and') {
|
|
120
|
-
if (
|
|
121
|
-
let desc = op == '$or' ? OrDesc_1.Or() : AndDesc_1.And();
|
|
124
|
+
if ((0, lodash_1.isArray)(object[op])) {
|
|
125
|
+
let desc = op == '$or' ? (0, OrDesc_1.Or)() : (0, AndDesc_1.And)();
|
|
122
126
|
if (parent instanceof GroupDesc_1.GroupDesc) {
|
|
123
127
|
parent.values.push(desc);
|
|
124
128
|
}
|
|
@@ -128,12 +132,15 @@ class Expressions {
|
|
|
128
132
|
throw new base_1.NotSupportedError('or|and must have an array as value ' + JSON.stringify(object, null, 2));
|
|
129
133
|
}
|
|
130
134
|
}
|
|
131
|
-
else if (
|
|
132
|
-
let key = KeyDesc_1.Key(srcKey);
|
|
135
|
+
else if (this.exprKeys().indexOf(op) > -1) {
|
|
136
|
+
let key = (0, KeyDesc_1.Key)(srcKey);
|
|
133
137
|
let value = null;
|
|
134
|
-
if (
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
if ((0, lodash_1.isArray)(object[op])) {
|
|
139
|
+
value = (0, ValueDesc_1.Value)(object[op]);
|
|
140
|
+
}
|
|
141
|
+
else if ((0, lodash_1.isPlainObject)(object[op])) {
|
|
142
|
+
if ((0, lodash_1.has)(object[op], '$key')) {
|
|
143
|
+
value = (0, KeyDesc_1.Key)(object[op].$key);
|
|
137
144
|
}
|
|
138
145
|
else {
|
|
139
146
|
// ???
|
|
@@ -141,34 +148,10 @@ class Expressions {
|
|
|
141
148
|
}
|
|
142
149
|
}
|
|
143
150
|
else {
|
|
144
|
-
value = ValueDesc_1.Value(object[op]);
|
|
145
|
-
}
|
|
146
|
-
switch (op) {
|
|
147
|
-
case '$eq':
|
|
148
|
-
return EqDesc_1.Eq(key, value);
|
|
149
|
-
case '$ne':
|
|
150
|
-
return NeqDesc_1.Neq(key, value);
|
|
151
|
-
case '$le':
|
|
152
|
-
return LeDesc_1.Le(key, value);
|
|
153
|
-
case '$lt':
|
|
154
|
-
return LtDesc_1.Lt(key, value);
|
|
155
|
-
case '$ge':
|
|
156
|
-
return GeDesc_1.Ge(key, value);
|
|
157
|
-
case '$gt':
|
|
158
|
-
return GtDesc_1.Gt(key, value);
|
|
159
|
-
}
|
|
160
|
-
throw new base_1.NotSupportedError('in operator found');
|
|
161
|
-
}
|
|
162
|
-
else if (op == '$in') {
|
|
163
|
-
let key = KeyDesc_1.Key(srcKey);
|
|
164
|
-
let value = null;
|
|
165
|
-
if (_.isArray(object[op])) {
|
|
166
|
-
value = ValueDesc_1.Value(object[op]);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
throw new base_1.NotSupportedError('in operator needs an array as input');
|
|
151
|
+
value = (0, ValueDesc_1.Value)(object[op]);
|
|
170
152
|
}
|
|
171
|
-
|
|
153
|
+
// @ts-ignore
|
|
154
|
+
return this.EXPR_REGISTRY[op](key, value);
|
|
172
155
|
}
|
|
173
156
|
else {
|
|
174
157
|
throw new base_1.NotSupportedError('operator ' + op + ' not supported');
|
|
@@ -183,7 +166,7 @@ class Expressions {
|
|
|
183
166
|
return desc.shift();
|
|
184
167
|
}
|
|
185
168
|
else {
|
|
186
|
-
return AndDesc_1.And(...desc);
|
|
169
|
+
return (0, AndDesc_1.And)(...desc);
|
|
187
170
|
}
|
|
188
171
|
}
|
|
189
172
|
else {
|
|
@@ -192,7 +175,7 @@ class Expressions {
|
|
|
192
175
|
}
|
|
193
176
|
else {
|
|
194
177
|
if (srcKey) {
|
|
195
|
-
return EqDesc_1.Eq(KeyDesc_1.Key(srcKey), object);
|
|
178
|
+
return (0, EqDesc_1.Eq)((0, KeyDesc_1.Key)(srcKey), object);
|
|
196
179
|
}
|
|
197
180
|
throw new base_1.NotSupportedError('object cant be resolved ' + JSON.stringify(object, null, 2));
|
|
198
181
|
}
|
|
@@ -201,7 +184,7 @@ class Expressions {
|
|
|
201
184
|
let idProps = ref.getPropertyRefs().filter(p => p.isIdentifier());
|
|
202
185
|
if (/^\(.*(\)\s*,\s*\()?.*\)$/.test(id)) {
|
|
203
186
|
let ids = id.replace(/^\(|\)$/g, '').split(/\)\s*,\s*\(/);
|
|
204
|
-
return
|
|
187
|
+
return ids.map((_id) => this.parseLookupConditions(ref, _id));
|
|
205
188
|
}
|
|
206
189
|
else if (REGEX_ID.test(id)) {
|
|
207
190
|
let cond = {};
|
|
@@ -219,7 +202,7 @@ class Expressions {
|
|
|
219
202
|
}
|
|
220
203
|
else if (/^\d+(,\d+)+$/.test(id)) {
|
|
221
204
|
let ids = id.split(',');
|
|
222
|
-
return
|
|
205
|
+
return ids.map((_id) => this.parseLookupConditions(ref, (0, lodash_1.isString)(_id) ? parseInt(_id, 0) : _id));
|
|
223
206
|
}
|
|
224
207
|
else if (REGEX_ID_K.test(id)) {
|
|
225
208
|
if (/^\'.*\'$/.test(id)) {
|
|
@@ -235,7 +218,7 @@ class Expressions {
|
|
|
235
218
|
c += 1;
|
|
236
219
|
cond[p.name] = p.convert(v);
|
|
237
220
|
if (c >= idProps.length) {
|
|
238
|
-
conds.push(
|
|
221
|
+
conds.push((0, lodash_1.clone)(cond));
|
|
239
222
|
cond = {};
|
|
240
223
|
c = 0;
|
|
241
224
|
}
|
|
@@ -244,7 +227,7 @@ class Expressions {
|
|
|
244
227
|
}
|
|
245
228
|
else {
|
|
246
229
|
if (idProps.length == 1) {
|
|
247
|
-
const prop =
|
|
230
|
+
const prop = (0, lodash_1.first)(idProps);
|
|
248
231
|
const ids = id.split(',').map((x) => x.trim());
|
|
249
232
|
const conds = [];
|
|
250
233
|
for (const _id of ids) {
|
|
@@ -261,7 +244,7 @@ class Expressions {
|
|
|
261
244
|
}
|
|
262
245
|
static buildLookupConditions(ref, data) {
|
|
263
246
|
let idProps = ref.getPropertyRefs().filter(p => p.isIdentifier());
|
|
264
|
-
if (
|
|
247
|
+
if ((0, lodash_1.isArray)(data)) {
|
|
265
248
|
let collect = [];
|
|
266
249
|
data.forEach(d => {
|
|
267
250
|
collect.push(this._buildLookupconditions(idProps, d));
|
|
@@ -281,7 +264,7 @@ class Expressions {
|
|
|
281
264
|
let idPk = [];
|
|
282
265
|
idProps.forEach(id => {
|
|
283
266
|
let v = id.get(data);
|
|
284
|
-
if (
|
|
267
|
+
if ((0, lodash_1.isString)(v)) {
|
|
285
268
|
idPk.push('\'' + v + '\'');
|
|
286
269
|
}
|
|
287
270
|
else {
|
|
@@ -292,5 +275,14 @@ class Expressions {
|
|
|
292
275
|
}
|
|
293
276
|
}
|
|
294
277
|
exports.Expressions = Expressions;
|
|
295
|
-
|
|
296
|
-
|
|
278
|
+
Expressions.EXPR_REGISTRY = {
|
|
279
|
+
'$eq': (k, v) => (0, EqDesc_1.Eq)(k, v),
|
|
280
|
+
'$ne': (k, v) => (0, NeqDesc_1.Neq)(k, v),
|
|
281
|
+
'$le': (k, v) => (0, LeDesc_1.Le)(k, v),
|
|
282
|
+
'$lt': (k, v) => (0, LtDesc_1.Lt)(k, v),
|
|
283
|
+
'$ge': (k, v) => (0, GeDesc_1.Ge)(k, v),
|
|
284
|
+
'$gt': (k, v) => (0, GtDesc_1.Gt)(k, v),
|
|
285
|
+
'$like': (k, v) => (0, LikeDesc_1.Like)(k, v),
|
|
286
|
+
'$in': (k, v) => (0, InDesc_1.In)(k, v)
|
|
287
|
+
};
|
|
288
|
+
//# sourceMappingURL=Expressions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/libs/expressions/Expressions.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAG5B,0CAA0E;AAC1E,kDAAyC;AACzC,oDAA2C;AAC3C,kDAAyC;AACzC,kDAAyC;AACzC,oDAA2C;AAC3C,kDAAyC;AACzC,kDAAyC;AACzC,oDAA2C;AAC3C,kDAAyC;AACzC,kDAAyC;AACzC,wDAA+C;AAC/C,wDAAmD;AACnD,mEAA8D;AAI9D,MAAM,QAAQ,GAAG,qDAAqD,CAAC;AACvE,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAE3E,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAClD,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,MAAa,WAAW;IAEtB,MAAM,CAAC,KAAK,CAAC,GAAQ;QACnB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnB,uBAAuB;YACvB,IAAI;gBACF,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC3B;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI;oBACF,IAAI,WAAW,GAAG,IAAI,6CAAqB,EAAE,CAAC;oBAC9C,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBACpC;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,CAAC,CAAC;iBACT;aACF;SACF;aAAM,IAAI,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC3B;aAAM;YACL,MAAM,IAAI,wBAAiB,CAAC,wDAAwD,CAAC,CAAC;SACvF;IACH,CAAC;IAGD,0DAA0D;IAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkDE;IACF,MAAM,CAAC,QAAQ,CAAC,MAAW,EAAE,SAAiB,IAAI,EAAE,SAAmB,IAAI;QACzE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,qBAAS,CAAC,EAAE;gBAC7C,MAAM,GAAG,WAAE,EAAE,CAAC;aACf;YAED,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;gBACtB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,CAAC,GAAG,YAAY,qBAAS,CAAC,EAAE;oBAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACzB;aAEF;YAED,OAAO,MAAM,CAAC;SACf;aAAM,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YAClC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5C,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC1B,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM,EAAE;oBAC/B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;wBACzB,IAAI,IAAI,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,WAAE,EAAE,CAAC,CAAC,CAAC,aAAG,EAAE,CAAC;wBACtC,IAAI,MAAM,YAAY,qBAAS,EAAE;4BAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBAC1B;wBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;qBAC9C;yBAAM;wBACL,MAAM,IAAI,wBAAiB,CAAC,qCAAqC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;qBACtG;iBACF;qBAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/E,IAAI,GAAG,GAAG,aAAG,CAAC,MAAM,CAAC,CAAC;oBACtB,IAAI,KAAK,GAAQ,IAAI,CAAC;oBACtB,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;wBAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE;4BAC7B,KAAK,GAAG,aAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;yBAC9B;6BAAM;4BACL,MAAM;4BACN,MAAM,IAAI,wBAAiB,CAAC,yCAAyC,CAAC,CAAC;yBACxE;qBACF;yBAAM;wBACL,KAAK,GAAG,iBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC3B;oBACD,QAAQ,EAAE,EAAE;wBACV,KAAK,KAAK;4BACR,OAAO,WAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACxB,KAAK,KAAK;4BACR,OAAO,aAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACzB,KAAK,KAAK;4BACR,OAAO,WAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACxB,KAAK,KAAK;4BACR,OAAO,WAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACxB,KAAK,KAAK;4BACR,OAAO,WAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACxB,KAAK,KAAK;4BACR,OAAO,WAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBACzB;oBAED,MAAM,IAAI,wBAAiB,CAAC,mBAAmB,CAAC,CAAC;iBAClD;qBAAM,IAAI,EAAE,IAAI,KAAK,EAAE;oBACtB,IAAI,GAAG,GAAG,aAAG,CAAC,MAAM,CAAC,CAAC;oBACtB,IAAI,KAAK,GAAQ,IAAI,CAAC;oBACtB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;wBACzB,KAAK,GAAG,iBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC3B;yBAAM;wBACL,MAAM,IAAI,wBAAiB,CAAC,qCAAqC,CAAC,CAAC;qBACpE;oBACD,OAAO,WAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAEvB;qBAAM;oBACL,MAAM,IAAI,wBAAiB,CAAC,WAAW,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAC;iBAClE;aAEF;iBAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC/B,IAAI,IAAI,GAAe,EAAE,CAAC;gBAE1B,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;oBAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;iBAC9C;gBAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;iBACrB;qBAAM;oBACL,OAAO,aAAG,CAAC,GAAG,IAAI,CAAC,CAAC;iBACrB;aACF;iBAAM;gBACL,MAAM,IAAI,wBAAiB,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;aACzF;SACF;aAAM;YACL,IAAI,MAAM,EAAE;gBACV,OAAO,WAAE,CAAC,aAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;aAChC;YACD,MAAM,IAAI,wBAAiB,CAAC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAC3F;IACH,CAAC;IAGD,MAAM,CAAC,qBAAqB,CAAC,GAA2B,EAAE,EAAO;QAC/D,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAGlE,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACvC,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC1D,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SAChE;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,CAAC;YACN,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;gBACzC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACnC;YAED,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;gBACvB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC9C;aACF;YACD,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAClC,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACrG;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACvB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;aACjC;YACD,MAAM,KAAK,GAAG,EAAE,CAAC;YAEjB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC1C,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE;oBACvB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC1B,IAAI,GAAG,EAAE,CAAC;oBACV,CAAC,GAAG,CAAC,CAAC;iBACP;aACF;YACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAEnD;aAAM;YACL,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gBACvB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;oBACrB,MAAM,IAAI,GAAG,EAAE,CAAC;oBAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAClB;gBAED,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACnD;iBAAM;aAEN;SACF;QACD,MAAM,IAAI,6BAAsB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAChD,CAAC;IAGD,MAAM,CAAC,qBAAqB,CAAC,GAA2B,EAAE,IAAiB;QACzE,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACnC;iBAAM;gBACL,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;aAC/B;SACF;aAAM;YACL,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACnD;IACH,CAAC;IAGO,MAAM,CAAC,sBAAsB,CAAC,OAAuB,EAAE,IAAS;QACtE,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACnB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;aAC5B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACd;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExB,CAAC;CAGF;AAjRD,kCAiRC","file":"Expressions.js","sourcesContent":["import * as _ from 'lodash';\nimport {ExprDesc} from '../descriptors/ExprDesc';\n\nimport {NotSupportedError, NotYetImplementedError} from '@allgemein/base';\nimport {In} from '../descriptors/InDesc';\nimport {Neq} from '../descriptors/NeqDesc';\nimport {Lt} from '../descriptors/LtDesc';\nimport {Gt} from '../descriptors/GtDesc';\nimport {And} from '../descriptors/AndDesc';\nimport {Eq} from '../descriptors/EqDesc';\nimport {Ge} from '../descriptors/GeDesc';\nimport {Key} from '../descriptors/KeyDesc';\nimport {Le} from '../descriptors/LeDesc';\nimport {Or} from '../descriptors/OrDesc';\nimport {Value} from '../descriptors/ValueDesc';\nimport {GroupDesc} from '../descriptors/GroupDesc';\nimport {ExpressionInterpreter} from './ExpressionInterpreter';\nimport {IClassRef, IEntityRef, IPropertyRef} from '@allgemein/schema-api';\n\n\nconst REGEX_ID = /^(([\\w_]+)=((\\d+)|(\\d+(\\.|\\,)\\d+)|\\'([^\\']*)\\'),?)$/;\nconst REGEX_ID_G = /^(([\\w_]+)=((\\d+)|(\\d+(\\.|\\,)\\d+)|\\'([^\\']*)\\'),?)$ /g;\n\nconst REGEX_ID_K = /^((\\d+)|(\\d+(\\.|\\,)\\d+),?)+$/;\nconst REGEX_ID_KG = /^((\\d+)|(\\d+(\\.|\\,)\\d+),?)+$/g;\n\nconst REGEX_ID_W = /^(\\'([^\\']*)\\',?)+$/;\n\nexport class Expressions {\n\n static parse(str: any): ExprDesc {\n if (_.isString(str)) {\n // check if JSON string\n try {\n let obj = JSON.parse(str.trim());\n return this.fromJson(obj);\n } catch (e) {\n try {\n let interpreter = new ExpressionInterpreter();\n return interpreter.interprete(str);\n } catch (e) {\n throw e;\n }\n }\n } else if (_.isPlainObject(str)) {\n return this.fromJson(str);\n } else {\n throw new NotSupportedError('object cant be interpreted to conditions, wrong format');\n }\n }\n\n\n //static validate(entityDef:EntityDef, condition:CondDesc)\n\n /*\n static fromJson(object: any): CondDesc {\n let cond: CondDesc;\n let q: any = [];\n Helper.walk(object, (data: WalkValues) => {\n console.log(data)\n let op: CondDesc = null;\n if (/^(\\$and|\\$or)$/.test(data.key) && _.isArray(data.value)) {\n console.log(data.key);\n\n if (data.key == '$and') {\n op = And()\n } else if (data.key == '$or') {\n op = Or()\n }\n (<any>data).cond = op;\n } else if (data.key.startsWith('$') && !_.isPlainObject(data.value)) {\n if (data.key == '$eq') {\n let value = null;\n if (_.isPlainObject(data.value)) {\n if (_.has(data.value, '$key')) {\n value = Key(data.value.key);\n } else {\n // ???\n throw new NotSupportedError('object given but without known operator')\n }\n } else {\n value = data.value;\n }\n\n\n }\n } else if (!data.key.startsWith('$')) {\n if (_.isPlainObject(data.value)) {\n\n } else {\n // eq k = v\n op = Eq(Key(data.key), Value(data.value));\n\n }\n }\n\n\n if (!cond) {\n cond = op;\n }\n });\n\n return cond;\n }\n */\n static fromJson(object: any, srcKey: string = null, parent: ExprDesc = null): ExprDesc {\n if (_.isArray(object)) {\n if (!parent || !(parent instanceof GroupDesc)) {\n parent = Or();\n }\n\n for (let obj of object) {\n let sub = this.fromJson(obj, null, parent);\n if (!(sub instanceof GroupDesc)) {\n parent.values.push(sub);\n }\n\n }\n\n return parent;\n } else if (_.isPlainObject(object)) {\n let keys = _.keys(object);\n let operator = keys.filter(k => k.startsWith('$'));\n if (keys.length == 1 && operator.length == 1) {\n let op = operator.shift();\n if (op == '$or' || op == '$and') {\n if (_.isArray(object[op])) {\n let desc = op == '$or' ? Or() : And();\n if (parent instanceof GroupDesc) {\n parent.values.push(desc);\n }\n return this.fromJson(object[op], null, desc);\n } else {\n throw new NotSupportedError('or|and must have an array as value ' + JSON.stringify(object, null, 2));\n }\n } else if (['$eq', '$le', '$lt', '$ge', '$gt', '$ne', '$like'].indexOf(op) > -1) {\n let key = Key(srcKey);\n let value: any = null;\n if (_.isPlainObject(object[op])) {\n if (_.has(object[op], '$key')) {\n value = Key(object[op].$key);\n } else {\n // ???\n throw new NotSupportedError('object given but without known operator');\n }\n } else {\n value = Value(object[op]);\n }\n switch (op) {\n case '$eq':\n return Eq(key, value);\n case '$ne':\n return Neq(key, value);\n case '$le':\n return Le(key, value);\n case '$lt':\n return Lt(key, value);\n case '$ge':\n return Ge(key, value);\n case '$gt':\n return Gt(key, value);\n }\n\n throw new NotSupportedError('in operator found');\n } else if (op == '$in') {\n let key = Key(srcKey);\n let value: any = null;\n if (_.isArray(object[op])) {\n value = Value(object[op]);\n } else {\n throw new NotSupportedError('in operator needs an array as input');\n }\n return In(key, value);\n\n } else {\n throw new NotSupportedError('operator ' + op + ' not supported');\n }\n\n } else if (operator.length == 0) {\n let desc: ExprDesc[] = [];\n\n for (let k of keys) {\n desc.push(this.fromJson(object[k], k, null));\n }\n\n if (desc.length == 1) {\n return desc.shift();\n } else {\n return And(...desc);\n }\n } else {\n throw new NotSupportedError('object has wrong keys ' + JSON.stringify(object, null, 2));\n }\n } else {\n if (srcKey) {\n return Eq(Key(srcKey), object);\n }\n throw new NotSupportedError('object cant be resolved ' + JSON.stringify(object, null, 2));\n }\n }\n\n\n static parseLookupConditions(ref: IClassRef | IEntityRef, id: any): any | any[] {\n let idProps = ref.getPropertyRefs().filter(p => p.isIdentifier());\n\n\n if (/^\\(.*(\\)\\s*,\\s*\\()?.*\\)$/.test(id)) {\n let ids = id.replace(/^\\(|\\)$/g, '').split(/\\)\\s*,\\s*\\(/);\n return _.map(ids, _id => this.parseLookupConditions(ref, _id));\n } else if (REGEX_ID.test(id)) {\n let cond = {};\n let e;\n let keys = {};\n while ((e = REGEX_ID_G.exec(id)) !== null) {\n keys[e[2]] = e[4] || e[5] || e[7];\n }\n\n for (let idp of idProps) {\n if (keys[idp.name]) {\n cond[idp.name] = idp.convert(keys[idp.name]);\n }\n }\n return cond;\n } else if (/^\\d+(,\\d+)+$/.test(id)) {\n let ids = id.split(',');\n return _.map(ids, _id => this.parseLookupConditions(ref, _.isString(_id) ? parseInt(_id, 0) : _id));\n } else if (REGEX_ID_K.test(id)) {\n if (/^\\'.*\\'$/.test(id)) {\n id = id.replace(/^\\'|\\'$/g, '');\n }\n const conds = [];\n\n let cond = {};\n let e;\n let c = 0;\n while ((e = REGEX_ID_KG.exec(id)) !== null) {\n let p = idProps[c];\n let v = e[2] || e[3];\n c += 1;\n cond[p.name] = p.convert(v);\n if (c >= idProps.length) {\n conds.push(_.clone(cond));\n cond = {};\n c = 0;\n }\n }\n return conds.length === 1 ? conds.shift() : conds;\n\n } else {\n if (idProps.length == 1) {\n const prop = _.first(idProps);\n const ids = id.split(',').map((x: string) => x.trim());\n const conds = [];\n for (const _id of ids) {\n const cond = {};\n cond[prop.name] = prop.convert(_id);\n conds.push(cond);\n }\n\n return conds.length === 1 ? conds.shift() : conds;\n } else {\n\n }\n }\n throw new NotYetImplementedError('for ' + id);\n }\n\n\n static buildLookupConditions(ref: IClassRef | IEntityRef, data: any | any[]) {\n let idProps = ref.getPropertyRefs().filter(p => p.isIdentifier());\n if (_.isArray(data)) {\n let collect: string[] = [];\n data.forEach(d => {\n collect.push(this._buildLookupconditions(idProps, d));\n });\n if (idProps.length > 1) {\n return `(${collect.join('),(')})`;\n } else {\n return `${collect.join(',')}`;\n }\n } else {\n return this._buildLookupconditions(idProps, data);\n }\n }\n\n\n private static _buildLookupconditions(idProps: IPropertyRef[], data: any) {\n let idPk: string[] = [];\n idProps.forEach(id => {\n let v = id.get(data);\n if (_.isString(v)) {\n idPk.push('\\'' + v + '\\'');\n } else {\n idPk.push(v);\n }\n });\n return idPk.join(',');\n\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"file":"Expressions.js","sourceRoot":"","sources":["../../../../src/libs/expressions/Expressions.ts"],"names":[],"mappings":";;;AAEA,0CAA0E;AAC1E,kDAAyC;AACzC,oDAA2C;AAC3C,kDAAyC;AACzC,kDAAyC;AACzC,oDAA2C;AAC3C,kDAAyC;AACzC,kDAAyC;AACzC,oDAAoD;AACpD,kDAAyC;AACzC,kDAAyC;AACzC,wDAA+C;AAC/C,wDAAmD;AACnD,mEAA8D;AAE9D,sDAA6C;AAE7C,mCAA2E;AAG3E,MAAM,QAAQ,GAAG,qDAAqD,CAAC;AACvE,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAE3E,MAAM,UAAU,GAAG,8BAA8B,CAAC;AAClD,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,MAAa,WAAW;IAatB,MAAM,CAAC,KAAK,CAAC,GAAQ;QACnB,IAAI,IAAA,iBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;YAClB,uBAAuB;YACvB,IAAI,CAAC;gBACH,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,IAAI,WAAW,GAAG,IAAI,6CAAqB,EAAE,CAAC;oBAC9C,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAA,sBAAa,EAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,wBAAiB,CAAC,wDAAwD,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAGD,0DAA0D;IAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkDE;IAEF,MAAM,CAAC,QAAQ;QACb,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAW,EAAE,SAAiB,IAAI,EAAE,SAAmB,IAAI;QAEzE,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,qBAAS,CAAC,EAAE,CAAC;gBAC9C,MAAM,GAAG,IAAA,WAAE,GAAE,CAAC;YAChB,CAAC;YAED,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,CAAC,GAAG,YAAY,qBAAS,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;YAEH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,IAAA,sBAAa,EAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC7C,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC1B,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;oBAChC,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACxB,IAAI,IAAI,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,IAAA,WAAE,GAAE,CAAC,CAAC,CAAC,IAAA,aAAG,GAAE,CAAC;wBACtC,IAAI,MAAM,YAAY,qBAAS,EAAE,CAAC;4BAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC3B,CAAC;wBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,wBAAiB,CAAC,qCAAqC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBACvG,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC5C,IAAI,GAAG,GAAG,IAAA,aAAG,EAAC,MAAM,CAAC,CAAC;oBACtB,IAAI,KAAK,GAAQ,IAAI,CAAC;oBACtB,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACxB,KAAK,GAAG,IAAA,iBAAK,EAAC,MAAM,CAAC,EAAE,CAAQ,CAAC,CAAC;oBACnC,CAAC;yBAAM,IAAI,IAAA,sBAAa,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACrC,IAAI,IAAA,YAAG,EAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;4BAC5B,KAAK,GAAG,IAAA,aAAG,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC/B,CAAC;6BAAM,CAAC;4BACN,MAAM;4BACN,MAAM,IAAI,wBAAiB,CAAC,yCAAyC,CAAC,CAAC;wBACzE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,IAAA,iBAAK,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,CAAC;oBACD,aAAa;oBACb,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,wBAAiB,CAAC,WAAW,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAC;gBACnE,CAAC;YAEH,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,IAAI,GAAe,EAAE,CAAC;gBAE1B,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC/C,CAAC;gBAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACrB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAA,aAAG,EAAC,GAAG,IAAI,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,wBAAiB,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,IAAA,WAAE,EAAC,IAAA,aAAG,EAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,IAAI,wBAAiB,CAAC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAGD,MAAM,CAAC,qBAAqB,CAAC,GAA2B,EAAE,EAAO;QAC/D,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAGlE,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC1D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,GAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC;YACN,IAAI,IAAI,GAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YAED,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAA,iBAAQ,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3G,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,KAAK,GAAU,EAAE,CAAC;YAExB,IAAI,IAAI,GAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACxB,KAAK,CAAC,IAAI,CAAC,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,CAAC;oBACxB,IAAI,GAAG,EAAE,CAAC;oBACV,CAAC,GAAG,CAAC,CAAC;gBACR,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAEpD,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;oBACtB,MAAM,IAAI,GAAQ,EAAE,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;gBAED,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACpD,CAAC;iBAAM,CAAC;YAER,CAAC;QACH,CAAC;QACD,MAAM,IAAI,6BAAsB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAChD,CAAC;IAGD,MAAM,CAAC,qBAAqB,CAAC,GAA2B,EAAE,IAAiB;QACzE,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAClE,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAGO,MAAM,CAAC,sBAAsB,CAAC,OAAuB,EAAE,IAAS;QACtE,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACnB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,IAAA,iBAAQ,EAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExB,CAAC;;AAzQH,kCA4QC;AA1QQ,yBAAa,GAAG;IACrB,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,WAAE,EAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,aAAG,EAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,WAAE,EAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,WAAE,EAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,WAAE,EAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,WAAE,EAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,eAAI,EAAC,CAAC,EAAE,CAAC,CAAC;IAChD,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAA,WAAE,EAAC,CAAC,EAAE,CAAC,CAAC;CAC7C,CAAA"}
|