flowquery 1.0.55 → 1.0.57

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.
@@ -16,7 +16,8 @@ declare class Database {
16
16
  addRelationship(relationship: Relationship, statement: ASTNode): void;
17
17
  removeRelationship(relationship: Relationship): void;
18
18
  getRelationship(relationship: Relationship): PhysicalRelationship | null;
19
- getRelationships(relationship: Relationship): PhysicalRelationship[];
19
+ private isRelationshipCompatible;
20
+ private getRelationshipEntries;
20
21
  schema(): Promise<Record<string, any>[]>;
21
22
  getData(element: Node | Relationship): Promise<NodeData | RelationshipData>;
22
23
  /**
@@ -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,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;IAuCxF;;;OAGG;IACH,OAAO,CAAC,WAAW;CAUtB;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;IAG/E,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,sBAAsB;IAgBjB,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;IAyCxF;;;OAGG;IACH,OAAO,CAAC,WAAW;CAUtB;AAED,eAAe,QAAQ,CAAC"}
@@ -72,12 +72,28 @@ class Database {
72
72
  getRelationship(relationship) {
73
73
  return Database.relationships.get(relationship.type) || null;
74
74
  }
75
- getRelationships(relationship) {
75
+ isRelationshipCompatible(relationship, physical) {
76
+ var _a, _b, _c, _d, _e, _f, _g, _h;
77
+ const patternSourceLabel = (_b = (_a = relationship.source) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : null;
78
+ const patternTargetLabel = (_d = (_c = relationship.target) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : null;
79
+ const physicalSourceLabel = (_f = (_e = physical.source) === null || _e === void 0 ? void 0 : _e.label) !== null && _f !== void 0 ? _f : null;
80
+ const physicalTargetLabel = (_h = (_g = physical.target) === null || _g === void 0 ? void 0 : _g.label) !== null && _h !== void 0 ? _h : null;
81
+ if (relationship.direction === "left") {
82
+ return ((patternSourceLabel === null || patternSourceLabel === physicalTargetLabel) &&
83
+ (patternTargetLabel === null || patternTargetLabel === physicalSourceLabel));
84
+ }
85
+ return ((patternSourceLabel === null || patternSourceLabel === physicalSourceLabel) &&
86
+ (patternTargetLabel === null || patternTargetLabel === physicalTargetLabel));
87
+ }
88
+ getRelationshipEntries(relationship) {
89
+ if (relationship.types.length === 0) {
90
+ return Array.from(Database.relationships.entries()).filter(([, physical]) => this.isRelationshipCompatible(relationship, physical));
91
+ }
76
92
  const result = [];
77
93
  for (const type of relationship.types) {
78
94
  const physical = Database.relationships.get(type);
79
- if (physical) {
80
- result.push(physical);
95
+ if (physical && this.isRelationshipCompatible(relationship, physical)) {
96
+ result.push([type, physical]);
81
97
  }
82
98
  }
83
99
  return result;
@@ -133,15 +149,17 @@ class Database {
133
149
  }
134
150
  else if (element instanceof relationship_1.default) {
135
151
  const args = this.extractArgs(element.properties);
136
- if (element.types.length > 1) {
137
- const physicals = this.getRelationships(element);
138
- if (physicals.length === 0) {
152
+ if (element.types.length !== 1) {
153
+ const physicalEntries = this.getRelationshipEntries(element);
154
+ if (physicalEntries.length === 0) {
155
+ if (element.types.length === 0) {
156
+ return new relationship_data_1.default([]);
157
+ }
139
158
  throw new Error(`No physical relationships found for types ${element.types.join(", ")}`);
140
159
  }
141
160
  const allRecords = [];
142
- for (let i = 0; i < physicals.length; i++) {
143
- const records = (yield physicals[i].data(args));
144
- const typeName = element.types[i];
161
+ for (const [typeName, physical] of physicalEntries) {
162
+ const records = (yield physical.data(args));
145
163
  for (const record of records) {
146
164
  allRecords.push(Object.assign(Object.assign({}, record), { _type: typeName }));
147
165
  }
@@ -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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"}
@@ -45,6 +45,8 @@ declare class BaseParser {
45
45
  * @returns The previous token, or EOF if at the beginning
46
46
  */
47
47
  protected get previousToken(): Token;
48
+ protected nextSignificantToken(offset?: number): Token;
49
+ protected previousSignificantToken(offset?: number): Token;
48
50
  }
