@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.
Files changed (47) hide show
  1. package/LICENSE +1 -1
  2. package/browser.js +1 -2
  3. package/browser.js.map +1 -1
  4. package/index.js +6 -3
  5. package/index.js.map +1 -1
  6. package/libs/descriptors/AndDesc.js +3 -4
  7. package/libs/descriptors/AndDesc.js.map +1 -1
  8. package/libs/descriptors/EqDesc.js +4 -5
  9. package/libs/descriptors/EqDesc.js.map +1 -1
  10. package/libs/descriptors/ExprDesc.js +20 -18
  11. package/libs/descriptors/ExprDesc.js.map +1 -1
  12. package/libs/descriptors/GeDesc.js +3 -4
  13. package/libs/descriptors/GeDesc.js.map +1 -1
  14. package/libs/descriptors/GroupDesc.js +1 -2
  15. package/libs/descriptors/GroupDesc.js.map +1 -1
  16. package/libs/descriptors/GtDesc.js +3 -4
  17. package/libs/descriptors/GtDesc.js.map +1 -1
  18. package/libs/descriptors/IExpr.js +1 -2
  19. package/libs/descriptors/IExpr.js.map +1 -1
  20. package/libs/descriptors/InDesc.js +3 -4
  21. package/libs/descriptors/InDesc.js.map +1 -1
  22. package/libs/descriptors/KeyDesc.js +3 -4
  23. package/libs/descriptors/KeyDesc.js.map +1 -1
  24. package/libs/descriptors/LeDesc.js +3 -4
  25. package/libs/descriptors/LeDesc.js.map +1 -1
  26. package/libs/descriptors/LikeDesc.js +3 -4
  27. package/libs/descriptors/LikeDesc.js.map +1 -1
  28. package/libs/descriptors/LtDesc.js +3 -4
  29. package/libs/descriptors/LtDesc.js.map +1 -1
  30. package/libs/descriptors/NeqDesc.js +3 -4
  31. package/libs/descriptors/NeqDesc.js.map +1 -1
  32. package/libs/descriptors/OpDesc.js +3 -4
  33. package/libs/descriptors/OpDesc.js.map +1 -1
  34. package/libs/descriptors/OrDesc.js +3 -4
  35. package/libs/descriptors/OrDesc.js.map +1 -1
  36. package/libs/descriptors/Selector.js +1 -2
  37. package/libs/descriptors/Selector.js.map +1 -1
  38. package/libs/descriptors/ValueDesc.js +3 -4
  39. package/libs/descriptors/ValueDesc.js.map +1 -1
  40. package/libs/exceptions/ExpressionValidationError.js +1 -2
  41. package/libs/exceptions/ExpressionValidationError.js.map +1 -1
  42. package/libs/expressions/ExpressionInterpreter.js +24 -24
  43. package/libs/expressions/ExpressionInterpreter.js.map +1 -1
  44. package/libs/expressions/Expressions.d.ts +13 -0
  45. package/libs/expressions/Expressions.js +48 -56
  46. package/libs/expressions/Expressions.js.map +1 -1
  47. package/package.json +11 -37
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Value = exports.ValueDesc = void 0;
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
- exports.Value = Value;
24
-
25
- //# sourceMappingURL=ValueDesc.js.map
24
+ //# sourceMappingURL=ValueDesc.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/libs/descriptors/ValueDesc.ts"],"names":[],"mappings":";;;AAAA,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;AAFD,sBAEC","file":"ValueDesc.js","sourcesContent":["import {Selector} from \"./Selector\";\n\nexport class ValueDesc extends Selector {\n readonly type:string = 'value';\n readonly value: string | number;\n\n constructor(value: string | number) {\n super();\n this.value = value;\n }\n\n toJson(){\n return this.value;\n }\n\n}\n\n\n/**\n * Value\n *\n */\nexport function Value(v: string | number) {\n return new ValueDesc(v);\n}\n\n"],"sourceRoot":"../.."}
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"}
@@ -8,5 +8,4 @@ class ExpressionValidationError extends Error {
8
8
  }
9
9
  }
10
10
  exports.ExpressionValidationError = ExpressionValidationError;
11
-
12
- //# sourceMappingURL=ExpressionValidationError.js.map
11
+ //# sourceMappingURL=ExpressionValidationError.js.map
@@ -1 +1 @@
1
- {"version":3,"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","file":"ExpressionValidationError.js","sourcesContent":["\n\nexport class ExpressionValidationError extends Error {\n\n constructor(msg:string){\n super(msg);\n Object.setPrototypeOf(this, ExpressionValidationError.prototype);\n }\n\n}\n"],"sourceRoot":"../.."}
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 _.first(this.res);
73
+ return (0, lodash_1.first)(this.res);
74
74
  }
