flowquery 1.0.39 → 1.0.41

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 (45) hide show
  1. package/dist/flowquery.min.js +1 -1
  2. package/dist/graph/database.d.ts +2 -0
  3. package/dist/graph/database.d.ts.map +1 -1
  4. package/dist/graph/database.js +12 -0
  5. package/dist/graph/database.js.map +1 -1
  6. package/dist/parsing/functions/function_factory.d.ts +1 -0
  7. package/dist/parsing/functions/function_factory.d.ts.map +1 -1
  8. package/dist/parsing/functions/function_factory.js +1 -0
  9. package/dist/parsing/functions/function_factory.js.map +1 -1
  10. package/dist/parsing/functions/substring.d.ts +9 -0
  11. package/dist/parsing/functions/substring.d.ts.map +1 -0
  12. package/dist/parsing/functions/substring.js +62 -0
  13. package/dist/parsing/functions/substring.js.map +1 -0
  14. package/dist/parsing/operations/delete_node.d.ts +11 -0
  15. package/dist/parsing/operations/delete_node.d.ts.map +1 -0
  16. package/dist/parsing/operations/delete_node.js +46 -0
  17. package/dist/parsing/operations/delete_node.js.map +1 -0
  18. package/dist/parsing/operations/delete_relationship.d.ts +11 -0
  19. package/dist/parsing/operations/delete_relationship.d.ts.map +1 -0
  20. package/dist/parsing/operations/delete_relationship.js +46 -0
  21. package/dist/parsing/operations/delete_relationship.js.map +1 -0
  22. package/dist/parsing/parser.d.ts +8 -0
  23. package/dist/parsing/parser.d.ts.map +1 -1
  24. package/dist/parsing/parser.js +105 -31
  25. package/dist/parsing/parser.js.map +1 -1
  26. package/docs/flowquery.min.js +1 -1
  27. package/flowquery-py/pyproject.toml +1 -1
  28. package/flowquery-py/src/graph/database.py +12 -0
  29. package/flowquery-py/src/parsing/functions/__init__.py +2 -0
  30. package/flowquery-py/src/parsing/functions/substring.py +74 -0
  31. package/flowquery-py/src/parsing/operations/__init__.py +4 -0
  32. package/flowquery-py/src/parsing/operations/delete_node.py +29 -0
  33. package/flowquery-py/src/parsing/operations/delete_relationship.py +29 -0
  34. package/flowquery-py/src/parsing/parser.py +75 -10
  35. package/flowquery-py/tests/compute/test_runner.py +226 -1
  36. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +1 -1
  37. package/package.json +1 -1
  38. package/src/graph/database.ts +12 -0
  39. package/src/parsing/functions/function_factory.ts +1 -0
  40. package/src/parsing/functions/substring.ts +65 -0
  41. package/src/parsing/operations/delete_node.ts +33 -0
  42. package/src/parsing/operations/delete_relationship.ts +32 -0
  43. package/src/parsing/parser.ts +110 -33
  44. package/tests/compute/runner.test.ts +194 -0
  45. package/tests/parsing/parser.test.ts +1 -1