49
51
  export default BaseParser;
50
52
  //# sourceMappingURL=base_parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base_parser.d.ts","sourceRoot":"","sources":["../../src/parsing/base_parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAG1C;;;;;GAKG;AACH,cAAM,UAAU;IACZ,OAAO,CAAC,MAAM,CAAwB;IACtC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAK;gBAErB,MAAM,GAAE,KAAK,EAAE,GAAG,IAAW;IAMzC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK3C;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAI9B;;;;OAIG;IACH,SAAS,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI;IAO9B;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,yBAAyB,GAAE,OAAc,GAAG,OAAO;IAiBpF;;;;OAIG;IACH,SAAS,KAAK,KAAK,IAAI,KAAK,CAK3B;IAED;;;;OAIG;IACH,SAAS,KAAK,aAAa,IAAI,KAAK,CAKnC;CACJ;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"base_parser.d.ts","sourceRoot":"","sources":["../../src/parsing/base_parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAG1C;;;;;GAKG;AACH,cAAM,UAAU;IACZ,OAAO,CAAC,MAAM,CAAwB;IACtC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAK;gBAErB,MAAM,GAAE,KAAK,EAAE,GAAG,IAAW;IAMzC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK3C;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAI9B;;;;OAIG;IACH,SAAS,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI;IAO9B;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,yBAAyB,GAAE,OAAc,GAAG,OAAO;IAiBpF;;;;OAIG;IACH,SAAS,KAAK,KAAK,IAAI,KAAK,CAK3B;IAED;;;;OAIG;IACH,SAAS,KAAK,aAAa,IAAI,KAAK,CAKnC;IAED,SAAS,CAAC,oBAAoB,CAAC,MAAM,GAAE,MAAU,GAAG,KAAK;IAWzD,SAAS,CAAC,wBAAwB,CAAC,MAAM,GAAE,MAAU,GAAG,KAAK;CAUhE;AAED,eAAe,UAAU,CAAC"}
@@ -90,6 +90,26 @@ class BaseParser {
90
90
  }
91
91
  return this.tokens[this.tokenIndex - 1];
92
92
  }
93
+ nextSignificantToken(offset = 1) {
94
+ let index = this.tokenIndex + offset;
95
+ while (index < this.tokens.length && this.tokens[index].isWhitespaceOrComment()) {
96
+ index++;
97
+ }
98
+ if (index >= this.tokens.length) {
99
+ return token_1.default.EOF;
100
+ }
101
+ return this.tokens[index];
102
+ }
103
+ previousSignificantToken(offset = 1) {
104
+ let index = this.tokenIndex - offset;
105
+ while (index >= 0 && this.tokens[index].isWhitespaceOrComment()) {
106
+ index--;
107
+ }
108
+ if (index < 0) {
109
+ return token_1.default.EOF;
110
+ }
111
+ return this.tokens[index];
112
+ }
93
113
  }
94
114
  exports.default = BaseParser;
