flowquery 1.0.0 → 1.0.2

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 (178) hide show
  1. package/.github/workflows/npm-publish.yml +2 -0
  2. package/.github/workflows/release.yml +24 -9
  3. package/dist/compute/runner.js +75 -0
  4. package/dist/compute/runner.js.map +1 -0
  5. package/dist/flowquery.min.js +1 -0
  6. package/dist/index.browser.js +119 -0
  7. package/dist/index.browser.js.map +1 -0
  8. package/dist/index.js +16 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/index.node.js +123 -0
  11. package/dist/index.node.js.map +1 -0
  12. package/dist/io/command_line.js +102 -0
  13. package/dist/io/command_line.js.map +1 -0
  14. package/dist/parsing/alias.js +23 -0
  15. package/dist/parsing/alias.js.map +1 -0
  16. package/dist/parsing/alias_option.js +11 -0
  17. package/dist/parsing/alias_option.js.map +1 -0
  18. package/dist/parsing/ast_node.js +145 -0
  19. package/dist/parsing/ast_node.js.map +1 -0
  20. package/dist/parsing/base_parser.js +92 -0
  21. package/dist/parsing/base_parser.js.map +1 -0
  22. package/dist/parsing/components/csv.js +13 -0
  23. package/dist/parsing/components/csv.js.map +1 -0
  24. package/dist/parsing/components/from.js +16 -0
  25. package/dist/parsing/components/from.js.map +1 -0
  26. package/dist/parsing/components/headers.js +16 -0
  27. package/dist/parsing/components/headers.js.map +1 -0
  28. package/dist/parsing/components/json.js +13 -0
  29. package/dist/parsing/components/json.js.map +1 -0
  30. package/dist/parsing/components/null.js +13 -0
  31. package/dist/parsing/components/null.js.map +1 -0
  32. package/dist/parsing/components/post.js +13 -0
  33. package/dist/parsing/components/post.js.map +1 -0
  34. package/dist/parsing/components/text.js +13 -0
  35. package/dist/parsing/components/text.js.map +1 -0
  36. package/dist/parsing/context.js +47 -0
  37. package/dist/parsing/context.js.map +1 -0
  38. package/dist/parsing/data_structures/associative_array.js +45 -0
  39. package/dist/parsing/data_structures/associative_array.js.map +1 -0
  40. package/dist/parsing/data_structures/json_array.js +35 -0
  41. package/dist/parsing/data_structures/json_array.js.map +1 -0
  42. package/dist/parsing/data_structures/key_value_pair.js +41 -0
  43. package/dist/parsing/data_structures/key_value_pair.js.map +1 -0
  44. package/dist/parsing/data_structures/lookup.js +44 -0
  45. package/dist/parsing/data_structures/lookup.js.map +1 -0
  46. package/dist/parsing/data_structures/range_lookup.js +40 -0
  47. package/dist/parsing/data_structures/range_lookup.js.map +1 -0
  48. package/dist/parsing/expressions/expression.js +142 -0
  49. package/dist/parsing/expressions/expression.js.map +1 -0
  50. package/dist/parsing/expressions/f_string.js +29 -0
  51. package/dist/parsing/expressions/f_string.js.map +1 -0
  52. package/dist/parsing/expressions/identifier.js +26 -0
  53. package/dist/parsing/expressions/identifier.js.map +1 -0
  54. package/dist/parsing/expressions/number.js +41 -0
  55. package/dist/parsing/expressions/number.js.map +1 -0
  56. package/dist/parsing/expressions/operator.js +180 -0
  57. package/dist/parsing/expressions/operator.js.map +1 -0
  58. package/dist/parsing/expressions/reference.js +45 -0
  59. package/dist/parsing/expressions/reference.js.map +1 -0
  60. package/dist/parsing/expressions/string.js +34 -0
  61. package/dist/parsing/expressions/string.js.map +1 -0
  62. package/dist/parsing/functions/aggregate_function.js +58 -0
  63. package/dist/parsing/functions/aggregate_function.js.map +1 -0
  64. package/dist/parsing/functions/async_function.js +119 -0
  65. package/dist/parsing/functions/async_function.js.map +1 -0
  66. package/dist/parsing/functions/avg.js +43 -0
  67. package/dist/parsing/functions/avg.js.map +1 -0
  68. package/dist/parsing/functions/collect.js +52 -0
  69. package/dist/parsing/functions/collect.js.map +1 -0
  70. package/dist/parsing/functions/function.js +59 -0
  71. package/dist/parsing/functions/function.js.map +1 -0
  72. package/dist/parsing/functions/function_factory.js +259 -0
  73. package/dist/parsing/functions/function_factory.js.map +1 -0
  74. package/dist/parsing/functions/function_metadata.js +159 -0
  75. package/dist/parsing/functions/function_metadata.js.map +1 -0
  76. package/dist/parsing/functions/functions.js +47 -0
  77. package/dist/parsing/functions/functions.js.map +1 -0
  78. package/dist/parsing/functions/join.js +29 -0
  79. package/dist/parsing/functions/join.js.map +1 -0
  80. package/dist/parsing/functions/predicate_function.js +37 -0
  81. package/dist/parsing/functions/predicate_function.js.map +1 -0
  82. package/dist/parsing/functions/predicate_function_factory.js +19 -0
  83. package/dist/parsing/functions/predicate_function_factory.js.map +1 -0
  84. package/dist/parsing/functions/predicate_sum.js +33 -0
  85. package/dist/parsing/functions/predicate_sum.js.map +1 -0
  86. package/dist/parsing/functions/rand.js +17 -0
  87. package/dist/parsing/functions/rand.js.map +1 -0
  88. package/dist/parsing/functions/range.js +22 -0
  89. package/dist/parsing/functions/range.js.map +1 -0
  90. package/dist/parsing/functions/reducer_element.js +12 -0
  91. package/dist/parsing/functions/reducer_element.js.map +1 -0
  92. package/dist/parsing/functions/replace.js +23 -0
  93. package/dist/parsing/functions/replace.js.map +1 -0
  94. package/dist/parsing/functions/round.js +21 -0
  95. package/dist/parsing/functions/round.js.map +1 -0
  96. package/dist/parsing/functions/size.js +21 -0
  97. package/dist/parsing/functions/size.js.map +1 -0
  98. package/dist/parsing/functions/split.js +29 -0
  99. package/dist/parsing/functions/split.js.map +1 -0
  100. package/dist/parsing/functions/stringify.js +29 -0
  101. package/dist/parsing/functions/stringify.js.map +1 -0
  102. package/dist/parsing/functions/sum.js +38 -0
  103. package/dist/parsing/functions/sum.js.map +1 -0
  104. package/dist/parsing/functions/to_json.js +21 -0
  105. package/dist/parsing/functions/to_json.js.map +1 -0
  106. package/dist/parsing/functions/value_holder.js +16 -0
  107. package/dist/parsing/functions/value_holder.js.map +1 -0
  108. package/dist/parsing/logic/case.js +27 -0
  109. package/dist/parsing/logic/case.js.map +1 -0
  110. package/dist/parsing/logic/else.js +16 -0
  111. package/dist/parsing/logic/else.js.map +1 -0
  112. package/dist/parsing/logic/end.js +13 -0
  113. package/dist/parsing/logic/end.js.map +1 -0
  114. package/dist/parsing/logic/then.js +16 -0
  115. package/dist/parsing/logic/then.js.map +1 -0
  116. package/dist/parsing/logic/when.js +16 -0
  117. package/dist/parsing/logic/when.js.map +1 -0
  118. package/dist/parsing/operations/aggregated_return.js +35 -0
  119. package/dist/parsing/operations/aggregated_return.js.map +1 -0
  120. package/dist/parsing/operations/aggregated_with.js +41 -0
  121. package/dist/parsing/operations/aggregated_with.js.map +1 -0
  122. package/dist/parsing/operations/group_by.js +139 -0
  123. package/dist/parsing/operations/group_by.js.map +1 -0
  124. package/dist/parsing/operations/limit.js +38 -0
  125. package/dist/parsing/operations/limit.js.map +1 -0
  126. package/dist/parsing/operations/load.js +174 -0
  127. package/dist/parsing/operations/load.js.map +1 -0
  128. package/dist/parsing/operations/operation.js +81 -0
  129. package/dist/parsing/operations/operation.js.map +1 -0
  130. package/dist/parsing/operations/projection.js +21 -0
  131. package/dist/parsing/operations/projection.js.map +1 -0
  132. package/dist/parsing/operations/return.js +60 -0
  133. package/dist/parsing/operations/return.js.map +1 -0
  134. package/dist/parsing/operations/unwind.js +46 -0
  135. package/dist/parsing/operations/unwind.js.map +1 -0
  136. package/dist/parsing/operations/where.js +53 -0
  137. package/dist/parsing/operations/where.js.map +1 -0
  138. package/dist/parsing/operations/with.js +36 -0
  139. package/dist/parsing/operations/with.js.map +1 -0
  140. package/dist/parsing/parser.js +812 -0
  141. package/dist/parsing/parser.js.map +1 -0
  142. package/dist/parsing/token_to_node.js +121 -0
  143. package/dist/parsing/token_to_node.js.map +1 -0
  144. package/dist/tokenization/keyword.js +46 -0
  145. package/dist/tokenization/keyword.js.map +1 -0
  146. package/dist/tokenization/operator.js +28 -0
  147. package/dist/tokenization/operator.js.map +1 -0
  148. package/dist/tokenization/string_walker.js +165 -0
  149. package/dist/tokenization/string_walker.js.map +1 -0
  150. package/dist/tokenization/symbol.js +18 -0
  151. package/dist/tokenization/symbol.js.map +1 -0
  152. package/dist/tokenization/token.js +484 -0
  153. package/dist/tokenization/token.js.map +1 -0
  154. package/dist/tokenization/token_mapper.js +55 -0
  155. package/dist/tokenization/token_mapper.js.map +1 -0
  156. package/dist/tokenization/token_type.js +19 -0
  157. package/dist/tokenization/token_type.js.map +1 -0
  158. package/dist/tokenization/tokenizer.js +220 -0
  159. package/dist/tokenization/tokenizer.js.map +1 -0
  160. package/dist/tokenization/trie.js +111 -0
  161. package/dist/tokenization/trie.js.map +1 -0
  162. package/dist/utils/object_utils.js +19 -0
  163. package/dist/utils/object_utils.js.map +1 -0
  164. package/dist/utils/string_utils.js +110 -0
  165. package/dist/utils/string_utils.js.map +1 -0
  166. package/docs/flowquery.min.js +1 -1
  167. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +1 -1
  168. package/package.json +22 -4
  169. package/src/compute/runner.ts +45 -0
  170. package/src/index.browser.ts +118 -0
  171. package/src/index.node.ts +141 -0
  172. package/src/parsing/functions/async_function.ts +95 -0
  173. package/src/parsing/functions/function_factory.ts +230 -1
  174. package/src/parsing/functions/function_metadata.ts +238 -0
  175. package/src/parsing/functions/functions.ts +43 -0
  176. package/src/parsing/operations/load.ts +51 -2
  177. package/src/parsing/parser.ts +45 -4
  178. package/tests/parsing/function_plugins.test.ts +369 -0
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BUILTIN_FUNCTION_METADATA = void 0;
4
+ /**
5
+ * Built-in function metadata definitions.
6
+ */
7
+ exports.BUILTIN_FUNCTION_METADATA = [
8
+ {
9
+ name: "sum",
10
+ description: "Calculates the sum of numeric values across grouped rows",
11
+ category: "aggregation",
12
+ parameters: [
13
+ { name: "value", description: "Numeric value to sum", type: "number" }
14
+ ],
15
+ output: { description: "Sum of all values", type: "number", example: 150 },
16
+ examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN sum(n)"]
17
+ },
18
+ {
19
+ name: "avg",
20
+ description: "Calculates the average of numeric values across grouped rows",
21
+ category: "aggregation",
22
+ parameters: [
23
+ { name: "value", description: "Numeric value to average", type: "number" }
24
+ ],
25
+ output: { description: "Average of all values", type: "number", example: 50 },
26
+ examples: ["WITH [10, 20, 30] AS nums UNWIND nums AS n RETURN avg(n)"]
27
+ },
28
+ {
29
+ name: "collect",
30
+ description: "Collects values into an array across grouped rows",
31
+ category: "aggregation",
32
+ parameters: [
33
+ { name: "value", description: "Value to collect", type: "any" }
34
+ ],
35
+ output: { description: "Array of collected values", type: "array", example: [1, 2, 3] },
36
+ examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN collect(n)"]
37
+ },
38
+ {
39
+ name: "range",
40
+ description: "Generates an array of sequential integers",
41
+ category: "generator",
42
+ parameters: [
43
+ { name: "start", description: "Starting number (inclusive)", type: "number" },
44
+ { name: "end", description: "Ending number (inclusive)", type: "number" }
45
+ ],
46
+ output: { description: "Array of integers from start to end", type: "array", items: { type: "number" }, example: [1, 2, 3, 4, 5] },
47
+ examples: ["WITH range(1, 5) AS nums RETURN nums"]
48
+ },
49
+ {
50
+ name: "rand",
51
+ description: "Generates a random number between 0 and 1",
52
+ category: "generator",
53
+ parameters: [],
54
+ output: { description: "Random number between 0 and 1", type: "number", example: 0.7234 },
55
+ examples: ["WITH rand() AS r RETURN r"]
56
+ },
57
+ {
58
+ name: "round",
59
+ description: "Rounds a number to the nearest integer",
60
+ category: "math",
61
+ parameters: [
62
+ { name: "value", description: "Number to round", type: "number" }
63
+ ],
64
+ output: { description: "Rounded integer", type: "number", example: 4 },
65
+ examples: ["WITH 3.7 AS n RETURN round(n)"]
66
+ },
67
+ {
68
+ name: "split",
69
+ description: "Splits a string into an array by a delimiter",
70
+ category: "string",
71
+ parameters: [
72
+ { name: "text", description: "String to split", type: "string" },
73
+ { name: "delimiter", description: "Delimiter to split by", type: "string" }
74
+ ],
75
+ output: { description: "Array of string parts", type: "array", items: { type: "string" }, example: ["a", "b", "c"] },
76
+ examples: ["WITH 'a,b,c' AS s RETURN split(s, ',')"]
77
+ },
78
+ {
79
+ name: "join",
80
+ description: "Joins an array of strings with a delimiter",
81
+ category: "string",
82
+ parameters: [
83
+ { name: "array", description: "Array of values to join", type: "array" },
84
+ { name: "delimiter", description: "Delimiter to join with", type: "string" }
85
+ ],
86
+ output: { description: "Joined string", type: "string", example: "a,b,c" },
87
+ examples: ["WITH ['a', 'b', 'c'] AS arr RETURN join(arr, ',')"]
88
+ },
89
+ {
90
+ name: "replace",
91
+ description: "Replaces occurrences of a pattern in a string",
92
+ category: "string",
93
+ parameters: [
94
+ { name: "text", description: "Source string", type: "string" },
95
+ { name: "pattern", description: "Pattern to find", type: "string" },
96
+ { name: "replacement", description: "Replacement string", type: "string" }
97
+ ],
98
+ output: { description: "String with replacements", type: "string", example: "hello world" },
99
+ examples: ["WITH 'hello there' AS s RETURN replace(s, 'there', 'world')"]
100
+ },
101
+ {
102
+ name: "stringify",
103
+ description: "Converts a value to its JSON string representation",
104
+ category: "conversion",
105
+ parameters: [
106
+ { name: "value", description: "Value to stringify", type: "any" }
107
+ ],
108
+ output: { description: "JSON string", type: "string", example: "{\"a\":1}" },
109
+ examples: ["WITH {a: 1} AS obj RETURN stringify(obj)"]
110
+ },
111
+ {
112
+ name: "tojson",
113
+ description: "Parses a JSON string into an object",
114
+ category: "conversion",
115
+ parameters: [
116
+ { name: "text", description: "JSON string to parse", type: "string" }
117
+ ],
118
+ output: { description: "Parsed object or array", type: "object", example: { a: 1 } },
119
+ examples: ["WITH '{\"a\": 1}' AS s RETURN tojson(s)"]
120
+ },
121
+ {
122
+ name: "size",
123
+ description: "Returns the length of an array or string",
124
+ category: "utility",
125
+ parameters: [
126
+ { name: "value", description: "Array or string to measure", type: "array" }
127
+ ],
128
+ output: { description: "Length of the input", type: "number", example: 3 },
129
+ examples: ["WITH [1, 2, 3] AS arr RETURN size(arr)"]
130
+ },
131
+ {
132
+ name: "functions",
133
+ description: "Lists all registered functions with their metadata. Useful for discovering available functions and their documentation. Results include name, description, parameters, output schema, and usage examples.",
134
+ category: "introspection",
135
+ parameters: [
136
+ { name: "category", description: "Optional category to filter by (e.g., 'aggregation', 'string', 'math')", type: "string", required: false }
137
+ ],
138
+ output: {
139
+ description: "Array of function metadata objects",
140
+ type: "array",
141
+ items: {
142
+ type: "object",
143
+ properties: {
144
+ name: { description: "Function name", type: "string" },
145
+ description: { description: "What the function does", type: "string" },
146
+ category: { description: "Function category", type: "string" },
147
+ parameters: { description: "Array of parameter definitions", type: "array" },
148
+ output: { description: "Output schema", type: "object" },
149
+ examples: { description: "Usage examples", type: "array" }
150
+ }
151
+ }
152
+ },
153
+ examples: [
154
+ "WITH functions() AS funcs RETURN funcs",
155
+ "WITH functions('aggregation') AS funcs UNWIND funcs AS f RETURN f.name, f.description"
156
+ ]
157
+ }
158
+ ];
159
+ //# sourceMappingURL=function_metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function_metadata.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ const function_factory_1 = __importDefault(require("./function_factory"));
8
+ /**
9
+ * Built-in function that lists all registered functions with their metadata.
10
+ *
11
+ * Can be used in FlowQuery to discover available functions:
12
+ * - `WITH functions() AS funcs RETURN funcs` - returns all functions
13
+ * - `WITH functions('aggregation') AS funcs RETURN funcs` - returns functions in a category
14
+ *
15
+ * @example
16
+ * ```
17
+ * WITH functions() AS funcs
18
+ * UNWIND funcs AS func
19
+ * RETURN func.name, func.description
20
+ * ```
21
+ */
22
+ class Functions extends function_1.default {
23
+ constructor() {
24
+ super("functions");
25
+ this._expectedParameterCount = null; // 0 or 1 parameter
26
+ }
27
+ value() {
28
+ const children = this.getChildren();
29
+ if (children.length === 0) {
30
+ // Return all functions
31
+ return function_factory_1.default.listFunctions();
32
+ }
33
+ else if (children.length === 1) {
34
+ // Filter by category
35
+ const category = children[0].value();
36
+ if (typeof category === 'string') {
37
+ return function_factory_1.default.listFunctions({ category });
38
+ }
39
+ throw new Error("functions() category parameter must be a string");
40
+ }
41
+ else {
42
+ throw new Error("functions() takes 0 or 1 parameters");
43
+ }
44
+ }
45
+ }
46
+ exports.default = Functions;
47
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/parsing/functions/functions.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAClC,0EAAiD;AAEjD;;;;;;;;;;;;;GAaG;AACH,MAAM,SAAU,SAAQ,kBAAQ;IAC5B;QACI,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,mBAAmB;IAC5D,CAAC;IAEM,KAAK;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,uBAAuB;YACvB,OAAO,0BAAe,CAAC,aAAa,EAAE,CAAC;QAC3C,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,qBAAqB;YACrB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,0BAAe,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;CACJ;AAED,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ const string_1 = __importDefault(require("../expressions/string"));
8
+ class Join extends function_1.default {
9
+ constructor() {
10
+ super("join");
11
+ this._expectedParameterCount = 2;
12
+ }
13
+ set parameters(nodes) {
14
+ if (nodes.length === 1) {
15
+ nodes.push(new string_1.default(""));
16
+ }
17
+ super.parameters = nodes;
18
+ }
19
+ value() {
20
+ const array = this.getChildren()[0].value();
21
+ const delimiter = this.getChildren()[1].value();
22
+ if (!Array.isArray(array) || typeof delimiter !== "string") {
23
+ throw new Error("Invalid arguments for join function");
24
+ }
25
+ return array.join(delimiter);
26
+ }
27
+ }
28
+ exports.default = Join;
29
+ //# sourceMappingURL=join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/parsing/functions/join.ts"],"names":[],"mappings":";;;;;AACA,0DAAkC;AAClC,mEAA2C;AAE3C,MAAM,IAAK,SAAQ,kBAAQ;IACvB;QACI,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,IAAW,UAAU,CAAC,KAAgB;QAClC,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,gBAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IAC7B,CAAC;IACM,KAAK;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;CACJ;AAED,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ast_node_1 = __importDefault(require("../ast_node"));
7
+ const value_holder_1 = __importDefault(require("./value_holder"));
8
+ class PredicateFunction extends ast_node_1.default {
9
+ constructor(name) {
10
+ super();
11
+ this._valueHolder = new value_holder_1.default();
12
+ this._name = name;
13
+ }
14
+ get reference() {
15
+ return this.firstChild();
16
+ }
17
+ get array() {
18
+ return this.getChildren()[1].firstChild();
19
+ }
20
+ get _return() {
21
+ return this.getChildren()[2];
22
+ }
23
+ get where() {
24
+ if (this.getChildren().length === 4) {
25
+ return this.getChildren()[3];
26
+ }
27
+ return null;
28
+ }
29
+ value() {
30
+ throw new Error("Method not implemented.");
31
+ }
32
+ toString() {
33
+ return `PredicateFunction (${this._name})`;
34
+ }
35
+ }
36
+ exports.default = PredicateFunction;
37
+ //# sourceMappingURL=predicate_function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate_function.js","sourceRoot":"","sources":["../../../src/parsing/functions/predicate_function.ts"],"names":[],"mappings":";;;;;AAAA,2DAAkC;AAIlC,kEAAyC;AAEzC,MAAM,iBAAkB,SAAQ,kBAAO;IAInC,YAAY,IAAY;QACpB,KAAK,EAAE,CAAC;QAHF,iBAAY,GAAgB,IAAI,sBAAW,EAAE,CAAC;QAIpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAc,SAAS;QACnB,OAAO,IAAI,CAAC,UAAU,EAAe,CAAC;IAC1C,CAAC;IAED,IAAc,KAAK;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9C,CAAC;IAED,IAAc,OAAO;QACjB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAe,CAAC;IAC/C,CAAC;IAED,IAAc,KAAK;QACf,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAU,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK;QACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAEM,QAAQ;QACX,OAAO,sBAAsB,IAAI,CAAC,KAAK,GAAG,CAAC;IAC/C,CAAC;CACJ;AAED,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const predicate_function_1 = __importDefault(require("./predicate_function"));
7
+ const predicate_sum_1 = __importDefault(require("./predicate_sum"));
8
+ class PredicateFunctionFactory {
9
+ static create(name) {
10
+ switch (name.toLowerCase()) {
11
+ case "sum":
12
+ return new predicate_sum_1.default();
13
+ default:
14
+ return new predicate_function_1.default(name);
15
+ }
16
+ }
17
+ }
18
+ exports.default = PredicateFunctionFactory;
19
+ //# sourceMappingURL=predicate_function_factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate_function_factory.js","sourceRoot":"","sources":["../../../src/parsing/functions/predicate_function_factory.ts"],"names":[],"mappings":";;;;;AAAA,8EAAqD;AACrD,oEAA2C;AAE3C,MAAM,wBAAwB;IACnB,MAAM,CAAC,MAAM,CAAC,IAAY;QAC7B,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,KAAK,KAAK;gBACN,OAAO,IAAI,uBAAY,EAAE,CAAC;YAC9B;gBACI,OAAO,IAAI,4BAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;CACJ;AAED,kBAAe,wBAAwB,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const predicate_function_1 = __importDefault(require("./predicate_function"));
7
+ class PredicateSum extends predicate_function_1.default {
8
+ constructor() {
9
+ super("sum");
10
+ }
11
+ value() {
12
+ this.reference.referred = this._valueHolder;
13
+ const array = this.array.value();
14
+ if (array === null || !Array.isArray(array)) {
15
+ throw new Error("Invalid array for sum function");
16
+ }
17
+ let _sum = null;
18
+ for (let i = 0; i < array.length; i++) {
19
+ this._valueHolder.holder = array[i];
20
+ if (this.where === null || this.where.value()) {
21
+ if (_sum === null) {
22
+ _sum = this._return.value();
23
+ }
24
+ else {
25
+ _sum += this._return.value();
26
+ }
27
+ }
28
+ }
29
+ return _sum;
30
+ }
31
+ }
32
+ exports.default = PredicateSum;
33
+ //# sourceMappingURL=predicate_sum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate_sum.js","sourceRoot":"","sources":["../../../src/parsing/functions/predicate_sum.ts"],"names":[],"mappings":";;;;;AAAA,8EAAqD;AAErD,MAAM,YAAa,SAAQ,4BAAiB;IACxC;QACI,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,GAAe,IAAI,CAAC;QAC5B,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAChB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACJ,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ class Rand extends function_1.default {
8
+ constructor() {
9
+ super("rand");
10
+ this._expectedParameterCount = 0;
11
+ }
12
+ value() {
13
+ return Math.random();
14
+ }
15
+ }
16
+ exports.default = Rand;
17
+ //# sourceMappingURL=rand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rand.js","sourceRoot":"","sources":["../../../src/parsing/functions/rand.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAElC,MAAM,IAAK,SAAQ,kBAAQ;IACvB;QACI,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;CACJ;AAED,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ class Range extends function_1.default {
8
+ constructor() {
9
+ super("range");
10
+ this._expectedParameterCount = 2;
11
+ }
12
+ value() {
13
+ const start = this.getChildren()[0].value();
14
+ const end = this.getChildren()[1].value();
15
+ if (typeof start !== "number" || typeof end !== "number") {
16
+ throw new Error("Invalid arguments for range function");
17
+ }
18
+ return Array.from({ length: end - start + 1 }, (_, i) => start + i);
19
+ }
20
+ }
21
+ exports.default = Range;
22
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../src/parsing/functions/range.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAElC,MAAM,KAAM,SAAQ,kBAAQ;IACxB;QACI,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,KAAK;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;CACJ;AAED,kBAAe,KAAK,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ReducerElement {
4
+ get value() {
5
+ throw new Error("Method not implemented.");
6
+ }
7
+ set value(value) {
8
+ throw new Error("Method not implemented.");
9
+ }
10
+ }
11
+ exports.default = ReducerElement;
12
+ //# sourceMappingURL=reducer_element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer_element.js","sourceRoot":"","sources":["../../../src/parsing/functions/reducer_element.ts"],"names":[],"mappings":";;AAAA,MAAM,cAAc;IAChB,IAAW,KAAK;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,IAAW,KAAK,CAAC,KAAU;QACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CACJ;AAED,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ class Replace extends function_1.default {
8
+ constructor() {
9
+ super("replace");
10
+ this._expectedParameterCount = 3;
11
+ }
12
+ value() {
13
+ const str = this.getChildren()[0].value();
14
+ const search = this.getChildren()[1].value();
15
+ const replacement = this.getChildren()[2].value();
16
+ if (typeof str !== "string" || typeof search !== "string" || typeof replacement !== "string") {
17
+ throw new Error("Invalid arguments for replace function");
18
+ }
19
+ return str.replace(new RegExp(search, "g"), replacement);
20
+ }
21
+ }
22
+ exports.default = Replace;
23
+ //# sourceMappingURL=replace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace.js","sourceRoot":"","sources":["../../../src/parsing/functions/replace.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAElC,MAAM,OAAQ,SAAQ,kBAAQ;IAC1B;QACI,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,KAAK;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAClD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;CACJ;AAED,kBAAe,OAAO,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ class Round extends function_1.default {
8
+ constructor() {
9
+ super("round");
10
+ this._expectedParameterCount = 1;
11
+ }
12
+ value() {
13
+ const value = this.getChildren()[0].value();
14
+ if (typeof value !== "number") {
15
+ throw new Error("Invalid argument for round function");
16
+ }
17
+ return Math.round(value);
18
+ }
19
+ }
20
+ exports.default = Round;
21
+ //# sourceMappingURL=round.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/parsing/functions/round.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAElC,MAAM,KAAM,SAAQ,kBAAQ;IACxB;QACI,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,KAAK;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;CACJ;AAED,kBAAe,KAAK,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ class Size extends function_1.default {
8
+ constructor() {
9
+ super("size");
10
+ this._expectedParameterCount = 1;
11
+ }
12
+ value() {
13
+ const arr = this.getChildren()[0].value();
14
+ if (!Array.isArray(arr)) {
15
+ throw new Error("Invalid argument for size function");
16
+ }
17
+ return arr.length;
18
+ }
19
+ }
20
+ exports.default = Size;
21
+ //# sourceMappingURL=size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../../src/parsing/functions/size.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAElC,MAAM,IAAK,SAAQ,kBAAQ;IACvB;QACI,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,KAAK;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC;IACtB,CAAC;CACJ;AAED,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ const string_1 = __importDefault(require("../expressions/string"));
8
+ class Split extends function_1.default {
9
+ constructor() {
10
+ super("split");
11
+ this._expectedParameterCount = 2;
12
+ }
13
+ set parameters(nodes) {
14
+ if (nodes.length === 1) {
15
+ nodes.push(new string_1.default(""));
16
+ }
17
+ super.parameters = nodes;
18
+ }
19
+ value() {
20
+ const str = this.getChildren()[0].value();
21
+ const delimiter = this.getChildren()[1].value();
22
+ if (typeof str !== "string" || typeof delimiter !== "string") {
23
+ throw new Error("Invalid arguments for split function");
24
+ }
25
+ return str.split(delimiter);
26
+ }
27
+ }
28
+ exports.default = Split;
29
+ //# sourceMappingURL=split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split.js","sourceRoot":"","sources":["../../../src/parsing/functions/split.ts"],"names":[],"mappings":";;;;;AACA,0DAAkC;AAClC,mEAA2C;AAE3C,MAAM,KAAM,SAAQ,kBAAQ;IACxB;QACI,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,IAAW,UAAU,CAAC,KAAgB;QAClC,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,gBAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IAC7B,CAAC;IACM,KAAK;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;CACJ;AAED,kBAAe,KAAK,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const function_1 = __importDefault(require("./function"));
7
+ const number_1 = __importDefault(require("../expressions/number"));
8
+ class Stringify extends function_1.default {
9
+ constructor() {
10
+ super("stringify");
11
+ this._expectedParameterCount = 2;
12
+ }
13
+ set parameters(nodes) {
14
+ if (nodes.length === 1) {
15
+ nodes.push(new number_1.default("3")); // Default to 3 if only one parameter is provided
16
+ }
17
+ super.parameters = nodes;
18
+ }
19
+ value() {
20
+ const value = this.getChildren()[0].value();
21
+ const indent = parseInt(this.getChildren()[1].value());
22
+ if (typeof value !== "object") {
23
+ throw new Error("Invalid argument for stringify function");
24
+ }
25
+ return JSON.stringify(value, null, indent);
26
+ }
27
+ }
28
+ exports.default = Stringify;
29
+ //# sourceMappingURL=stringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringify.js","sourceRoot":"","sources":["../../../src/parsing/functions/stringify.ts"],"names":[],"mappings":";;;;;AACA,0DAAkC;AAClC,mEAA2C;AAE3C,MAAM,SAAU,SAAQ,kBAAQ;IAC5B;QACI,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,IAAW,UAAU,CAAC,KAAgB;QAClC,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,gBAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iDAAiD;QAClF,CAAC;QACD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IAC7B,CAAC;IACM,KAAK;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;CACJ;AAED,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const aggregate_function_1 = __importDefault(require("./aggregate_function"));
7
+ const reducer_element_1 = __importDefault(require("./reducer_element"));
8
+ class SumReducerElement extends reducer_element_1.default {
9
+ constructor() {
10
+ super(...arguments);
11
+ this._value = null;
12
+ }
13
+ get value() {
14
+ return this._value;
15
+ }
16
+ set value(value) {
17
+ if (this._value !== null) {
18
+ this._value += value;
19
+ }
20
+ else {
21
+ this._value = value;
22
+ }
23
+ }
24
+ }
25
+ class Sum extends aggregate_function_1.default {
26
+ constructor() {
27
+ super("sum");
28
+ this._expectedParameterCount = 1;
29
+ }
30
+ reduce(element) {
31
+ element.value = this.firstChild().value();
32
+ }
33
+ element() {
34
+ return new SumReducerElement();
35
+ }
36
+ }
37
+ exports.default = Sum;
38
+ //# sourceMappingURL=sum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sum.js","sourceRoot":"","sources":["../../../src/parsing/functions/sum.ts"],"names":[],"mappings":";;;;;AAAA,8EAAqD;AACrD,wEAA+C;AAE/C,MAAM,iBAAkB,SAAQ,yBAAc;IAA9C;;QACY,WAAM,GAAQ,IAAI,CAAC;IAW/B,CAAC;IAVG,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAW,KAAK,CAAC,KAAU;QACvB,IAAG,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;CACJ;AAED,MAAM,GAAI,SAAQ,4BAAiB;IAC/B;QACI,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACrC,CAAC;IACM,MAAM,CAAC,OAA0B;QACpC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IACM,OAAO;QACV,OAAO,IAAI,iBAAiB,EAAE,CAAC;IACnC,CAAC;CACJ;AAED,kBAAe,GAAG,CAAC"}