flowquery 1.0.59 → 1.0.60
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/compute/runner.d.ts +1 -0
- package/dist/compute/runner.d.ts.map +1 -1
- package/dist/compute/runner.js +7 -0
- package/dist/compute/runner.js.map +1 -1
- package/dist/flowquery.min.js +1 -1
- package/dist/graph/data_cache.d.ts +16 -0
- package/dist/graph/data_cache.d.ts.map +1 -0
- package/dist/graph/data_cache.js +40 -0
- package/dist/graph/data_cache.js.map +1 -0
- package/dist/graph/database.d.ts +7 -0
- package/dist/graph/database.d.ts.map +1 -1
- package/dist/graph/database.js +16 -5
- package/dist/graph/database.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import PhysicalNode from "./physical_node";
|
|
2
|
+
import PhysicalRelationship from "./physical_relationship";
|
|
3
|
+
/**
|
|
4
|
+
* Per-query cache for virtual graph data.
|
|
5
|
+
*
|
|
6
|
+
* Each top-level Runner creates its own DataCache instance,
|
|
7
|
+
* ensuring thread-safety when multiple queries run concurrently.
|
|
8
|
+
* Filter pass-down queries (with args) bypass the cache since
|
|
9
|
+
* their results depend on runtime parameter values.
|
|
10
|
+
*/
|
|
11
|
+
declare class DataCache {
|
|
12
|
+
private _cache;
|
|
13
|
+
get(key: string, physical: PhysicalNode | PhysicalRelationship, args: Record<string, any> | null): Promise<Record<string, any>[]>;
|
|
14
|
+
}
|
|
15
|
+
export default DataCache;
|
|
16
|
+
//# sourceMappingURL=data_cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data_cache.d.ts","sourceRoot":"","sources":["../../src/graph/data_cache.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;GAOG;AACH,cAAM,SAAS;IACX,OAAO,CAAC,MAAM,CAAiD;IAElD,GAAG,CACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,GAAG,oBAAoB,EAC7C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAYpC;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
/**
|
|
13
|
+
* Per-query cache for virtual graph data.
|
|
14
|
+
*
|
|
15
|
+
* Each top-level Runner creates its own DataCache instance,
|
|
16
|
+
* ensuring thread-safety when multiple queries run concurrently.
|
|
17
|
+
* Filter pass-down queries (with args) bypass the cache since
|
|
18
|
+
* their results depend on runtime parameter values.
|
|
19
|
+
*/
|
|
20
|
+
class DataCache {
|
|
21
|
+
constructor() {
|
|
22
|
+
this._cache = new Map();
|
|
23
|
+
}
|
|
24
|
+
get(key, physical, args) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
if (args !== null) {
|
|
27
|
+
return physical.data(args);
|
|
28
|
+
}
|
|
29
|
+
const cached = this._cache.get(key);
|
|
30
|
+
if (cached !== undefined) {
|
|
31
|
+
return cached;
|
|
32
|
+
}
|
|
33
|
+
const data = yield physical.data(null);
|
|
34
|
+
this._cache.set(key, data);
|
|
35
|
+
return data;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.default = DataCache;
|
|
40
|
+
//# sourceMappingURL=data_cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data_cache.js","sourceRoot":"","sources":["../../src/graph/data_cache.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA;;;;;;;GAOG;AACH,MAAM,SAAS;IAAf;QACY,WAAM,GAAuC,IAAI,GAAG,EAAE,CAAC;IAkBnE,CAAC;IAhBgB,GAAG,CACZ,GAAW,EACX,QAA6C,EAC7C,IAAgC;;YAEhC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;CACJ;AAED,kBAAe,SAAS,CAAC"}
|
package/dist/graph/database.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import ASTNode from "../parsing/ast_node";
|
|
2
|
+
import DataCache from "./data_cache";
|
|
2
3
|
import Node from "./node";
|
|
3
4
|
import NodeData from "./node_data";
|
|
4
5
|
import PhysicalNode from "./physical_node";
|
|
@@ -9,6 +10,7 @@ declare class Database {
|
|
|
9
10
|
private static instance;
|
|
10
11
|
private static nodes;
|
|
11
12
|
private static relationships;
|
|
13
|
+
private _dataCache;
|
|
12
14
|
static getInstance(): Database;
|
|
13
15
|
addNode(node: Node, statement: ASTNode): void;
|
|
14
16
|
removeNode(node: Node): void;
|
|
@@ -18,6 +20,11 @@ declare class Database {
|
|
|
18
20
|
getRelationship(relationship: Relationship): PhysicalRelationship | null;
|
|
19
21
|
private isRelationshipCompatible;
|
|
20
22
|
private getRelationshipEntries;
|
|
23
|
+
/**
|
|
24
|
+
* Sets the data cache for the current query execution.
|
|
25
|
+
* Each top-level Runner creates its own DataCache instance.
|
|
26
|
+
*/
|
|
27
|
+
set dataCache(cache: DataCache);
|
|
21
28
|
schema(): Promise<Record<string, any>[]>;
|
|
22
29
|
getData(element: Node | Relationship): Promise<NodeData | RelationshipData>;
|
|
23
30
|
/**
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,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;IAC5E,OAAO,CAAC,UAAU,CAA8B;WAElC,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;IAyBhC,OAAO,CAAC,sBAAsB;IAgB9B;;;OAGG;IACH,IAAW,SAAS,CAAC,KAAK,EAAE,SAAS,EAEpC;IAEY,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;IAwExF;;;OAGG;IACH,OAAO,CAAC,WAAW;CAUtB;AAED,eAAe,QAAQ,CAAC"}
|
package/dist/graph/database.js
CHANGED
|
@@ -23,6 +23,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const data_cache_1 = __importDefault(require("./data_cache"));
|
|
26
27
|
const node_1 = __importDefault(require("./node"));
|
|
27
28
|
const node_data_1 = __importDefault(require("./node_data"));
|
|
28
29
|
const physical_node_1 = __importDefault(require("./physical_node"));
|
|
@@ -30,6 +31,9 @@ const physical_relationship_1 = __importDefault(require("./physical_relationship
|
|
|
30
31
|
const relationship_1 = __importDefault(require("./relationship"));
|
|
31
32
|
const relationship_data_1 = __importDefault(require("./relationship_data"));
|
|
32
33
|
class Database {
|
|
34
|
+
constructor() {
|
|
35
|
+
this._dataCache = new data_cache_1.default();
|
|
36
|
+
}
|
|
33
37
|
static getInstance() {
|
|
34
38
|
if (!Database.instance) {
|
|
35
39
|
Database.instance = new Database();
|
|
@@ -100,6 +104,13 @@ class Database {
|
|
|
100
104
|
}
|
|
101
105
|
return result;
|
|
102
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Sets the data cache for the current query execution.
|
|
109
|
+
* Each top-level Runner creates its own DataCache instance.
|
|
110
|
+
*/
|
|
111
|
+
set dataCache(cache) {
|
|
112
|
+
this._dataCache = cache;
|
|
113
|
+
}
|
|
103
114
|
schema() {
|
|
104
115
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
116
|
var _a, _b;
|
|
@@ -146,7 +157,7 @@ class Database {
|
|
|
146
157
|
// Unlabeled node: match all physical nodes in the database
|
|
147
158
|
const allRecords = [];
|
|
148
159
|
for (const [label, physical] of Database.nodes) {
|
|
149
|
-
const data = yield
|
|
160
|
+
const data = yield this._dataCache.get(`node:${label}`, physical, null);
|
|
150
161
|
for (const record of data) {
|
|
151
162
|
allRecords.push(Object.assign(Object.assign({}, record), { _label: label }));
|
|
152
163
|
}
|
|
@@ -159,7 +170,7 @@ class Database {
|
|
|
159
170
|
for (const lbl of element.labels) {
|
|
160
171
|
const physical = Database.nodes.get(lbl);
|
|
161
172
|
if (physical) {
|
|
162
|
-
const data = yield
|
|
173
|
+
const data = yield this._dataCache.get(`node:${lbl}`, physical, args);
|
|
163
174
|
for (const record of data) {
|
|
164
175
|
allRecords.push(Object.assign(Object.assign({}, record), { _label: lbl }));
|
|
165
176
|
}
|
|
@@ -171,7 +182,7 @@ class Database {
|
|
|
171
182
|
if (node === null) {
|
|
172
183
|
throw new Error(`Physical node not found for label ${element.label}`);
|
|
173
184
|
}
|
|
174
|
-
const data = yield node.
|
|
185
|
+
const data = yield this._dataCache.get(`node:${element.label}`, node, args);
|
|
175
186
|
const label = element.label;
|
|
176
187
|
const records = data.map((record) => (Object.assign(Object.assign({}, record), { _label: label })));
|
|
177
188
|
return new node_data_1.default(records);
|
|
@@ -188,7 +199,7 @@ class Database {
|
|
|
188
199
|
}
|
|
189
200
|
const allRecords = [];
|
|
190
201
|
for (const [typeName, physical] of physicalEntries) {
|
|
191
|
-
const records = (yield
|
|
202
|
+
const records = (yield this._dataCache.get(`rel:${typeName}`, physical, args));
|
|
192
203
|
for (const record of records) {
|
|
193
204
|
allRecords.push(Object.assign(Object.assign({}, record), { _type: typeName }));
|
|
194
205
|
}
|
|
@@ -199,7 +210,7 @@ class Database {
|
|
|
199
210
|
if (relationship === null) {
|
|
200
211
|
throw new Error(`Physical relationship not found for type ${element.type}`);
|
|
201
212
|
}
|
|
202
|
-
const data = yield
|
|
213
|
+
const data = yield this._dataCache.get(`rel:${element.type}`, relationship, args);
|
|
203
214
|
return new relationship_data_1.default(data);
|
|
204
215
|
}
|
|
205
216
|
else {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":"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"}
|