95
115
  //# sourceMappingURL=base_parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base_parser.js","sourceRoot":"","sources":["../../src/parsing/base_parser.ts"],"names":[],"mappings":";;;;;AAAA,kEAA0C;AAC1C,0EAAkD;AAElD;;;;;GAKG;AACH,MAAM,UAAU;IAIZ,YAAY,SAAyB,IAAI;QAHjC,WAAM,GAAqB,EAAE,CAAC;QAC5B,eAAU,GAAW,CAAC,CAAC;QAG7B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACO,QAAQ,CAAC,SAAiB;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,YAAY;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACO,IAAI;QACV,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,MAAe,EAAE,4BAAqC,IAAI;QACtE,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,IAAI,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBACtE,SAAS;YACb,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM;YACV,CAAC;QACL,CAAC;QACD,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,IAAc,KAAK;QACf,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,eAAK,CAAC,GAAG,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,IAAc,aAAa;QACvB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,eAAK,CAAC,GAAG,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;CACJ;AAED,kBAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"base_parser.js","sourceRoot":"","sources":["../../src/parsing/base_parser.ts"],"names":[],"mappings":";;;;;AAAA,kEAA0C;AAC1C,0EAAkD;AAElD;;;;;GAKG;AACH,MAAM,UAAU;IAIZ,YAAY,SAAyB,IAAI;QAHjC,WAAM,GAAqB,EAAE,CAAC;QAC5B,eAAU,GAAW,CAAC,CAAC;QAG7B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACO,QAAQ,CAAC,SAAiB;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACO,YAAY;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACO,IAAI;QACV,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,MAAe,EAAE,4BAAqC,IAAI;QACtE,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,IAAI,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBACtE,SAAS;YACb,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM;YACV,CAAC;QACL,CAAC;QACD,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,IAAc,KAAK;QACf,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,eAAK,CAAC,GAAG,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,IAAc,aAAa;QACvB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,eAAK,CAAC,GAAG,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAES,oBAAoB,CAAC,SAAiB,CAAC;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACrC,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAC9E,KAAK,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,eAAK,CAAC,GAAG,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAES,wBAAwB,CAAC,SAAiB,CAAC;QACjD,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACrC,OAAO,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAC9D,KAAK,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,OAAO,eAAK,CAAC,GAAG,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACJ;AAED,kBAAe,UAAU,CAAC"}
