flowquery 1.0.80 → 1.0.84

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 (42) hide show
  1. package/dist/flowquery.min.js +1 -1
  2. package/dist/parsing/expressions/collect_subquery.d.ts +7 -0
  3. package/dist/parsing/expressions/collect_subquery.d.ts.map +1 -0
  4. package/dist/parsing/expressions/collect_subquery.js +21 -0
  5. package/dist/parsing/expressions/collect_subquery.js.map +1 -0
  6. package/dist/parsing/expressions/count_subquery.d.ts +7 -0
  7. package/dist/parsing/expressions/count_subquery.d.ts.map +1 -0
  8. package/dist/parsing/expressions/count_subquery.js +14 -0
  9. package/dist/parsing/expressions/count_subquery.js.map +1 -0
  10. package/dist/parsing/expressions/exists_subquery.d.ts +7 -0
  11. package/dist/parsing/expressions/exists_subquery.d.ts.map +1 -0
  12. package/dist/parsing/expressions/exists_subquery.js +14 -0
  13. package/dist/parsing/expressions/exists_subquery.js.map +1 -0
  14. package/dist/parsing/expressions/operator.d.ts +7 -1
  15. package/dist/parsing/expressions/operator.d.ts.map +1 -1
  16. package/dist/parsing/expressions/operator.js +15 -1
  17. package/dist/parsing/expressions/operator.js.map +1 -1
  18. package/dist/parsing/expressions/subquery_expression.d.ts +11 -11
  19. package/dist/parsing/expressions/subquery_expression.d.ts.map +1 -1
  20. package/dist/parsing/expressions/subquery_expression.js +53 -39
  21. package/dist/parsing/expressions/subquery_expression.js.map +1 -1
  22. package/dist/parsing/operations/aggregated_return.d.ts.map +1 -1
  23. package/dist/parsing/operations/aggregated_return.js +9 -1
  24. package/dist/parsing/operations/aggregated_return.js.map +1 -1
  25. package/dist/parsing/operations/aggregated_with.d.ts.map +1 -1
  26. package/dist/parsing/operations/aggregated_with.js +34 -6
  27. package/dist/parsing/operations/aggregated_with.js.map +1 -1
  28. package/dist/parsing/operations/group_by.d.ts +21 -28
  29. package/dist/parsing/operations/group_by.d.ts.map +1 -1
  30. package/dist/parsing/operations/group_by.js +43 -22
  31. package/dist/parsing/operations/group_by.js.map +1 -1
  32. package/dist/parsing/operations/order_by.d.ts +2 -0
  33. package/dist/parsing/operations/order_by.d.ts.map +1 -1
  34. package/dist/parsing/operations/order_by.js +4 -0
  35. package/dist/parsing/operations/order_by.js.map +1 -1
  36. package/dist/parsing/parser.d.ts.map +1 -1
  37. package/dist/parsing/parser.js +27 -16
  38. package/dist/parsing/parser.js.map +1 -1
  39. package/dist/tokenization/tokenizer.d.ts.map +1 -1
  40. package/dist/tokenization/tokenizer.js +13 -5
  41. package/dist/tokenization/tokenizer.js.map +1 -1
  42. package/package.json +1 -1
@@ -177,14 +177,21 @@ class GroupBy extends projection_1.default {
177
177
  }
178
178
  return this._reducers;
179
179
  }
