flowquery 1.0.69 → 1.0.71
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/README.md +682 -86
- package/dist/compute/provenance.d.ts +201 -0
- package/dist/compute/provenance.d.ts.map +1 -0
- package/dist/compute/provenance.js +216 -0
- package/dist/compute/provenance.js.map +1 -0
- package/dist/compute/runner.d.ts +202 -3
- package/dist/compute/runner.d.ts.map +1 -1
- package/dist/compute/runner.js +309 -2
- package/dist/compute/runner.js.map +1 -1
- package/dist/flowquery.min.js +1 -1
- package/dist/graph/bindings.d.ts +78 -0
- package/dist/graph/bindings.d.ts.map +1 -0
- package/dist/graph/bindings.js +224 -0
- package/dist/graph/bindings.js.map +1 -0
- package/dist/graph/data_cache.d.ts +4 -0
- package/dist/graph/data_cache.d.ts.map +1 -1
- package/dist/graph/data_cache.js +15 -3
- package/dist/graph/data_cache.js.map +1 -1
- package/dist/graph/data_resolver.d.ts.map +1 -1
- package/dist/graph/data_resolver.js +23 -4
- package/dist/graph/data_resolver.js.map +1 -1
- package/dist/graph/database.d.ts +4 -2
- package/dist/graph/database.d.ts.map +1 -1
- package/dist/graph/database.js +45 -9
- package/dist/graph/database.js.map +1 -1
- package/dist/graph/physical_node.d.ts +7 -2
- package/dist/graph/physical_node.d.ts.map +1 -1
- package/dist/graph/physical_node.js +22 -26
- package/dist/graph/physical_node.js.map +1 -1
- package/dist/graph/physical_relationship.d.ts +7 -2
- package/dist/graph/physical_relationship.d.ts.map +1 -1
- package/dist/graph/physical_relationship.js +22 -26
- package/dist/graph/physical_relationship.js.map +1 -1
- package/dist/graph/relationship_match_collector.d.ts.map +1 -1
- package/dist/graph/relationship_match_collector.js +9 -0
- package/dist/graph/relationship_match_collector.js.map +1 -1
- package/dist/graph/virtual_sources.d.ts +8 -0
- package/dist/graph/virtual_sources.d.ts.map +1 -0
- package/dist/graph/virtual_sources.js +31 -0
- package/dist/graph/virtual_sources.js.map +1 -0
- package/dist/graph/virtual_statement.d.ts +41 -0
- package/dist/graph/virtual_statement.d.ts.map +1 -0
- package/dist/graph/virtual_statement.js +143 -0
- package/dist/graph/virtual_statement.js.map +1 -0
- package/dist/index.browser.d.ts +3 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.d.ts +3 -3
- package/dist/index.node.d.ts.map +1 -1
- package/dist/index.node.js.map +1 -1
- package/dist/parsing/ast_node.d.ts +9 -0
- package/dist/parsing/ast_node.d.ts.map +1 -1
- package/dist/parsing/ast_node.js +21 -4
- package/dist/parsing/ast_node.js.map +1 -1
- package/dist/parsing/expressions/binding_reference.d.ts +16 -0
- package/dist/parsing/expressions/binding_reference.d.ts.map +1 -0
- package/dist/parsing/expressions/binding_reference.js +34 -0
- package/dist/parsing/expressions/binding_reference.js.map +1 -0
- package/dist/parsing/operations/aggregated_return.d.ts +10 -0
- package/dist/parsing/operations/aggregated_return.d.ts.map +1 -1
- package/dist/parsing/operations/aggregated_return.js +56 -3
- package/dist/parsing/operations/aggregated_return.js.map +1 -1
- package/dist/parsing/operations/aggregated_with.d.ts +20 -0
- package/dist/parsing/operations/aggregated_with.d.ts.map +1 -1
- package/dist/parsing/operations/aggregated_with.js +33 -1
- package/dist/parsing/operations/aggregated_with.js.map +1 -1
- package/dist/parsing/operations/create_node.d.ts +5 -1
- package/dist/parsing/operations/create_node.d.ts.map +1 -1
- package/dist/parsing/operations/create_node.js +12 -2
- package/dist/parsing/operations/create_node.js.map +1 -1
- package/dist/parsing/operations/create_relationship.d.ts +5 -1
- package/dist/parsing/operations/create_relationship.d.ts.map +1 -1
- package/dist/parsing/operations/create_relationship.js +12 -2
- package/dist/parsing/operations/create_relationship.js.map +1 -1
- package/dist/parsing/operations/drop_binding.d.ts +15 -0
- package/dist/parsing/operations/drop_binding.d.ts.map +1 -0
- package/dist/parsing/operations/drop_binding.js +42 -0
- package/dist/parsing/operations/drop_binding.js.map +1 -0
- package/dist/parsing/operations/group_by.d.ts +32 -0
- package/dist/parsing/operations/group_by.d.ts.map +1 -1
- package/dist/parsing/operations/group_by.js +103 -0
- package/dist/parsing/operations/group_by.js.map +1 -1
- package/dist/parsing/operations/let.d.ts +36 -0
- package/dist/parsing/operations/let.d.ts.map +1 -0
- package/dist/parsing/operations/let.js +154 -0
- package/dist/parsing/operations/let.js.map +1 -0
- package/dist/parsing/operations/load.d.ts +31 -0
- package/dist/parsing/operations/load.d.ts.map +1 -1
- package/dist/parsing/operations/load.js +102 -2
- package/dist/parsing/operations/load.js.map +1 -1
- package/dist/parsing/operations/merge.d.ts +158 -0
- package/dist/parsing/operations/merge.d.ts.map +1 -0
- package/dist/parsing/operations/merge.js +338 -0
- package/dist/parsing/operations/merge.js.map +1 -0
- package/dist/parsing/operations/order_by.d.ts +6 -0
- package/dist/parsing/operations/order_by.d.ts.map +1 -1
- package/dist/parsing/operations/order_by.js +10 -1
- package/dist/parsing/operations/order_by.js.map +1 -1
- package/dist/parsing/operations/refresh_binding.d.ts +15 -0
- package/dist/parsing/operations/refresh_binding.d.ts.map +1 -0
- package/dist/parsing/operations/refresh_binding.js +42 -0
- package/dist/parsing/operations/refresh_binding.js.map +1 -0
- package/dist/parsing/operations/refresh_node.d.ts +11 -0
- package/dist/parsing/operations/refresh_node.d.ts.map +1 -0
- package/dist/parsing/operations/refresh_node.js +46 -0
- package/dist/parsing/operations/refresh_node.js.map +1 -0
- package/dist/parsing/operations/refresh_relationship.d.ts +11 -0
- package/dist/parsing/operations/refresh_relationship.d.ts.map +1 -0
- package/dist/parsing/operations/refresh_relationship.js +46 -0
- package/dist/parsing/operations/refresh_relationship.js.map +1 -0
- package/dist/parsing/operations/return.d.ts +34 -0
- package/dist/parsing/operations/return.d.ts.map +1 -1
- package/dist/parsing/operations/return.js +102 -3
- package/dist/parsing/operations/return.js.map +1 -1
- package/dist/parsing/operations/union.d.ts +19 -2
- package/dist/parsing/operations/union.d.ts.map +1 -1
- package/dist/parsing/operations/union.js +47 -11
- package/dist/parsing/operations/union.js.map +1 -1
- package/dist/parsing/operations/union_all.d.ts +5 -1
- package/dist/parsing/operations/union_all.d.ts.map +1 -1
- package/dist/parsing/operations/union_all.js +8 -2
- package/dist/parsing/operations/union_all.js.map +1 -1
- package/dist/parsing/operations/update.d.ts +27 -0
- package/dist/parsing/operations/update.d.ts.map +1 -0
- package/dist/parsing/operations/update.js +88 -0
- package/dist/parsing/operations/update.js.map +1 -0
- package/dist/parsing/operations/update_delete.d.ts +43 -0
- package/dist/parsing/operations/update_delete.d.ts.map +1 -0
- package/dist/parsing/operations/update_delete.js +105 -0
- package/dist/parsing/operations/update_delete.js.map +1 -0
- package/dist/parsing/parser.d.ts +70 -1
- package/dist/parsing/parser.d.ts.map +1 -1
- package/dist/parsing/parser.js +704 -10
- package/dist/parsing/parser.js.map +1 -1
- package/dist/parsing/statement_info_crawler.d.ts +106 -0
- package/dist/parsing/statement_info_crawler.d.ts.map +1 -1
- package/dist/parsing/statement_info_crawler.js +231 -12
- package/dist/parsing/statement_info_crawler.js.map +1 -1
- package/dist/tokenization/keyword.d.ts +21 -1
- package/dist/tokenization/keyword.d.ts.map +1 -1
- package/dist/tokenization/keyword.js +20 -0
- package/dist/tokenization/keyword.js.map +1 -1
- package/dist/tokenization/token.d.ts +24 -0
- package/dist/tokenization/token.d.ts.map +1 -1
- package/dist/tokenization/token.js +73 -0
- package/dist/tokenization/token.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type ASTNode from "../parsing/ast_node";
|
|
2
|
+
/**
|
|
3
|
+
* One entry in the {@link Bindings} singleton. Plain bindings store
|
|
4
|
+
* their materialised `value` directly; refreshable bindings (created
|
|
5
|
+
* by `LET name = { ... } REFRESH EVERY n unit`) additionally store
|
|
6
|
+
* the backing `statement` and TTL so the value can be re-evaluated on
|
|
7
|
+
* read once stale.
|
|
8
|
+
*/
|
|
9
|
+
declare class BindingEntry {
|
|
10
|
+
value: any;
|
|
11
|
+
statement: ASTNode | null;
|
|
12
|
+
isRefreshable: boolean;
|
|
13
|
+
refreshEveryMs: number | null;
|
|
14
|
+
cachedAt: number;
|
|
15
|
+
primed: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Singleton store for `LET`-bound values.
|
|
19
|
+
*
|
|
20
|
+
* Bindings live alongside virtual node/relationship definitions in
|
|
21
|
+
* {@link Database}: they are persistent across `Runner` invocations
|
|
22
|
+
* for the lifetime of the process.
|
|
23
|
+
*
|
|
24
|
+
* A binding's value may be any JSON-serialisable value: a primitive, an
|
|
25
|
+
* array, or a map. Bindings are referenced by name inside virtual
|
|
26
|
+
* definitions and inside `LOAD JSON FROM <name>` expressions; the
|
|
27
|
+
* `UPDATE` statement replaces an existing binding wholesale, while
|
|
28
|
+
* `MERGE INTO ... USING ...` upserts per row.
|
|
29
|
+
*
|
|
30
|
+
* `LET name = { ... } REFRESH EVERY n unit` registers a refreshable
|
|
31
|
+
* binding: the sub-query is evaluated eagerly and the result is
|
|
32
|
+
* cached, but the TTL causes the next read after expiry to re-execute
|
|
33
|
+
* the sub-query. Refreshable bindings cannot be silently overwritten
|
|
34
|
+
* by another `LET`, `UPDATE`, or `MERGE`; callers must `DROP BINDING`
|
|
35
|
+
* first.
|
|
36
|
+
*/
|
|
37
|
+
declare class Bindings {
|
|
38
|
+
private static instance;
|
|
39
|
+
private _entries;
|
|
40
|
+
private _materializing;
|
|
41
|
+
static getInstance(): Bindings;
|
|
42
|
+
/**
|
|
43
|
+
* Eager set, used by plain `LET`, `UPDATE`, and `MERGE INTO`.
|
|
44
|
+
* Throws if the name is currently bound to a refreshable binding;
|
|
45
|
+
* the caller must `DROP BINDING` first.
|
|
46
|
+
*/
|
|
47
|
+
set(name: string, value: any): void;
|
|
48
|
+
get(name: string): any;
|
|
49
|
+
has(name: string): boolean;
|
|
50
|
+
delete(name: string): void;
|
|
51
|
+
/** Replace all entries (test/teardown helper). */
|
|
52
|
+
clear(): void;
|
|
53
|
+
/** Inspect the underlying entry without materialising it. */
|
|
54
|
+
getEntry(name: string): BindingEntry | undefined;
|
|
55
|
+
isRefreshable(name: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Register a refreshable binding with an eagerly evaluated value
|
|
58
|
+
* and a backing sub-query that is re-executed when the TTL has
|
|
59
|
+
* elapsed. Throws if a binding with the same name already exists;
|
|
60
|
+
* callers must `DROP BINDING` first.
|
|
61
|
+
*/
|
|
62
|
+
registerRefreshable(name: string, value: any, statement: ASTNode, refreshEveryMs: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Clear the cached value of a refreshable binding so the next
|
|
65
|
+
* {@link materialize} call re-executes the backing sub-query.
|
|
66
|
+
* No-op for plain bindings.
|
|
67
|
+
*/
|
|
68
|
+
invalidate(name: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Re-evaluate a refreshable binding's backing sub-query if the
|
|
71
|
+
* cached value is stale (TTL elapsed or invalidated). No-op for
|
|
72
|
+
* plain bindings or for refreshable bindings that are still fresh.
|
|
73
|
+
*/
|
|
74
|
+
materialize(name: string): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
export default Bindings;
|
|
77
|
+
export { BindingEntry };
|
|
78
|
+
//# sourceMappingURL=bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/graph/bindings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C;;;;;;GAMG;AACH,cAAM,YAAY;IACP,KAAK,EAAE,GAAG,CAAa;IACvB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAQ;IACjC,aAAa,EAAE,OAAO,CAAS;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrC,QAAQ,EAAE,MAAM,CAAK;IACrB,MAAM,EAAE,OAAO,CAAS;CAClC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAM,QAAQ;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,cAAc,CAA0B;WAElC,WAAW,IAAI,QAAQ;IAOrC;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAkBnC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAKtB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC,kDAAkD;IAC3C,KAAK,IAAI,IAAI;IAIpB,6DAA6D;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIhD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;OAKG;IACI,mBAAmB,CACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,OAAO,EAClB,cAAc,EAAE,MAAM,GACvB,IAAI;IAcP;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUrC;;;;OAIG;IACU,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA4CxD;AAED,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.BindingEntry = void 0;
|
|
46
|
+
const virtual_sources_1 = require("./virtual_sources");
|
|
47
|
+
/**
|
|
48
|
+
* One entry in the {@link Bindings} singleton. Plain bindings store
|
|
49
|
+
* their materialised `value` directly; refreshable bindings (created
|
|
50
|
+
* by `LET name = { ... } REFRESH EVERY n unit`) additionally store
|
|
51
|
+
* the backing `statement` and TTL so the value can be re-evaluated on
|
|
52
|
+
* read once stale.
|
|
53
|
+
*/
|
|
54
|
+
class BindingEntry {
|
|
55
|
+
constructor() {
|
|
56
|
+
this.value = undefined;
|
|
57
|
+
this.statement = null;
|
|
58
|
+
this.isRefreshable = false;
|
|
59
|
+
this.refreshEveryMs = null;
|
|
60
|
+
this.cachedAt = 0;
|
|
61
|
+
this.primed = false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.BindingEntry = BindingEntry;
|
|
65
|
+
/**
|
|
66
|
+
* Singleton store for `LET`-bound values.
|
|
67
|
+
*
|
|
68
|
+
* Bindings live alongside virtual node/relationship definitions in
|
|
69
|
+
* {@link Database}: they are persistent across `Runner` invocations
|
|
70
|
+
* for the lifetime of the process.
|
|
71
|
+
*
|
|
72
|
+
* A binding's value may be any JSON-serialisable value: a primitive, an
|
|
73
|
+
* array, or a map. Bindings are referenced by name inside virtual
|
|
74
|
+
* definitions and inside `LOAD JSON FROM <name>` expressions; the
|
|
75
|
+
* `UPDATE` statement replaces an existing binding wholesale, while
|
|
76
|
+
* `MERGE INTO ... USING ...` upserts per row.
|
|
77
|
+
*
|
|
78
|
+
* `LET name = { ... } REFRESH EVERY n unit` registers a refreshable
|
|
79
|
+
* binding: the sub-query is evaluated eagerly and the result is
|
|
80
|
+
* cached, but the TTL causes the next read after expiry to re-execute
|
|
81
|
+
* the sub-query. Refreshable bindings cannot be silently overwritten
|
|
82
|
+
* by another `LET`, `UPDATE`, or `MERGE`; callers must `DROP BINDING`
|
|
83
|
+
* first.
|
|
84
|
+
*/
|
|
85
|
+
class Bindings {
|
|
86
|
+
constructor() {
|
|
87
|
+
this._entries = new Map();
|
|
88
|
+
this._materializing = new Set();
|
|
89
|
+
}
|
|
90
|
+
static getInstance() {
|
|
91
|
+
if (!Bindings.instance) {
|
|
92
|
+
Bindings.instance = new Bindings();
|
|
93
|
+
}
|
|
94
|
+
return Bindings.instance;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Eager set, used by plain `LET`, `UPDATE`, and `MERGE INTO`.
|
|
98
|
+
* Throws if the name is currently bound to a refreshable binding;
|
|
99
|
+
* the caller must `DROP BINDING` first.
|
|
100
|
+
*/
|
|
101
|
+
set(name, value) {
|
|
102
|
+
const existing = this._entries.get(name);
|
|
103
|
+
if (existing !== undefined && existing.isRefreshable) {
|
|
104
|
+
throw new Error(`Binding '${name}' is refreshable; DROP BINDING ${name} first`);
|
|
105
|
+
}
|
|
106
|
+
let entry = existing;
|
|
107
|
+
if (entry === undefined) {
|
|
108
|
+
entry = new BindingEntry();
|
|
109
|
+
this._entries.set(name, entry);
|
|
110
|
+
}
|
|
111
|
+
entry.value = value;
|
|
112
|
+
entry.statement = null;
|
|
113
|
+
entry.isRefreshable = false;
|
|
114
|
+
entry.refreshEveryMs = null;
|
|
115
|
+
entry.cachedAt = Date.now();
|
|
116
|
+
entry.primed = true;
|
|
117
|
+
}
|
|
118
|
+
get(name) {
|
|
119
|
+
const entry = this._entries.get(name);
|
|
120
|
+
return entry === undefined ? undefined : entry.value;
|
|
121
|
+
}
|
|
122
|
+
has(name) {
|
|
123
|
+
return this._entries.has(name);
|
|
124
|
+
}
|
|
125
|
+
delete(name) {
|
|
126
|
+
this._entries.delete(name);
|
|
127
|
+
}
|
|
128
|
+
/** Replace all entries (test/teardown helper). */
|
|
129
|
+
clear() {
|
|
130
|
+
this._entries.clear();
|
|
131
|
+
}
|
|
132
|
+
/** Inspect the underlying entry without materialising it. */
|
|
133
|
+
getEntry(name) {
|
|
134
|
+
return this._entries.get(name);
|
|
135
|
+
}
|
|
136
|
+
isRefreshable(name) {
|
|
137
|
+
var _a;
|
|
138
|
+
return ((_a = this._entries.get(name)) === null || _a === void 0 ? void 0 : _a.isRefreshable) === true;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Register a refreshable binding with an eagerly evaluated value
|
|
142
|
+
* and a backing sub-query that is re-executed when the TTL has
|
|
143
|
+
* elapsed. Throws if a binding with the same name already exists;
|
|
144
|
+
* callers must `DROP BINDING` first.
|
|
145
|
+
*/
|
|
146
|
+
registerRefreshable(name, value, statement, refreshEveryMs) {
|
|
147
|
+
if (this._entries.has(name)) {
|
|
148
|
+
throw new Error(`Binding '${name}' already exists; DROP BINDING ${name} first`);
|
|
149
|
+
}
|
|
150
|
+
const entry = new BindingEntry();
|
|
151
|
+
entry.value = value;
|
|
152
|
+
entry.statement = statement;
|
|
153
|
+
entry.isRefreshable = true;
|
|
154
|
+
entry.refreshEveryMs = refreshEveryMs;
|
|
155
|
+
entry.primed = true;
|
|
156
|
+
entry.cachedAt = Date.now();
|
|
157
|
+
this._entries.set(name, entry);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Clear the cached value of a refreshable binding so the next
|
|
161
|
+
* {@link materialize} call re-executes the backing sub-query.
|
|
162
|
+
* No-op for plain bindings.
|
|
163
|
+
*/
|
|
164
|
+
invalidate(name) {
|
|
165
|
+
const entry = this._entries.get(name);
|
|
166
|
+
if (entry === undefined || !entry.isRefreshable) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
entry.value = undefined;
|
|
170
|
+
entry.primed = false;
|
|
171
|
+
entry.cachedAt = 0;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Re-evaluate a refreshable binding's backing sub-query if the
|
|
175
|
+
* cached value is stale (TTL elapsed or invalidated). No-op for
|
|
176
|
+
* plain bindings or for refreshable bindings that are still fresh.
|
|
177
|
+
*/
|
|
178
|
+
materialize(name) {
|
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
const entry = this._entries.get(name);
|
|
181
|
+
if (entry === undefined || !entry.isRefreshable || entry.statement === null) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const isFresh = entry.primed &&
|
|
185
|
+
entry.refreshEveryMs !== null &&
|
|
186
|
+
Date.now() - entry.cachedAt < entry.refreshEveryMs;
|
|
187
|
+
if (isFresh) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (this._materializing.has(name)) {
|
|
191
|
+
throw new Error(`Cyclic refreshable binding dependency detected while materialising '${name}'`);
|
|
192
|
+
}
|
|
193
|
+
this._materializing.add(name);
|
|
194
|
+
try {
|
|
195
|
+
// Lazy dynamic import to avoid a load-time cycle:
|
|
196
|
+
// bindings -> runner -> parsing -> graph (back to here).
|
|
197
|
+
const RunnerCtor = (yield Promise.resolve().then(() => __importStar(require("../compute/runner")))).default;
|
|
198
|
+
// Capture provenance on refresh so downstream readers can
|
|
199
|
+
// chase lineage back through this LET binding (symmetric to
|
|
200
|
+
// initial materialisation in `Let.run`).
|
|
201
|
+
const runner = new RunnerCtor(null, entry.statement, null, { provenance: true });
|
|
202
|
+
yield runner.run();
|
|
203
|
+
entry.value = runner.results;
|
|
204
|
+
const prov = runner.provenance;
|
|
205
|
+
if (Array.isArray(entry.value)) {
|
|
206
|
+
const len = Math.min(prov.length, entry.value.length);
|
|
207
|
+
for (let i = 0; i < len; i++) {
|
|
208
|
+
const row = entry.value[i];
|
|
209
|
+
if (row !== null && typeof row === "object") {
|
|
210
|
+
(0, virtual_sources_1.attachVirtualSource)(row, prov[i]);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
entry.primed = true;
|
|
215
|
+
entry.cachedAt = Date.now();
|
|
216
|
+
}
|
|
217
|
+
finally {
|
|
218
|
+
this._materializing.delete(name);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.default = Bindings;
|
|
224
|
+
//# sourceMappingURL=bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/graph/bindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,10 @@ import PhysicalRelationship from "./physical_relationship";
|
|
|
10
10
|
*/
|
|
11
11
|
declare class DataCache {
|
|
12
12
|
private _cache;
|
|
13
|
+
private _provenance;
|
|
14
|
+
constructor(provenance?: boolean);
|
|
15
|
+
/** Whether sub-queries should be run with provenance enabled. */
|
|
16
|
+
get provenance(): boolean;
|
|
13
17
|
get(key: string, physical: PhysicalNode | PhysicalRelationship, args: Record<string, any> | null): Promise<Record<string, any>[]>;
|
|
14
18
|
}
|
|
15
19
|
export default DataCache;
|
|
@@ -1 +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;
|
|
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;IAC/D,OAAO,CAAC,WAAW,CAAU;gBAEjB,UAAU,GAAE,OAAe;IAIvC,iEAAiE;IACjE,IAAW,UAAU,IAAI,OAAO,CAE/B;IAEY,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;CAmBpC;AAED,eAAe,SAAS,CAAC"}
|
package/dist/graph/data_cache.js
CHANGED
|
@@ -18,19 +18,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
* their results depend on runtime parameter values.
|
|
19
19
|
*/
|
|
20
20
|
class DataCache {
|
|
21
|
-
constructor() {
|
|
21
|
+
constructor(provenance = false) {
|
|
22
22
|
this._cache = new Map();
|
|
23
|
+
this._provenance = provenance;
|
|
24
|
+
}
|
|
25
|
+
/** Whether sub-queries should be run with provenance enabled. */
|
|
26
|
+
get provenance() {
|
|
27
|
+
return this._provenance;
|
|
23
28
|
}
|
|
24
29
|
get(key, physical, args) {
|
|
25
30
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
31
|
if (args !== null) {
|
|
27
|
-
return physical.data(args);
|
|
32
|
+
return physical.data(args, this._provenance);
|
|
33
|
+
}
|
|
34
|
+
// Provenance mode must re-run the inner query each invocation
|
|
35
|
+
// because the virtual-source weak map is populated only on the
|
|
36
|
+
// freshly produced records. Static caches store inert records
|
|
37
|
+
// with no back-links.
|
|
38
|
+
if (this._provenance) {
|
|
39
|
+
return physical.data(null, true);
|
|
28
40
|
}
|
|
29
41
|
const cached = this._cache.get(key);
|
|
30
42
|
if (cached !== undefined) {
|
|
31
43
|
return cached;
|
|
32
44
|
}
|
|
33
|
-
const data = yield physical.data(null);
|
|
45
|
+
const data = yield physical.data(null, false);
|
|
34
46
|
this._cache.set(key, data);
|
|
35
47
|
return data;
|
|
36
48
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_cache.js","sourceRoot":"","sources":["../../src/graph/data_cache.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA;;;;;;;GAOG;AACH,MAAM,SAAS;
|
|
1
|
+
{"version":3,"file":"data_cache.js","sourceRoot":"","sources":["../../src/graph/data_cache.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA;;;;;;;GAOG;AACH,MAAM,SAAS;IAIX,YAAY,aAAsB,KAAK;QAH/B,WAAM,GAAuC,IAAI,GAAG,EAAE,CAAC;QAI3D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,iEAAiE;IACjE,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAEY,GAAG,CACZ,GAAW,EACX,QAA6C,EAC7C,IAAgC;;YAEhC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACjD,CAAC;YACD,8DAA8D;YAC9D,+DAA+D;YAC/D,+DAA+D;YAC/D,sBAAsB;YACtB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,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,EAAE,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;CACJ;AAED,kBAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_resolver.d.ts","sourceRoot":"","sources":["../../src/graph/data_resolver.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAwB,MAAM,aAAa,CAAC;AAGnD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAwC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"data_resolver.d.ts","sourceRoot":"","sources":["../../src/graph/data_resolver.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAwB,MAAM,aAAa,CAAC;AAGnD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,gBAAwC,MAAM,qBAAqB,CAAC;AAG3E;;;;GAIG;AACH,cAAM,YAAY;IACd,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,UAAU,CAA8B;WAElC,WAAW,IAAI,YAAY;IAMzC;;;OAGG;IACH,IAAW,SAAS,CAAC,KAAK,EAAE,SAAS,EAEpC;IAEY,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IA0CxC,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC;IAgFxF,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,aAAa;IAU5B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAevC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,MAAM,CAAC,WAAW;CAU7B;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -30,6 +30,7 @@ const node_data_1 = __importDefault(require("./node_data"));
|
|
|
30
30
|
const node_reference_1 = __importDefault(require("./node_reference"));
|
|
31
31
|
const relationship_1 = __importDefault(require("./relationship"));
|
|
32
32
|
const relationship_data_1 = __importDefault(require("./relationship_data"));
|
|
33
|
+
const virtual_sources_1 = require("./virtual_sources");
|
|
33
34
|
/**
|
|
34
35
|
* Resolves pattern elements (nodes and relationships) to data by querying
|
|
35
36
|
* the Database registry. Handles label compatibility, caching, and schema
|
|
@@ -105,7 +106,11 @@ class DataResolver {
|
|
|
105
106
|
for (const [label, physical] of db.nodes) {
|
|
106
107
|
const data = yield this._dataCache.get(`node:${label}`, physical, null);
|
|
107
108
|
for (const record of data) {
|
|
108
|
-
|
|
109
|
+
const enriched = Object.assign(Object.assign({}, record), { _label: label });
|
|
110
|
+
const src = (0, virtual_sources_1.getVirtualSource)(record);
|
|
111
|
+
if (src !== undefined)
|
|
112
|
+
(0, virtual_sources_1.attachVirtualSource)(enriched, src);
|
|
113
|
+
allRecords.push(enriched);
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
return new node_data_1.default(allRecords);
|
|
@@ -118,7 +123,11 @@ class DataResolver {
|
|
|
118
123
|
if (physical) {
|
|
119
124
|
const data = yield this._dataCache.get(`node:${lbl}`, physical, args);
|
|
120
125
|
for (const record of data) {
|
|
121
|
-
|
|
126
|
+
const enriched = Object.assign(Object.assign({}, record), { _label: lbl });
|
|
127
|
+
const src = (0, virtual_sources_1.getVirtualSource)(record);
|
|
128
|
+
if (src !== undefined)
|
|
129
|
+
(0, virtual_sources_1.attachVirtualSource)(enriched, src);
|
|
130
|
+
allRecords.push(enriched);
|
|
122
131
|
}
|
|
123
132
|
}
|
|
124
133
|
}
|
|
@@ -130,7 +139,13 @@ class DataResolver {
|
|
|
130
139
|
}
|
|
131
140
|
const data = yield this._dataCache.get(`node:${element.label}`, node, args);
|
|
132
141
|
const label = element.label;
|
|
133
|
-
const records = data.map((record) =>
|
|
142
|
+
const records = data.map((record) => {
|
|
143
|
+
const enriched = Object.assign(Object.assign({}, record), { _label: label });
|
|
144
|
+
const src = (0, virtual_sources_1.getVirtualSource)(record);
|
|
145
|
+
if (src !== undefined)
|
|
146
|
+
(0, virtual_sources_1.attachVirtualSource)(enriched, src);
|
|
147
|
+
return enriched;
|
|
148
|
+
});
|
|
134
149
|
return new node_data_1.default(records);
|
|
135
150
|
}
|
|
136
151
|
else if (element instanceof relationship_1.default) {
|
|
@@ -147,7 +162,11 @@ class DataResolver {
|
|
|
147
162
|
const cacheKey = `rel:${(_b = (_a = physical.source) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : ""}:${typeName}:${(_d = (_c = physical.target) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : ""}`;
|
|
148
163
|
const records = (yield this._dataCache.get(cacheKey, physical, args));
|
|
149
164
|
for (const record of records) {
|
|
150
|
-
|
|
165
|
+
const enriched = Object.assign(Object.assign({}, record), { _type: typeName });
|
|
166
|
+
const src = (0, virtual_sources_1.getVirtualSource)(record);
|
|
167
|
+
if (src !== undefined)
|
|
168
|
+
(0, virtual_sources_1.attachVirtualSource)(enriched, src);
|
|
169
|
+
allRecords.push(enriched);
|
|
151
170
|
}
|
|
152
171
|
}
|
|
153
172
|
return new relationship_data_1.default(allRecords);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_resolver.js","sourceRoot":"","sources":["../../src/graph/data_resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAqC;AACrC,0DAAkC;AAClC,kDAA0B;AAC1B,4DAAmD;AACnD,sEAA6C;AAE7C,kEAA0C;AAC1C,4EAA2E;
|
|
1
|
+
{"version":3,"file":"data_resolver.js","sourceRoot":"","sources":["../../src/graph/data_resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/graph/database.d.ts
CHANGED
|
@@ -12,13 +12,15 @@ declare class Database {
|
|
|
12
12
|
get nodes(): Map<string, PhysicalNode>;
|
|
13
13
|
/** Read-only access to registered relationships (type → endpoint-key → physical). */
|
|
14
14
|
get relationships(): Map<string, Map<string, PhysicalRelationship>>;
|
|
15
|
-
addNode(node: Node, statement: ASTNode): void;
|
|
15
|
+
addNode(node: Node, statement: ASTNode, isStatic?: boolean, refreshEveryMs?: number | null): void;
|
|
16
16
|
removeNode(node: Node): void;
|
|
17
|
+
refreshNode(node: Node): void;
|
|
17
18
|
getNode(node: Node): PhysicalNode | null;
|
|
18
19
|
/** Endpoint-only key: "Source:Target" */
|
|
19
20
|
private static endpointKey;
|
|
20
|
-
addRelationship(relationship: Relationship, statement: ASTNode): void;
|
|
21
|
+
addRelationship(relationship: Relationship, statement: ASTNode, isStatic?: boolean, refreshEveryMs?: number | null): void;
|
|
21
22
|
removeRelationship(relationship: Relationship): void;
|
|
23
|
+
refreshRelationship(relationship: Relationship): void;
|
|
22
24
|
getRelationship(relationship: Relationship): PhysicalRelationship | null;
|
|
23
25
|
}
|
|
24
26
|
export default Database;
|
|
@@ -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,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,cAAM,QAAQ;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAClC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAwC;IAC7D,OAAO,CAAC,MAAM,CAAC,cAAc,CAA6D;WAE5E,WAAW,IAAI,QAAQ;IAMrC,4CAA4C;IAC5C,IAAW,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAE5C;IACD,qFAAqF;IACrF,IAAW,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAEzE;IACM,OAAO,
|
|
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,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,cAAM,QAAQ;IACV,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAClC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAwC;IAC7D,OAAO,CAAC,MAAM,CAAC,cAAc,CAA6D;WAE5E,WAAW,IAAI,QAAQ;IAMrC,4CAA4C;IAC5C,IAAW,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAE5C;IACD,qFAAqF;IACrF,IAAW,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAEzE;IACM,OAAO,CACV,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,OAAO,EAClB,QAAQ,GAAE,OAAe,EACzB,cAAc,GAAE,MAAM,GAAG,IAAW,GACrC,IAAI;IAgBA,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAM5B,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAU7B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,GAAG,IAAI;IAG/C,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAC,WAAW;IAGnB,eAAe,CAClB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,OAAO,EAClB,QAAQ,GAAE,OAAe,EACzB,cAAc,GAAE,MAAM,GAAG,IAAW,GACrC,IAAI;IA4BA,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAepD,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAiBrD,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,oBAAoB,GAAG,IAAI;CAclF;AAED,eAAe,QAAQ,CAAC"}
|
package/dist/graph/database.js
CHANGED
|
@@ -20,12 +20,18 @@ class Database {
|
|
|
20
20
|
get relationships() {
|
|
21
21
|
return Database._relationships;
|
|
22
22
|
}
|
|
23
|
-
addNode(node, statement) {
|
|
23
|
+
addNode(node, statement, isStatic = false, refreshEveryMs = null) {
|
|
24
24
|
if (node.label === null) {
|
|
25
25
|
throw new Error("Node label is null");
|
|
26
26
|
}
|
|
27
|
+
const existing = Database._nodes.get(node.label);
|
|
28
|
+
if (existing !== undefined && (existing.isStatic || isStatic)) {
|
|
29
|
+
throw new Error(`Virtual node (:${node.label}) already exists; DROP VIRTUAL (:${node.label}) first`);
|
|
30
|
+
}
|
|
27
31
|
const physical = new physical_node_1.default(null, node.label);
|
|
28
32
|
physical.statement = statement;
|
|
33
|
+
physical.isStatic = isStatic;
|
|
34
|
+
physical.refreshEveryMs = refreshEveryMs;
|
|
29
35
|
Database._nodes.set(node.label, physical);
|
|
30
36
|
}
|
|
31
37
|
removeNode(node) {
|
|
@@ -34,6 +40,16 @@ class Database {
|
|
|
34
40
|
}
|
|
35
41
|
Database._nodes.delete(node.label);
|
|
36
42
|
}
|
|
43
|
+
refreshNode(node) {
|
|
44
|
+
if (node.label === null) {
|
|
45
|
+
throw new Error("Node label is null");
|
|
46
|
+
}
|
|
47
|
+
const physical = Database._nodes.get(node.label);
|
|
48
|
+
if (physical === undefined) {
|
|
49
|
+
throw new Error(`Virtual node (:${node.label}) does not exist`);
|
|
50
|
+
}
|
|
51
|
+
physical.invalidateCache();
|
|
52
|
+
}
|
|
37
53
|
getNode(node) {
|
|
38
54
|
return Database._nodes.get(node.label) || null;
|
|
39
55
|
}
|
|
@@ -41,22 +57,29 @@ class Database {
|
|
|
41
57
|
static endpointKey(sourceLabel, targetLabel) {
|
|
42
58
|
return `${sourceLabel !== null && sourceLabel !== void 0 ? sourceLabel : ""}:${targetLabel !== null && targetLabel !== void 0 ? targetLabel : ""}`;
|
|
43
59
|
}
|
|
44
|
-
addRelationship(relationship, statement) {
|
|
45
|
-
var _a, _b, _c, _d;
|
|
60
|
+
addRelationship(relationship, statement, isStatic = false, refreshEveryMs = null) {
|
|
61
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
46
62
|
if (relationship.type === null) {
|
|
47
63
|
throw new Error("Relationship type is null");
|
|
48
64
|
}
|
|
65
|
+
const key = Database.endpointKey((_b = (_a = relationship.source) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : null, (_d = (_c = relationship.target) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : null);
|
|
66
|
+
const typeMap = Database._relationships.get(relationship.type);
|
|
67
|
+
const existing = typeMap === null || typeMap === void 0 ? void 0 : typeMap.get(key);
|
|
68
|
+
if (existing !== undefined && (existing.isStatic || isStatic)) {
|
|
69
|
+
throw new Error(`Virtual relationship [:${relationship.type}] between (:${(_f = (_e = relationship.source) === null || _e === void 0 ? void 0 : _e.label) !== null && _f !== void 0 ? _f : ""}) and (:${(_h = (_g = relationship.target) === null || _g === void 0 ? void 0 : _g.label) !== null && _h !== void 0 ? _h : ""}) already exists; DROP VIRTUAL ...-[:${relationship.type}]-... first`);
|
|
70
|
+
}
|
|
49
71
|
const physical = new physical_relationship_1.default(null, relationship.type);
|
|
50
72
|
physical.statement = statement;
|
|
51
73
|
physical.source = relationship.source;
|
|
52
74
|
physical.target = relationship.target;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
75
|
+
physical.isStatic = isStatic;
|
|
76
|
+
physical.refreshEveryMs = refreshEveryMs;
|
|
77
|
+
let map = typeMap;
|
|
78
|
+
if (!map) {
|
|
79
|
+
map = new Map();
|
|
80
|
+
Database._relationships.set(relationship.type, map);
|
|
58
81
|
}
|
|
59
|
-
|
|
82
|
+
map.set(key, physical);
|
|
60
83
|
}
|
|
61
84
|
removeRelationship(relationship) {
|
|
62
85
|
var _a, _b, _c, _d;
|
|
@@ -72,6 +95,19 @@ class Database {
|
|
|
72
95
|
Database._relationships.delete(relationship.type);
|
|
73
96
|
}
|
|
74
97
|
}
|
|
98
|
+
refreshRelationship(relationship) {
|
|
99
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
100
|
+
if (relationship.type === null) {
|
|
101
|
+
throw new Error("Relationship type is null");
|
|
102
|
+
}
|
|
103
|
+
const typeMap = Database._relationships.get(relationship.type);
|
|
104
|
+
const key = Database.endpointKey((_b = (_a = relationship.source) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : null, (_d = (_c = relationship.target) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : null);
|
|
105
|
+
const physical = typeMap === null || typeMap === void 0 ? void 0 : typeMap.get(key);
|
|
106
|
+
if (physical === undefined) {
|
|
107
|
+
throw new Error(`Virtual relationship [:${relationship.type}] between (:${(_f = (_e = relationship.source) === null || _e === void 0 ? void 0 : _e.label) !== null && _f !== void 0 ? _f : ""}) and (:${(_h = (_g = relationship.target) === null || _g === void 0 ? void 0 : _g.label) !== null && _h !== void 0 ? _h : ""}) does not exist`);
|
|
108
|
+
}
|
|
109
|
+
physical.invalidateCache();
|
|
110
|
+
}
|
|
75
111
|
getRelationship(relationship) {
|
|
76
112
|
var _a, _b, _c, _d, _e;
|
|
77
113
|
const typeMap = Database._relationships.get(relationship.type);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":";;;;;AAEA,oEAA2C;AAC3C,oFAA2D;AAG3D,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;IACD,4CAA4C;IAC5C,IAAW,KAAK;QACZ,OAAO,QAAQ,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,qFAAqF;IACrF,IAAW,aAAa;QACpB,OAAO,QAAQ,CAAC,cAAc,CAAC;IACnC,CAAC;IACM,OAAO,
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/graph/database.ts"],"names":[],"mappings":"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"}
|