@allgemein/mango-expressions 1.3.3 → 1.4.1

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 (275) hide show
  1. package/AExpr.d.ts +11 -0
  2. package/AExpr.js +37 -0
  3. package/AExpr.js.map +1 -0
  4. package/Constants.d.ts +1 -0
  5. package/Constants.js +2 -5
  6. package/Constants.js.map +1 -1
  7. package/IWalker.d.ts +19 -0
  8. package/IWalker.js +2 -0
  9. package/IWalker.js.map +1 -0
  10. package/README.md +69 -1
  11. package/_Expr.d.ts +1 -0
  12. package/_Expr.js +52 -0
  13. package/_Expr.js.map +1 -0
  14. package/ast/AbstractValue.d.ts +7 -0
  15. package/ast/AbstractValue.js +27 -0
  16. package/ast/AbstractValue.js.map +1 -0
  17. package/ast/Bindings.d.ts +1 -2
  18. package/ast/Bindings.js +1 -5
  19. package/ast/Bindings.js.map +1 -1
  20. package/ast/Constan.d.ts +11 -0
  21. package/ast/Constan.js +2 -0
  22. package/ast/Constan.js.map +1 -0
  23. package/ast/Context.js +8 -12
  24. package/ast/Context.js.map +1 -1
  25. package/ast/Expr.d.ts +23 -0
  26. package/ast/Expr.js +90 -0
  27. package/ast/Expr.js.map +1 -0
  28. package/ast/IExpr.d.ts +16 -0
  29. package/ast/IExpr.js +2 -0
  30. package/ast/IExpr.js.map +1 -0
  31. package/ast/IParser.d.ts +14 -0
  32. package/ast/IParser.js +2 -0
  33. package/ast/IParser.js.map +1 -0
  34. package/ast/IStackEntry.d.ts +13 -0
  35. package/ast/IStackEntry.js +2 -0
  36. package/ast/IStackEntry.js.map +1 -0
  37. package/ast/JsonParser.d.ts +25 -0
  38. package/ast/JsonParser.js +60 -0
  39. package/ast/JsonParser.js.map +1 -0
  40. package/ast/KeyDesc.d.ts +2 -4
  41. package/ast/KeyDesc.js +4 -9
  42. package/ast/KeyDesc.js.map +1 -1
  43. package/ast/MultiArgs.js +1 -5
  44. package/ast/MultiArgs.js.map +1 -1
  45. package/ast/PArray.d.ts +1 -10
  46. package/ast/PArray.js +67 -53
  47. package/ast/PArray.js.map +1 -1
  48. package/ast/PObject.d.ts +1 -17
  49. package/ast/PObject.js +130 -108
  50. package/ast/PObject.js.map +1 -1
  51. package/ast/RefDesc.d.ts +5 -0
  52. package/ast/RefDesc.js +12 -0
  53. package/ast/RefDesc.js.map +1 -0
  54. package/ast/Selector.d.ts +19 -5
  55. package/ast/Selector.js +31 -9
  56. package/ast/Selector.js.map +1 -1
  57. package/ast/StackEntry.d.ts +24 -0
  58. package/ast/StackEntry.js +121 -0
  59. package/ast/StackEntry.js.map +1 -0
  60. package/ast/StringParser.d.ts +16 -0
  61. package/ast/StringParser.js +301 -0
  62. package/ast/StringParser.js.map +1 -0
  63. package/ast/Unset.d.ts +2 -2
  64. package/ast/Unset.js +2 -6
  65. package/ast/Unset.js.map +1 -1
  66. package/ast/ValueDesc.d.ts +4 -0
  67. package/ast/ValueDesc.js +9 -0
  68. package/ast/ValueDesc.js.map +1 -0
  69. package/ast/functions.d.ts +1 -0
  70. package/ast/functions.js +8 -0
  71. package/ast/functions.js.map +1 -0
  72. package/browser.d.ts +52 -55
  73. package/browser.js +53 -117
  74. package/browser.js.map +1 -1
  75. package/errors/InvalidValueError.d.ts +4 -0
  76. package/errors/InvalidValueError.js +6 -0
  77. package/errors/InvalidValueError.js.map +1 -0
  78. package/errors/NotYetImplementedError.d.ts +3 -0
  79. package/errors/NotYetImplementedError.js +6 -0
  80. package/errors/NotYetImplementedError.js.map +1 -0
  81. package/errors/UnsupportedInputError.d.ts +3 -0
  82. package/errors/UnsupportedInputError.js +6 -0
  83. package/errors/UnsupportedInputError.js.map +1 -0
  84. package/functions.d.ts +9 -0
  85. package/functions.js +107 -0
  86. package/functions.js.map +1 -0
  87. package/index.d.ts +1 -1
  88. package/index.js +5 -64
  89. package/index.js.map +1 -1
  90. package/operators/AbstractCompare.d.ts +23 -0
  91. package/operators/AbstractCompare.js +100 -0
  92. package/operators/AbstractCompare.js.map +1 -0
  93. package/operators/AbstractFunction.d.ts +6 -0
  94. package/operators/AbstractFunction.js +10 -0
  95. package/operators/AbstractFunction.js.map +1 -0
  96. package/operators/AbstractJunctor.d.ts +13 -0
  97. package/operators/AbstractJunctor.js +31 -0
  98. package/operators/AbstractJunctor.js.map +1 -0
  99. package/operators/AbstractJunctorArray.d.ts +18 -0
  100. package/operators/AbstractJunctorArray.js +63 -0
  101. package/operators/AbstractJunctorArray.js.map +1 -0
  102. package/operators/AbstractOperator.d.ts +6 -6
  103. package/operators/AbstractOperator.js +12 -31
  104. package/operators/AbstractOperator.js.map +1 -1
  105. package/operators/Components.d.ts +30 -0
  106. package/operators/Components.js +140 -0
  107. package/operators/Components.js.map +1 -0
  108. package/operators/arithmetic/Avg.d.ts +2 -2
  109. package/operators/arithmetic/Avg.js +2 -6
  110. package/operators/arithmetic/Avg.js.map +1 -1
  111. package/operators/arithmetic/Count.d.ts +2 -2
  112. package/operators/arithmetic/Count.js +2 -6
  113. package/operators/arithmetic/Count.js.map +1 -1
  114. package/operators/arithmetic/Max.d.ts +2 -2
  115. package/operators/arithmetic/Max.js +2 -6
  116. package/operators/arithmetic/Max.js.map +1 -1
  117. package/operators/arithmetic/Min.d.ts +2 -2
  118. package/operators/arithmetic/Min.js +2 -6
  119. package/operators/arithmetic/Min.js.map +1 -1
  120. package/operators/arithmetic/Multiply.d.ts +2 -2
  121. package/operators/arithmetic/Multiply.js +2 -6
  122. package/operators/arithmetic/Multiply.js.map +1 -1
  123. package/operators/arithmetic/Sum.d.ts +2 -2
  124. package/operators/arithmetic/Sum.js +2 -6
  125. package/operators/arithmetic/Sum.js.map +1 -1
  126. package/operators/array/First.d.ts +2 -4
  127. package/operators/array/First.js +9 -15
  128. package/operators/array/First.js.map +1 -1
  129. package/operators/array/Last.d.ts +2 -4
  130. package/operators/array/Last.js +9 -15
  131. package/operators/array/Last.js.map +1 -1
  132. package/operators/array/Map.d.ts +5 -6
  133. package/operators/array/Map.js +14 -20
  134. package/operators/array/Map.js.map +1 -1
  135. package/operators/compare/EqualDesc.d.ts +6 -7
  136. package/operators/compare/EqualDesc.js +13 -11
  137. package/operators/compare/EqualDesc.js.map +1 -1
  138. package/operators/compare/EqualDescLookup.d.ts +2 -2
  139. package/operators/compare/EqualDescLookup.js +24 -31
  140. package/operators/compare/EqualDescLookup.js.map +1 -1
  141. package/operators/compare/GreaterThen.d.ts +3 -4
  142. package/operators/compare/GreaterThen.js +3 -7
  143. package/operators/compare/GreaterThen.js.map +1 -1
  144. package/operators/compare/GreaterThenEqual.d.ts +3 -4
  145. package/operators/compare/GreaterThenEqual.js +3 -7
  146. package/operators/compare/GreaterThenEqual.js.map +1 -1
  147. package/operators/compare/In.d.ts +3 -4
  148. package/operators/compare/In.js +3 -7
  149. package/operators/compare/In.js.map +1 -1
  150. package/operators/compare/IsNotNull.d.ts +3 -3
  151. package/operators/compare/IsNotNull.js +3 -7
  152. package/operators/compare/IsNotNull.js.map +1 -1
  153. package/operators/compare/IsNull.d.ts +3 -3
  154. package/operators/compare/IsNull.js +3 -7
  155. package/operators/compare/IsNull.js.map +1 -1
  156. package/operators/compare/LessThen.d.ts +3 -3
  157. package/operators/compare/LessThen.js +3 -6
  158. package/operators/compare/LessThen.js.map +1 -1
  159. package/operators/compare/LessThenEqual.d.ts +3 -4
  160. package/operators/compare/LessThenEqual.js +3 -7
  161. package/operators/compare/LessThenEqual.js.map +1 -1
  162. package/operators/compare/Like.d.ts +3 -4
  163. package/operators/compare/Like.js +3 -7
  164. package/operators/compare/Like.js.map +1 -1
  165. package/operators/compare/NotEqual.d.ts +3 -4
  166. package/operators/compare/NotEqual.js +3 -7
  167. package/operators/compare/NotEqual.js.map +1 -1
  168. package/operators/compare/NotIn.d.ts +3 -4
  169. package/operators/compare/NotIn.js +3 -7
  170. package/operators/compare/NotIn.js.map +1 -1
  171. package/operators/compare/Regex.d.ts +2 -6
  172. package/operators/compare/Regex.js +28 -33
  173. package/operators/compare/Regex.js.map +1 -1
  174. package/operators/date/Date.d.ts +2 -2
  175. package/operators/date/Date.js +3 -6
  176. package/operators/date/Date.js.map +1 -1
  177. package/operators/date/DateToString.d.ts +4 -5
  178. package/operators/date/DateToString.js +15 -20
  179. package/operators/date/DateToString.js.map +1 -1
  180. package/operators/date/Day.d.ts +2 -2
  181. package/operators/date/Day.js +2 -6
  182. package/operators/date/Day.js.map +1 -1
  183. package/operators/date/Month.d.ts +2 -2
  184. package/operators/date/Month.js +2 -6
  185. package/operators/date/Month.js.map +1 -1
  186. package/operators/date/Year.d.ts +2 -2
  187. package/operators/date/Year.js +2 -6
  188. package/operators/date/Year.js.map +1 -1
  189. package/operators/logic/AndDesc.d.ts +5 -7
  190. package/operators/logic/AndDesc.js +16 -21
  191. package/operators/logic/AndDesc.js.map +1 -1
  192. package/operators/logic/AndDescLookup.d.ts +2 -2
  193. package/operators/logic/AndDescLookup.js +1 -5
  194. package/operators/logic/AndDescLookup.js.map +1 -1
  195. package/operators/logic/NotDesc.d.ts +8 -0
  196. package/operators/logic/NotDesc.js +21 -0
  197. package/operators/logic/NotDesc.js.map +1 -0
  198. package/operators/logic/OrDesc.d.ts +5 -7
  199. package/operators/logic/OrDesc.js +5 -21
  200. package/operators/logic/OrDesc.js.map +1 -1
  201. package/operators/stage/AbstractSection.d.ts +7 -0
  202. package/operators/stage/AbstractSection.js +11 -0
  203. package/operators/stage/AbstractSection.js.map +1 -0
  204. package/operators/stage/Group.d.ts +4 -10
  205. package/operators/stage/Group.js +33 -39
  206. package/operators/stage/Group.js.map +1 -1
  207. package/operators/stage/Limit.d.ts +2 -2
  208. package/operators/stage/Limit.js +2 -6
  209. package/operators/stage/Limit.js.map +1 -1
  210. package/operators/stage/Match.d.ts +2 -8
  211. package/operators/stage/Match.js +2 -20
  212. package/operators/stage/Match.js.map +1 -1
  213. package/operators/stage/Project.d.ts +2 -8
  214. package/operators/stage/Project.js +17 -21
  215. package/operators/stage/Project.js.map +1 -1
  216. package/operators/stage/Query..d.ts +1 -0
  217. package/operators/stage/Query..js +3 -0
  218. package/operators/stage/Query..js.map +1 -0
  219. package/operators/stage/Skip.d.ts +2 -6
  220. package/operators/stage/Skip.js +6 -11
  221. package/operators/stage/Skip.js.map +1 -1
  222. package/operators/stage/Sort.d.ts +2 -6
  223. package/operators/stage/Sort.js +6 -11
  224. package/operators/stage/Sort.js.map +1 -1
  225. package/operators/string/Substr.d.ts +2 -4
  226. package/operators/string/Substr.js +19 -22
  227. package/operators/string/Substr.js.map +1 -1
  228. package/operators/string/ToFloat.d.ts +2 -3
  229. package/operators/string/ToFloat.js +9 -15
  230. package/operators/string/ToFloat.js.map +1 -1
  231. package/operators/string/ToInt.d.ts +2 -3
  232. package/operators/string/ToInt.js +9 -15
  233. package/operators/string/ToInt.js.map +1 -1
  234. package/operators/string/ToLower.d.ts +2 -3
  235. package/operators/string/ToLower.js +9 -15
  236. package/operators/string/ToLower.js.map +1 -1
  237. package/operators/string/ToUpper.d.ts +2 -4
  238. package/operators/string/ToUpper.js +9 -15
  239. package/operators/string/ToUpper.js.map +1 -1
  240. package/package.json +2 -1
  241. package/walker/lookup/ILookupFn.d.ts +2 -2
  242. package/walker/lookup/ILookupFn.js +1 -2
  243. package/walker/lookup/LookupWalker.d.ts +11 -11
  244. package/walker/lookup/LookupWalker.js +19 -23
  245. package/walker/lookup/LookupWalker.js.map +1 -1
  246. package/IMangoWalker.d.ts +0 -19
  247. package/IMangoWalker.js +0 -3
  248. package/IMangoWalker.js.map +0 -1
  249. package/MangoExpression.d.ts +0 -15
  250. package/MangoExpression.js +0 -88
  251. package/MangoExpression.js.map +0 -1
  252. package/ast/PAst.d.ts +0 -42
  253. package/ast/PAst.js +0 -158
  254. package/ast/PAst.js.map +0 -1
  255. package/ast/PValue.d.ts +0 -10
  256. package/ast/PValue.js +0 -22
  257. package/ast/PValue.js.map +0 -1
  258. package/ast/Value.d.ts +0 -3
  259. package/ast/Value.js +0 -8
  260. package/ast/Value.js.map +0 -1
  261. package/ast/ValueRef.d.ts +0 -4
  262. package/ast/ValueRef.js +0 -11
  263. package/ast/ValueRef.js.map +0 -1
  264. package/operators/Operators.d.ts +0 -35
  265. package/operators/Operators.js +0 -149
  266. package/operators/Operators.js.map +0 -1
  267. package/operators/compare/AbstractCompare.d.ts +0 -5
  268. package/operators/compare/AbstractCompare.js +0 -14
  269. package/operators/compare/AbstractCompare.js.map +0 -1
  270. package/operators/logic/AbstractLogic.d.ts +0 -3
  271. package/operators/logic/AbstractLogic.js +0 -8
  272. package/operators/logic/AbstractLogic.js.map +0 -1
  273. package/operators/logic/Not.d.ts +0 -8
  274. package/operators/logic/Not.js +0 -22
  275. package/operators/logic/Not.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ import { AbstractOperator } from './AbstractOperator.js';
