@allgemein/expressions 1.3.1 → 1.4.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/README.md +66 -0
- package/browser.d.ts +18 -18
- package/browser.js +17 -47
- package/browser.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -17
- package/index.js.map +1 -1
- package/libs/descriptors/AndDesc.d.ts +2 -2
- package/libs/descriptors/AndDesc.js +4 -9
- package/libs/descriptors/AndDesc.js.map +1 -1
- package/libs/descriptors/EqDesc.d.ts +3 -3
- package/libs/descriptors/EqDesc.js +7 -12
- package/libs/descriptors/EqDesc.js.map +1 -1
- package/libs/descriptors/ExprDesc.d.ts +1 -1
- package/libs/descriptors/ExprDesc.js +36 -40
- package/libs/descriptors/ExprDesc.js.map +1 -1
- package/libs/descriptors/GeDesc.d.ts +3 -3
- package/libs/descriptors/GeDesc.js +6 -11
- package/libs/descriptors/GeDesc.js.map +1 -1
- package/libs/descriptors/GroupDesc.d.ts +1 -1
- package/libs/descriptors/GroupDesc.js +2 -6
- package/libs/descriptors/GroupDesc.js.map +1 -1
- package/libs/descriptors/GtDesc.d.ts +3 -3
- package/libs/descriptors/GtDesc.js +6 -11
- package/libs/descriptors/GtDesc.js.map +1 -1
- package/libs/descriptors/IExpr.js +1 -2
- package/libs/descriptors/InDesc.d.ts +3 -3
- package/libs/descriptors/InDesc.js +6 -11
- package/libs/descriptors/InDesc.js.map +1 -1
- package/libs/descriptors/KeyDesc.d.ts +1 -1
- package/libs/descriptors/KeyDesc.js +3 -8
- package/libs/descriptors/KeyDesc.js.map +1 -1
- package/libs/descriptors/LeDesc.d.ts +3 -3
- package/libs/descriptors/LeDesc.js +6 -11
- package/libs/descriptors/LeDesc.js.map +1 -1
- package/libs/descriptors/LikeDesc.d.ts +3 -3
- package/libs/descriptors/LikeDesc.js +7 -12
- package/libs/descriptors/LikeDesc.js.map +1 -1
- package/libs/descriptors/LtDesc.d.ts +3 -3
- package/libs/descriptors/LtDesc.js +6 -11
- package/libs/descriptors/LtDesc.js.map +1 -1
- package/libs/descriptors/NeqDesc.d.ts +3 -3
- package/libs/descriptors/NeqDesc.js +6 -11
- package/libs/descriptors/NeqDesc.js.map +1 -1
- package/libs/descriptors/OpDesc.d.ts +3 -3
- package/libs/descriptors/OpDesc.js +4 -8
- package/libs/descriptors/OpDesc.js.map +1 -1
- package/libs/descriptors/OrDesc.d.ts +2 -2
- package/libs/descriptors/OrDesc.js +4 -9
- package/libs/descriptors/OrDesc.js.map +1 -1
- package/libs/descriptors/Selector.d.ts +1 -1
- package/libs/descriptors/Selector.js +1 -5
- package/libs/descriptors/Selector.js.map +1 -1
- package/libs/descriptors/ValueDesc.d.ts +1 -1
- package/libs/descriptors/ValueDesc.js +3 -8
- package/libs/descriptors/ValueDesc.js.map +1 -1
- package/libs/exceptions/ExpressionValidationError.js +1 -5
- package/libs/exceptions/ExpressionValidationError.js.map +1 -1
- package/libs/expressions/ExpressionInterpreter.d.ts +1 -1
- package/libs/expressions/ExpressionInterpreter.js +64 -50
- package/libs/expressions/ExpressionInterpreter.js.map +1 -1
- package/libs/expressions/Expressions.d.ts +11 -11
- package/libs/expressions/Expressions.js +57 -61
- package/libs/expressions/Expressions.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const OrDesc_1 = require("../descriptors/OrDesc");
|
|
17
|
-
const lodash_1 = require("lodash");
|
|
18
|
-
class ExpressionInterpreter {
|
|
1
|
+
import { Like } from "../descriptors/LikeDesc.js";
|
|
2
|
+
import { Lt } from "../descriptors/LtDesc.js";
|
|
3
|
+
import { Gt } from "../descriptors/GtDesc.js";
|
|
4
|
+
import { In } from "../descriptors/InDesc.js";
|
|
5
|
+
import { Neq } from "../descriptors/NeqDesc.js";
|
|
6
|
+
import { Eq } from "../descriptors/EqDesc.js";
|
|
7
|
+
import { Le } from "../descriptors/LeDesc.js";
|
|
8
|
+
import { Key } from "../descriptors/KeyDesc.js";
|
|
9
|
+
import { Value } from "../descriptors/ValueDesc.js";
|
|
10
|
+
import { Ge } from "../descriptors/GeDesc.js";
|
|
11
|
+
import { GroupDesc } from "../descriptors/GroupDesc.js";
|
|
12
|
+
import { And } from "../descriptors/AndDesc.js";
|
|
13
|
+
import { Or } from "../descriptors/OrDesc.js";
|
|
14
|
+
import { findIndex, first, isEmpty, isUndefined, last, remove } from "@allgemein/base";
|
|
15
|
+
export class ExpressionInterpreter {
|
|
19
16
|
constructor() {
|
|
20
17
|
//rootEntityDef:EntityDef;
|
|
21
18
|
this.groupLevel = 0;
|
|
@@ -24,7 +21,11 @@ class ExpressionInterpreter {
|
|
|
24
21
|
name: 'visitGroup',
|
|
25
22
|
regex: /\(/,
|
|
26
23
|
method: this.visitGroup,
|
|
27
|
-
after: [
|
|
24
|
+
after: [
|
|
25
|
+
null,
|
|
26
|
+
'visitGroup',
|
|
27
|
+
'onBool'
|
|
28
|
+
]
|
|
28
29
|
},
|
|
29
30
|
{
|
|
30
31
|
name: 'leaveGroup',
|
|
@@ -33,35 +34,49 @@ class ExpressionInterpreter {
|
|
|
33
34
|
condition: () => {
|
|
34
35
|
return this.groupLevel > 0;
|
|
35
36
|
},
|
|
36
|
-
after: [
|
|
37
|
+
after: [
|
|
38
|
+
'onValue',
|
|
39
|
+
'leaveGroup'
|
|
40
|
+
]
|
|
37
41
|
},
|
|
38
42
|
{
|
|
39
43
|
name: 'onKey',
|
|
40
44
|
regex: /('[^']+')|("[^"]+")|(\w|\.|\d)+/,
|
|
41
45
|
method: this.onKey,
|
|
42
46
|
skipIndex: 3,
|
|
43
|
-
after: [
|
|
47
|
+
after: [
|
|
48
|
+
null,
|
|
49
|
+
'visitGroup',
|
|
50
|
+
'onBool'
|
|
51
|
+
]
|
|
44
52
|
},
|
|
45
53
|
{
|
|
46
54
|
name: 'onBool',
|
|
47
55
|
regex: / (and|AND|or|OR) /,
|
|
48
56
|
method: this.onBool,
|
|
49
57
|
skipIndex: 1,
|
|
50
|
-
after: [
|
|
58
|
+
after: [
|
|
59
|
+
'leaveGroup',
|
|
60
|
+
'onValue'
|
|
61
|
+
]
|
|
51
62
|
},
|
|
52
63
|
{
|
|
53
64
|
name: 'onOperator',
|
|
54
65
|
regex: /(>=|<=|<>|>|<|=| in | IN | like | LIKE )/,
|
|
55
66
|
method: this.onOperator,
|
|
56
67
|
skipIndex: 1,
|
|
57
|
-
after: [
|
|
68
|
+
after: [
|
|
69
|
+
'onKey'
|
|
70
|
+
]
|
|
58
71
|
},
|
|
59
72
|
{
|
|
60
73
|
name: 'onValue',
|
|
61
74
|
regex: /('[^']*')|("[^"]*")|\d+|\d+.\d+|(\(((('[^']*')|("[^"]*")|\d+|\d+.\d+)\s*,?\s*)+\))/,
|
|
62
75
|
method: this.onValue,
|
|
63
76
|
skipIndex: 7,
|
|
64
|
-
after: [
|
|
77
|
+
after: [
|
|
78
|
+
'onOperator'
|
|
79
|
+
]
|
|
65
80
|
},
|
|
66
81
|
];
|
|
67
82
|
this.res = [];
|
|
@@ -70,16 +85,16 @@ class ExpressionInterpreter {
|
|
|
70
85
|
}
|
|
71
86
|
interprete(str) {
|
|
72
87
|
this.fragmentize(str);
|
|
73
|
-
return
|
|
88
|
+
return first(this.res);
|
|
74
89
|
}
|
|
75
90
|
fragmentize(str) {
|
|
76
|
-
let lastState =
|
|
91
|
+
let lastState = last(this.queue);
|
|
77
92
|
let currentOps = this.ops.filter(x => {
|
|
78
93
|
let _true = true;
|
|
79
94
|
if (x.condition) {
|
|
80
95
|
_true = x.condition();
|
|
81
96
|
}
|
|
82
|
-
if (
|
|
97
|
+
if (isEmpty(x.after)) {
|
|
83
98
|
return _true;
|
|
84
99
|
}
|
|
85
100
|
if (!lastState) {
|
|
@@ -100,14 +115,14 @@ class ExpressionInterpreter {
|
|
|
100
115
|
let arr = regex.exec(str);
|
|
101
116
|
if (arr) {
|
|
102
117
|
// let index = arr.findIndex(x => !isUndefined(x));
|
|
103
|
-
let index =
|
|
118
|
+
let index = findIndex(arr, x => !isUndefined(x), 1) - 1;
|
|
104
119
|
if (index > -1) {
|
|
105
120
|
let opId = map[index];
|
|
106
121
|
let op = currentOps[opId];
|
|
107
122
|
// console.log(map, regex, arr, regex.lastIndex,op.name);
|
|
108
123
|
op.method.apply(this, [arr[index + 1], str]);
|
|
109
124
|
const nextStr = str.substring(regex.lastIndex);
|
|
110
|
-
if (!
|
|
125
|
+
if (!isEmpty(nextStr)) {
|
|
111
126
|
this.fragmentize(nextStr);
|
|
112
127
|
}
|
|
113
128
|
}
|
|
@@ -177,28 +192,28 @@ class ExpressionInterpreter {
|
|
|
177
192
|
if (op.state == 'onOperator' && key && key.state == 'onKey') {
|
|
178
193
|
switch (op.value.trim().toLowerCase()) {
|
|
179
194
|
case '=':
|
|
180
|
-
erg =
|
|
195
|
+
erg = Eq(Key(key.value), Value(value));
|
|
181
196
|
break;
|
|
182
197
|
case 'like':
|
|
183
|
-
erg =
|
|
198
|
+
erg = Like(Key(key.value), Value(value));
|
|
184
199
|
break;
|
|
185
200
|
case '<=':
|
|
186
|
-
erg =
|
|
201
|
+
erg = Le(Key(key.value), Value(value));
|
|
187
202
|
break;
|
|
188
203
|
case '>=':
|
|
189
|
-
erg =
|
|
204
|
+
erg = Ge(Key(key.value), Value(value));
|
|
190
205
|
break;
|
|
191
206
|
case '<':
|
|
192
|
-
erg =
|
|
207
|
+
erg = Lt(Key(key.value), Value(value));
|
|
193
208
|
break;
|
|
194
209
|
case '>':
|
|
195
|
-
erg =
|
|
210
|
+
erg = Gt(Key(key.value), Value(value));
|
|
196
211
|
break;
|
|
197
212
|
case 'in':
|
|
198
|
-
erg =
|
|
213
|
+
erg = In(Key(key.value), Value(value));
|
|
199
214
|
break;
|
|
200
215
|
case '<>':
|
|
201
|
-
erg =
|
|
216
|
+
erg = Neq(Key(key.value), Value(value));
|
|
202
217
|
break;
|
|
203
218
|
default:
|
|
204
219
|
throw new Error('operator not found');
|
|
@@ -215,8 +230,8 @@ class ExpressionInterpreter {
|
|
|
215
230
|
key: key,
|
|
216
231
|
desc: erg
|
|
217
232
|
});
|
|
218
|
-
let res =
|
|
219
|
-
if (res instanceof
|
|
233
|
+
let res = last(this.res);
|
|
234
|
+
if (res instanceof GroupDesc) {
|
|
220
235
|
res.values.push(erg);
|
|
221
236
|
}
|
|
222
237
|
else {
|
|
@@ -225,7 +240,7 @@ class ExpressionInterpreter {
|
|
|
225
240
|
}
|
|
226
241
|
visitGroup() {
|
|
227
242
|
this.groupLevel++;
|
|
228
|
-
let groupDesc = new
|
|
243
|
+
let groupDesc = new GroupDesc();
|
|
229
244
|
groupDesc.id = this.groupLevel;
|
|
230
245
|
this.res.push(groupDesc);
|
|
231
246
|
this.queue.push({
|
|
@@ -235,12 +250,12 @@ class ExpressionInterpreter {
|
|
|
235
250
|
});
|
|
236
251
|
}
|
|
237
252
|
leaveGroup() {
|
|
238
|
-
let group = this.res.find(g => g instanceof
|
|
253
|
+
let group = this.res.find(g => g instanceof GroupDesc ? g.id == this.groupLevel : false);
|
|
239
254
|
if (group && group.type == 'group') {
|
|
240
|
-
|
|
255
|
+
remove(this.res, g => g instanceof GroupDesc ? g.id == this.groupLevel : false);
|
|
241
256
|
// embedded withotu bool
|
|
242
257
|
let prevGid = this.groupLevel - 1;
|
|
243
|
-
let prevGroup = this.res.find(g => g instanceof
|
|
258
|
+
let prevGroup = this.res.find(g => g instanceof GroupDesc ? g.id == prevGid : false);
|
|
244
259
|
if (prevGroup) {
|
|
245
260
|
group.values.forEach((v) => prevGroup.values.push(v));
|
|
246
261
|
group.values = [];
|
|
@@ -261,19 +276,19 @@ class ExpressionInterpreter {
|
|
|
261
276
|
let bool = match.trim().toLocaleUpperCase();
|
|
262
277
|
let last = this.res.pop();
|
|
263
278
|
let group;
|
|
264
|
-
if (last instanceof
|
|
279
|
+
if (last instanceof GroupDesc && last.id == this.groupLevel && last.type.toLowerCase() == bool.toLowerCase()) {
|
|
265
280
|
// DO NOTTING
|
|
266
281
|
group = last;
|
|
267
282
|
this.res.push(group);
|
|
268
283
|
}
|
|
269
|
-
else if (last instanceof
|
|
284
|
+
else if (last instanceof GroupDesc && last.type == 'group') {
|
|
270
285
|
// undefined
|
|
271
286
|
switch (bool) {
|
|
272
287
|
case 'AND':
|
|
273
|
-
group =
|
|
288
|
+
group = And(...last.values);
|
|
274
289
|
break;
|
|
275
290
|
case 'OR':
|
|
276
|
-
group =
|
|
291
|
+
group = Or(...last.values);
|
|
277
292
|
break;
|
|
278
293
|
}
|
|
279
294
|
group.id = this.groupLevel;
|
|
@@ -282,10 +297,10 @@ class ExpressionInterpreter {
|
|
|
282
297
|
else {
|
|
283
298
|
switch (bool) {
|
|
284
299
|
case 'AND':
|
|
285
|
-
group =
|
|
300
|
+
group = And(last);
|
|
286
301
|
break;
|
|
287
302
|
case 'OR':
|
|
288
|
-
group =
|
|
303
|
+
group = Or(last);
|
|
289
304
|
break;
|
|
290
305
|
}
|
|
291
306
|
group.id = this.groupLevel;
|
|
@@ -299,5 +314,4 @@ class ExpressionInterpreter {
|
|
|
299
314
|
});
|
|
300
315
|
}
|
|
301
316
|
}
|
|
302
|
-
exports.ExpressionInterpreter = ExpressionInterpreter;
|
|
303
317
|
//# sourceMappingURL=ExpressionInterpreter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionInterpreter.js","sourceRoot":"","sources":["../../../../src/libs/expressions/ExpressionInterpreter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExpressionInterpreter.js","sourceRoot":"","sources":["../../../../src/libs/expressions/ExpressionInterpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { ExprDesc } from '../descriptors/ExprDesc';
|
|
2
|
-
import { KeyDesc } from '../descriptors/KeyDesc';
|
|
1
|
+
import { ExprDesc } from '../descriptors/ExprDesc.js';
|
|
2
|
+
import { KeyDesc } from '../descriptors/KeyDesc.js';
|
|
3
3
|
import { IClassRef, IEntityRef } from '@allgemein/schema-api';
|
|
4
|
-
import { Selector } from '../descriptors/Selector';
|
|
4
|
+
import { Selector } from '../descriptors/Selector.js';
|
|
5
5
|
export declare class Expressions {
|
|
6
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;
|
|
7
|
+
$eq: (k: KeyDesc, v: Selector) => import("../descriptors/EqDesc.js").EqDesc;
|
|
8
|
+
$ne: (k: KeyDesc, v: Selector) => import("../descriptors/NeqDesc.js").NeqDesc;
|
|
9
|
+
$le: (k: KeyDesc, v: Selector) => import("../descriptors/LeDesc.js").LeDesc;
|
|
10
|
+
$lt: (k: KeyDesc, v: Selector) => import("../descriptors/LtDesc.js").LtDesc;
|
|
11
|
+
$ge: (k: KeyDesc, v: Selector) => import("../descriptors/GeDesc.js").GeDesc;
|
|
12
|
+
$gt: (k: KeyDesc, v: Selector) => import("../descriptors/GtDesc.js").GtDesc;
|
|
13
|
+
$like: (k: KeyDesc, v: Selector) => import("../descriptors/LikeDesc.js").LikeDesc;
|
|
14
|
+
$in: (k: KeyDesc, v: Selector) => import("../descriptors/InDesc.js").InDesc;
|
|
15
15
|
};
|
|
16
16
|
static parse(str: any): ExprDesc;
|
|
17
17
|
static exprKeys(): string[];
|
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const ExpressionInterpreter_1 = require("./ExpressionInterpreter");
|
|
18
|
-
const LikeDesc_1 = require("../descriptors/LikeDesc");
|
|
19
|
-
const lodash_1 = require("lodash");
|
|
1
|
+
import { NotSupportedError, NotYetImplementedError } from '@allgemein/base';
|
|
2
|
+
import { In } from '../descriptors/InDesc.js';
|
|
3
|
+
import { Neq } from '../descriptors/NeqDesc.js';
|
|
4
|
+
import { Lt } from '../descriptors/LtDesc.js';
|
|
5
|
+
import { Gt } from '../descriptors/GtDesc.js';
|
|
6
|
+
import { And } from '../descriptors/AndDesc.js';
|
|
7
|
+
import { Eq } from '../descriptors/EqDesc.js';
|
|
8
|
+
import { Ge } from '../descriptors/GeDesc.js';
|
|
9
|
+
import { Key } from '../descriptors/KeyDesc.js';
|
|
10
|
+
import { Le } from '../descriptors/LeDesc.js';
|
|
11
|
+
import { Or } from '../descriptors/OrDesc.js';
|
|
12
|
+
import { Value } from '../descriptors/ValueDesc.js';
|
|
13
|
+
import { GroupDesc } from '../descriptors/GroupDesc.js';
|
|
14
|
+
import { ExpressionInterpreter } from './ExpressionInterpreter.js';
|
|
15
|
+
import { Like } from '../descriptors/LikeDesc.js';
|
|
16
|
+
import { clone, first, has, isArray, isPlainObject, isString } from "@allgemein/base";
|
|
20
17
|
const REGEX_ID = /^(([\w_]+)=((\d+)|(\d+(\.|\,)\d+)|\'([^\']*)\'),?)$/;
|
|
21
18
|
const REGEX_ID_G = /^(([\w_]+)=((\d+)|(\d+(\.|\,)\d+)|\'([^\']*)\'),?)$ /g;
|
|
22
19
|
const REGEX_ID_K = /^((\d+)|(\d+(\.|\,)\d+),?)+$/;
|
|
23
20
|
const REGEX_ID_KG = /^((\d+)|(\d+(\.|\,)\d+),?)+$/g;
|
|
24
21
|
const REGEX_ID_W = /^(\'([^\']*)\',?)+$/;
|
|
25
|
-
class Expressions {
|
|
22
|
+
export class Expressions {
|
|
26
23
|
static parse(str) {
|
|
27
|
-
if (
|
|
24
|
+
if (isString(str)) {
|
|
28
25
|
// check if JSON string
|
|
29
26
|
try {
|
|
30
27
|
let obj = JSON.parse(str.trim());
|
|
@@ -32,7 +29,7 @@ class Expressions {
|
|
|
32
29
|
}
|
|
33
30
|
catch (e) {
|
|
34
31
|
try {
|
|
35
|
-
let interpreter = new
|
|
32
|
+
let interpreter = new ExpressionInterpreter();
|
|
36
33
|
return interpreter.interprete(str);
|
|
37
34
|
}
|
|
38
35
|
catch (e) {
|
|
@@ -40,11 +37,11 @@ class Expressions {
|
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
|
-
else if (
|
|
40
|
+
else if (isPlainObject(str)) {
|
|
44
41
|
return this.fromJson(str);
|
|
45
42
|
}
|
|
46
43
|
else {
|
|
47
|
-
throw new
|
|
44
|
+
throw new NotSupportedError('object cant be interpreted to conditions, wrong format');
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
47
|
//static validate(entityDef:EntityDef, condition:CondDesc)
|
|
@@ -103,58 +100,58 @@ class Expressions {
|
|
|
103
100
|
return Object.keys(this.EXPR_REGISTRY);
|
|
104
101
|
}
|
|
105
102
|
static fromJson(object, srcKey = null, parent = null) {
|
|
106
|
-
if (
|
|
107
|
-
if (!parent || !(parent instanceof
|
|
108
|
-
parent =
|
|
103
|
+
if (isArray(object)) {
|
|
104
|
+
if (!parent || !(parent instanceof GroupDesc)) {
|
|
105
|
+
parent = Or();
|
|
109
106
|
}
|
|
110
107
|
for (let obj of object) {
|
|
111
108
|
let sub = this.fromJson(obj, null, parent);
|
|
112
|
-
if (!(sub instanceof
|
|
109
|
+
if (!(sub instanceof GroupDesc)) {
|
|
113
110
|
parent.values.push(sub);
|
|
114
111
|
}
|
|
115
112
|
}
|
|
116
113
|
return parent;
|
|
117
114
|
}
|
|
118
|
-
else if (
|
|
115
|
+
else if (isPlainObject(object)) {
|
|
119
116
|
let keys = Object.keys(object);
|
|
120
117
|
let operator = keys.filter(k => k.startsWith('$'));
|
|
121
118
|
if (keys.length == 1 && operator.length == 1) {
|
|
122
119
|
let op = operator.shift();
|
|
123
120
|
if (op == '$or' || op == '$and') {
|
|
124
|
-
if (
|
|
125
|
-
let desc = op == '$or' ?
|
|
126
|
-
if (parent instanceof
|
|
121
|
+
if (isArray(object[op])) {
|
|
122
|
+
let desc = op == '$or' ? Or() : And();
|
|
123
|
+
if (parent instanceof GroupDesc) {
|
|
127
124
|
parent.values.push(desc);
|
|
128
125
|
}
|
|
129
126
|
return this.fromJson(object[op], null, desc);
|
|
130
127
|
}
|
|
131
128
|
else {
|
|
132
|
-
throw new
|
|
129
|
+
throw new NotSupportedError('or|and must have an array as value ' + JSON.stringify(object, null, 2));
|
|
133
130
|
}
|
|
134
131
|
}
|
|
135
132
|
else if (this.exprKeys().indexOf(op) > -1) {
|
|
136
|
-
let key =
|
|
133
|
+
let key = Key(srcKey);
|
|
137
134
|
let value = null;
|
|
138
|
-
if (
|
|
139
|
-
value =
|
|
135
|
+
if (isArray(object[op])) {
|
|
136
|
+
value = Value(object[op]);
|
|
140
137
|
}
|
|
141
|
-
else if (
|
|
142
|
-
if (
|
|
143
|
-
value =
|
|
138
|
+
else if (isPlainObject(object[op])) {
|
|
139
|
+
if (has(object[op], '$key')) {
|
|
140
|
+
value = Key(object[op].$key);
|
|
144
141
|
}
|
|
145
142
|
else {
|
|
146
143
|
// ???
|
|
147
|
-
throw new
|
|
144
|
+
throw new NotSupportedError('object given but without known operator');
|
|
148
145
|
}
|
|
149
146
|
}
|
|
150
147
|
else {
|
|
151
|
-
value =
|
|
148
|
+
value = Value(object[op]);
|
|
152
149
|
}
|
|
153
150
|
// @ts-ignore
|
|
154
151
|
return this.EXPR_REGISTRY[op](key, value);
|
|
155
152
|
}
|
|
156
153
|
else {
|
|
157
|
-
throw new
|
|
154
|
+
throw new NotSupportedError('operator ' + op + ' not supported');
|
|
158
155
|
}
|
|
159
156
|
}
|
|
160
157
|
else if (operator.length == 0) {
|
|
@@ -166,18 +163,18 @@ class Expressions {
|
|
|
166
163
|
return desc.shift();
|
|
167
164
|
}
|
|
168
165
|
else {
|
|
169
|
-
return
|
|
166
|
+
return And(...desc);
|
|
170
167
|
}
|
|
171
168
|
}
|
|
172
169
|
else {
|
|
173
|
-
throw new
|
|
170
|
+
throw new NotSupportedError('object has wrong keys ' + JSON.stringify(object, null, 2));
|
|
174
171
|
}
|
|
175
172
|
}
|
|
176
173
|
else {
|
|
177
174
|
if (srcKey) {
|
|
178
|
-
return
|
|
175
|
+
return Eq(Key(srcKey), object);
|
|
179
176
|
}
|
|
180
|
-
throw new
|
|
177
|
+
throw new NotSupportedError('object cant be resolved ' + JSON.stringify(object, null, 2));
|
|
181
178
|
}
|
|
182
179
|
}
|
|
183
180
|
static parseLookupConditions(ref, id) {
|
|
@@ -202,7 +199,7 @@ class Expressions {
|
|
|
202
199
|
}
|
|
203
200
|
else if (/^\d+(,\d+)+$/.test(id)) {
|
|
204
201
|
let ids = id.split(',');
|
|
205
|
-
return ids.map((_id) => this.parseLookupConditions(ref,
|
|
202
|
+
return ids.map((_id) => this.parseLookupConditions(ref, isString(_id) ? parseInt(_id, 0) : _id));
|
|
206
203
|
}
|
|
207
204
|
else if (REGEX_ID_K.test(id)) {
|
|
208
205
|
if (/^\'.*\'$/.test(id)) {
|
|
@@ -218,7 +215,7 @@ class Expressions {
|
|
|
218
215
|
c += 1;
|
|
219
216
|
cond[p.name] = p.convert(v);
|
|
220
217
|
if (c >= idProps.length) {
|
|
221
|
-
conds.push(
|
|
218
|
+
conds.push(clone(cond));
|
|
222
219
|
cond = {};
|
|
223
220
|
c = 0;
|
|
224
221
|
}
|
|
@@ -227,7 +224,7 @@ class Expressions {
|
|
|
227
224
|
}
|
|
228
225
|
else {
|
|
229
226
|
if (idProps.length == 1) {
|
|
230
|
-
const prop =
|
|
227
|
+
const prop = first(idProps);
|
|
231
228
|
const ids = id.split(',').map((x) => x.trim());
|
|
232
229
|
const conds = [];
|
|
233
230
|
for (const _id of ids) {
|
|
@@ -240,11 +237,11 @@ class Expressions {
|
|
|
240
237
|
else {
|
|
241
238
|
}
|
|
242
239
|
}
|
|
243
|
-
throw new
|
|
240
|
+
throw new NotYetImplementedError('for ' + id);
|
|
244
241
|
}
|
|
245
242
|
static buildLookupConditions(ref, data) {
|
|
246
243
|
let idProps = ref.getPropertyRefs().filter(p => p.isIdentifier());
|
|
247
|
-
if (
|
|
244
|
+
if (isArray(data)) {
|
|
248
245
|
let collect = [];
|
|
249
246
|
data.forEach(d => {
|
|
250
247
|
collect.push(this._buildLookupconditions(idProps, d));
|
|
@@ -264,7 +261,7 @@ class Expressions {
|
|
|
264
261
|
let idPk = [];
|
|
265
262
|
idProps.forEach(id => {
|
|
266
263
|
let v = id.get(data);
|
|
267
|
-
if (
|
|
264
|
+
if (isString(v)) {
|
|
268
265
|
idPk.push('\'' + v + '\'');
|
|
269
266
|
}
|
|
270
267
|
else {
|
|
@@ -274,15 +271,14 @@ class Expressions {
|
|
|
274
271
|
return idPk.join(',');
|
|
275
272
|
}
|
|
276
273
|
}
|
|
277
|
-
exports.Expressions = Expressions;
|
|
278
274
|
Expressions.EXPR_REGISTRY = {
|
|
279
|
-
'$eq': (k, v) =>
|
|
280
|
-
'$ne': (k, v) =>
|
|
281
|
-
'$le': (k, v) =>
|
|
282
|
-
'$lt': (k, v) =>
|
|
283
|
-
'$ge': (k, v) =>
|
|
284
|
-
'$gt': (k, v) =>
|
|
285
|
-
'$like': (k, v) =>
|
|
286
|
-
'$in': (k, v) =>
|
|
275
|
+
'$eq': (k, v) => Eq(k, v),
|
|
276
|
+
'$ne': (k, v) => Neq(k, v),
|
|
277
|
+
'$le': (k, v) => Le(k, v),
|
|
278
|
+
'$lt': (k, v) => Lt(k, v),
|
|
279
|
+
'$ge': (k, v) => Ge(k, v),
|
|
280
|
+
'$gt': (k, v) => Gt(k, v),
|
|
281
|
+
'$like': (k, v) => Like(k, v),
|
|
282
|
+
'$in': (k, v) => In(k, v)
|
|
287
283
|
};
|
|
288
284
|
//# sourceMappingURL=Expressions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expressions.js","sourceRoot":"","sources":["../../../../src/libs/expressions/Expressions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Expressions.js","sourceRoot":"","sources":["../../../../src/libs/expressions/Expressions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAE,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,GAAG,EAAC,MAAM,2BAA2B,CAAC;AAC9C,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,GAAG,EAAC,MAAM,2BAA2B,CAAC;AAC9C,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,GAAG,EAAU,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,KAAK,EAAC,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAEhD,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAGpF,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,MAAM,OAAO,WAAW;IAatB,MAAM,CAAC,KAAK,CAAC,GAAQ;QACnB,IAAI,QAAQ,CAAC,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,qBAAqB,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,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,iBAAiB,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,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,SAAS,CAAC,EAAE,CAAC;gBAC9C,MAAM,GAAG,EAAE,EAAE,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,SAAS,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,aAAa,CAAC,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,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACxB,IAAI,IAAI,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBACtC,IAAI,MAAM,YAAY,SAAS,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,iBAAiB,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,GAAG,CAAC,MAAM,CAAC,CAAC;oBACtB,IAAI,KAAK,GAAQ,IAAI,CAAC;oBACtB,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACxB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAQ,CAAC,CAAC;oBACnC,CAAC;yBAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACrC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;4BAC5B,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC/B,CAAC;6BAAM,CAAC;4BACN,MAAM;4BACN,MAAM,IAAI,iBAAiB,CAAC,yCAAyC,CAAC,CAAC;wBACzE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,KAAK,CAAC,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,iBAAiB,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,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,iBAAiB,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,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,IAAI,iBAAiB,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,QAAQ,CAAC,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,KAAK,CAAC,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,KAAK,CAAC,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,sBAAsB,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,OAAO,CAAC,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,QAAQ,CAAC,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;;AAvQM,yBAAa,GAAG;IACrB,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD,KAAK,EAAE,CAAC,CAAU,EAAE,CAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC7C,CAAA"}
|