@@ -77,6 +77,7 @@ declare class Parser extends BaseParser {
77
77
  * @returns True if an operand was parsed, false otherwise.
78
78
  */
79
79
  private parseOperand;
80
+ private shouldParseReservedKeywordReference;
80
81
  /**
81
82
  * Peeks ahead from a left parenthesis to determine whether the
82
83
  * upcoming tokens form a graph-node pattern (e.g. (n:Label), (n),
@@ -111,6 +112,7 @@ declare class Parser extends BaseParser {
111
112
  */
112
113
  private parseAsyncFunction;
113
114
  private parsePredicateFunction;
115
+ private looksLikePredicateFunctionIdentifier;
114
116
  private parseFString;
115
117
  /**
116
118
  * Peeks ahead from an opening bracket `[` to determine whether the
@@ -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;AA6DvC;;;;;;;;;;;;GAYG;AACH,cAAM,MAAO,SAAQ,UAAU;IAC3B,OAAO,CAAC,MAAM,CAAkC;IAEhD;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAiBxC;;;;;;;;;OASG;IACK,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;IAgC9D;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,eAAe;IAwGvB,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;IAkEnB,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAE,eAAe;IAwCxB,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;IAyCpB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAE,iBAAiB;IAsC1B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA6GpB;;;;;;;;;;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;IA+E9B,OAAO,CAAC,YAAY;IA4BpB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAiBlC;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IA4D9B,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;IAMlD,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,uBAAuB;CAgClC;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;AA6DvC;;;;;;;;;;;;GAYG;AACH,cAAM,MAAO,SAAQ,UAAU;IAC3B,OAAO,CAAC,MAAM,CAAkC;IAEhD;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAiBxC;;;;;;;;;OASG;IACK,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;IAgC9D;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,eAAe;IAwGvB,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;IAkEnB,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAE,eAAe;IAwCxB,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;IAyCpB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAE,iBAAiB;IAsC1B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAqHpB,OAAO,CAAC,mCAAmC;IAqB3C;;;;;;;;;;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;IA0E9B,OAAO,CAAC,oCAAoC;IAoB5C,OAAO,CAAC,YAAY;IA4BpB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAiBlC;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IA4D9B,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;IAMlD,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,uBAAuB;CAgClC;AAED,eAAe,MAAM,CAAC"}
@@ -43,7 +43,6 @@ const pattern_1 = __importDefault(require("../graph/pattern"));
43
43
  const pattern_expression_1 = __importDefault(require("../graph/pattern_expression"));
44
44
  const relationship_1 = __importDefault(require("../graph/relationship"));
45
45
  const relationship_reference_1 = __importDefault(require("../graph/relationship_reference"));
46
- const token_1 = __importDefault(require("../tokenization/token"));
47
46
  const object_utils_1 = __importDefault(require("../utils/object_utils"));
48
47
  const alias_1 = __importDefault(require("./alias"));
49
48
  const alias_option_1 = require("./alias_option");
@@ -720,7 +719,7 @@ class Parser extends base_parser_1.default {
720
719
  *parsePatterns() {
721
720
  while (true) {
722
721
  let identifier = null;
723
- if (this.token.isIdentifier()) {
722
+ if (this.token.isIdentifierOrKeyword()) {
724
723
  identifier = this.token.value || "";
725
724
  this.setNextToken();
726
725
  this.skipWhitespaceAndComments();
@@ -823,29 +822,29 @@ class Parser extends base_parser_1.default {
823
822
  }
824
823
  this.setNextToken();
825
824
  let variable = null;
825
+ const types = [];
826
826
  if (this.token.isIdentifierOrKeyword()) {
827
827
  variable = this.token.value || "";
828
828
  this.setNextToken();
829
829
  }
830
- if (!this.token.isColon()) {
831
- throw new Error("Expected ':' for relationship type");
832
- }
833
- this.setNextToken();
834
- if (!this.token.isIdentifierOrKeyword()) {
835
- throw new Error("Expected relationship type identifier");
836
- }
837
- const types = [this.token.value || ""];
838
- this.setNextToken();
839
- while (this.token.isPipe()) {
830
+ if (this.token.isColon()) {
840
831
  this.setNextToken();
841
- if (this.token.isColon()) {
842
- this.setNextToken();
843
- }
844
832
  if (!this.token.isIdentifierOrKeyword()) {
845
- throw new Error("Expected relationship type identifier after '|'");
833
+ throw new Error("Expected relationship type identifier");
846
834
  }
847
835
  types.push(this.token.value || "");
848
836
  this.setNextToken();
837
+ while (this.token.isPipe()) {
838
+ this.setNextToken();
839
+ if (this.token.isColon()) {
840
+ this.setNextToken();
841
+ }
842
+ if (!this.token.isIdentifierOrKeyword()) {
843
+ throw new Error("Expected relationship type identifier after '|'");
844
+ }
845
+ types.push(this.token.value || "");
846
+ this.setNextToken();
847
+ }
849
848
  }
850
849
  const hops = this.parseRelationshipHops();
851
850
  const properties = new Map(this.parseProperties());
@@ -1042,7 +1041,7 @@ class Parser extends base_parser_1.default {
1042
1041
  * @returns True if an operand was parsed, false otherwise.
1043
1042
  */
1044
1043
  parseOperand(expression) {
1045
- var _a, _b;
1044
+ var _a, _b, _c;
1046
1045
  this.skipWhitespaceAndComments();
1047
1046
  // Subquery expressions: EXISTS { ... }, COUNT { ... }, COLLECT { ... }
1048
1047
  if (this.looksLikeSubqueryExpression()) {
@@ -1053,7 +1052,15 @@ class Parser extends base_parser_1.default {
1053
1052
  return true;
1054
1053
  }
1055
1054
  }
1056
- if (this.token.isIdentifierOrKeyword() && !((_a = this.peek()) === null || _a === void 0 ? void 0 : _a.isLeftParenthesis())) {
1055
+ if (this.shouldParseReservedKeywordReference() && !((_a = this.peek()) === null || _a === void 0 ? void 0 : _a.isLeftParenthesis())) {
1056
+ const identifier = this.token.value || "";
1057
+ const reference = new reference_1.default(identifier, this._state.variables.get(identifier));
1058
+ this.setNextToken();
1059
+ const lookup = this.parseLookup(reference);
1060
+ expression.addNode(lookup);
1061
+ return true;
1062
+ }
1063
+ if (this.token.isIdentifierOrKeyword() && !((_b = this.peek()) === null || _b === void 0 ? void 0 : _b.isLeftParenthesis())) {
1057
1064
  const identifier = this.token.value || "";
1058
1065
  if (identifier.startsWith("$")) {
1059
1066
  if (!this._state.inVirtualDefinition) {
@@ -1073,7 +1080,7 @@ class Parser extends base_parser_1.default {
1073
1080
  expression.addNode(lookup);
1074
1081
  return true;
1075
1082
  }
1076
- else if (this.token.isIdentifierOrKeyword() && ((_b = this.peek()) === null || _b === void 0 ? void 0 : _b.isLeftParenthesis())) {
1083
+ else if (this.token.isIdentifierOrKeyword() && ((_c = this.peek()) === null || _c === void 0 ? void 0 : _c.isLeftParenthesis())) {
1077
1084
  const func = this.parsePredicateFunction() || this.parseFunction();
1078
1085
  if (func !== null) {
1079
1086
  const lookup = this.parseLookup(func);
@@ -1157,6 +1164,24 @@ class Parser extends base_parser_1.default {
1157
1164
  }
1158
1165
  return false;
1159
1166
  }
1167
+ shouldParseReservedKeywordReference() {
1168
+ const identifier = this.token.value;
1169
+ if (identifier === null ||
1170
+ !this.token.isKeywordThatCannotBeIdentifier() ||
1171
+ !this._state.variables.has(identifier)) {
1172
+ return false;
1173
+ }
1174
+ if (this.token.isCase() && this.nextSignificantToken().isWhen()) {
1175
+ return false;
1176
+ }
1177
+ if (this.token.isNull()) {
1178
+ const previous = this.previousSignificantToken();
1179
+ if (previous.isIs() || previous.isNot()) {
1180
+ return false;
1181
+ }
1182
+ }
1183
+ return true;
1184
+ }
1160
1185
  /**
1161
1186
  * Peeks ahead from a left parenthesis to determine whether the
1162
1187
  * upcoming tokens form a graph-node pattern (e.g. (n:Label), (n),
@@ -1537,12 +1562,7 @@ class Parser extends base_parser_1.default {
1537
1562
  var _a;
1538
1563
  // Check for identifier(variable IN ...) or keyword(variable IN ...)
1539
1564
  // The keyword variant handles functions like all() where ALL is a keyword
1540
- const identifierPattern = this.ahead([
1541
- token_1.default.IDENTIFIER(""),
1542
- token_1.default.LEFT_PARENTHESIS,
1543
- token_1.default.IDENTIFIER(""),
1544
- token_1.default.IN,
1545
- ]);
1565
+ const identifierPattern = this.looksLikePredicateFunctionIdentifier();
1546
1566
  const keywordPattern = !identifierPattern &&
1547
1567
  this.token.isKeyword() &&
1548
1568
  ((_a = this.peek()) === null || _a === void 0 ? void 0 : _a.isLeftParenthesis()) &&
@@ -1560,7 +1580,7 @@ class Parser extends base_parser_1.default {
1560
1580
  }
1561
1581
  this.setNextToken();
1562
1582
  this.skipWhitespaceAndComments();
1563
- if (!this.token.isIdentifier()) {
1583
+ if (!this.token.isIdentifierOrKeyword()) {
1564
1584
  throw new Error("Expected identifier");
1565
1585
  }
1566
1586
  const reference = new reference_1.default(this.token.value);
@@ -1610,6 +1630,26 @@ class Parser extends base_parser_1.default {
1610
1630
  this._state.variables.delete(reference.identifier);
1611
1631
  return func;
1612
1632
  }
1633
+ looksLikePredicateFunctionIdentifier() {
1634
+ var _a;
1635
+ if (!this.token.isIdentifier() || !((_a = this.peek()) === null || _a === void 0 ? void 0 : _a.isLeftParenthesis())) {
1636
+ return false;
1637
+ }
1638
+ const savedIndex = this.tokenIndex;
1639
+ this.setNextToken();
1640
+ this.setNextToken();
1641
+ this.skipWhitespaceAndComments();
1642
+ const isPredicateVariable = this.token.isIdentifierOrKeyword();
1643
+ if (!isPredicateVariable) {
1644
+ this.tokenIndex = savedIndex;
1645
+ return false;
1646
+ }
1647
+ this.setNextToken();
1648
+ this.skipWhitespaceAndComments();
1649
+ const result = this.token.isIn();
1650
+ this.tokenIndex = savedIndex;
1651
+ return result;
1652
+ }
1613
1653
  parseFString() {
1614
1654
  if (!this.token.isFString()) {
1615
1655
  return null;