flowquery 1.0.60 → 1.0.63
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/data.js +1 -1
- package/dist/graph/data.js.map +1 -1
- package/dist/graph/node.d.ts +2 -5
- package/dist/graph/node.d.ts.map +1 -1
- package/dist/graph/node.js +43 -34
- package/dist/graph/node.js.map +1 -1
- package/dist/graph/node_reference.d.ts +2 -2
- package/dist/graph/node_reference.d.ts.map +1 -1
- package/dist/graph/node_reference.js +42 -18
- package/dist/graph/node_reference.js.map +1 -1
- package/dist/graph/pattern_expression.d.ts.map +1 -1
- package/dist/graph/pattern_expression.js +23 -4
- package/dist/graph/pattern_expression.js.map +1 -1
- package/dist/graph/patterns.d.ts +2 -2
- package/dist/graph/patterns.d.ts.map +1 -1
- package/dist/graph/patterns.js +54 -17
- package/dist/graph/patterns.js.map +1 -1
- package/dist/graph/relationship.d.ts +1 -1
- package/dist/graph/relationship.d.ts.map +1 -1
- package/dist/graph/relationship.js +62 -40
- package/dist/graph/relationship.js.map +1 -1
- package/dist/graph/relationship_match_collector.d.ts +1 -0
- package/dist/graph/relationship_match_collector.d.ts.map +1 -1
- package/dist/graph/relationship_match_collector.js +7 -2
- package/dist/graph/relationship_match_collector.js.map +1 -1
- package/dist/graph/relationship_reference.d.ts +1 -1
- package/dist/graph/relationship_reference.d.ts.map +1 -1
- package/dist/graph/relationship_reference.js +32 -11
- package/dist/graph/relationship_reference.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/parsing/operations/match.d.ts.map +1 -1
- package/dist/parsing/operations/match.js +27 -10
- package/dist/parsing/operations/match.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
3
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4
|
+
var m = o[Symbol.asyncIterator], i;
|
|
5
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
6
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
7
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
8
|
+
};
|
|
9
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
10
|
+
var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
|
|
11
|
+
var i, p;
|
|
12
|
+
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
13
|
+
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
|
|
14
|
+
};
|
|
15
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
16
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
17
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
18
|
+
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
19
|
+
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
20
|
+
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
21
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
22
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
23
|
+
function fulfill(value) { resume("next", value); }
|
|
24
|
+
function reject(value) { resume("throw", value); }
|
|
25
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
10
26
|
};
|
|
11
27
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
28
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -67,7 +83,9 @@ class Relationship extends ast_node_1.default {
|
|
|
67
83
|
if (!(key in record)) {
|
|
68
84
|
throw new Error("Relationship does not have property");
|
|
69
85
|
}
|
|
70
|
-
|
|
86
|
+
if (record[key] !== expression.value()) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
71
89
|
}
|
|
72
90
|
return true;
|
|
73
91
|
}
|
|
@@ -124,49 +142,53 @@ class Relationship extends ast_node_1.default {
|
|
|
124
142
|
return this._direction === "left" ? "left_id" : "right_id";
|
|
125
143
|
}
|
|
126
144
|
find(left_id_1) {
|
|
127
|
-
return
|
|
128
|
-
var _a, _b, _c
|
|
145
|
+
return __asyncGenerator(this, arguments, function* find_1(left_id, hop = 0) {
|
|
146
|
+
var _a, _b, _c;
|
|
129
147
|
// Save original source node
|
|
130
148
|
const original = this._source;
|
|
131
149
|
if (hop > 0) {
|
|
132
150
|
// For hops greater than 0, the source becomes the target of the previous hop
|
|
133
151
|
this._source = this._target;
|
|
134
152
|
}
|
|
135
|
-
|
|
136
|
-
(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
while (this._data.find(left_id, hop, this._direction)) {
|
|
146
|
-
const data = (_c = this._data) === null || _c === void 0 ? void 0 : _c.current(hop);
|
|
147
|
-
const id = data[this._left_id_or_right_id()];
|
|
148
|
-
if (hop + 1 >= this.hops.min) {
|
|
149
|
-
this.setValue(this, left_id);
|
|
150
|
-
if (!this._matchesProperties(hop)) {
|
|
151
|
-
continue;
|
|
153
|
+
try {
|
|
154
|
+
if (hop === 0) {
|
|
155
|
+
(_a = this._data) === null || _a === void 0 ? void 0 : _a.reset();
|
|
156
|
+
// Handle zero-hop case: when min is 0 on a variable-length relationship,
|
|
157
|
+
// match source node as target (no traversal)
|
|
158
|
+
if (((_b = this.hops) === null || _b === void 0 ? void 0 : _b.multi()) && this.hops.min === 0 && this._target) {
|
|
159
|
+
// For zero-hop, target finds the same node as source (left_id)
|
|
160
|
+
// No relationship match is pushed since no edge is traversed
|
|
161
|
+
yield __await(yield* __asyncDelegator(__asyncValues(this._target.find(left_id, hop))));
|
|
152
162
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
163
|
+
}
|
|
164
|
+
while (this._data.find(left_id, hop, this._direction)) {
|
|
165
|
+
const data = (_c = this._data) === null || _c === void 0 ? void 0 : _c.current(hop);
|
|
166
|
+
const id = data[this._left_id_or_right_id()];
|
|
167
|
+
if (hop + 1 >= this.hops.min) {
|
|
168
|
+
this.setValue(this, left_id);
|
|
169
|
+
if (!this._matchesProperties(hop)) {
|
|
157
170
|
continue;
|
|
158
171
|
}
|
|
159
|
-
yield this.find(id, hop
|
|
172
|
+
yield __await(yield* __asyncDelegator(__asyncValues(this._target.find(id, hop))));
|
|
173
|
+
if (hop + 1 < this.hops.max) {
|
|
174
|
+
if (this._matches.isCircular(id)) {
|
|
175
|
+
this._matches.pop();
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
yield __await(yield* __asyncDelegator(__asyncValues(this.find(id, hop + 1))));
|
|
179
|
+
}
|
|
180
|
+
this._matches.pop();
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
// Below minimum hops: traverse the edge without yielding a match
|
|
184
|
+
yield __await(yield* __asyncDelegator(__asyncValues(this.find(id, hop + 1))));
|
|
160
185
|
}
|
|
161
|
-
this._matches.pop();
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
// Below minimum hops: traverse the edge without yielding a match
|
|
165
|
-
yield this.find(id, hop + 1);
|
|
166
186
|
}
|
|
167
187
|
}
|
|
168
|
-
|
|
169
|
-
|
|
188
|
+
finally {
|
|
189
|
+
// Restore original source node
|
|
190
|
+
this._source = original;
|
|
191
|
+
}
|
|
170
192
|
});
|
|
171
193
|
}
|
|
172
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship.js","sourceRoot":"","sources":["../../src/graph/relationship.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relationship.js","sourceRoot":"","sources":["../../src/graph/relationship.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export type RelationshipMatchRecord = {
|
|
|
9
9
|
declare class RelationshipMatchCollector {
|
|
10
10
|
private _matches;
|
|
11
11
|
private _nodeIds;
|
|
12
|
+
private _nodeIdSet;
|
|
12
13
|
push(relationship: Relationship, traversalId: string): RelationshipMatchRecord;
|
|
13
14
|
set endNode(node: any);
|
|
14
15
|
pop(): RelationshipMatchRecord | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship_match_collector.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAC;AAEF,cAAM,0BAA0B;IAC5B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,QAAQ,CAAqB;
|
|
1
|
+
{"version":3,"file":"relationship_match_collector.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAC;AAEF,cAAM,0BAA0B;IAC5B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAA0B;IAErC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,uBAAuB;IAkBrF,IAAW,OAAO,CAAC,IAAI,EAAE,GAAG,EAI3B;IACM,GAAG,IAAI,uBAAuB,GAAG,SAAS;IAO1C,KAAK,IAAI,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,IAAI;IAW1E,IAAW,OAAO,IAAI,uBAAuB,EAAE,CAE9C;IAKM,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAG7C;AAED,eAAe,0BAA0B,CAAC"}
|
|
@@ -4,6 +4,7 @@ class RelationshipMatchCollector {
|
|
|
4
4
|
constructor() {
|
|
5
5
|
this._matches = [];
|
|
6
6
|
this._nodeIds = [];
|
|
7
|
+
this._nodeIdSet = new Set();
|
|
7
8
|
}
|
|
8
9
|
push(relationship, traversalId) {
|
|
9
10
|
var _a;
|
|
@@ -14,6 +15,7 @@ class RelationshipMatchCollector {
|
|
|
14
15
|
const match = Object.assign(Object.assign({}, (relProperties || {})), { type: actualType, startNode: ((_a = relationship.source) === null || _a === void 0 ? void 0 : _a.value()) || {}, endNode: null, properties: relProperties });
|
|
15
16
|
this._matches.push(match);
|
|
16
17
|
this._nodeIds.push(traversalId);
|
|
18
|
+
this._nodeIdSet.add(traversalId);
|
|
17
19
|
return match;
|
|
18
20
|
}
|
|
19
21
|
set endNode(node) {
|
|
@@ -22,7 +24,10 @@ class RelationshipMatchCollector {
|
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
pop() {
|
|
25
|
-
this._nodeIds.pop();
|
|
27
|
+
const removedId = this._nodeIds.pop();
|
|
28
|
+
if (removedId !== undefined) {
|
|
29
|
+
this._nodeIdSet.delete(removedId);
|
|
30
|
+
}
|
|
26
31
|
return this._matches.pop();
|
|
27
32
|
}
|
|
28
33
|
value() {
|
|
@@ -46,7 +51,7 @@ class RelationshipMatchCollector {
|
|
|
46
51
|
** in the current traversal path
|
|
47
52
|
*/
|
|
48
53
|
isCircular(nextId) {
|
|
49
|
-
return this.
|
|
54
|
+
return this._nodeIdSet.has(nextId);
|
|
50
55
|
}
|
|
51
56
|
}
|
|
52
57
|
exports.default = RelationshipMatchCollector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship_match_collector.js","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":";;AAUA,MAAM,0BAA0B;IAAhC;QACY,aAAQ,GAA8B,EAAE,CAAC;QACzC,aAAQ,GAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"relationship_match_collector.js","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":";;AAUA,MAAM,0BAA0B;IAAhC;QACY,aAAQ,GAA8B,EAAE,CAAC;QACzC,aAAQ,GAAkB,EAAE,CAAC;QAC7B,eAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;IAqDhD,CAAC;IAnDU,IAAI,CAAC,YAA0B,EAAE,WAAmB;;QACvD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAC;QACtC,MAAM,UAAU,GACZ,aAAa,IAAI,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAK,CAAC;QAC5F,MAAM,aAAa,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAyB,CAAC;QAChE,MAAM,KAAK,mCACJ,CAAC,aAAa,IAAI,EAAE,CAAC,KACxB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,CAAA,MAAA,YAAY,CAAC,MAAM,0CAAE,KAAK,EAAE,KAAI,EAAE,EAC7C,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,aAAa,GAC5B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAW,OAAO,CAAC,IAAS;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACnE,CAAC;IACL,CAAC;IACM,GAAG;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IACM,KAAK;QACR,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;IACD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD;;;OAGG;IACI,UAAU,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CACJ;AAED,kBAAe,0BAA0B,CAAC"}
|
|
@@ -2,7 +2,7 @@ import Relationship from "./relationship";
|
|
|
2
2
|
declare class RelationshipReference extends Relationship {
|
|
3
3
|
private _reference;
|
|
4
4
|
constructor(base: Relationship, reference: Relationship);
|
|
5
|
-
find(left_id: string, hop?: number):
|
|
5
|
+
find(left_id: string, hop?: number): AsyncGenerator<void>;
|
|
6
6
|
}
|
|
7
7
|
export default RelationshipReference;
|
|
8
8
|
//# sourceMappingURL=relationship_reference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship_reference.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,cAAM,qBAAsB,SAAQ,YAAY;IAC5C,OAAO,CAAC,UAAU,CAA6B;gBACnC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"relationship_reference.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,cAAM,qBAAsB,SAAQ,YAAY;IAC5C,OAAO,CAAC,UAAU,CAA6B;gBACnC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;IASzC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,GAAG,cAAc,CAAC,IAAI,CAAC;CAY7E;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
3
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4
|
+
var m = o[Symbol.asyncIterator], i;
|
|
5
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
6
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
7
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
8
|
+
};
|
|
9
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
10
|
+
var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
|
|
11
|
+
var i, p;
|
|
12
|
+
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
13
|
+
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
|
|
14
|
+
};
|
|
15
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
16
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
17
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
18
|
+
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
19
|
+
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
20
|
+
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
21
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
22
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
23
|
+
function fulfill(value) { resume("next", value); }
|
|
24
|
+
function reject(value) { resume("throw", value); }
|
|
25
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
10
26
|
};
|
|
11
27
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
28
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -25,12 +41,17 @@ class RelationshipReference extends relationship_1.default {
|
|
|
25
41
|
this._reference = reference;
|
|
26
42
|
}
|
|
27
43
|
find(left_id_1) {
|
|
28
|
-
return
|
|
29
|
-
var _a
|
|
44
|
+
return __asyncGenerator(this, arguments, function* find_1(left_id, hop = 0) {
|
|
45
|
+
var _a;
|
|
30
46
|
this.setValue(this._reference);
|
|
31
47
|
const data = (_a = this._reference.getData()) === null || _a === void 0 ? void 0 : _a.current(hop);
|
|
32
48
|
const followId = this._direction === "left" ? "left_id" : "right_id";
|
|
33
|
-
|
|
49
|
+
if (this._target) {
|
|
50
|
+
yield __await(yield* __asyncDelegator(__asyncValues(this._target.find(data[followId], hop))));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
yield yield __await(void 0);
|
|
54
|
+
}
|
|
34
55
|
});
|
|
35
56
|
}
|
|
36
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship_reference.js","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relationship_reference.js","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAA0C;AAG1C,MAAM,qBAAsB,SAAQ,sBAAY;IAE5C,YAAY,IAAkB,EAAE,SAAuB;QACnD,KAAK,EAAE,CAAC;QAFJ,eAAU,GAAwB,IAAI,CAAC;QAG3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IACa,IAAI;kEAAC,OAAe,EAAE,MAAc,CAAC;;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;YAChC,MAAM,IAAI,GAAuB,MAAA,IAAI,CAAC,UAAW,CAAC,OAAO,EAAE,0CAAE,OAAO,CAChE,GAAG,CACgB,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACrE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACJ,2BAAK,CAAC;YACV,CAAC;QACL,CAAC;KAAA;CACJ;AAED,kBAAe,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/match.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAQ1C,OAAO,SAAS,MAAM,aAAa,CAAC;AAGpC,cAAM,KAAM,SAAQ,SAAS;IACzB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAkB;gBAEvB,QAAQ,GAAE,OAAO,EAAO,EAAE,QAAQ,GAAE,OAAe;IAK/D,IAAW,QAAQ,IAAI,OAAO,EAAE,CAE/B;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,SAAS,CAAC,QAAQ,IAAI,MAAM;IAG5B;;;;;OAKG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/match.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAQ1C,OAAO,SAAS,MAAM,aAAa,CAAC;AAGpC,cAAM,KAAM,SAAQ,SAAS;IACzB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAkB;gBAEvB,QAAQ,GAAE,OAAO,EAAO,EAAE,QAAQ,GAAE,OAAe;IAK/D,IAAW,QAAQ,IAAI,OAAO,EAAE,CAE/B;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,SAAS,CAAC,QAAQ,IAAI,MAAM;IAG5B;;;;;OAKG;IACU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAuBjC;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAwBnC;;OAEG;IACH,OAAO,CAAC,cAAc;CAGzB;AAED,eAAe,KAAK,CAAC"}
|
|
@@ -8,6 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
+
var m = o[Symbol.asyncIterator], i;
|
|
14
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
+
};
|
|
11
18
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
19
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
20
|
};
|
|
@@ -46,18 +53,28 @@ class Match extends operation_1.default {
|
|
|
46
53
|
*/
|
|
47
54
|
run() {
|
|
48
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
-
var _a;
|
|
56
|
+
var _a, e_1, _b, _c;
|
|
57
|
+
var _d, _e;
|
|
50
58
|
this.extractWherePredicates();
|
|
51
59
|
yield this._patterns.initialize();
|
|
52
60
|
let matched = false;
|
|
53
|
-
|
|
54
|
-
var _a;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
try {
|
|
62
|
+
for (var _f = true, _g = __asyncValues(this._patterns.traverse()), _h; _h = yield _g.next(), _a = _h.done, !_a; _f = true) {
|
|
63
|
+
_c = _h.value;
|
|
64
|
+
_f = false;
|
|
65
|
+
const _ = _c;
|
|
66
|
+
matched = true;
|
|
67
|
+
// Continue to the next operation after all patterns are matched
|
|
68
|
+
yield ((_d = this.next) === null || _d === void 0 ? void 0 : _d.run());
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
72
|
+
finally {
|
|
73
|
+
try {
|
|
74
|
+
if (!_f && !_a && (_b = _g.return)) yield _b.call(_g);
|
|
75
|
+
}
|
|
76
|
+
finally { if (e_1) throw e_1.error; }
|
|
77
|
+
}
|
|
61
78
|
// For OPTIONAL MATCH: if nothing matched, continue with null values
|
|
62
79
|
if (!matched && this._optional) {
|
|
63
80
|
for (const pattern of this._patterns.patterns) {
|
|
@@ -67,7 +84,7 @@ class Match extends operation_1.default {
|
|
|
67
84
|
}
|
|
68
85
|
}
|
|
69
86
|
}
|
|
70
|
-
yield ((
|
|
87
|
+
yield ((_e = this.next) === null || _e === void 0 ? void 0 : _e.run());
|
|
71
88
|
}
|
|
72
89
|
});
|
|
73
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../../src/parsing/operations/match.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"match.js","sourceRoot":"","sources":["../../../src/parsing/operations/match.ts"],"names":[],"mappings":"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"}
|