75
75
  fragmentize(str) {
76
- let lastState = _.last(this.queue);
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 (_.isEmpty(x.after)) {
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 = _.findIndex(arr, x => !_.isUndefined(x), 1) - 1;
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 (!_.isEmpty(nextStr)) {
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 = _.last(this.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 = _.find(this.res, g => g instanceof GroupDesc_1.GroupDesc ? g.id == this.groupLevel : false);
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
- _.remove(this.res, g => g instanceof GroupDesc_1.GroupDesc ? g.id == this.groupLevel : false);
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 = _.find(this.res, g => g instanceof GroupDesc_1.GroupDesc ? g.id == prevGid : false);
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":";;;AAAA,4BAA4B;AAC5B,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;AAGzC,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,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAGD,WAAW,CAAC,GAAW;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,CAAC,SAAS,EAAE;gBACf,KAAK,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;aACvB;YACD,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC;aACd;YAED,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;aAC3C;iBAAM;gBACL,OAAO,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;aACtD;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;YACP,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAE5D,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,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,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACvB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC3B;aACF;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;aACpE;SACF;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,GAAG,eAAe,GAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC5E;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;YAC/B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;SAC7C;aAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC9B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SACzB;aAAM,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;SAC3B;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACjC,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;oBAC3B,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;iBAC1C;qBAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBAC1B,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACtB;qBAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBAC/B,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;iBACxB;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;SACN;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;YAC3D,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;gBACrC,KAAK,GAAG;oBACN,GAAG,GAAG,WAAE,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,MAAM;oBACT,GAAG,GAAG,eAAI,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,WAAE,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,WAAE,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,GAAG;oBACN,GAAG,GAAG,WAAE,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,GAAG;oBACN,GAAG,GAAG,WAAE,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,WAAE,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,IAAI;oBACP,GAAG,GAAG,aAAG,CAAC,aAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,iBAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACxC,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;aACzC;SACF;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;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,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,YAAY,qBAAS,EAAE;YAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpB;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,CAAC,CAAC,IAAI,CAAC,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,CAAC;QAC5F,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;YAClC,CAAC,CAAC,MAAM,CAAC,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;YACjF,wBAAwB;YACxB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAClC,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,qBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxF,IAAI,SAAS,EAAE;gBACb,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;aACnB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;aACpE;SACF;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;YAC5G,aAAa;YACb,KAAK,GAAG,IAAI,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;aAAM,IAAI,IAAI,YAAY,qBAAS,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE;YAC5D,YAAY;YACZ,QAAQ,IAAI,EAAE;gBACZ,KAAK,KAAK;oBACR,KAAK,GAAG,aAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,IAAI;oBACP,KAAK,GAAG,WAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,MAAM;aACT;YACD,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;aAAM;YACL,QAAQ,IAAI,EAAE;gBACZ,KAAK,KAAK;oBACR,KAAK,GAAG,aAAG,CAAC,IAAI,CAAC,CAAC;oBAClB,MAAM;gBACR,KAAK,IAAI;oBACP,KAAK,GAAG,WAAE,CAAC,IAAI,CAAC,CAAC;oBACjB,MAAM;aACT;YACD,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;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;AA/TD,sDA+TC","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 (_.isString(str)) {
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 (_.isPlainObject(str)) {
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) && _.isArray(data.value)) {
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('$') && !_.isPlainObject(data.value)) {
67
+ } else if (data.key.startsWith('$') && !isPlainObject(data.value)) {
67
68
  if (data.key == '$eq') {
68
69
  let value = null;
69
- if (_.isPlainObject(data.value)) {
70
- if (_.has(data.value, '$key')) {
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 (_.isPlainObject(data.value)) {
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 (_.isArray(object)) {
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 (_.isPlainObject(object)) {
115
- let keys = _.keys(object);
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 (_.isArray(object[op])) {
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 (['$eq', '$le', '$lt', '$ge', '$gt', '$ne', '$like'].indexOf(op) > -1) {
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 (_.isPlainObject(object[op])) {
135
- if (_.has(object[op], '$key')) {
136
- value = KeyDesc_1.Key(object[op].$key);
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
- return InDesc_1.In(key, value);
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 _.map(ids, _id => this.parseLookupConditions(ref, _id));
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 _.map(ids, _id => this.parseLookupConditions(ref, _.isString(_id) ? parseInt(_id, 0) : _id));
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(_.clone(cond));
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 = _.first(idProps);
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 (_.isArray(data)) {
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 (_.isString(v)) {
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
- //# sourceMappingURL=Expressions.js.map
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":"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","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":"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"}