@@ -11,8 +11,10 @@ declare class Database {
11
11
  private static relationships;
12
12
  static getInstance(): Database;
13
13
  addNode(node: Node, statement: ASTNode): void;
14
+ removeNode(node: Node): void;
14
15
  getNode(node: Node): PhysicalNode | null;
15
16
  addRelationship(relationship: Relationship, statement: ASTNode): void;
17
+ removeRelationship(relationship: Relationship): void;
16
18
  getRelationship(relationship: Relationship): PhysicalRelationship | null;
17
19
  getRelationships(relationship: Relationship): PhysicalRelationship[];
18
20
  schema(): Promise<Record<string, any>[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAwB,MAAM,aAAa,CAAC;AACnD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAwC,MAAM,qBAAqB,CAAC;AAE3E,cAAM,QAAQ;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAwC;IAC5D,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgD;WAE9D,WAAW,IAAI,QAAQ;IAM9B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAQ7C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,GAAG,IAAI;IAGxC,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAUrE,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,oBAAoB,GAAG,IAAI;IAGxE,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,oBAAoB,EAAE;IAU9D,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAuCxC,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC;CAoC3F;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAwB,MAAM,aAAa,CAAC;AACnD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAwC,MAAM,qBAAqB,CAAC;AAE3E,cAAM,QAAQ;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAwC;IAC5D,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgD;WAE9D,WAAW,IAAI,QAAQ;IAM9B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAQ7C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAM5B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,GAAG,IAAI;IAGxC,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAUrE,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAMpD,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,oBAAoB,GAAG,IAAI;IAGxE,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,oBAAoB,EAAE;IAU9D,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAuCxC,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC;CAoC3F;AAED,eAAe,QAAQ,CAAC"}
@@ -44,6 +44,12 @@ class Database {
44
44
  physical.statement = statement;
45
45
  Database.nodes.set(node.label, physical);
46
46
  }
47
+ removeNode(node) {
48
+ if (node.label === null) {
49
+ throw new Error("Node label is null");
50
+ }
51
+ Database.nodes.delete(node.label);
52
+ }
47
53
  getNode(node) {
48
54
  return Database.nodes.get(node.label) || null;
49
55
  }
@@ -57,6 +63,12 @@ class Database {
57
63
  physical.target = relationship.target;
58
64
  Database.relationships.set(relationship.type, physical);
59
65
  }
66
+ removeRelationship(relationship) {
67
+ if (relationship.type === null) {
68
+ throw new Error("Relationship type is null");
69
+ }
70
+ Database.relationships.delete(relationship.type);
71
+ }
60
72
  getRelationship(relationship) {
61
73
  return Database.relationships.get(relationship.type) || null;
62
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ import "./size";
33
33
  import "./split";
34
34
  import "./string_distance";
35
35
  import "./stringify";
36
+ import "./substring";
36
37
  import "./sum";
37
38
  import "./tail";
38
39
  import "./time";
@@ -1 +1 @@
1
- {"version":3,"file":"function_factory.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,OAAO,CAAC;AACf,OAAO,YAAY,CAAC;AACpB,OAAO,WAAW,CAAC;AACnB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,YAAY,CAAC;AACpB,OAAO,YAAY,CAAC;AACpB,OAAO,cAAc,CAAC;AACtB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAInB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAChB,OAAO,iBAAiB,CAAC;AACzB,OAAO,aAAa,CAAC;AACrB,OAAO,OAAO,CAAC;AACf,OAAO,OAAO,CAAC;AACf,OAAO,SAAS,CAAC;AACjB,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,iBAAiB,CAAC;AACzB,OAAO,WAAW,CAAC;AACnB,OAAO,SAAS,CAAC;AACjB,OAAO,UAAU,CAAC;AAClB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,aAAa,CAAC;AAErB,OAAO,OAAO,CAAC;AACf,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAChB,OAAO,aAAa,CAAC;AACrB,OAAO,YAAY,CAAC;AACpB,OAAO,cAAc,CAAC;AACtB,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC;AACpB,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAGhB,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,cAAM,eAAe;IACjB;;;;;OAKG;WACW,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3E;;;;;OAKG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;OAKG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIrE;;;;;OAKG;WACW,aAAa,CAAC,OAAO,CAAC,EAAE;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,gBAAgB,EAAE;IAatB;;;;OAIG;WACW,iBAAiB,IAAI,MAAM,EAAE;IAI3C;;;;OAIG;WACW,MAAM,IAAI;QAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAQ/E;;;;;OAKG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAY5C;;;;;;OAMG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;WAYhD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAQzD;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"function_factory.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,OAAO,CAAC;AACf,OAAO,YAAY,CAAC;AACpB,OAAO,WAAW,CAAC;AACnB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,YAAY,CAAC;AACpB,OAAO,YAAY,CAAC;AACpB,OAAO,cAAc,CAAC;AACtB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAInB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAChB,OAAO,iBAAiB,CAAC;AACzB,OAAO,aAAa,CAAC;AACrB,OAAO,OAAO,CAAC;AACf,OAAO,OAAO,CAAC;AACf,OAAO,SAAS,CAAC;AACjB,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,iBAAiB,CAAC;AACzB,OAAO,cAAc,CAAC;AACtB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,iBAAiB,CAAC;AACzB,OAAO,WAAW,CAAC;AACnB,OAAO,SAAS,CAAC;AACjB,OAAO,UAAU,CAAC;AAClB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AAErB,OAAO,OAAO,CAAC;AACf,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAChB,OAAO,aAAa,CAAC;AACrB,OAAO,YAAY,CAAC;AACpB,OAAO,cAAc,CAAC;AACtB,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC;AACpB,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,QAAQ,CAAC;AAGhB,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,cAAM,eAAe;IACjB;;;;;OAKG;WACW,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3E;;;;;OAKG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;OAKG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIrE;;;;;OAKG;WACW,aAAa,CAAC,OAAO,CAAC,EAAE;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,gBAAgB,EAAE;IAatB;;;;OAIG;WACW,iBAAiB,IAAI,MAAM,EAAE;IAI3C;;;;OAIG;WACW,MAAM,IAAI;QAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAQ/E;;;;;OAKG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAY5C;;;;;;OAMG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;WAYhD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAQzD;AAED,eAAe,eAAe,CAAC"}
@@ -32,6 +32,7 @@ require("./size");
32
32
  require("./split");
33
33
  require("./string_distance");
34
34
  require("./stringify");
35
+ require("./substring");
35
36
  // Import built-in functions to ensure their @FunctionDef decorators run
36
37
  require("./sum");
37
38
  require("./tail");
@@ -1 +1 @@
1
- {"version":3,"file":"function_factory.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function_factory.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import ASTNode from "../ast_node";
2
+ import Function from "./function";
3
+ declare class Substring extends Function {
4
+ constructor();
5
+ set parameters(nodes: ASTNode[]);
6
+ value(): any;
7
+ }
8
+ export default Substring;
9
+ //# sourceMappingURL=substring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substring.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/substring.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,cAgBM,SAAU,SAAQ,QAAQ;;IAK5B,IAAW,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAOrC;IAEM,KAAK,IAAI,GAAG;CA4BtB;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const function_1 = __importDefault(require("./function"));
13
+ const function_metadata_1 = require("./function_metadata");
14
+ let Substring = class Substring extends function_1.default {
15
+ constructor() {
16
+ super("substring");
17
+ }
18
+ set parameters(nodes) {
19
+ if (nodes.length < 2 || nodes.length > 3) {
20
+ throw new Error(`Function substring expected 2 or 3 parameters, but got ${nodes.length}`);
21
+ }
22
+ this.children = nodes;
23
+ }
24
+ value() {
25
+ const children = this.getChildren();
26
+ const original = children[0].value();
27
+ const start = children[1].value();
28
+ if (typeof original !== "string") {
29
+ throw new Error("Invalid argument for substring function: expected a string as the first argument");
30
+ }
31
+ if (typeof start !== "number" || !Number.isInteger(start)) {
32
+ throw new Error("Invalid argument for substring function: expected an integer as the second argument");
33
+ }
34
+ if (children.length === 3) {
35
+ const length = children[2].value();
36
+ if (typeof length !== "number" || !Number.isInteger(length)) {
37
+ throw new Error("Invalid argument for substring function: expected an integer as the third argument");
38
+ }
39
+ return original.substring(start, start + length);
40
+ }
41
+ return original.substring(start);
42
+ }
43
+ };
44
+ Substring = __decorate([
45
+ (0, function_metadata_1.FunctionDef)({
46
+ description: "Returns a substring of a string, starting at a 0-based index with an optional length",
47
+ category: "scalar",
48
+ parameters: [
49
+ { name: "original", description: "The original string", type: "string" },
50
+ { name: "start", description: "The 0-based start index", type: "integer" },
51
+ {
52
+ name: "length",
53
+ description: "The length of the substring (optional, defaults to remainder of string)",
54
+ type: "integer",
55
+ },
56
+ ],
57
+ output: { description: "The substring", type: "string", example: "llo" },
58
+ examples: ["RETURN substring('hello', 1, 3)", "RETURN substring('hello', 2)"],
59
+ })
60
+ ], Substring);
61
+ exports.default = Substring;
62
+ //# sourceMappingURL=substring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substring.js","sourceRoot":"","sources":["../../../src/parsing/functions/substring.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,0DAAkC;AAClC,2DAAkD;AAkBlD,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,kBAAQ;IAC5B;QACI,KAAK,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;IAED,IAAW,UAAU,CAAC,KAAgB;QAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACX,0DAA0D,KAAK,CAAC,MAAM,EAAE,CAC3E,CAAC;QACN,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,KAAK;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAElC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACX,kFAAkF,CACrF,CAAC;QACN,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CACX,qFAAqF,CACxF,CAAC;QACN,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CACX,oFAAoF,CACvF,CAAC;YACN,CAAC;YACD,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;CACJ,CAAA;AA1CK,SAAS;IAhBd,IAAA,+BAAW,EAAC;QACT,WAAW,EACP,sFAAsF;QAC1F,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1E;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yEAAyE;gBACtF,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,MAAM,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QACxE,QAAQ,EAAE,CAAC,iCAAiC,EAAE,8BAA8B,CAAC;KAChF,CAAC;GACI,SAAS,CA0Cd;AAED,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,11 @@
1
+ import Node from "../../graph/node";
2
+ import Operation from "./operation";
3
+ declare class DeleteNode extends Operation {
4
+ private _node;
5
+ constructor(node: Node);
6
+ get node(): Node | null;
7
+ run(): Promise<void>;
8
+ get results(): Record<string, any>[];
9
+ }
10
+ export default DeleteNode;
11
+ //# sourceMappingURL=delete_node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete_node.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/delete_node.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,cAAM,UAAW,SAAQ,SAAS;IAC9B,OAAO,CAAC,KAAK,CAAqB;gBACtB,IAAI,EAAE,IAAI;IAItB,IAAW,IAAI,IAAI,IAAI,GAAG,IAAI,CAE7B;IACM,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,IAAW,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAE1C;CACJ;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const database_1 = __importDefault(require("../../graph/database"));
16
+ const operation_1 = __importDefault(require("./operation"));
17
+ class DeleteNode extends operation_1.default {
18
+ constructor(node) {
19
+ super();
20
+ this._node = null;
21
+ this._node = node;
22
+ }
23
+ get node() {
24
+ return this._node;
25
+ }
26
+ run() {
27
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
28
+ try {
29
+ if (this._node === null) {
30
+ throw new Error("Node is null");
31
+ }
32
+ const db = database_1.default.getInstance();
33
+ db.removeNode(this._node);
34
+ resolve();
35
+ }
36
+ catch (error) {
37
+ reject(error);
38
+ }
39
+ }));
40
+ }
41
+ get results() {
42
+ return [];
43
+ }
44
+ }
45
+ exports.default = DeleteNode;
46
+ //# sourceMappingURL=delete_node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete_node.js","sourceRoot":"","sources":["../../../src/parsing/operations/delete_node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oEAA4C;AAE5C,4DAAoC;AAEpC,MAAM,UAAW,SAAQ,mBAAS;IAE9B,YAAY,IAAU;QAClB,KAAK,EAAE,CAAC;QAFJ,UAAK,GAAgB,IAAI,CAAC;QAG9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACM,GAAG;QACN,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM,EAAE,GAAa,kBAAQ,CAAC,WAAW,EAAE,CAAC;gBAC5C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAA,CAAC,CAAC;IACP,CAAC;IACD,IAAW,OAAO;QACd,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ import Relationship from "../../graph/relationship";
2
+ import Operation from "./operation";
3
+ declare class DeleteRelationship extends Operation {
4
+ private _relationship;
5
+ constructor(relationship: Relationship);
6
+ get relationship(): Relationship | null;
7
+ run(): Promise<void>;
8
+ get results(): Record<string, any>[];
9
+ }
10
+ export default DeleteRelationship;
11
+ //# sourceMappingURL=delete_relationship.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete_relationship.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/delete_relationship.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,cAAM,kBAAmB,SAAQ,SAAS;IACtC,OAAO,CAAC,aAAa,CAA6B;gBACtC,YAAY,EAAE,YAAY;IAItC,IAAW,YAAY,IAAI,YAAY,GAAG,IAAI,CAE7C;IACM,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,IAAW,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAE1C;CACJ;AACD,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const database_1 = __importDefault(require("../../graph/database"));
16
+ const operation_1 = __importDefault(require("./operation"));
17
+ class DeleteRelationship extends operation_1.default {
18
+ constructor(relationship) {
19
+ super();
20
+ this._relationship = null;
21
+ this._relationship = relationship;
22
+ }
23
+ get relationship() {
24
+ return this._relationship;
25
+ }
26
+ run() {
27
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
28
+ try {
29
+ if (this._relationship === null) {
30
+ throw new Error("Relationship is null");
31
+ }
32
+ const db = database_1.default.getInstance();
33
+ db.removeRelationship(this._relationship);
34
+ resolve();
35
+ }
36
+ catch (error) {
37
+ reject(error);
38
+ }
39
+ }));
40
+ }
41
+ get results() {
42
+ return [];
43
+ }
44
+ }
45
+ exports.default = DeleteRelationship;
46
+ //# sourceMappingURL=delete_relationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete_relationship.js","sourceRoot":"","sources":["../../../src/parsing/operations/delete_relationship.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oEAA4C;AAE5C,4DAAoC;AAEpC,MAAM,kBAAmB,SAAQ,mBAAS;IAEtC,YAAY,YAA0B;QAClC,KAAK,EAAE,CAAC;QAFJ,kBAAa,GAAwB,IAAI,CAAC;QAG9C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACtC,CAAC;IACD,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IACM,GAAG;QACN,OAAO,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM,EAAE,GAAG,kBAAQ,CAAC,WAAW,EAAE,CAAC;gBAClC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,OAAO,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAA,CAAC,CAAC;IACP,CAAC;IACD,IAAW,OAAO;QACd,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AACD,kBAAe,kBAAkB,CAAC"}
@@ -37,6 +37,7 @@ declare class Parser extends BaseParser {
37
37
  private parseLoad;
38
38
  private parseCall;
39
39
  private parseCreate;
40
+ private parseDelete;
40
41
  private parseMatch;
41
42
  private parseNode;
42
43
  private parseProperties;
@@ -48,7 +49,14 @@ declare class Parser extends BaseParser {
48
49
  private parseSubQuery;
49
50
  private parseLimit;
50
51
  private parseOrderBy;
52
+ /**
53
+ * Parses a comma-separated list of expressions with deferred variable
54
+ * registration. Aliases set by earlier expressions in the same clause
55
+ * won't shadow variables needed by later expressions
56
+ * (e.g. `RETURN a.x AS a, a.y AS b`).
57
+ */
51
58
  private parseExpressions;
59
+ private _parseExpressions;
52
60
  /**
53
61
  * Parse a single operand (without operators).
54
62
  * @returns True if an operand was parsed, false otherwise.
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsing/parser.ts"],"names":[],"mappings":"AAWA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,UAAU,MAAM,eAAe,CAAC;AAwDvC;;;;;;;;;;;;GAYG;AACH,cAAM,MAAO,SAAQ,UAAU;IAC3B,OAAO,CAAC,MAAM,CAAkC;IAEhD;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKxC,OAAO,CAAC,eAAe;IA8FvB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,SAAS;IAoEjB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,WAAW;IAgEnB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAE,eAAe;IAyCxB,OAAO,CAAE,aAAa;IAgCtB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,iBAAiB;IAgFzB,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,YAAY;IA0CpB,OAAO,CAAE,gBAAgB;IAsCzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IA8EpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,eAAe;IA2CvB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,WAAW;IAkDnB,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,aAAa;IAoCrB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,sBAAsB;IAwE9B,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,qBAAqB;IAuC7B,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,kCAAkC;IAO1C,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,0CAA0C;CAKrD;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsing/parser.ts"],"names":[],"mappings":"AAWA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,UAAU,MAAM,eAAe,CAAC;AA0DvC;;;;;;;;;;;;GAYG;AACH,cAAM,MAAO,SAAQ,UAAU;IAC3B,OAAO,CAAC,MAAM,CAAkC;IAEhD;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKxC,OAAO,CAAC,eAAe;IAkGvB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,SAAS;IAoEjB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,WAAW;IAgEnB,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAE,eAAe;IAyCxB,OAAO,CAAE,aAAa;IAgCtB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,iBAAiB;IAgFzB,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,YAAY;IA0CpB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAE,iBAAiB;IAsC1B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA8EpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,eAAe;IA2CvB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,WAAW;IAkDnB,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,aAAa;IAoCrB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,sBAAsB;IAwE9B,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,qBAAqB;IAuC7B,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,kCAAkC;IAO1C,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,0CAA0C;CAKrD;AAED,eAAe,MAAM,CAAC"}
@@ -43,6 +43,8 @@ const aggregated_with_1 = __importDefault(require("./operations/aggregated_with"
43
43
  const call_1 = __importDefault(require("./operations/call"));
44
44
  const create_node_1 = __importDefault(require("./operations/create_node"));
45
45
  const create_relationship_1 = __importDefault(require("./operations/create_relationship"));
46
+ const delete_node_1 = __importDefault(require("./operations/delete_node"));
47
+ const delete_relationship_1 = __importDefault(require("./operations/delete_relationship"));
46
48
  const limit_1 = __importDefault(require("./operations/limit"));
47
49
  const load_1 = __importDefault(require("./operations/load"));
48
50
  const match_1 = __importDefault(require("./operations/match"));
@@ -178,8 +180,10 @@ class Parser extends base_parser_1.default {
178
180
  if (!(operation instanceof return_1.default) &&
179
181
  !(operation instanceof call_1.default) &&
180
182
  !(operation instanceof create_node_1.default) &&
181
- !(operation instanceof create_relationship_1.default)) {
182
- throw new Error("Last statement must be a RETURN, WHERE, CALL, or CREATE statement");
183
+ !(operation instanceof create_relationship_1.default) &&
184
+ !(operation instanceof delete_node_1.default) &&
185
+ !(operation instanceof delete_relationship_1.default)) {
186
+ throw new Error("Last statement must be a RETURN, WHERE, CALL, CREATE, or DELETE statement");
183
187
  }
184
188
  return root;
185
189
  }
@@ -190,6 +194,7 @@ class Parser extends base_parser_1.default {
190
194
  this.parseLoad() ||
191
195
  this.parseCall() ||
192
196
  this.parseCreate() ||
197
+ this.parseDelete() ||
193
198
  this.parseMatch());
194
199
  }
195
200
  parseWith() {
@@ -204,7 +209,7 @@ class Parser extends base_parser_1.default {
204
209
  this.setNextToken();
205
210
  this.expectAndSkipWhitespaceAndComments();
206
211
  }
207
- const expressions = Array.from(this.parseExpressions(alias_option_1.AliasOption.REQUIRED));
212
+ const expressions = this.parseExpressions(alias_option_1.AliasOption.REQUIRED);
208
213
  if (expressions.length === 0) {
209
214
  throw new Error("Expected expression");
210
215
  }
@@ -256,7 +261,7 @@ class Parser extends base_parser_1.default {
256
261
  this.setNextToken();
257
262
  this.expectAndSkipWhitespaceAndComments();
258
263
  }
259
- const expressions = Array.from(this.parseExpressions(alias_option_1.AliasOption.OPTIONAL));
264
+ const expressions = this.parseExpressions(alias_option_1.AliasOption.OPTIONAL);
260
265
  if (expressions.length === 0) {
261
266
  throw new Error("Expected expression");
262
267
  }
@@ -367,7 +372,7 @@ class Parser extends base_parser_1.default {
367
372
  this.expectPreviousTokenToBeWhitespaceOrComment();
368
373
  this.setNextToken();
369
374
  this.expectAndSkipWhitespaceAndComments();
370
- const expressions = Array.from(this.parseExpressions(alias_option_1.AliasOption.OPTIONAL));
375
+ const expressions = this.parseExpressions(alias_option_1.AliasOption.OPTIONAL);
371
376
  if (expressions.length === 0) {
372
377
  throw new Error("Expected at least one expression");
373
378
  }
@@ -440,6 +445,61 @@ class Parser extends base_parser_1.default {
440
445
  }
441
446
  return create;
442
447
  }
448
+ parseDelete() {
449
+ var _a;
450
+ if (!this.token.isDelete()) {
451
+ return null;
452
+ }
453
+ this.setNextToken();
454
+ this.expectAndSkipWhitespaceAndComments();
455
+ if (!this.token.isVirtual()) {
456
+ throw new Error("Expected VIRTUAL");
457
+ }
458
+ this.setNextToken();
459
+ this.expectAndSkipWhitespaceAndComments();
460
+ const node = this.parseNode();
461
+ if (node === null) {
462
+ throw new Error("Expected node definition");
463
+ }
464
+ let relationship = null;
465
+ if (this.token.isSubtract() && ((_a = this.peek()) === null || _a === void 0 ? void 0 : _a.isOpeningBracket())) {
466
+ this.setNextToken();
467
+ this.setNextToken();
468
+ if (!this.token.isColon()) {
469
+ throw new Error("Expected ':' for relationship type");
470
+ }
471
+ this.setNextToken();
472
+ if (!this.token.isIdentifierOrKeyword()) {
473
+ throw new Error("Expected relationship type identifier");
474
+ }
475
+ const type = this.token.value || "";
476
+ this.setNextToken();
477
+ if (!this.token.isClosingBracket()) {
478
+ throw new Error("Expected closing bracket for relationship definition");
479
+ }
480
+ this.setNextToken();
481
+ if (!this.token.isSubtract()) {
482
+ throw new Error("Expected '-' for relationship definition");
483
+ }
484
+ this.setNextToken();
485
+ const target = this.parseNode();
486
+ if (target === null) {
487
+ throw new Error("Expected target node definition");
488
+ }
489
+ relationship = new relationship_1.default();
490
+ relationship.type = type;
491
+ relationship.source = node;
492
+ relationship.target = target;
493
+ }
494
+ let result;
495
+ if (relationship !== null) {
496
+ result = new delete_relationship_1.default(relationship);
497
+ }
498
+ else {
499
+ result = new delete_node_1.default(node);
500
+ }
501
+ return result;
502
+ }
443
503
  parseMatch() {
444
504
  let optional = false;
445
505
  if (this.token.isOptional()) {
@@ -823,34 +883,48 @@ class Parser extends base_parser_1.default {
823
883
  }
824
884
  return new order_by_1.default(fields);
825
885
  }
826
- *parseExpressions(alias_option = alias_option_1.AliasOption.NOT_ALLOWED) {
886
+ /**
887
+ * Parses a comma-separated list of expressions with deferred variable
888
+ * registration. Aliases set by earlier expressions in the same clause
889
+ * won't shadow variables needed by later expressions
890
+ * (e.g. `RETURN a.x AS a, a.y AS b`).
891
+ */
892
+ parseExpressions(alias_option = alias_option_1.AliasOption.NOT_ALLOWED) {
893
+ const parsed = Array.from(this._parseExpressions(alias_option));
894
+ for (const [expression, variableName] of parsed) {
895
+ if (variableName !== null) {
896
+ this._state.variables.set(variableName, expression);
897
+ }
898
+ }
899
+ return parsed.map(([expression]) => expression);
900
+ }
901
+ *_parseExpressions(alias_option) {
827
902
  while (true) {
828
903
  const expression = this.parseExpression();
829
- if (expression !== null) {
830
- const alias = this.parseAlias();
831
- if (expression.firstChild() instanceof reference_1.default && alias === null) {
832
- const reference = expression.firstChild();
833
- expression.setAlias(reference.identifier);
834
- this._state.variables.set(reference.identifier, expression);
835
- }
836
- else if (alias_option === alias_option_1.AliasOption.REQUIRED &&
837
- alias === null &&
838
- !(expression.firstChild() instanceof reference_1.default)) {
839
- throw new Error("Alias required");
840
- }
841
- else if (alias_option === alias_option_1.AliasOption.NOT_ALLOWED && alias !== null) {
842
- throw new Error("Alias not allowed");
843
- }
844
- else if ([alias_option_1.AliasOption.OPTIONAL, alias_option_1.AliasOption.REQUIRED].includes(alias_option) &&
845
- alias !== null) {
846
- expression.setAlias(alias.getAlias());
847
- this._state.variables.set(alias.getAlias(), expression);
848
- }
849
- yield expression;
850
- }
851
- else {
904
+ if (expression === null) {
852
905
  break;
853
906
  }
907
+ let variableName = null;
908
+ const alias = this.parseAlias();
909
+ if (expression.firstChild() instanceof reference_1.default && alias === null) {
910
+ const reference = expression.firstChild();
911
+ expression.setAlias(reference.identifier);
912
+ variableName = reference.identifier;
913
+ }
914
+ else if (alias_option === alias_option_1.AliasOption.REQUIRED &&
915
+ alias === null &&
916
+ !(expression.firstChild() instanceof reference_1.default)) {
917
+ throw new Error("Alias required");
918
+ }
919
+ else if (alias_option === alias_option_1.AliasOption.NOT_ALLOWED && alias !== null) {
920
+ throw new Error("Alias not allowed");
921
+ }
922
+ else if ([alias_option_1.AliasOption.OPTIONAL, alias_option_1.AliasOption.REQUIRED].includes(alias_option) &&
923
+ alias !== null) {
924
+ expression.setAlias(alias.getAlias());
925
+ variableName = alias.getAlias();
926
+ }
927
+ yield [expression, variableName];
854
928
  this.skipWhitespaceAndComments();
855
929
  if (!this.token.isComma()) {
856
930
  break;
@@ -1282,7 +1356,7 @@ class Parser extends base_parser_1.default {
1282
1356
  this.setNextToken();
1283
1357
  this.expectAndSkipWhitespaceAndComments();
1284
1358
  }
1285
- func.parameters = Array.from(this.parseExpressions(alias_option_1.AliasOption.NOT_ALLOWED));
1359
+ func.parameters = this.parseExpressions(alias_option_1.AliasOption.NOT_ALLOWED);
1286
1360
  this.skipWhitespaceAndComments();
1287
1361
  if (!this.token.isRightParenthesis()) {
1288
1362
  throw new Error("Expected right parenthesis");
@@ -1316,7 +1390,7 @@ class Parser extends base_parser_1.default {
1316
1390
  this.setNextToken(); // skip function name
1317
1391
  this.setNextToken(); // skip left parenthesis
1318
1392
  this.skipWhitespaceAndComments();
1319
- asyncFunc.parameters = Array.from(this.parseExpressions(alias_option_1.AliasOption.NOT_ALLOWED));
1393
+ asyncFunc.parameters = this.parseExpressions(alias_option_1.AliasOption.NOT_ALLOWED);
1320
1394
  this.skipWhitespaceAndComments();
1321
1395
  if (!this.token.isRightParenthesis()) {
1322
1396
  throw new Error("Expected right parenthesis");