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.
- package/dist/flowquery.min.js +1 -1
- package/dist/graph/database.d.ts +2 -1
- package/dist/graph/database.d.ts.map +1 -1
- package/dist/graph/database.js +27 -9
- package/dist/graph/database.js.map +1 -1
- package/dist/parsing/base_parser.d.ts +2 -0
- package/dist/parsing/base_parser.d.ts.map +1 -1
- package/dist/parsing/base_parser.js +20 -0
- package/dist/parsing/base_parser.js.map +1 -1
- package/dist/parsing/parser.d.ts +2 -0
- package/dist/parsing/parser.d.ts.map +1 -1
- package/dist/parsing/parser.js +66 -26
- package/dist/parsing/parser.js.map +1 -1
- package/package.json +1 -1
package/dist/graph/database.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/graph/database.js
CHANGED
|
@@ -72,12 +72,28 @@ class Database {
|
|
|
72
72
|
getRelationship(relationship) {
|
|
73
73
|
return Database.relationships.get(relationship.type) || null;
|
|
74
74
|
}
|
|
75
|
-
|
|
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
|
|
137
|
-
const
|
|
138
|
-
if (
|
|
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 (
|
|
143
|
-
const records = (yield
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA0B;AAC1B,4DAAmD;AACnD,oEAA2C;AAC3C,oFAA2D;AAC3D,kEAA0C;AAC1C,4EAA2E;AAE3E,MAAM,QAAQ;IAKH,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACrB,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC7B,CAAC;IACM,OAAO,CAAC,IAAU,EAAE,SAAkB;QACzC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,uBAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACM,UAAU,CAAC,IAAU;QACxB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACM,OAAO,CAAC,IAAU;QACrB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAM,CAAC,IAAI,IAAI,CAAC;IACnD,CAAC;IACM,eAAe,CAAC,YAA0B,EAAE,SAAkB;QACjE,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,+BAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACnE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACtC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IACM,kBAAkB,CAAC,YAA0B;QAChD,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACjD,CAAC;QACD,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACM,eAAe,CAAC,YAA0B;QAC7C,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAK,CAAC,IAAI,IAAI,CAAC;IAClE,CAAC;
|
|
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;
|
|
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":"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"}
|
package/dist/parsing/parser.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/parsing/parser.js
CHANGED
|
@@ -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.
|
|
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 (
|
|
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
|
|
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.
|
|
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() && ((
|
|
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.
|
|
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.
|
|
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;
|