180
- *generate_results(mapperIndex = 0, node = this.root) {
180
+ /**
181
+ * Depth-first walk over the group tree that applies each group's
182
+ * mapper and reducer overrides before yielding its leaf, together
183
+ * with the mapper values collected along the path. Shared by the
184
+ * result, group and provenance generators so they always traverse
185
+ * in identical order.
186
+ */
187
+ *_generate_leaves(mapperIndex = 0, node = this.root, path = []) {
181
188
  if (mapperIndex === 0 && node.children.size === 0 && this.mappers.length > 0) {
182
189
  return;
183
190
  }
184
191
  if (node.children.size > 0) {
185
192
  for (const child of node.children.values()) {
186
193
  this.mappers[mapperIndex].overridden = child.value;
187
- yield* this.generate_results(mapperIndex + 1, child);
194
+ yield* this._generate_leaves(mapperIndex + 1, child, [...path, child.value]);
188
195
  }
189
196
  }
190
197
  else {
@@ -194,13 +201,42 @@ class GroupBy extends projection_1.default {
194
201
  node.elements.forEach((element, reducerIndex) => {
195
202
  this.reducers[reducerIndex].overridden = element.value;
196
203
  });
204
+ yield { node, path };
205
+ }
206
+ }
207
+ /**
208
+ * Yields each emitted group together with a callback that re-applies
209
+ * that group's mapper and reducer overrides. Lets callers replay
210
+ * groups in an order other than tree-traversal order (e.g. after
211
+ * ORDER BY) while keeping downstream expression evaluation correct.
212
+ */
213
+ *generate_groups() {
214
+ var _a;
215
+ for (const { node, path } of this._generate_leaves()) {
197
216
  const record = {};
198
217
  for (const [expression, alias] of this.expressions()) {
199
218
  record[alias] = expression.value();
200
219
  }
201
- if (this.where) {
202
- yield record;
220
+ if (!this.where) {
221
+ continue;
203
222
  }
223
+ const elementValues = ((_a = node.elements) !== null && _a !== void 0 ? _a : []).map((element) => element.value);
224
+ yield {
225
+ record,
226
+ restore: () => {
227
+ path.forEach((value, mapperIndex) => {
228
+ this.mappers[mapperIndex].overridden = value;
229
+ });
230
+ elementValues.forEach((value, reducerIndex) => {
231
+ this.reducers[reducerIndex].overridden = value;
232
+ });
233
+ },
234
+ };
235
+ }
236
+ }
237
+ *generate_results() {
238
+ for (const { record } of this.generate_groups()) {
239
+ yield record;
204
240
  }
205
241
  }
206
242
  /**
@@ -209,25 +245,10 @@ class GroupBy extends projection_1.default {
209
245
  * RowProvenance} for each emitted group. When provenance is
210
246
  * disabled, yields empty entries so callers can still zip cleanly.
211
247
  */
212
- *generate_provenance(mapperIndex = 0, node = this.root) {
213
- if (mapperIndex === 0 && node.children.size === 0 && this.mappers.length > 0) {
214
- return;
215
- }
216
- if (node.children.size > 0) {
217
- for (const child of node.children.values()) {
218
- this.mappers[mapperIndex].overridden = child.value;
219
- yield* this.generate_provenance(mapperIndex + 1, child);
220
- }
221
- }
222
- else {
223
- if (node.elements === null) {
224
- node.elements = this.reducers.map((reducer) => reducer.element());
225
- }
226
- node.elements.forEach((element, reducerIndex) => {
227
- this.reducers[reducerIndex].overridden = element.value;
228
- });
248
+ *generate_provenance() {
249
+ for (const { node } of this._generate_leaves()) {
229
250
  if (!this.where)
230
- return;
251
+ continue;
231
252
  yield {
232
253
  nodes: Array.from(node.provenanceNodes.values()),
233
254
  relationships: Array.from(node.provenanceRelationships.values()),
@@ -1 +1 @@
1
- {"version":3,"file":"group_by.js","sourceRoot":"","sources":["../../../src/parsing/operations/group_by.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group_by.js","sourceRoot":"","sources":["../../../src/parsing/operations/group_by.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,8 @@ declare class OrderBy extends Operation {
36
36
  * accumulated row (from `Return.run()`).
37
37
  */
38
38
  captureSortKeys(): void;
39
+ /** Discards keys from a previous emission pass so a re-run starts clean. */
40
+ resetSortKeys(): void;
39
41
  /**
40
42
  * Sorts an array of records using the pre-computed sort keys captured
41
43
  * during accumulation. When no keys have been captured (e.g.
@@ -1 +1 @@
1
- {"version":3,"file":"order_by.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/order_by.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,2BAA2B,CAAC;AAEnD,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,cAAM,OAAQ,SAAQ,SAAS;IAC3B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAA6B;IAC7C;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAe;gBAEpB,MAAM,EAAE,SAAS,EAAE;IAK/B,IAAW,MAAM,IAAI,SAAS,EAAE,CAE/B;IAED;;;;OAIG;IACI,eAAe,IAAI,IAAI;IAI9B;;;;;OAKG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;IAKlE;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE;IA6C5D;;;OAGG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxC,IAAW,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAE1C;CACJ;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"order_by.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/order_by.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,2BAA2B,CAAC;AAEnD,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,cAAM,OAAQ,SAAQ,SAAS;IAC3B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAA6B;IAC7C;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAe;gBAEpB,MAAM,EAAE,SAAS,EAAE;IAK/B,IAAW,MAAM,IAAI,SAAS,EAAE,CAE/B;IAED;;;;OAIG;IACI,eAAe,IAAI,IAAI;IAI9B,4EAA4E;IACrE,aAAa,IAAI,IAAI;IAI5B;;;;;OAKG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;IAKlE;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE;IA6C5D;;;OAGG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxC,IAAW,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAE1C;CACJ;AAED,eAAe,OAAO,CAAC"}
@@ -51,6 +51,10 @@ class OrderBy extends operation_1.default {
51
51
  captureSortKeys() {
52
52
  this._sortKeys.push(this._fields.map((f) => f.expression.value()));
53
53
  }
54
+ /** Discards keys from a previous emission pass so a re-run starts clean. */
55
+ resetSortKeys() {
56
+ this._sortKeys = [];
57
+ }
54
58
  /**
55
59
  * Sorts an array of records using the pre-computed sort keys captured
56
60
  * during accumulation. When no keys have been captured (e.g.
@@ -1 +1 @@
1
- {"version":3,"file":"order_by.js","sourceRoot":"","sources":["../../../src/parsing/operations/order_by.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"order_by.js","sourceRoot":"","sources":["../../../src/parsing/operations/order_by.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsing/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsing/parser.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,9 @@ const list_comprehension_1 = __importDefault(require("./data_structures/list_com
59
59
  const lookup_1 = __importDefault(require("./data_structures/lookup"));
60
60
  const range_lookup_1 = __importDefault(require("./data_structures/range_lookup"));
61
61
  const binding_reference_1 = __importDefault(require("./expressions/binding_reference"));
62
+ const collect_subquery_1 = __importDefault(require("./expressions/collect_subquery"));
63
+ const count_subquery_1 = __importDefault(require("./expressions/count_subquery"));
64
+ const exists_subquery_1 = __importDefault(require("./expressions/exists_subquery"));
62
65
  const expression_1 = __importDefault(require("./expressions/expression"));
63
66
  const f_string_1 = __importDefault(require("./expressions/f_string"));
64
67
  const identifier_1 = __importDefault(require("./expressions/identifier"));
@@ -66,7 +69,6 @@ const operator_1 = require("./expressions/operator");
66
69
  const parameter_reference_1 = __importDefault(require("./expressions/parameter_reference"));
67
70
  const reference_1 = __importDefault(require("./expressions/reference"));
68
71
  const string_1 = __importDefault(require("./expressions/string"));
69
- const subquery_expression_1 = __importStar(require("./expressions/subquery_expression"));
70
72
  const aggregate_function_1 = __importDefault(require("./functions/aggregate_function"));
71
73
  const function_1 = __importDefault(require("./functions/function"));
72
74
  const function_factory_1 = __importDefault(require("./functions/function_factory"));
@@ -1910,6 +1912,20 @@ class Parser extends base_parser_1.default {
1910
1912
  expression.addNode(_case);
1911
1913
  return true;
1912
1914
  }
1915
+ else if (this.token.isSubtract()) {
1916
+ // Only unary here: a binary minus is consumed as an operator by
1917
+ // parseExpression, and the tokenizer folds `-<digit>` into a literal.
1918
+ const negate = new operator_1.Negate();
1919
+ this.setNextToken();
1920
+ const tempExpr = new expression_1.default();
1921
+ if (!this.parseOperand(tempExpr)) {
1922
+ throw new Error("Expected expression after unary minus");
1923
+ }
1924
+ tempExpr.finish();
1925
+ negate.addChild(tempExpr);
1926
+ expression.addNode(negate);
1927
+ return true;
1928
+ }
1913
1929
  else if (this.token.isNot()) {
1914
1930
  const not = new operator_1.Not();
1915
1931
  this.setNextToken();
@@ -2654,19 +2670,8 @@ class Parser extends base_parser_1.default {
2654
2670
  }
2655
2671
  parseSubqueryExpression() {
2656
2672
  const keyword = (this.token.value || "").toUpperCase();
2657
- let mode;
2658
- switch (keyword) {
2659
- case "EXISTS":
2660
- mode = subquery_expression_1.SubqueryMode.EXISTS;
2661
- break;
2662
- case "COUNT":
2663
- mode = subquery_expression_1.SubqueryMode.COUNT;
2664
- break;
2665
- case "COLLECT":
2666
- mode = subquery_expression_1.SubqueryMode.COLLECT;
2667
- break;
2668
- default:
2669
- return null;
2673
+ if (keyword !== "EXISTS" && keyword !== "COUNT" && keyword !== "COLLECT") {
2674
+ return null;
2670
2675
  }
2671
2676
  this.setNextToken(); // consume EXISTS/COUNT/COLLECT keyword
2672
2677
  this.skipWhitespaceAndComments();
@@ -2682,7 +2687,7 @@ class Parser extends base_parser_1.default {
2682
2687
  // COLLECT is excluded: it needs a RETURN to know what to collect.
2683
2688
  let subqueryAST;
2684
2689
  if (this.token.isOpeningBrace() && this.nextSignificantToken().isLeftParenthesis()) {
2685
- if (mode === subquery_expression_1.SubqueryMode.COLLECT) {
2690
+ if (keyword === "COLLECT") {
2686
2691
  this._state = outerState;
2687
2692
  throw new Error("COLLECT subquery must contain a RETURN clause");
2688
2693
  }
@@ -2695,7 +2700,13 @@ class Parser extends base_parser_1.default {
2695
2700
  if (subqueryAST === null) {
2696
2701
  throw new Error(`Expected opening brace after ${keyword}`);
2697
2702
  }
2698
- return new subquery_expression_1.default(mode, subqueryAST);
2703
+ if (keyword === "EXISTS") {
2704
+ return new exists_subquery_1.default(subqueryAST);
2705
+ }
2706
+ if (keyword === "COUNT") {
2707
+ return new count_subquery_1.default(subqueryAST);
2708
+ }
2709
+ return new collect_subquery_1.default(subqueryAST);
2699
2710
  }
2700
2711
  /**
2701
2712
  * Parses a bare graph pattern (with optional trailing WHERE) inside