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
|
@@ -12,11 +12,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const provenance_1 = require("../../compute/provenance");
|
|
15
16
|
const projection_1 = __importDefault(require("./projection"));
|
|
16
17
|
class Node {
|
|
17
18
|
constructor(value = null) {
|
|
18
19
|
this._children = new Map();
|
|
19
20
|
this._elements = null;
|
|
21
|
+
this._provenanceNodes = null;
|
|
22
|
+
this._provenanceRels = null;
|
|
23
|
+
this._provenanceRows = null;
|
|
20
24
|
this._value = value;
|
|
21
25
|
}
|
|
22
26
|
get value() {
|
|
@@ -31,6 +35,32 @@ class Node {
|
|
|
31
35
|
set elements(elements) {
|
|
32
36
|
this._elements = elements;
|
|
33
37
|
}
|
|
38
|
+
/** Per-group dedup map for contributing node bindings (lazy). */
|
|
39
|
+
get provenanceNodes() {
|
|
40
|
+
if (this._provenanceNodes === null) {
|
|
41
|
+
this._provenanceNodes = new Map();
|
|
42
|
+
}
|
|
43
|
+
return this._provenanceNodes;
|
|
44
|
+
}
|
|
45
|
+
/** Per-group dedup map for contributing relationship bindings (lazy). */
|
|
46
|
+
get provenanceRelationships() {
|
|
47
|
+
if (this._provenanceRels === null) {
|
|
48
|
+
this._provenanceRels = new Map();
|
|
49
|
+
}
|
|
50
|
+
return this._provenanceRels;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Per-input-row contribution segments in arrival order. One entry is
|
|
54
|
+
* appended per `GroupBy.run()` call that lands in this group, so an
|
|
55
|
+
* aggregate row's `provenance.rows` aligns positionally with
|
|
56
|
+
* `collect(...)` outputs from the same group.
|
|
57
|
+
*/
|
|
58
|
+
get provenanceRows() {
|
|
59
|
+
if (this._provenanceRows === null) {
|
|
60
|
+
this._provenanceRows = [];
|
|
61
|
+
}
|
|
62
|
+
return this._provenanceRows;
|
|
63
|
+
}
|
|
34
64
|
}
|
|
35
65
|
class GroupBy extends projection_1.default {
|
|
36
66
|
constructor() {
|
|
@@ -40,14 +70,55 @@ class GroupBy extends projection_1.default {
|
|
|
40
70
|
this._mappers = null;
|
|
41
71
|
this._reducers = null;
|
|
42
72
|
this._where = null;
|
|
73
|
+
this._provenanceSources = null;
|
|
43
74
|
}
|
|
44
75
|
run() {
|
|
45
76
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
77
|
this.resetTree();
|
|
47
78
|
this.map();
|
|
48
79
|
this.reduce();
|
|
80
|
+
this.recordProvenance();
|
|
49
81
|
});
|
|
50
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Register a provenance source whose snapshot is folded into the
|
|
85
|
+
* currently active group on every `run()`. May be called multiple
|
|
86
|
+
* times to compose contributions from several upstream MATCHes or
|
|
87
|
+
* upstream aggregation boundaries.
|
|
88
|
+
*/
|
|
89
|
+
addProvenanceSource(source) {
|
|
90
|
+
if (this._provenanceSources === null) {
|
|
91
|
+
this._provenanceSources = [];
|
|
92
|
+
}
|
|
93
|
+
this._provenanceSources.push(source);
|
|
94
|
+
}
|
|
95
|
+
get provenanceEnabled() {
|
|
96
|
+
return this._provenanceSources !== null;
|
|
97
|
+
}
|
|
98
|
+
recordProvenance() {
|
|
99
|
+
if (this._provenanceSources === null)
|
|
100
|
+
return;
|
|
101
|
+
const nodeMap = this.current.provenanceNodes;
|
|
102
|
+
const relMap = this.current.provenanceRelationships;
|
|
103
|
+
// Per-input-row segment: a single merged contribution for THIS run().
|
|
104
|
+
const rowSegment = { nodes: [], relationships: [] };
|
|
105
|
+
for (const src of this._provenanceSources) {
|
|
106
|
+
const snap = src.snapshot();
|
|
107
|
+
for (const b of snap.nodes) {
|
|
108
|
+
rowSegment.nodes.push(b);
|
|
109
|
+
const k = (0, provenance_1.nodeBindingKey)(b);
|
|
110
|
+
if (!nodeMap.has(k))
|
|
111
|
+
nodeMap.set(k, b);
|
|
112
|
+
}
|
|
113
|
+
for (const b of snap.relationships) {
|
|
114
|
+
rowSegment.relationships.push(b);
|
|
115
|
+
const k = (0, provenance_1.relationshipBindingKey)(b);
|
|
116
|
+
if (!relMap.has(k))
|
|
117
|
+
relMap.set(k, b);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
this.current.provenanceRows.push(rowSegment);
|
|
121
|
+
}
|
|
51
122
|
get root() {
|
|
52
123
|
return this._root;
|
|
53
124
|
}
|
|
@@ -132,6 +203,38 @@ class GroupBy extends projection_1.default {
|
|
|
132
203
|
}
|
|
133
204
|
}
|
|
134
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Walks the group tree in the same traversal order as
|
|
208
|
+
* {@link generate_results}, yielding the materialised {@link
|
|
209
|
+
* RowProvenance} for each emitted group. When provenance is
|
|
210
|
+
* disabled, yields empty entries so callers can still zip cleanly.
|
|
211
|
+
*/
|
|
212
|
+
*generate_provenance(mapperIndex = 0, node = this.root) {
|
|
213
|
+
if (mapperIndex === 0 && node.children.size === 0 && this.mappers.length > 0) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (node.children.size > 0) {
|
|
217
|
+
for (const child of node.children.values()) {
|
|
218
|
+
this.mappers[mapperIndex].overridden = child.value;
|
|
219
|
+
yield* this.generate_provenance(mapperIndex + 1, child);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
if (node.elements === null) {
|
|
224
|
+
node.elements = this.reducers.map((reducer) => reducer.element());
|
|
225
|
+
}
|
|
226
|
+
node.elements.forEach((element, reducerIndex) => {
|
|
227
|
+
this.reducers[reducerIndex].overridden = element.value;
|
|
228
|
+
});
|
|
229
|
+
if (!this.where)
|
|
230
|
+
return;
|
|
231
|
+
yield {
|
|
232
|
+
nodes: Array.from(node.provenanceNodes.values()),
|
|
233
|
+
relationships: Array.from(node.provenanceRelationships.values()),
|
|
234
|
+
rows: node.provenanceRows,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
135
238
|
set where(where) {
|
|
136
239
|
this._where = where;
|
|
137
240
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group_by.js","sourceRoot":"","sources":["../../../src/parsing/operations/group_by.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"group_by.js","sourceRoot":"","sources":["../../../src/parsing/operations/group_by.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import ASTNode from "../ast_node";
|
|
2
|
+
import Expression from "../expressions/expression";
|
|
3
|
+
import Operation from "./operation";
|
|
4
|
+
/**
|
|
5
|
+
* `LET name = <expression-or-query>`: binds a value to a name in the
|
|
6
|
+
* global {@link Bindings} store.
|
|
7
|
+
*
|
|
8
|
+
* The right-hand side is either a parsed expression (literal, function
|
|
9
|
+
* call, identifier, ...) or a sub-query AST that is executed at
|
|
10
|
+
* run-time; a query RHS materialises to the list of result rows. In
|
|
11
|
+
* either case the value is stored eagerly when the `LET` operation
|
|
12
|
+
* runs and remains available to subsequent statements until
|
|
13
|
+
* overwritten or `DROP BINDING name` is executed.
|
|
14
|
+
*
|
|
15
|
+
* `LET name = { ... } REFRESH EVERY n unit` registers a refreshable
|
|
16
|
+
* binding: the sub-query is evaluated once at `LET` time, the result
|
|
17
|
+
* is cached, and the next read after the TTL has elapsed re-executes
|
|
18
|
+
* the sub-query. Refreshable bindings cannot be silently replaced;
|
|
19
|
+
* `DROP BINDING name` first.
|
|
20
|
+
*/
|
|
21
|
+
declare class Let extends Operation {
|
|
22
|
+
private _name;
|
|
23
|
+
private _expression;
|
|
24
|
+
private _subQuery;
|
|
25
|
+
private _value;
|
|
26
|
+
private _refreshEveryMs;
|
|
27
|
+
constructor(name: string, expression: Expression | null, subQuery: ASTNode | null, refreshEveryMs?: number | null);
|
|
28
|
+
get name(): string;
|
|
29
|
+
get expression(): Expression | null;
|
|
30
|
+
get subQuery(): ASTNode | null;
|
|
31
|
+
get refreshEveryMs(): number | null;
|
|
32
|
+
run(): Promise<void>;
|
|
33
|
+
get results(): Record<string, any>[];
|
|
34
|
+
}
|
|
35
|
+
export default Let;
|
|
36
|
+
//# sourceMappingURL=let.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"let.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/let.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,cAAM,GAAI,SAAQ,SAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAgB;gBAGnC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,QAAQ,EAAE,OAAO,GAAG,IAAI,EACxB,cAAc,GAAE,MAAM,GAAG,IAAW;IAexC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,UAAU,GAAG,IAAI,CAEzC;IAED,IAAW,QAAQ,IAAI,OAAO,GAAG,IAAI,CAEpC;IAED,IAAW,cAAc,IAAI,MAAM,GAAG,IAAI,CAEzC;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CjC,IAAW,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAK1C;CACJ;AAED,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
const bindings_1 = __importDefault(require("../../graph/bindings"));
|
|
49
|
+
const virtual_sources_1 = require("../../graph/virtual_sources");
|
|
50
|
+
const operation_1 = __importDefault(require("./operation"));
|
|
51
|
+
/**
|
|
52
|
+
* `LET name = <expression-or-query>`: binds a value to a name in the
|
|
53
|
+
* global {@link Bindings} store.
|
|
54
|
+
*
|
|
55
|
+
* The right-hand side is either a parsed expression (literal, function
|
|
56
|
+
* call, identifier, ...) or a sub-query AST that is executed at
|
|
57
|
+
* run-time; a query RHS materialises to the list of result rows. In
|
|
58
|
+
* either case the value is stored eagerly when the `LET` operation
|
|
59
|
+
* runs and remains available to subsequent statements until
|
|
60
|
+
* overwritten or `DROP BINDING name` is executed.
|
|
61
|
+
*
|
|
62
|
+
* `LET name = { ... } REFRESH EVERY n unit` registers a refreshable
|
|
63
|
+
* binding: the sub-query is evaluated once at `LET` time, the result
|
|
64
|
+
* is cached, and the next read after the TTL has elapsed re-executes
|
|
65
|
+
* the sub-query. Refreshable bindings cannot be silently replaced;
|
|
66
|
+
* `DROP BINDING name` first.
|
|
67
|
+
*/
|
|
68
|
+
class Let extends operation_1.default {
|
|
69
|
+
constructor(name, expression, subQuery, refreshEveryMs = null) {
|
|
70
|
+
super();
|
|
71
|
+
this._value = undefined;
|
|
72
|
+
this._name = name;
|
|
73
|
+
this._expression = expression;
|
|
74
|
+
this._subQuery = subQuery;
|
|
75
|
+
this._refreshEveryMs = refreshEveryMs;
|
|
76
|
+
if (expression !== null) {
|
|
77
|
+
this.addChild(expression);
|
|
78
|
+
}
|
|
79
|
+
if (subQuery !== null) {
|
|
80
|
+
this.addChild(subQuery);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
get name() {
|
|
84
|
+
return this._name;
|
|
85
|
+
}
|
|
86
|
+
get expression() {
|
|
87
|
+
return this._expression;
|
|
88
|
+
}
|
|
89
|
+
get subQuery() {
|
|
90
|
+
return this._subQuery;
|
|
91
|
+
}
|
|
92
|
+
get refreshEveryMs() {
|
|
93
|
+
return this._refreshEveryMs;
|
|
94
|
+
}
|
|
95
|
+
run() {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
var _a;
|
|
98
|
+
const bindings = bindings_1.default.getInstance();
|
|
99
|
+
let value;
|
|
100
|
+
if (this._subQuery !== null) {
|
|
101
|
+
const first = this._subQuery.firstChild();
|
|
102
|
+
const last = this._subQuery.lastChild();
|
|
103
|
+
// Always capture provenance for sub-query LET RHS: it lets
|
|
104
|
+
// downstream consumers (e.g. `LOAD JSON FROM <letName>`)
|
|
105
|
+
// thread row-level lineage back through this binding. Cost
|
|
106
|
+
// is paid once at LET time; downstream readers pay nothing
|
|
107
|
+
// when they don't ask.
|
|
108
|
+
const sink = [];
|
|
109
|
+
// Lazy dynamic import to avoid a load-time cycle:
|
|
110
|
+
// let -> runner -> parser -> let.
|
|
111
|
+
const { default: Runner } = yield Promise.resolve().then(() => __importStar(require("../../compute/runner")));
|
|
112
|
+
Runner.wireProvenance(first, sink);
|
|
113
|
+
yield first.initialize();
|
|
114
|
+
yield first.run();
|
|
115
|
+
yield first.finish();
|
|
116
|
+
value = last.results;
|
|
117
|
+
if (Array.isArray(value)) {
|
|
118
|
+
const len = Math.min(sink.length, value.length);
|
|
119
|
+
for (let i = 0; i < len; i++) {
|
|
120
|
+
const row = value[i];
|
|
121
|
+
if (row !== null && typeof row === "object") {
|
|
122
|
+
(0, virtual_sources_1.attachVirtualSource)(row, sink[i]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else if (this._expression !== null) {
|
|
128
|
+
value = this._expression.value();
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
value = null;
|
|
132
|
+
}
|
|
133
|
+
this._value = value;
|
|
134
|
+
if (this._refreshEveryMs !== null) {
|
|
135
|
+
if (this._subQuery === null) {
|
|
136
|
+
throw new Error("LET REFRESH EVERY requires a sub-query right-hand side");
|
|
137
|
+
}
|
|
138
|
+
bindings.registerRefreshable(this._name, value, this._subQuery, this._refreshEveryMs);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
bindings.set(this._name, value);
|
|
142
|
+
}
|
|
143
|
+
yield ((_a = this.next) === null || _a === void 0 ? void 0 : _a.run());
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
get results() {
|
|
147
|
+
if (Array.isArray(this._value)) {
|
|
148
|
+
return this._value;
|
|
149
|
+
}
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.default = Let;
|
|
154
|
+
//# sourceMappingURL=let.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"let.js","sourceRoot":"","sources":["../../../src/parsing/operations/let.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ProvenanceSource } from "../../compute/provenance";
|
|
1
2
|
import CSV from "../components/csv";
|
|
2
3
|
import From from "../components/from";
|
|
3
4
|
import { default as _JSON } from "../components/json";
|
|
@@ -50,9 +51,39 @@ declare class Load extends Operation {
|
|
|
50
51
|
* Loads data from a URL source (original behavior).
|
|
51
52
|
*/
|
|
52
53
|
private loadFromUrl;
|
|
54
|
+
/**
|
|
55
|
+
* Emits an already-resolved JSON value (e.g. coming from a LET-binding
|
|
56
|
+
* referenced by `LOAD JSON FROM <name>`). Arrays expand into one
|
|
57
|
+
* iteration per element; non-array values are emitted once.
|
|
58
|
+
*/
|
|
59
|
+
private loadFromValue;
|
|
60
|
+
/**
|
|
61
|
+
* Drives the downstream pipeline for the given data. Shared by
|
|
62
|
+
* URL / file / value loading paths.
|
|
63
|
+
*/
|
|
64
|
+
private emit;
|
|
53
65
|
load(): Promise<any>;
|
|
54
66
|
run(): Promise<void>;
|
|
55
67
|
value(): any;
|
|
68
|
+
/**
|
|
69
|
+
* Resolve a stable label for the data source without throwing.
|
|
70
|
+
* Returns a URL / file URI for direct `FROM` strings, the function
|
|
71
|
+
* name for `LOAD ... FROM asyncFn(...)`, or `let://<name>` when the
|
|
72
|
+
* source is a `LET`-bound binding reference. Returns `null` when
|
|
73
|
+
* the source expression cannot be resolved at inspection time
|
|
74
|
+
* (e.g. an unresolved f-string).
|
|
75
|
+
*/
|
|
76
|
+
resolveSourceLabel(): string | null;
|
|
77
|
+
/**
|
|
78
|
+
* Expose this `Load` as a row-level provenance source. Each
|
|
79
|
+
* snapshot reads the currently-emitted record and produces one
|
|
80
|
+
* `DataSourceBinding` describing where the row came from. When the
|
|
81
|
+
* source is a `LET`-backed dataset and the loaded row carries an
|
|
82
|
+
* inner `RowProvenance` (registered via `attachVirtualSource` when
|
|
83
|
+
* the `LET` ran), that inner provenance is threaded through as
|
|
84
|
+
* `source_provenance` for recursive traceability.
|
|
85
|
+
*/
|
|
86
|
+
asProvenanceSource(): ProvenanceSource;
|
|
56
87
|
}
|
|
57
88
|
export default Load;
|
|
58
89
|
//# sourceMappingURL=load.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,MAAM,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,gBAAgB,EAGnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAE/C,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,cAAM,IAAK,SAAQ,SAAS;IACxB,OAAO,CAAC,MAAM,CAAa;;IAK3B,IAAW,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAEpC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,IAAI,CAE/B;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,GAAG,IAAI,CAG/C;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IACD,IAAW,OAAO,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAK9C;IACD,IAAW,OAAO,IAAI,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAUzF;IACD,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAcf;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAG9B;IAED;;;OAGG;YACW,YAAY;IA4B1B;;;OAGG;YACW,gBAAgB;IAS9B;;OAEG;YACW,WAAW;IAWzB;;;;OAIG;YACW,aAAa;IAI3B;;;OAGG;YACW,IAAI;IAkBL,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;IAcpB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1B,KAAK,IAAI,GAAG;IAInB;;;;;;;OAOG;IACI,kBAAkB,IAAI,MAAM,GAAG,IAAI;IA0B1C;;;;;;;;OAQG;IACI,kBAAkB,IAAI,gBAAgB;CAsBhD;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -19,10 +19,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
19
19
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
const virtual_sources_1 = require("../../graph/virtual_sources");
|
|
22
23
|
const headers_1 = __importDefault(require("../components/headers"));
|
|
23
24
|
const json_1 = __importDefault(require("../components/json"));
|
|
24
25
|
const post_1 = __importDefault(require("../components/post"));
|
|
25
26
|
const text_1 = __importDefault(require("../components/text"));
|
|
27
|
+
const binding_reference_1 = __importDefault(require("../expressions/binding_reference"));
|
|
26
28
|
const async_function_1 = __importDefault(require("../functions/async_function"));
|
|
27
29
|
const operation_1 = __importDefault(require("./operation"));
|
|
28
30
|
class Load extends operation_1.default {
|
|
@@ -168,7 +170,6 @@ class Load extends operation_1.default {
|
|
|
168
170
|
*/
|
|
169
171
|
loadFromUrl() {
|
|
170
172
|
return __awaiter(this, void 0, void 0, function* () {
|
|
171
|
-
var _a, _b, _c;
|
|
172
173
|
const result = yield fetch(this.from, this.options());
|
|
173
174
|
let data = null;
|
|
174
175
|
if (this.type instanceof json_1.default) {
|
|
@@ -177,6 +178,26 @@ class Load extends operation_1.default {
|
|
|
177
178
|
else if (this.type instanceof text_1.default) {
|
|
178
179
|
data = yield result.text();
|
|
179
180
|
}
|
|
181
|
+
yield this.emit(data);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Emits an already-resolved JSON value (e.g. coming from a LET-binding
|
|
186
|
+
* referenced by `LOAD JSON FROM <name>`). Arrays expand into one
|
|
187
|
+
* iteration per element; non-array values are emitted once.
|
|
188
|
+
*/
|
|
189
|
+
loadFromValue(data) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
yield this.emit(data);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Drives the downstream pipeline for the given data. Shared by
|
|
196
|
+
* URL / file / value loading paths.
|
|
197
|
+
*/
|
|
198
|
+
emit(data) {
|
|
199
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
200
|
+
var _a, _b, _c, _d;
|
|
180
201
|
if (Array.isArray(data)) {
|
|
181
202
|
for (const item of data) {
|
|
182
203
|
this._value = item;
|
|
@@ -191,6 +212,10 @@ class Load extends operation_1.default {
|
|
|
191
212
|
this._value = data;
|
|
192
213
|
yield ((_c = this.next) === null || _c === void 0 ? void 0 : _c.run());
|
|
193
214
|
}
|
|
215
|
+
else if (data !== null && data !== undefined) {
|
|
216
|
+
this._value = data;
|
|
217
|
+
yield ((_d = this.next) === null || _d === void 0 ? void 0 : _d.run());
|
|
218
|
+
}
|
|
194
219
|
});
|
|
195
220
|
}
|
|
196
221
|
load() {
|
|
@@ -202,7 +227,13 @@ class Load extends operation_1.default {
|
|
|
202
227
|
yield this.loadFromFile();
|
|
203
228
|
}
|
|
204
229
|
else {
|
|
205
|
-
|
|
230
|
+
const source = this.children[1].value();
|
|
231
|
+
if (typeof source === "string") {
|
|
232
|
+
yield this.loadFromUrl();
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
yield this.loadFromValue(source);
|
|
236
|
+
}
|
|
206
237
|
}
|
|
207
238
|
});
|
|
208
239
|
}
|
|
@@ -221,6 +252,75 @@ class Load extends operation_1.default {
|
|
|
221
252
|
value() {
|
|
222
253
|
return this._value;
|
|
223
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Resolve a stable label for the data source without throwing.
|
|
257
|
+
* Returns a URL / file URI for direct `FROM` strings, the function
|
|
258
|
+
* name for `LOAD ... FROM asyncFn(...)`, or `let://<name>` when the
|
|
259
|
+
* source is a `LET`-bound binding reference. Returns `null` when
|
|
260
|
+
* the source expression cannot be resolved at inspection time
|
|
261
|
+
* (e.g. an unresolved f-string).
|
|
262
|
+
*/
|
|
263
|
+
resolveSourceLabel() {
|
|
264
|
+
var _a, _b;
|
|
265
|
+
if (this.isAsyncFunction) {
|
|
266
|
+
const name = (_a = this.asyncFunction) === null || _a === void 0 ? void 0 : _a.name;
|
|
267
|
+
return typeof name === "string" && name.length > 0 ? name : null;
|
|
268
|
+
}
|
|
269
|
+
// `LOAD FROM <letName>` parses as an Expression wrapping a
|
|
270
|
+
// BindingReference; unwrap one level so we can produce a stable
|
|
271
|
+
// `let://<name>` source label without invoking the binding
|
|
272
|
+
// lookup at inspection time.
|
|
273
|
+
let sourceChild = this.fromComponent.firstChild();
|
|
274
|
+
if (sourceChild !== null && !(sourceChild instanceof binding_reference_1.default)) {
|
|
275
|
+
const inner = (_b = sourceChild.firstChild) === null || _b === void 0 ? void 0 : _b.call(sourceChild);
|
|
276
|
+
if (inner instanceof binding_reference_1.default)
|
|
277
|
+
sourceChild = inner;
|
|
278
|
+
}
|
|
279
|
+
if (sourceChild instanceof binding_reference_1.default) {
|
|
280
|
+
return `let://${sourceChild.name}`;
|
|
281
|
+
}
|
|
282
|
+
try {
|
|
283
|
+
const v = this.from;
|
|
284
|
+
if (typeof v === "string" && v.length > 0)
|
|
285
|
+
return v;
|
|
286
|
+
}
|
|
287
|
+
catch (_c) {
|
|
288
|
+
// Dynamic source (e.g. f-string with unresolved references).
|
|
289
|
+
}
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Expose this `Load` as a row-level provenance source. Each
|
|
294
|
+
* snapshot reads the currently-emitted record and produces one
|
|
295
|
+
* `DataSourceBinding` describing where the row came from. When the
|
|
296
|
+
* source is a `LET`-backed dataset and the loaded row carries an
|
|
297
|
+
* inner `RowProvenance` (registered via `attachVirtualSource` when
|
|
298
|
+
* the `LET` ran), that inner provenance is threaded through as
|
|
299
|
+
* `source_provenance` for recursive traceability.
|
|
300
|
+
*/
|
|
301
|
+
asProvenanceSource() {
|
|
302
|
+
const owner = this;
|
|
303
|
+
return {
|
|
304
|
+
snapshot() {
|
|
305
|
+
const label = owner.resolveSourceLabel();
|
|
306
|
+
if (label === null) {
|
|
307
|
+
return { nodes: [], relationships: [] };
|
|
308
|
+
}
|
|
309
|
+
const binding = { source: label };
|
|
310
|
+
const current = owner._value;
|
|
311
|
+
if (current !== null && typeof current === "object") {
|
|
312
|
+
const inner = (0, virtual_sources_1.getVirtualSource)(current);
|
|
313
|
+
if (inner !== undefined)
|
|
314
|
+
binding.source_provenance = inner;
|
|
315
|
+
}
|
|
316
|
+
return {
|
|
317
|
+
nodes: [],
|
|
318
|
+
relationships: [],
|
|
319
|
+
data_sources: [binding],
|
|
320
|
+
};
|
|
321
|
+
},
|
|
322
|
+
};
|
|
323
|
+
}
|
|
224
324
|
}
|
|
225
325
|
exports.default = Load;
|
|
226
326
|
//# sourceMappingURL=load.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":"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"}
|