2
+ import { IStackEntry } from '../ast/IStackEntry.js';
3
+ import { IExpr } from '../ast/IExpr.js';
4
+ export declare abstract class AbstractCompare extends AbstractOperator {
5
+ /**
6
+ * Differenze between notation of a comparator
7
+ *
8
+ * {key: {$COMPARE_IDENT: value}}
9
+ * or
10
+ * {$COMPARE_IDENT: [key, value]}
11
+ *
12
+ */
13
+ mode: 'key_ref' | 'array';
14
+ leftSide: IExpr;
15
+ rightSide: IExpr;
16
+ getLeftSide(): IExpr;
17
+ setLeftSide(arg1: IExpr): void;
18
+ getRightSide(): IExpr;
19
+ setRightSide(result: IExpr): void;
20
+ getChildren(): IExpr[];
21
+ parse(entry: IStackEntry, partial: any, key: string | number): IExpr;
22
+ toJson(): any;
23
+ }
@@ -0,0 +1,100 @@
1
+ import { AbstractOperator } from './AbstractOperator.js';
2
+ import { Selector } from '../ast/Selector.js';
3
+ import { Expr } from '../ast/Expr.js';
4
+ import { NotYetImplementedError } from '../errors/NotYetImplementedError.js';
5
+ import { isArray } from '@allgemein/base';
6
+ import { KeyDesc } from '../ast/KeyDesc.js';
7
+ import { AbstractJunctorArray } from './AbstractJunctorArray.js';
8
+ export class AbstractCompare extends AbstractOperator {
9
+ constructor() {
10
+ // op: string;
11
+ super(...arguments);
12
+ /**
13
+ * Differenze between notation of a comparator
14
+ *
15
+ * {key: {$COMPARE_IDENT: value}}
16
+ * or
17
+ * {$COMPARE_IDENT: [key, value]}
18
+ *
19
+ */
20
+ this.mode = 'key_ref';
21
+ }
22
+ getLeftSide() {
23
+ return this.leftSide;
24
+ }
25
+ setLeftSide(arg1) {
26
+ this.leftSide = arg1;
27
+ }
28
+ getRightSide() {
29
+ return this.rightSide;
30
+ }
31
+ setRightSide(result) {
32
+ this.rightSide = result;
33
+ }
34
+ getChildren() {
35
+ return [this.leftSide, this.rightSide];
36
+ }
37
+ parse(entry, partial, key) {
38
+ const parent = entry.getParentComp();
39
+ if (parent && parent instanceof Selector) {
40
+ // Mode is key_ref, because the key of this partial is defined
41
+ this.mode = 'key_ref';
42
+ // Selectors an on the left side and the operator becomes the parent, the operation will be the parent of the selector
43
+ this.setLeftSide(parent);
44
+ // switch parents
45
+ const p = parent.getParent();
46
+ parent.setParent(this);
47
+ this.setParent(p);
48
+ if (p) {
49
+ if (p instanceof AbstractJunctorArray) {
50
+ p.switchChildValue(parent, this);
51
+ }
52
+ else if (p instanceof AbstractOperator) {
53
+ p.switchValue(parent, this);
54
+ }
55
+ }
56
+ entry.enqueue(partial, key, result => this.setRightSide(result.comp));
57
+ }
58
+ else if (isArray(partial) && partial.length === 2) {
59
+ // No key was previously detected, so key is a given and value is array of 2
60
+ this.mode = 'array';
61
+ if (parent) {
62
+ this.setParent(parent);
63
+ }
64
+ entry.enqueue(partial[0], 0, result => this.setLeftSide(result.comp), { comp: KeyDesc, resolve: (partial) => [partial, undefined] });
65
+ entry.enqueue(partial[1], 1, result => this.setRightSide(result.comp));
66
+ }
67
+ else {
68
+ throw new NotYetImplementedError();
69
+ }
70
+ return this;
71
+ }
72
+ toJson() {
73
+ const leftSide = this.getLeftSide();
74
+ const rightSide = this.getRightSide();
75
+ let key = null;
76
+ let value = null;
77
+ if (leftSide instanceof Expr) {
78
+ key = leftSide.toJson();
79
+ }
80
+ if (rightSide instanceof Expr) {
81
+ value = rightSide.toJson();
82
+ }
83
+ if (!key) {
84
+ throw new NotYetImplementedError();
85
+ }
86
+ if (this.mode === 'key_ref') {
87
+ return {
88
+ [key]: {
89
+ ['$' + this.name]: value
90
+ }
91
+ };
92
+ }
93
+ else {
94
+ return {
95
+ ['$' + this.name]: [key, value]
96
+ };
97
+ }
98
+ }
99
+ }
100
+ //# sourceMappingURL=AbstractCompare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractCompare.js","sourceRoot":"","sources":["../../../src/operators/AbstractCompare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Expr } from '../ast/Expr.js';
2
+ import { IWalker } from '../IWalker.js';
3
+ export declare abstract class AbstractFunction extends Expr {
4
+ getByKey(key: string): Expr;
5
+ visit(o: IWalker): void;
6
+ }
@@ -0,0 +1,10 @@
1
+ import { Expr } from '../ast/Expr.js';
2
+ export class AbstractFunction extends Expr {
3
+ getByKey(key) {
4
+ throw new Error('Method not implemented.');
5
+ }
6
+ visit(o) {
7
+ throw new Error('Method not implemented.');
8
+ }
9
+ }
10
+ //# sourceMappingURL=AbstractFunction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractFunction.js","sourceRoot":"","sources":["../../../src/operators/AbstractFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAGpC,MAAM,OAAgB,gBAAiB,SAAQ,IAAI;IAEjD,QAAQ,CAAC,GAAW;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,CAAU;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CAEF"}
@@ -0,0 +1,13 @@
1
+ import { AbstractOperator } from './AbstractOperator.js';
2
+ import { IStackEntry } from '../ast/IStackEntry.js';
3
+ import { IExpr } from '../ast/IExpr.js';
4
+ export declare abstract class AbstractJunctor extends AbstractOperator {
5
+ /**
6
+ *
7
+ * @param entry
8
+ * @param partial
9
+ * @param key
10
+ */
11
+ parse(entry: IStackEntry, partial: any, key: string | number): IExpr;
12
+ toJson(): any;
13
+ }
@@ -0,0 +1,31 @@
1
+ import { AbstractOperator } from './AbstractOperator.js';
2
+ import { NotYetImplementedError } from '../errors/NotYetImplementedError.js';
3
+ export class AbstractJunctor extends AbstractOperator {
4
+ /**
5
+ *
6
+ * @param entry
7
+ * @param partial
8
+ * @param key
9
+ */
10
+ parse(entry, partial, key) {
11
+ throw new NotYetImplementedError();
12
+ // if (isArray(partial)) {
13
+ // throw new NotYetImplementedError();
14
+ // } else if (isObjectLike(partial)) {
15
+ // // TODO is operator in partial
16
+ // const partialKeys = Object.keys(partial);
17
+ // // spilt object in multipe parts
18
+ // for (let partialKey of partialKeys.reverse()) {
19
+ // let partialValue = partial[partialKey];
20
+ // entry.enqueue({[partialKey]: partialValue}, partialKey);
21
+ // }
22
+ // } else {
23
+ // throw new NotYetImplementedError();
24
+ // }
25
+ // return this
26
+ }
27
+ toJson() {
28
+ return { ['$' + this.name]: this.value.toJson() };
29
+ }
30
+ }
31
+ //# sourceMappingURL=AbstractJunctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractJunctor.js","sourceRoot":"","sources":["../../../src/operators/AbstractJunctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAIvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAE3E,MAAM,OAAgB,eAAgB,SAAQ,gBAAgB;IAI5D;;;;;OAKG;IACH,KAAK,CAAC,KAAkB,EAAE,OAAY,EAAE,GAAoB;QAC1D,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACnC,0BAA0B;QAC1B,wCAAwC;QACxC,sCAAsC;QACtC,mCAAmC;QACnC,8CAA8C;QAC9C,qCAAqC;QACrC,oDAAoD;QACpD,8CAA8C;QAC9C,+DAA+D;QAC/D,MAAM;QACN,WAAW;QACX,wCAAwC;QACxC,IAAI;QACJ,cAAc;IAChB,CAAC;IAID,MAAM;QACJ,OAAO,EAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC,CAAC;IAClD,CAAC;CAGF"}
@@ -0,0 +1,18 @@
1
+ import { IStackEntry } from '../ast/IStackEntry.js';
2
+ import { IExpr } from '../ast/IExpr.js';
3
+ import { AbstractJunctor } from './AbstractJunctor.js';
4
+ export declare abstract class AbstractJunctorArray extends AbstractJunctor {
5
+ value: IExpr[];
6
+ /**
7
+ *
8
+ * @param entry
9
+ * @param partial
10
+ * @param key
11
+ */
12
+ parse(entry: IStackEntry, partial: any, key: string | number): IExpr;
13
+ isGroup(): boolean;
14
+ getChildren(): IExpr[];
15
+ add(e: IExpr): void;
16
+ switchChildValue(from: IExpr, to: IExpr): void;
17
+ toJson(): any;
18
+ }
@@ -0,0 +1,63 @@
1
+ import { isArray, isObjectLike } from '@allgemein/base';
2
+ import { NotYetImplementedError } from '../errors/NotYetImplementedError.js';
3
+ import { AbstractJunctor } from './AbstractJunctor.js';
4
+ export class AbstractJunctorArray extends AbstractJunctor {
5
+ constructor() {
6
+ super(...arguments);
7
+ // @ts-ignore
8
+ this.value = [];
9
+ }
10
+ /**
11
+ *
12
+ * @param entry
13
+ * @param partial
14
+ * @param key
15
+ */
16
+ parse(entry, partial, key) {
17
+ if (isArray(partial)) {
18
+ for (let i = partial.length - 1; i >= 0; i--) {
19
+ const partialValue = partial[i];
20
+ entry.enqueue(partialValue, i, result => this.add(result.comp));
21
+ }
22
+ }
23
+ else if (isObjectLike(partial)) {
24
+ // TODO is operator in partial
25
+ const partialKeys = Object.keys(partial);
26
+ // split object in multiple parts
27
+ for (const partialKey of partialKeys.reverse()) {
28
+ const partialValue = partial[partialKey];
29
+ entry.enqueue({ [partialKey]: partialValue }, partialKey, result => this.add(result.comp));
30
+ }
31
+ }
32
+ else {
33
+ throw new NotYetImplementedError();
34
+ }
35
+ return this;
36
+ }
37
+ isGroup() {
38
+ return true;
39
+ }
40
+ getChildren() {
41
+ return this.value;
42
+ }
43
+ add(e) {
44
+ if (isArray(this.getValue())) {
45
+ e.setParent(this);
46
+ this.getValue().push(e);
47
+ }
48
+ }
49
+ switchChildValue(from, to) {
50
+ const idx = this.value.findIndex(x => x === from);
51
+ if (idx > -1) {
52
+ this.value[idx] = to;
53
+ to.setParent(this);
54
+ }
55
+ else {
56
+ throw new Error('something went wrong');
57
+ }
58
+ }
59
+ toJson() {
60
+ return { ['$' + this.name]: this.value.map(x => x.toJson()) };
61
+ }
62
+ }
63
+ //# sourceMappingURL=AbstractJunctorArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractJunctorArray.js","sourceRoot":"","sources":["../../../src/operators/AbstractJunctorArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAgB,oBAAqB,SAAQ,eAAe;IAAlE;;QAGE,aAAa;QACb,UAAK,GAAY,EAAE,CAAC;IA6DtB,CAAC;IA3DC;;;;;OAKG;IACH,KAAK,CAAC,KAAkB,EAAE,OAAY,EAAE,GAAoB;QAC1D,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,KAAK,IAAI,CAAC,GAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,8BAA8B;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,iCAAiC;YACjC,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBACzC,KAAK,CAAC,OAAO,CAAC,EAAC,CAAC,UAAU,CAAC,EAAE,YAAY,EAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAKD,GAAG,CAAC,CAAQ;QACV,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,QAAQ,EAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,IAAW,EAAE,EAAS;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAClD,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,EAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,CAAC;IAC9D,CAAC;CAGF"}
@@ -1,8 +1,8 @@
1
- import { PAst } from '../ast/PAst';
2
- import { IMangoWalker } from '../IMangoWalker';
3
- export declare abstract class AbstractOperator<X> extends PAst<X> {
1
+ import { Expr } from '../ast/Expr.js';
2
+ import { IExpr } from '../ast/IExpr.js';
3
+ export declare abstract class AbstractOperator extends Expr {
4
4
  readonly name: string;
5
- getByKey(key: string): PAst<any>;
6
- visit(o: IMangoWalker): any;
7
- toJson(): any;
5
+ readonly symbol: string[];
6
+ isOp(): boolean;
7
+ switchValue(from: IExpr, to: IExpr): void;
8
8
  }
@@ -1,39 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractOperator = void 0;
4
- const PAst_1 = require("../ast/PAst");
5
- class AbstractOperator extends PAst_1.PAst {
6
- getByKey(key) {
7
- if (key === this.name || key.replace(/^\$/, '') === this.name || this.getKeyString() === key) {
8
- return this;
9
- }
10
- return null;
1
+ import { Expr } from '../ast/Expr.js';
2
+ export class AbstractOperator extends Expr {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.symbol = null;
11
6
  }
12
- // validate(def: any, full?: any): boolean {
13
- // // const ctxt = new Context(this.getKeyString());
14
- // // this.setValue(this.getRootExpression().interprete(def, this, ctxt) as any as X);
15
- // return true;
16
- // }
17
- visit(o) {
18
- if (this.getValue()) {
19
- return o.onOperator(this, this.getValue().visit(o));
20
- }
21
- return o.onOperator(this, null);
7
+ isOp() {
8
+ return true;
22
9
  }
23
- toJson() {
24
- const v = this.getValue();
25
- if (v instanceof PAst_1.PAst) {
26
- const res = v.toJson();
27
- return {
28
- ['$' + this.name]: res
29
- };
10
+ switchValue(from, to) {
11
+ if (this.getValue() === from) {
12
+ this.setValue(to);
13
+ to.setParent(this);
30
14
  }
31
15
  else {
32
- return {
33
- ['$' + this.name]: v
34
- };
16
+ throw new Error('something went wrong');
35
17
  }
36
18
  }
37
19
  }
38
- exports.AbstractOperator = AbstractOperator;
39
20
  //# sourceMappingURL=AbstractOperator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractOperator.js","sourceRoot":"","sources":["../../../src/operators/AbstractOperator.ts"],"names":[],"mappings":";;;AAAA,sCAAiC;AAKjC,MAAsB,gBAAoB,SAAQ,WAAO;IAIvD,QAAQ,CAAC,GAAW;QAClB,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,4CAA4C;IAC5C,sDAAsD;IACtD,wFAAwF;IACxF,iBAAiB;IACjB,IAAI;IAEJ,KAAK,CAAC,CAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,EAAG,IAAI,CAAC,QAAQ,EAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAGD,MAAM;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAG,CAAC,YAAY,WAAI,EAAC,CAAC;YACpB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO;gBACL,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG;aACvB,CAAA;QACH,CAAC;aAAI,CAAC;YACJ,OAAO;gBACL,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aACrB,CAAA;QACH,CAAC;IACH,CAAC;CAEF;AAxCD,4CAwCC"}
1
+ {"version":3,"file":"AbstractOperator.js","sourceRoot":"","sources":["../../../src/operators/AbstractOperator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAGpC,MAAM,OAAgB,gBAAiB,SAAQ,IAAI;IAAnD;;QAIW,WAAM,GAAa,IAAI,CAAC;IAgBnC,CAAC;IAbC,IAAI;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,IAAW,EAAE,EAAS;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CAEF"}
@@ -0,0 +1,30 @@
1
+ import { Expr } from '../ast/Expr.js';
2
+ import { ClassType } from '../Constants.js';
3
+ /**
4
+ * Operators registry
5
+ */
6
+ export declare class Components {
7
+ static registry: {
8
+ [k: string]: ClassType<any>;
9
+ };
10
+ static key(k: string): string;
11
+ /**
12
+ * Install new operator
13
+ *
14
+ * @param name
15
+ * @param opertor
16
+ */
17
+ static install(name: string, opertor: ClassType<any>): void;
18
+ /**
19
+ * Create an operator instance
20
+ *
21
+ * @param name
22
+ */
23
+ static create(name: string): Expr;
24
+ /**
25
+ * Check if operator is defined.
26
+ *
27
+ * @param name
28
+ */
29
+ static has(name: string): boolean;
30
+ }
@@ -0,0 +1,140 @@
1
+ import { Match } from './stage/Match.js';
2
+ import { LessThen } from './compare/LessThen.js';
3
+ import { AndDesc } from './logic/AndDesc.js';
4
+ import { OrDesc } from './logic/OrDesc.js';
5
+ import { LessThenEqual } from './compare/LessThenEqual.js';
6
+ import { EqualDesc } from './compare/EqualDesc.js';
7
+ import { GreaterThen } from './compare/GreaterThen.js';
8
+ import { GreaterThenEqual } from './compare/GreaterThenEqual.js';
9
+ import { In } from './compare/In.js';
10
+ import { IsNotNull } from './compare/IsNotNull.js';
11
+ import { IsNull } from './compare/IsNull.js';
12
+ import { Like } from './compare/Like.js';
13
+ import { NotEqual } from './compare/NotEqual.js';
14
+ import { NotIn } from './compare/NotIn.js';
15
+ import { Project } from './stage/Project.js';
16
+ import { Year } from './date/Year.js';
17
+ import { Month } from './date/Month.js';
18
+ import { Day } from './date/Day.js';
19
+ import { Group } from './stage/Group.js';
20
+ import { Sum } from './arithmetic/Sum.js';
21
+ import { Min } from './arithmetic/Min.js';
22
+ import { Max } from './arithmetic/Max.js';
23
+ import { Avg } from './arithmetic/Avg.js';
24
+ import { Count } from './arithmetic/Count.js';
25
+ import { Limit } from './stage/Limit.js';
26
+ import { Skip } from './stage/Skip.js';
27
+ import { Sort } from './stage/Sort.js';
28
+ import { Date } from './date/Date.js';
29
+ import { NotDesc } from './logic/NotDesc.js';
30
+ import { Multiply } from './arithmetic/Multiply.js';
31
+ import { Regex } from './compare/Regex.js';
32
+ /**
33
+ * Operators registry
34
+ */
35
+ export class Components {
36
+ static key(k) {
37
+ return k.replace(/^\$/, '');
38
+ }
39
+ /**
40
+ * Install new operator
41
+ *
42
+ * @param name
43
+ * @param opertor
44
+ */
45
+ static install(name, opertor) {
46
+ const _name = this.key(name);
47
+ this.registry[_name] = opertor;
48
+ }
49
+ /**
50
+ * Create an operator instance
51
+ *
52
+ * @param name
53
+ */
54
+ static create(name) {
55
+ const _name = this.key(name);
56
+ if (this.registry[_name]) {
57
+ return Reflect.construct(this.registry[_name], []);
58
+ }
59
+ else {
60
+ throw new Error(`no such operator ${_name} defined`);
61
+ }
62
+ }
63
+ /**
64
+ * Check if operator is defined.
65
+ *
66
+ * @param name
67
+ */
68
+ static has(name) {
69
+ return this.registry.hasOwnProperty(this.key(name));
70
+ }
71
+ }
72
+ Components.registry = {};
73
+ /*
74
+ * Logic registry
75
+ */
76
+ Components.install(AndDesc.NAME, AndDesc);
77
+ Components.install(OrDesc.NAME, OrDesc);
78
+ Components.install(NotDesc.NAME, NotDesc);
79
+ // TODO $nor
80
+ /*
81
+ * Stage registry
82
+ */
83
+ Components.install(Match.NAME, Match);
84
+ Components.install(Project.NAME, Project);
85
+ Components.install(Group.NAME, Group);
86
+ Components.install(Limit.NAME, Limit);
87
+ Components.install(Skip.NAME, Skip);
88
+ Components.install(Sort.NAME, Sort);
89
+ /*
90
+ * Date registry
91
+ */
92
+ Components.install(Year.NAME, Year);
93
+ Components.install(Month.NAME, Month);
94
+ Components.install(Day.NAME, Day);
95
+ Components.install(Date.NAME, Date);
96
+ // TODO $dateToString
97
+ /*
98
+ * Arithmetic registry
99
+ */
100
+ Components.install(Sum.NAME, Sum);
101
+ Components.install(Min.NAME, Min);
102
+ Components.install(Max.NAME, Max);
103
+ Components.install(Avg.NAME, Avg);
104
+ Components.install(Count.NAME, Count);
105
+ Components.install(Multiply.NAME, Multiply);
106
+ // TODO $add
107
+ // TODO $subtract
108
+ /*
109
+ * Compare registry
110
+ */
111
+ Components.install(LessThen.NAME, LessThen);
112
+ Components.install(LessThenEqual.NAME, LessThenEqual);
113
+ Components.install('lte', LessThenEqual); // backward compatibility
114
+ Components.install(EqualDesc.NAME, EqualDesc);
115
+ Components.install(GreaterThen.NAME, GreaterThen);
116
+ Components.install(GreaterThenEqual.NAME, GreaterThenEqual);
117
+ Components.install('gte', GreaterThenEqual); // backward compatibility
118
+ Components.install(In.NAME, In);
119
+ Components.install(IsNotNull.NAME, IsNotNull);
120
+ Components.install(IsNull.NAME, IsNull);
121
+ // sql special, cause no eqivalnet in mongo
122
+ Components.install(Like.NAME, Like);
123
+ Components.install(NotEqual.NAME, NotEqual);
124
+ Components.install(NotIn.NAME, NotIn);
125
+ Components.install(Regex.NAME, Regex);
126
+ /*
127
+ * String registry
128
+ */
129
+ // Operators.install(Substr.NAME, Substr);
130
+ // Operators.install(ToUpper.NAME, ToUpper);
131
+ // Operators.install(ToLower.NAME, ToLower);
132
+ // Operators.install(ToInt.NAME, ToInt);
133
+ // Operators.install(ToFloat.NAME, ToFloat);
134
+ /*
135
+ * Array registry
136
+ */
137
+ // Operators.install(Map.NAME, Map);
138
+ // Operators.install(First.NAME, First);
139
+ // Operators.install(Last.NAME, Last);
140
+ //# sourceMappingURL=Components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components.js","sourceRoot":"","sources":["../../../src/operators/Components.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { AbstractOperator } from '../AbstractOperator';
2
- export declare class Avg extends AbstractOperator<any> {
1
+ import { AbstractFunction } from '../AbstractFunction.js';
2
+ export declare class Avg extends AbstractFunction {
3
3
  static NAME: string;
4
4
  name: string;
5
5
  }
@@ -1,13 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Avg = void 0;
4
- const AbstractOperator_1 = require("../AbstractOperator");
5
- class Avg extends AbstractOperator_1.AbstractOperator {
1
+ import { AbstractFunction } from '../AbstractFunction.js';
2
+ export class Avg extends AbstractFunction {
6
3
  constructor() {
7
4
  super(...arguments);
8
5
  this.name = Avg.NAME;
9
6
  }
10
7
  }
11
- exports.Avg = Avg;
12
8
  Avg.NAME = 'avg';
13
9
  //# sourceMappingURL=Avg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avg.js","sourceRoot":"","sources":["../../../../src/operators/arithmetic/Avg.ts"],"names":[],"mappings":";;;AAAA,0DAAqD;AAErD,MAAa,GAAI,SAAQ,mCAAqB;IAA9C;;QAIE,SAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAElB,CAAC;;AAND,kBAMC;AAJQ,QAAI,GAAG,KAAK,AAAR,CAAS"}
1
+ {"version":3,"file":"Avg.js","sourceRoot":"","sources":["../../../../src/operators/arithmetic/Avg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,GAAI,SAAQ,gBAAgB;IAAzC;;QAIE,SAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAElB,CAAC;CAAA;AAJQ,QAAI,GAAG,KAAK,AAAR,CAAS"}
@@ -1,5 +1,5 @@
1
- import { AbstractOperator } from '../AbstractOperator';
2
- export declare class Count extends AbstractOperator<any> {
1
+ import { AbstractFunction } from '../AbstractFunction.js';
2
+ export declare class Count extends AbstractFunction {
3
3
  static NAME: string;
4
4
  name: string;
5
5
  }
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Count = void 0;
4
- const AbstractOperator_1 = require("../AbstractOperator");
5
- class Count extends AbstractOperator_1.AbstractOperator {
1
+ import { AbstractFunction } from '../AbstractFunction.js';
2
+ export class Count extends AbstractFunction {
6
3
  constructor() {
7
4
  super(...arguments);
8
5
  this.name = Count.NAME;
@@ -13,6 +10,5 @@ class Count extends AbstractOperator_1.AbstractOperator {
13
10
  // }
14
11
  }
15
12
  }
16
- exports.Count = Count;
17
13
  Count.NAME = 'count';
18
14
  //# sourceMappingURL=Count.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Count.js","sourceRoot":"","sources":["../../../../src/operators/arithmetic/Count.ts"],"names":[],"mappings":";;;AAAA,0DAAqD;AAErD,MAAa,KAAM,SAAQ,mCAAqB;IAAhD;;QAIE,SAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAElB,EAAE;QACF,gCAAgC;QAChC,4DAA4D;QAC5D,iBAAiB;QACjB,IAAI;IAEN,CAAC;;AAZD,sBAYC;AAVQ,UAAI,GAAG,OAAO,AAAV,CAAW"}
1
+ {"version":3,"file":"Count.js","sourceRoot":"","sources":["../../../../src/operators/arithmetic/Count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,KAAM,SAAQ,gBAAgB;IAA3C;;QAIE,SAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAElB,EAAE;QACF,gCAAgC;QAChC,4DAA4D;QAC5D,iBAAiB;QACjB,IAAI;IAEN,CAAC;CAAA;AAVQ,UAAI,GAAG,OAAO,AAAV,CAAW"}
@@ -1,5 +1,5 @@
1
- import { AbstractOperator } from '../AbstractOperator';
2
- export declare class Max extends AbstractOperator<any> {
1
+ import { AbstractFunction } from '../AbstractFunction.js';
2
+ export declare class Max extends AbstractFunction {
3
3
  static NAME: string;
4
4
  name: string;
5
5
  }
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Max = void 0;
4
- const AbstractOperator_1 = require("../AbstractOperator");
5
- class Max extends AbstractOperator_1.AbstractOperator {
1
+ import { AbstractFunction } from '../AbstractFunction.js';
2
+ export class Max extends AbstractFunction {
6
3
  constructor() {
7
4
  super(...arguments);
8
5
  this.name = Max.NAME;
@@ -14,6 +11,5 @@ class Max extends AbstractOperator_1.AbstractOperator {
14
11
  // }
15
12
  }
16
13
  }
17
- exports.Max = Max;
18
14
  Max.NAME = 'max';
19
15
  //# sourceMappingURL=Max.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Max.js","sourceRoot":"","sources":["../../../../src/operators/arithmetic/Max.ts"],"names":[],"mappings":";;;AAAA,0DAAqD;AAErD,MAAa,GAAI,SAAQ,mCAAqB;IAA9C;;QAIE,SAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAChB,EAAE;QACF,EAAE;QACF,gCAAgC;QAChC,4DAA4D;QAC5D,iBAAiB;QACjB,IAAI;IAEN,CAAC;;AAZD,kBAYC;AAVQ,QAAI,GAAG,KAAK,AAAR,CAAS"}
1
+ {"version":3,"file":"Max.js","sourceRoot":"","sources":["../../../../src/operators/arithmetic/Max.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,GAAI,SAAQ,gBAAgB;IAAzC;;QAIE,SAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAChB,EAAE;QACF,EAAE;QACF,gCAAgC;QAChC,4DAA4D;QAC5D,iBAAiB;QACjB,IAAI;IAEN,CAAC;CAAA;AAVQ,QAAI,GAAG,KAAK,AAAR,CAAS"}