flowquery 1.0.85 → 1.0.87
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 +101 -0
- package/dist/compute/flowquery.d.ts +18 -0
- package/dist/compute/flowquery.d.ts.map +1 -1
- package/dist/compute/flowquery.js +26 -0
- package/dist/compute/flowquery.js.map +1 -1
- package/dist/compute/runner.d.ts +29 -0
- package/dist/compute/runner.d.ts.map +1 -1
- package/dist/compute/runner.js +111 -3
- package/dist/compute/runner.js.map +1 -1
- package/dist/extensibility.d.ts +4 -1
- package/dist/extensibility.d.ts.map +1 -1
- package/dist/extensibility.js +14 -1
- package/dist/extensibility.js.map +1 -1
- package/dist/flowquery.min.js +1 -1
- package/dist/graph/data.d.ts +1 -0
- package/dist/graph/data.d.ts.map +1 -1
- package/dist/graph/data.js +3 -0
- package/dist/graph/data.js.map +1 -1
- package/dist/graph/data_cache.d.ts +3 -1
- package/dist/graph/data_cache.d.ts.map +1 -1
- package/dist/graph/data_cache.js +5 -4
- package/dist/graph/data_cache.js.map +1 -1
- package/dist/graph/data_resolver.d.ts +13 -0
- package/dist/graph/data_resolver.d.ts.map +1 -1
- package/dist/graph/data_resolver.js +52 -0
- package/dist/graph/data_resolver.js.map +1 -1
- package/dist/graph/database.d.ts +19 -0
- package/dist/graph/database.d.ts.map +1 -1
- package/dist/graph/database.js +76 -0
- package/dist/graph/database.js.map +1 -1
- package/dist/graph/node.d.ts +21 -0
- package/dist/graph/node.d.ts.map +1 -1
- package/dist/graph/node.js +147 -0
- package/dist/graph/node.js.map +1 -1
- package/dist/graph/pattern.d.ts +19 -1
- package/dist/graph/pattern.d.ts.map +1 -1
- package/dist/graph/pattern.js +279 -1
- package/dist/graph/pattern.js.map +1 -1
- package/dist/graph/pattern_expression.d.ts +3 -1
- package/dist/graph/pattern_expression.d.ts.map +1 -1
- package/dist/graph/pattern_expression.js +8 -3
- package/dist/graph/pattern_expression.js.map +1 -1
- package/dist/graph/patterns.d.ts +2 -1
- package/dist/graph/patterns.d.ts.map +1 -1
- package/dist/graph/patterns.js +3 -3
- package/dist/graph/patterns.js.map +1 -1
- package/dist/graph/physical_node.d.ts +10 -1
- package/dist/graph/physical_node.d.ts.map +1 -1
- package/dist/graph/physical_node.js +19 -2
- package/dist/graph/physical_node.js.map +1 -1
- package/dist/graph/physical_relationship.d.ts +10 -1
- package/dist/graph/physical_relationship.d.ts.map +1 -1
- package/dist/graph/physical_relationship.js +21 -2
- package/dist/graph/physical_relationship.js.map +1 -1
- package/dist/graph/relationship.d.ts +25 -1
- package/dist/graph/relationship.d.ts.map +1 -1
- package/dist/graph/relationship.js +135 -0
- package/dist/graph/relationship.js.map +1 -1
- package/dist/graph/relationship_match_collector.d.ts +1 -1
- package/dist/graph/relationship_match_collector.d.ts.map +1 -1
- package/dist/graph/relationship_match_collector.js +29 -3
- package/dist/graph/relationship_match_collector.js.map +1 -1
- package/dist/graph/relationship_reference.d.ts.map +1 -1
- package/dist/graph/relationship_reference.js +1 -2
- package/dist/graph/relationship_reference.js.map +1 -1
- package/dist/graph/source_access.d.ts +107 -0
- package/dist/graph/source_access.d.ts.map +1 -0
- package/dist/graph/source_access.js +726 -0
- package/dist/graph/source_access.js.map +1 -0
- package/dist/graph/source_context.d.ts +101 -0
- package/dist/graph/source_context.d.ts.map +1 -0
- package/dist/graph/source_context.js +392 -0
- package/dist/graph/source_context.js.map +1 -0
- package/dist/graph/source_provider.d.ts +263 -0
- package/dist/graph/source_provider.d.ts.map +1 -0
- package/dist/graph/source_provider.js +306 -0
- package/dist/graph/source_provider.js.map +1 -0
- package/dist/graph/statement_source.d.ts +27 -0
- package/dist/graph/statement_source.d.ts.map +1 -0
- package/dist/graph/statement_source.js +117 -0
- package/dist/graph/statement_source.js.map +1 -0
- package/dist/graph/virtual_statement.d.ts +19 -1
- package/dist/graph/virtual_statement.d.ts.map +1 -1
- package/dist/graph/virtual_statement.js +197 -5
- package/dist/graph/virtual_statement.js.map +1 -1
- package/dist/index.browser.d.ts +3 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +14 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.d.ts +3 -0
- package/dist/index.node.d.ts.map +1 -1
- package/dist/index.node.js +14 -1
- package/dist/index.node.js.map +1 -1
- package/dist/parsing/expressions/expression.d.ts +6 -0
- package/dist/parsing/expressions/expression.d.ts.map +1 -1
- package/dist/parsing/expressions/expression.js +30 -3
- package/dist/parsing/expressions/expression.js.map +1 -1
- package/dist/parsing/operations/aggregated_return.d.ts +2 -0
- package/dist/parsing/operations/aggregated_return.d.ts.map +1 -1
- package/dist/parsing/operations/aggregated_return.js +6 -0
- package/dist/parsing/operations/aggregated_return.js.map +1 -1
- package/dist/parsing/operations/aggregated_with.d.ts +2 -0
- package/dist/parsing/operations/aggregated_with.d.ts.map +1 -1
- package/dist/parsing/operations/aggregated_with.js +6 -0
- 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 +20 -1
- 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 +21 -1
- package/dist/parsing/operations/create_relationship.js.map +1 -1
- package/dist/parsing/operations/limit.d.ts +1 -0
- package/dist/parsing/operations/limit.d.ts.map +1 -1
- package/dist/parsing/operations/limit.js +3 -0
- package/dist/parsing/operations/limit.js.map +1 -1
- package/dist/parsing/operations/match.d.ts +16 -0
- package/dist/parsing/operations/match.d.ts.map +1 -1
- package/dist/parsing/operations/match.js +104 -8
- package/dist/parsing/operations/match.js.map +1 -1
- package/dist/parsing/operations/operation.d.ts +6 -0
- package/dist/parsing/operations/operation.d.ts.map +1 -1
- package/dist/parsing/operations/operation.js +8 -0
- package/dist/parsing/operations/operation.js.map +1 -1
- package/dist/parsing/operations/return.d.ts +10 -0
- package/dist/parsing/operations/return.d.ts.map +1 -1
- package/dist/parsing/operations/return.js +23 -0
- package/dist/parsing/operations/return.js.map +1 -1
- package/dist/parsing/operations/unwind.d.ts +1 -0
- package/dist/parsing/operations/unwind.d.ts.map +1 -1
- package/dist/parsing/operations/unwind.js +9 -2
- package/dist/parsing/operations/unwind.js.map +1 -1
- package/dist/parsing/operations/where.d.ts +1 -0
- package/dist/parsing/operations/where.d.ts.map +1 -1
- package/dist/parsing/operations/where.js +4 -0
- package/dist/parsing/operations/where.js.map +1 -1
- package/dist/parsing/operations/with.d.ts +1 -0
- package/dist/parsing/operations/with.d.ts.map +1 -1
- package/dist/parsing/operations/with.js +4 -0
- package/dist/parsing/operations/with.js.map +1 -1
- package/dist/parsing/parser.d.ts.map +1 -1
- package/dist/parsing/parser.js +20 -2
- package/dist/parsing/parser.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,117 @@
|
|
|
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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
45
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
46
|
+
var m = o[Symbol.asyncIterator], i;
|
|
47
|
+
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);
|
|
48
|
+
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); }); }; }
|
|
49
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
50
|
+
};
|
|
51
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
|
+
exports.StatementSourceProvider = void 0;
|
|
53
|
+
exports.materializeScan = materializeScan;
|
|
54
|
+
const source_context_1 = __importStar(require("./source_context"));
|
|
55
|
+
/**
|
|
56
|
+
* Adapts a `CREATE VIRTUAL` definition to the source provider contract.
|
|
57
|
+
*
|
|
58
|
+
* The definition is opted in with explicit capabilities; every request
|
|
59
|
+
* runs the inner statement with `$request` bound to the request envelope
|
|
60
|
+
* (`operation`, `label`/`type`, `ids`, `side`, `predicate`, `pageSize`)
|
|
61
|
+
* while `$args` keeps its legacy meaning. Statements that ignore part
|
|
62
|
+
* of the request remain correct because FlowQuery re-checks every row.
|
|
63
|
+
*/
|
|
64
|
+
class StatementSourceProvider {
|
|
65
|
+
constructor(_virtual, capabilities) {
|
|
66
|
+
this._virtual = _virtual;
|
|
67
|
+
this.capabilities = capabilities;
|
|
68
|
+
}
|
|
69
|
+
_run(request, context) {
|
|
70
|
+
return this._virtual.request(request, this.capabilities.streaming === true, (0, source_context_1.contextOf)(context));
|
|
71
|
+
}
|
|
72
|
+
scan(request, context) {
|
|
73
|
+
return this._run(request, context);
|
|
74
|
+
}
|
|
75
|
+
lookup(request, context) {
|
|
76
|
+
return this._run(request, context);
|
|
77
|
+
}
|
|
78
|
+
expand(request, context) {
|
|
79
|
+
return this._run(request, context);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.StatementSourceProvider = StatementSourceProvider;
|
|
83
|
+
/**
|
|
84
|
+
* Fully read a provider's scan (legacy eager paths: schema
|
|
85
|
+
* introspection, pattern expressions and mixed legacy/provider patterns).
|
|
86
|
+
*/
|
|
87
|
+
function materializeScan(provider, kind, name, base, args, ctx) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
var _a, e_1, _b, _c;
|
|
90
|
+
const context = ctx !== null && ctx !== void 0 ? ctx : new source_context_1.default();
|
|
91
|
+
try {
|
|
92
|
+
context.stats.materializations++;
|
|
93
|
+
const rows = [];
|
|
94
|
+
try {
|
|
95
|
+
for (var _d = true, _e = __asyncValues(context.call(provider, "scan", name, kind, Object.assign(Object.assign({ operation: "scan" }, base), { predicate: null, args, pageSize: context.options.pageSize }))), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
|
|
96
|
+
_c = _f.value;
|
|
97
|
+
_d = false;
|
|
98
|
+
const page = _c;
|
|
99
|
+
rows.push(...page);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
103
|
+
finally {
|
|
104
|
+
try {
|
|
105
|
+
if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
|
|
106
|
+
}
|
|
107
|
+
finally { if (e_1) throw e_1.error; }
|
|
108
|
+
}
|
|
109
|
+
return rows;
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
if (ctx === null)
|
|
113
|
+
yield context.close();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=statement_source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement_source.js","sourceRoot":"","sources":["../../src/graph/statement_source.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,0CAyBC;AAtED,mEAA4D;AAS5D;;;;;;;;GAQG;AACH,MAAa,uBAAuB;IAChC,YACqB,QAA0B,EAC3B,YAAqE;QADpE,aAAQ,GAAR,QAAQ,CAAkB;QAC3B,iBAAY,GAAZ,YAAY,CAAyD;IACtF,CAAC;IACI,IAAI,CAAC,OAA4B,EAAE,OAA0B;QACjE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxB,OAAO,EACP,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,IAAI,EACpC,IAAA,0BAAS,EAAC,OAAO,CAAC,CACrB,CAAC;IACN,CAAC;IACM,IAAI,CAAC,OAAY,EAAE,OAA0B;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACM,MAAM,CAAC,OAAY,EAAE,OAA0B;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACM,MAAM,CAAC,OAAY,EAAE,OAA0B;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;CACJ;AArBD,0DAqBC;AAED;;;GAGG;AACH,SAAsB,eAAe,CACjC,QAAa,EACb,IAA6B,EAC7B,IAAY,EACZ,IAAyB,EACzB,IAAgC,EAChC,GAAyB;;;QAEzB,MAAM,OAAO,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,wBAAa,EAAE,CAAC;QAC3C,IAAI,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,IAAI,GAAgB,EAAE,CAAC;;gBAC7B,KAAyB,eAAA,KAAA,cAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,gCAC9D,SAAS,EAAE,MAAM,IACd,IAAI,KACP,SAAS,EAAE,IAAI,EACf,IAAI,EACJ,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,IACpC,CAAA,IAAA,sDAAE,CAAC;oBANoB,cAMvB;oBANuB,WAMvB;oBANS,MAAM,IAAI,KAAA,CAAA;oBAOjB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvB,CAAC;;;;;;;;;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,IAAI,GAAG,KAAK,IAAI;gBAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5C,CAAC;IACL,CAAC;CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import ASTNode from "../parsing/ast_node";
|
|
2
|
+
import type SourceContext from "./source_context";
|
|
2
3
|
/**
|
|
3
4
|
* Backing statement of a virtual node or relationship: owns the AST that
|
|
4
5
|
* synthesises the records and the optional in-memory cache around its
|
|
@@ -14,6 +15,7 @@ declare class VirtualStatement {
|
|
|
14
15
|
private _refreshEveryMs;
|
|
15
16
|
private _cache;
|
|
16
17
|
private _cachedAt;
|
|
18
|
+
private _active;
|
|
17
19
|
set statement(statement: ASTNode | null);
|
|
18
20
|
get statement(): ASTNode | null;
|
|
19
21
|
set isStatic(value: boolean);
|
|
@@ -34,8 +36,24 @@ declare class VirtualStatement {
|
|
|
34
36
|
* cache (the weak-map binding must be re-established
|
|
35
37
|
* each call).
|
|
36
38
|
*/
|
|
37
|
-
data(args?: Record<string, any> | null, provenance?: boolean): Promise<Record<string, any>[]>;
|
|
39
|
+
data(args?: Record<string, any> | null, provenance?: boolean, sourceContext?: SourceContext | null): Promise<Record<string, any>[]>;
|
|
38
40
|
private runInner;
|
|
41
|
+
/**
|
|
42
|
+
* Wait until no streamed execution of this statement is in progress.
|
|
43
|
+
* A suspended stream is switched to unbounded buffering and run to
|
|
44
|
+
* completion first, because executions share the statement's AST.
|
|
45
|
+
*/
|
|
46
|
+
private quiesce;
|
|
47
|
+
/** True when the statement can stream rows (single plain RETURN without ORDER BY). */
|
|
48
|
+
get streamable(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Serve a source request by running the statement with `$request`
|
|
51
|
+
* bound to the request envelope (and `$args` to the legacy args).
|
|
52
|
+
*/
|
|
53
|
+
request(request: Record<string, any>, streaming: boolean, sourceContext: SourceContext | null): Promise<Record<string, any>[]> | AsyncGenerator<Record<string, any>[]>;
|
|
54
|
+
private stream;
|
|
39
55
|
}
|
|
56
|
+
/** @internal Runner option key carrying the parent query's source context. */
|
|
57
|
+
export declare const INNER_SOURCE_CONTEXT = "__sourceContext";
|
|
40
58
|
export default VirtualStatement;
|
|
41
59
|
//# sourceMappingURL=virtual_statement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual_statement.d.ts","sourceRoot":"","sources":["../../src/graph/virtual_statement.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"virtual_statement.d.ts","sourceRoot":"","sources":["../../src/graph/virtual_statement.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAIlD;;;;;;;;GAQG;AACH,cAAM,gBAAgB;IAClB,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,OAAO,CAA6D;IAE5E,IAAW,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAG7C;IACD,IAAW,SAAS,IAAI,OAAO,GAAG,IAAI,CAErC;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAEjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE7C;IACD,IAAW,cAAc,IAAI,MAAM,GAAG,IAAI,CAEzC;IAEM,eAAe,IAAI,IAAI;IAK9B,8EAA8E;IAC9E,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;;OAUG;IACU,IAAI,CACb,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,EACvC,UAAU,GAAE,OAAe,EAC3B,aAAa,GAAE,aAAa,GAAG,IAAW,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAoBnB,QAAQ;IA4BtB;;;;OAIG;YACW,OAAO;IASrB,sFAAsF;IACtF,IAAW,UAAU,IAAI,OAAO,CAQ/B;IAED;;;OAGG;IACI,OAAO,CACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,SAAS,EAAE,OAAO,EAClB,aAAa,EAAE,aAAa,GAAG,IAAI,GACpC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAY1D,MAAM;CA8BxB;AAED,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAuFtD,eAAe,gBAAgB,CAAC"}
|
|
@@ -41,7 +41,34 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
41
41
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
42
|
});
|
|
43
43
|
};
|
|
44
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
45
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
46
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
47
|
+
var m = o[Symbol.asyncIterator], i;
|
|
48
|
+
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);
|
|
49
|
+
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); }); }; }
|
|
50
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
51
|
+
};
|
|
52
|
+
var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {
|
|
53
|
+
var i, p;
|
|
54
|
+
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
55
|
+
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; }
|
|
56
|
+
};
|
|
57
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
58
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
59
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
60
|
+
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
61
|
+
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
62
|
+
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]); } }
|
|
63
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
64
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
65
|
+
function fulfill(value) { resume("next", value); }
|
|
66
|
+
function reject(value) { resume("throw", value); }
|
|
67
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
68
|
+
};
|
|
44
69
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
70
|
+
exports.INNER_SOURCE_CONTEXT = void 0;
|
|
71
|
+
const source_provider_1 = require("./source_provider");
|
|
45
72
|
const virtual_sources_1 = require("./virtual_sources");
|
|
46
73
|
/**
|
|
47
74
|
* Backing statement of a virtual node or relationship: owns the AST that
|
|
@@ -59,6 +86,7 @@ class VirtualStatement {
|
|
|
59
86
|
this._refreshEveryMs = null;
|
|
60
87
|
this._cache = null;
|
|
61
88
|
this._cachedAt = 0;
|
|
89
|
+
this._active = null;
|
|
62
90
|
}
|
|
63
91
|
set statement(statement) {
|
|
64
92
|
this._statement = statement;
|
|
@@ -99,7 +127,7 @@ class VirtualStatement {
|
|
|
99
127
|
* each call).
|
|
100
128
|
*/
|
|
101
129
|
data() {
|
|
102
|
-
return __awaiter(this, arguments, void 0, function* (args = null, provenance = false) {
|
|
130
|
+
return __awaiter(this, arguments, void 0, function* (args = null, provenance = false, sourceContext = null) {
|
|
103
131
|
if (this._statement === null) {
|
|
104
132
|
throw new Error("Statement is null");
|
|
105
133
|
}
|
|
@@ -111,7 +139,7 @@ class VirtualStatement {
|
|
|
111
139
|
if (cacheable && this._cache !== null && this.isCacheFresh()) {
|
|
112
140
|
return this._cache;
|
|
113
141
|
}
|
|
114
|
-
const result = yield this.runInner(args, provenance);
|
|
142
|
+
const result = yield this.runInner(args, provenance, sourceContext);
|
|
115
143
|
if (cacheable) {
|
|
116
144
|
this._cache = result;
|
|
117
145
|
this._cachedAt = Date.now();
|
|
@@ -119,13 +147,18 @@ class VirtualStatement {
|
|
|
119
147
|
return result;
|
|
120
148
|
});
|
|
121
149
|
}
|
|
122
|
-
runInner(
|
|
123
|
-
return __awaiter(this,
|
|
150
|
+
runInner(args_1, provenance_1) {
|
|
151
|
+
return __awaiter(this, arguments, void 0, function* (args, provenance, sourceContext = null, parameters = null) {
|
|
152
|
+
yield this.quiesce();
|
|
124
153
|
// Lazy dynamic import to avoid a load-time cycle:
|
|
125
154
|
// virtual_statement -> runner -> parsing -> graph (back to here).
|
|
126
155
|
// Python uses the same idiom (function-local import).
|
|
127
156
|
const RunnerCtor = (yield Promise.resolve().then(() => __importStar(require("../compute/runner")))).default;
|
|
128
|
-
const runner = new RunnerCtor(null, this._statement, args, {
|
|
157
|
+
const runner = new RunnerCtor(null, this._statement, args, {
|
|
158
|
+
provenance,
|
|
159
|
+
parameters: parameters !== null && parameters !== void 0 ? parameters : undefined,
|
|
160
|
+
[exports.INNER_SOURCE_CONTEXT]: sourceContext,
|
|
161
|
+
});
|
|
129
162
|
yield runner.run();
|
|
130
163
|
const result = runner.results;
|
|
131
164
|
if (provenance) {
|
|
@@ -138,6 +171,165 @@ class VirtualStatement {
|
|
|
138
171
|
return result;
|
|
139
172
|
});
|
|
140
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Wait until no streamed execution of this statement is in progress.
|
|
176
|
+
* A suspended stream is switched to unbounded buffering and run to
|
|
177
|
+
* completion first, because executions share the statement's AST.
|
|
178
|
+
*/
|
|
179
|
+
quiesce() {
|
|
180
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
181
|
+
while (this._active !== null) {
|
|
182
|
+
const active = this._active;
|
|
183
|
+
active.channel.drain();
|
|
184
|
+
yield active.done;
|
|
185
|
+
if (this._active === active)
|
|
186
|
+
this._active = null;
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/** True when the statement can stream rows (single plain RETURN without ORDER BY). */
|
|
191
|
+
get streamable() {
|
|
192
|
+
var _a;
|
|
193
|
+
const last = (_a = this._statement) === null || _a === void 0 ? void 0 : _a.lastChild();
|
|
194
|
+
return (last !== null &&
|
|
195
|
+
last !== undefined &&
|
|
196
|
+
typeof last.setRowSink === "function" &&
|
|
197
|
+
last.supportsRowSink === true);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Serve a source request by running the statement with `$request`
|
|
201
|
+
* bound to the request envelope (and `$args` to the legacy args).
|
|
202
|
+
*/
|
|
203
|
+
request(request, streaming, sourceContext) {
|
|
204
|
+
var _a;
|
|
205
|
+
if (this._statement === null) {
|
|
206
|
+
throw new Error("Statement is null");
|
|
207
|
+
}
|
|
208
|
+
const parameters = { request };
|
|
209
|
+
if (!streaming || !this.streamable) {
|
|
210
|
+
if (sourceContext !== null)
|
|
211
|
+
sourceContext.stats.materializations++;
|
|
212
|
+
return this.runInner((_a = request.args) !== null && _a !== void 0 ? _a : null, false, sourceContext, parameters);
|
|
213
|
+
}
|
|
214
|
+
return this.stream(request, parameters, sourceContext);
|
|
215
|
+
}
|
|
216
|
+
stream(request, parameters, sourceContext) {
|
|
217
|
+
return __asyncGenerator(this, arguments, function* stream_1() {
|
|
218
|
+
var _a, _b;
|
|
219
|
+
yield __await(this.quiesce());
|
|
220
|
+
const RunnerCtor = (yield __await(Promise.resolve().then(() => __importStar(require("../compute/runner"))))).default;
|
|
221
|
+
const channel = new RowChannel(Math.max(1, (_a = request.pageSize) !== null && _a !== void 0 ? _a : 256));
|
|
222
|
+
const runner = new RunnerCtor(null, this._statement, (_b = request.args) !== null && _b !== void 0 ? _b : null, {
|
|
223
|
+
parameters,
|
|
224
|
+
rowSink: (row) => channel.push(row),
|
|
225
|
+
[exports.INNER_SOURCE_CONTEXT]: sourceContext,
|
|
226
|
+
});
|
|
227
|
+
const done = runner.run().then(() => channel.close(), (e) => channel.fail(e));
|
|
228
|
+
const active = { channel, done };
|
|
229
|
+
this._active = active;
|
|
230
|
+
const onAbort = () => channel.cancel();
|
|
231
|
+
sourceContext === null || sourceContext === void 0 ? void 0 : sourceContext.signal.addEventListener("abort", onAbort, { once: true });
|
|
232
|
+
try {
|
|
233
|
+
yield __await(yield* __asyncDelegator(__asyncValues(channel.pages())));
|
|
234
|
+
}
|
|
235
|
+
finally {
|
|
236
|
+
sourceContext === null || sourceContext === void 0 ? void 0 : sourceContext.signal.removeEventListener("abort", onAbort);
|
|
237
|
+
channel.cancel();
|
|
238
|
+
yield __await(done);
|
|
239
|
+
if (this._active === active)
|
|
240
|
+
this._active = null;
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/** @internal Runner option key carrying the parent query's source context. */
|
|
246
|
+
exports.INNER_SOURCE_CONTEXT = "__sourceContext";
|
|
247
|
+
/**
|
|
248
|
+
* Bounded hand-off between a streaming inner statement (producer) and
|
|
249
|
+
* the traversal consuming its rows. The producer blocks once
|
|
250
|
+
* `capacity` full pages are waiting.
|
|
251
|
+
*/
|
|
252
|
+
class RowChannel {
|
|
253
|
+
constructor(_pageSize, _capacity = 2) {
|
|
254
|
+
this._pageSize = _pageSize;
|
|
255
|
+
this._capacity = _capacity;
|
|
256
|
+
this._pages = [];
|
|
257
|
+
this._current = [];
|
|
258
|
+
this._done = false;
|
|
259
|
+
this._error = null;
|
|
260
|
+
this._cancelled = false;
|
|
261
|
+
this._unbounded = false;
|
|
262
|
+
this._consumerWaiter = null;
|
|
263
|
+
this._producerWaiter = null;
|
|
264
|
+
}
|
|
265
|
+
push(row) {
|
|
266
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
267
|
+
if (this._cancelled)
|
|
268
|
+
throw new source_provider_1.QueryCancelledError("Source stream closed");
|
|
269
|
+
this._current.push(row);
|
|
270
|
+
if (this._current.length < this._pageSize)
|
|
271
|
+
return;
|
|
272
|
+
this._pages.push(this._current);
|
|
273
|
+
this._current = [];
|
|
274
|
+
this._wakeConsumer();
|
|
275
|
+
while (!this._unbounded && !this._cancelled && this._pages.length >= this._capacity) {
|
|
276
|
+
yield new Promise((resolve) => (this._producerWaiter = resolve));
|
|
277
|
+
}
|
|
278
|
+
if (this._cancelled)
|
|
279
|
+
throw new source_provider_1.QueryCancelledError("Source stream closed");
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
close() {
|
|
283
|
+
if (this._current.length > 0) {
|
|
284
|
+
this._pages.push(this._current);
|
|
285
|
+
this._current = [];
|
|
286
|
+
}
|
|
287
|
+
this._done = true;
|
|
288
|
+
this._wakeConsumer();
|
|
289
|
+
}
|
|
290
|
+
fail(error) {
|
|
291
|
+
this._error = error;
|
|
292
|
+
this._done = true;
|
|
293
|
+
this._wakeConsumer();
|
|
294
|
+
}
|
|
295
|
+
cancel() {
|
|
296
|
+
this._cancelled = true;
|
|
297
|
+
this._wakeProducer();
|
|
298
|
+
}
|
|
299
|
+
drain() {
|
|
300
|
+
this._unbounded = true;
|
|
301
|
+
this._wakeProducer();
|
|
302
|
+
}
|
|
303
|
+
pages() {
|
|
304
|
+
return __asyncGenerator(this, arguments, function* pages_1() {
|
|
305
|
+
while (true) {
|
|
306
|
+
if (this._pages.length > 0) {
|
|
307
|
+
const page = this._pages.shift();
|
|
308
|
+
this._wakeProducer();
|
|
309
|
+
yield yield __await(page);
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
if (this._done) {
|
|
313
|
+
if (this._error !== null &&
|
|
314
|
+
!(this._cancelled && this._error instanceof source_provider_1.QueryCancelledError)) {
|
|
315
|
+
throw this._error;
|
|
316
|
+
}
|
|
317
|
+
return yield __await(void 0);
|
|
318
|
+
}
|
|
319
|
+
yield __await(new Promise((resolve) => (this._consumerWaiter = resolve)));
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
_wakeConsumer() {
|
|
324
|
+
const w = this._consumerWaiter;
|
|
325
|
+
this._consumerWaiter = null;
|
|
326
|
+
w === null || w === void 0 ? void 0 : w();
|
|
327
|
+
}
|
|
328
|
+
_wakeProducer() {
|
|
329
|
+
const w = this._producerWaiter;
|
|
330
|
+
this._producerWaiter = null;
|
|
331
|
+
w === null || w === void 0 ? void 0 : w();
|
|
332
|
+
}
|
|
141
333
|
}
|
|
142
334
|
exports.default = VirtualStatement;
|
|
143
335
|
//# sourceMappingURL=virtual_statement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual_statement.js","sourceRoot":"","sources":["../../src/graph/virtual_statement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"virtual_statement.js","sourceRoot":"","sources":["../../src/graph/virtual_statement.ts"],"names":[],"mappings":"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"}
|
package/dist/index.browser.d.ts
CHANGED
|
@@ -10,4 +10,7 @@ import type { CellBindingTrace, CellTrace, LineageReport, NodeBinding, Relations
|
|
|
10
10
|
import type { ColumnLineage, ColumnReference, NodeInfo, RelationshipInfo, StatementInfo } from "./parsing/statement_info_crawler";
|
|
11
11
|
export default FlowQuery;
|
|
12
12
|
export type { CellBindingTrace, CellTrace, ColumnLineage, ColumnReference, LineageReport, NodeBinding, NodeInfo, RelationshipBinding, RelationshipHop, RelationshipInfo, RowProvenance, RunnerMetadata, RunnerOptions, StatementInfo, };
|
|
13
|
+
export { SOURCE_CONTRACT_VERSION, PREDICATE_OPERATORS, SourceError, SourceCapabilityError, SourceResponseError, SourceUnsupportedError, QueryCancelledError, cursorPages, matchesPredicate, inMemoryNodeSource, inMemoryRelationshipSource, } from "./graph/source_provider";
|
|
14
|
+
export type { SourceRow, InMemorySourceOptions, PredicateOperator, SourcePredicate, PredicateCapabilities, NodeSourceCapabilities, RelationshipSourceCapabilities, NodeScanRequest, NodeLookupRequest, RelationshipScanRequest, RelationshipExpandRequest, NodeSourceRequest, RelationshipSourceRequest, SourceReadContext, SourceResult, NodeSourceProvider, RelationshipSourceProvider, } from "./graph/source_provider";
|
|
15
|
+
export type { SourceOptions, SourceStats, SourcePlan } from "./graph/source_context";
|
|
13
16
|
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EACR,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EAChB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EACR,aAAa,EACb,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,aAAa,EAChB,MAAM,kCAAkC,CAAC;AA+B1C,eAAe,SAAS,CAAC;AACzB,YAAY,EACR,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,GAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EACR,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EAChB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EACR,aAAa,EACb,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,aAAa,EAChB,MAAM,kCAAkC,CAAC;AA+B1C,eAAe,SAAS,CAAC;AACzB,YAAY,EACR,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,GAChB,CAAC;AAGF,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACnB,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACR,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,8BAA8B,EAC9B,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.browser.js
CHANGED
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.inMemoryRelationshipSource = exports.inMemoryNodeSource = exports.matchesPredicate = exports.cursorPages = exports.QueryCancelledError = exports.SourceUnsupportedError = exports.SourceResponseError = exports.SourceCapabilityError = exports.SourceError = exports.PREDICATE_OPERATORS = exports.SOURCE_CONTRACT_VERSION = void 0;
|
|
6
7
|
/**
|
|
7
8
|
* FlowQuery - A declarative query language for data processing pipelines.
|
|
8
9
|
*
|
|
@@ -36,4 +37,17 @@ flowquery_1.default.getFunctionMetadata = function (name) {
|
|
|
36
37
|
*/
|
|
37
38
|
flowquery_1.default.Function = function_1.default;
|
|
38
39
|
exports.default = flowquery_1.default;
|
|
40
|
+
// Backend-aware virtual source contract
|
|
41
|
+
var source_provider_1 = require("./graph/source_provider");
|
|
42
|
+
Object.defineProperty(exports, "SOURCE_CONTRACT_VERSION", { enumerable: true, get: function () { return source_provider_1.SOURCE_CONTRACT_VERSION; } });
|
|
43
|
+
Object.defineProperty(exports, "PREDICATE_OPERATORS", { enumerable: true, get: function () { return source_provider_1.PREDICATE_OPERATORS; } });
|
|
44
|
+
Object.defineProperty(exports, "SourceError", { enumerable: true, get: function () { return source_provider_1.SourceError; } });
|
|
45
|
+
Object.defineProperty(exports, "SourceCapabilityError", { enumerable: true, get: function () { return source_provider_1.SourceCapabilityError; } });
|
|
46
|
+
Object.defineProperty(exports, "SourceResponseError", { enumerable: true, get: function () { return source_provider_1.SourceResponseError; } });
|
|
47
|
+
Object.defineProperty(exports, "SourceUnsupportedError", { enumerable: true, get: function () { return source_provider_1.SourceUnsupportedError; } });
|
|
48
|
+
Object.defineProperty(exports, "QueryCancelledError", { enumerable: true, get: function () { return source_provider_1.QueryCancelledError; } });
|
|
49
|
+
Object.defineProperty(exports, "cursorPages", { enumerable: true, get: function () { return source_provider_1.cursorPages; } });
|
|
50
|
+
Object.defineProperty(exports, "matchesPredicate", { enumerable: true, get: function () { return source_provider_1.matchesPredicate; } });
|
|
51
|
+
Object.defineProperty(exports, "inMemoryNodeSource", { enumerable: true, get: function () { return source_provider_1.inMemoryNodeSource; } });
|
|
52
|
+
Object.defineProperty(exports, "inMemoryRelationshipSource", { enumerable: true, get: function () { return source_provider_1.inMemoryRelationshipSource; } });
|
|
39
53
|
//# sourceMappingURL=index.browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;GAMG;AACH,oEAA2D;AAY3D,4EAAoD;AACpD,4FAAmE;AAcnE;;;;;GAKG;AACH,mBAAS,CAAC,aAAa,GAAG,UAAU,OAInC;IACG,OAAO,0BAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,mBAAS,CAAC,mBAAmB,GAAG,UAAU,IAAY;IAClD,OAAO,0BAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,mBAAS,CAAC,QAAQ,GAAG,kBAAQ,CAAC;AAE9B,kBAAe,mBAAS,CAAC;AAkBzB,wCAAwC;AACxC,2DAYiC;AAX7B,0HAAA,uBAAuB,OAAA;AACvB,sHAAA,mBAAmB,OAAA;AACnB,8GAAA,WAAW,OAAA;AACX,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AACnB,yHAAA,sBAAsB,OAAA;AACtB,sHAAA,mBAAmB,OAAA;AACnB,8GAAA,WAAW,OAAA;AACX,mHAAA,gBAAgB,OAAA;AAChB,qHAAA,kBAAkB,OAAA;AAClB,6HAAA,0BAA0B,OAAA"}
|
package/dist/index.node.d.ts
CHANGED
|
@@ -13,4 +13,7 @@ import { FunctionMetadata, OutputSchema, ParameterSchema } from "./parsing/funct
|
|
|
13
13
|
import { ColumnLineage, ColumnReference, NodeInfo, RelationshipInfo, StatementInfo } from "./parsing/statement_info_crawler";
|
|
14
14
|
export default FlowQuery;
|
|
15
15
|
export { FlowQuery, Function, FunctionFactory, AsyncDataProvider, FunctionMetadata, ParameterSchema, OutputSchema, RunnerMetadata, StatementInfo, NodeInfo, RelationshipInfo, ColumnLineage, ColumnReference, CellTrace, CellBindingTrace, LineageReport, };
|
|
16
|
+
export { SOURCE_CONTRACT_VERSION, PREDICATE_OPERATORS, SourceError, SourceCapabilityError, SourceResponseError, SourceUnsupportedError, QueryCancelledError, cursorPages, matchesPredicate, inMemoryNodeSource, inMemoryRelationshipSource, } from "./graph/source_provider";
|
|
17
|
+
export type { SourceRow, InMemorySourceOptions, PredicateOperator, SourcePredicate, PredicateCapabilities, NodeSourceCapabilities, RelationshipSourceCapabilities, NodeScanRequest, NodeLookupRequest, RelationshipScanRequest, RelationshipExpandRequest, NodeSourceRequest, RelationshipSourceRequest, SourceReadContext, SourceResult, NodeSourceProvider, RelationshipSourceProvider, } from "./graph/source_provider";
|
|
18
|
+
export type { SourceOptions, SourceStats, SourcePlan } from "./graph/source_context";
|
|
16
19
|
//# sourceMappingURL=index.node.d.ts.map
|
package/dist/index.node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,eAAe,EAAE,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EACH,gBAAgB,EAChB,YAAY,EACZ,eAAe,EAClB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,aAAa,EACb,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,aAAa,EAChB,MAAM,kCAAkC,CAAC;AA+B1C,eAAe,SAAS,CAAC;AACzB,OAAO,EACH,SAAS,EACT,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,aAAa,GAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,eAAe,EAAE,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EACH,gBAAgB,EAChB,YAAY,EACZ,eAAe,EAClB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACH,aAAa,EACb,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,aAAa,EAChB,MAAM,kCAAkC,CAAC;AA+B1C,eAAe,SAAS,CAAC;AACzB,OAAO,EACH,SAAS,EACT,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,aAAa,GAChB,CAAC;AAGF,OAAO,EACH,uBAAuB,EACvB,mBAAmB,EACnB,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACR,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,8BAA8B,EAC9B,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.node.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.FunctionFactory = exports.Function = exports.FlowQuery = void 0;
|
|
6
|
+
exports.inMemoryRelationshipSource = exports.inMemoryNodeSource = exports.matchesPredicate = exports.cursorPages = exports.QueryCancelledError = exports.SourceUnsupportedError = exports.SourceResponseError = exports.SourceCapabilityError = exports.SourceError = exports.PREDICATE_OPERATORS = exports.SOURCE_CONTRACT_VERSION = exports.FunctionFactory = exports.Function = exports.FlowQuery = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* FlowQuery - A declarative query language for data processing pipelines.
|
|
9
9
|
*
|
|
@@ -40,4 +40,17 @@ flowquery_1.default.getFunctionMetadata = function (name) {
|
|
|
40
40
|
*/
|
|
41
41
|
flowquery_1.default.Function = function_1.default;
|
|
42
42
|
exports.default = flowquery_1.default;
|
|
43
|
+
// Backend-aware virtual source contract
|
|
44
|
+
var source_provider_1 = require("./graph/source_provider");
|
|
45
|
+
Object.defineProperty(exports, "SOURCE_CONTRACT_VERSION", { enumerable: true, get: function () { return source_provider_1.SOURCE_CONTRACT_VERSION; } });
|
|
46
|
+
Object.defineProperty(exports, "PREDICATE_OPERATORS", { enumerable: true, get: function () { return source_provider_1.PREDICATE_OPERATORS; } });
|
|
47
|
+
Object.defineProperty(exports, "SourceError", { enumerable: true, get: function () { return source_provider_1.SourceError; } });
|
|
48
|
+
Object.defineProperty(exports, "SourceCapabilityError", { enumerable: true, get: function () { return source_provider_1.SourceCapabilityError; } });
|
|
49
|
+
Object.defineProperty(exports, "SourceResponseError", { enumerable: true, get: function () { return source_provider_1.SourceResponseError; } });
|
|
50
|
+
Object.defineProperty(exports, "SourceUnsupportedError", { enumerable: true, get: function () { return source_provider_1.SourceUnsupportedError; } });
|
|
51
|
+
Object.defineProperty(exports, "QueryCancelledError", { enumerable: true, get: function () { return source_provider_1.QueryCancelledError; } });
|
|
52
|
+
Object.defineProperty(exports, "cursorPages", { enumerable: true, get: function () { return source_provider_1.cursorPages; } });
|
|
53
|
+
Object.defineProperty(exports, "matchesPredicate", { enumerable: true, get: function () { return source_provider_1.matchesPredicate; } });
|
|
54
|
+
Object.defineProperty(exports, "inMemoryNodeSource", { enumerable: true, get: function () { return source_provider_1.inMemoryNodeSource; } });
|
|
55
|
+
Object.defineProperty(exports, "inMemoryRelationshipSource", { enumerable: true, get: function () { return source_provider_1.inMemoryRelationshipSource; } });
|
|
43
56
|
//# sourceMappingURL=index.node.js.map
|
package/dist/index.node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;GAMG;AACH,oEAA2D;AAgDvD,0FAhDgB,mBAAS,OAgDhB;AA9Cb,4EAAoD;AA+ChD,mBA/CG,kBAAQ,CA+CH;AA9CZ,4FAA0F;AA+CtF,0BA/CG,0BAAe,CA+CH;AAjCnB;;;;;GAKG;AACH,mBAAS,CAAC,aAAa,GAAG,UAAU,OAInC;IACG,OAAO,0BAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,mBAAS,CAAC,mBAAmB,GAAG,UAAU,IAAY;IAClD,OAAO,0BAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,mBAAS,CAAC,QAAQ,GAAG,kBAAQ,CAAC;AAE9B,kBAAe,mBAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;GAMG;AACH,oEAA2D;AAgDvD,0FAhDgB,mBAAS,OAgDhB;AA9Cb,4EAAoD;AA+ChD,mBA/CG,kBAAQ,CA+CH;AA9CZ,4FAA0F;AA+CtF,0BA/CG,0BAAe,CA+CH;AAjCnB;;;;;GAKG;AACH,mBAAS,CAAC,aAAa,GAAG,UAAU,OAInC;IACG,OAAO,0BAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,mBAAS,CAAC,mBAAmB,GAAG,UAAU,IAAY;IAClD,OAAO,0BAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,mBAAS,CAAC,QAAQ,GAAG,kBAAQ,CAAC;AAE9B,kBAAe,mBAAS,CAAC;AAoBzB,wCAAwC;AACxC,2DAYiC;AAX7B,0HAAA,uBAAuB,OAAA;AACvB,sHAAA,mBAAmB,OAAA;AACnB,8GAAA,WAAW,OAAA;AACX,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AACnB,yHAAA,sBAAsB,OAAA;AACtB,sHAAA,mBAAmB,OAAA;AACnB,8GAAA,WAAW,OAAA;AACX,mHAAA,gBAAgB,OAAA;AAChB,qHAAA,kBAAkB,OAAA;AAClB,6HAAA,0BAA0B,OAAA"}
|
|
@@ -45,6 +45,12 @@ declare class Expression extends ASTNode {
|
|
|
45
45
|
setAlias(alias: string): void;
|
|
46
46
|
set alias(alias: string);
|
|
47
47
|
get alias(): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Names an un-aliased dot lookup after its source text (`u.displayName`)
|
|
50
|
+
* so projected columns keep a readable key. Returns null for anything
|
|
51
|
+
* else, leaving the caller to fall back to `expr<n>`.
|
|
52
|
+
*/
|
|
53
|
+
private static propertyPath;
|
|
48
54
|
toString(): string;
|
|
49
55
|
reducers(): AggregateFunction[];
|
|
50
56
|
patterns(): PatternExpression[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/parsing/expressions/expression.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,OAAO,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../src/parsing/expressions/expression.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,OAAO,MAAM,aAAa,CAAC;AAElC,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAGhE,OAAO,kBAAkB,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,cAAM,UAAW,SAAQ,OAAO;IAC5B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,SAAS,CAAoC;IAErD;;;;;;OAMG;IACI,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAsBnC;;;;OAIG;IACI,MAAM,IAAI,IAAI;IAQrB,OAAO,CAAC,MAAM;IAWP,UAAU,IAAI,OAAO;IAIrB,KAAK,IAAI,GAAG;IAUZ,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpC,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAED,IAAW,KAAK,IAAI,MAAM,GAAG,IAAI,CAShC;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAkBpB,QAAQ,IAAI,MAAM;IAOlB,QAAQ,IAAI,iBAAiB,EAAE;IAM/B,QAAQ,IAAI,iBAAiB,EAAE;IAMtC,OAAO,CAAC,WAAW,CAAqC;IACjD,UAAU,IAAI,kBAAkB,EAAE;IAMzC,OAAO,CAAE,QAAQ;IAQV,QAAQ,IAAI,OAAO;IAGnB,YAAY,IAAI,OAAO;IAG9B,IAAW,UAAU,CAAC,KAAK,EAAE,GAAG,EAE/B;CACJ;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -5,7 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const pattern_expression_1 = __importDefault(require("../../graph/pattern_expression"));
|
|
7
7
|
const ast_node_1 = __importDefault(require("../ast_node"));
|
|
8
|
+
const lookup_1 = __importDefault(require("../data_structures/lookup"));
|
|
8
9
|
const aggregate_function_1 = __importDefault(require("../functions/aggregate_function"));
|
|
10
|
+
const identifier_1 = __importDefault(require("./identifier"));
|
|
9
11
|
const reference_1 = __importDefault(require("./reference"));
|
|
10
12
|
const subquery_expression_1 = __importDefault(require("./subquery_expression"));
|
|
11
13
|
/**
|
|
@@ -104,10 +106,35 @@ class Expression extends ast_node_1.default {
|
|
|
104
106
|
this._alias = alias;
|
|
105
107
|
}
|
|
106
108
|
get alias() {
|
|
107
|
-
if (this.
|
|
108
|
-
return this.
|
|
109
|
+
if (this._alias !== null) {
|
|
110
|
+
return this._alias;
|
|
111
|
+
}
|
|
112
|
+
const first = this.firstChild();
|
|
113
|
+
if (first instanceof reference_1.default) {
|
|
114
|
+
return first.identifier;
|
|
115
|
+
}
|
|
116
|
+
return Expression.propertyPath(first);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Names an un-aliased dot lookup after its source text (`u.displayName`)
|
|
120
|
+
* so projected columns keep a readable key. Returns null for anything
|
|
121
|
+
* else, leaving the caller to fall back to `expr<n>`.
|
|
122
|
+
*/
|
|
123
|
+
static propertyPath(node) {
|
|
124
|
+
if (!(node instanceof lookup_1.default)) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
const index = node.index;
|
|
128
|
+
// Bracket lookups carry an Expression index; only dot access has a bare
|
|
129
|
+
// Identifier, and Reference extends Identifier so it must be excluded.
|
|
130
|
+
if (!(index instanceof identifier_1.default) || index instanceof reference_1.default) {
|
|
131
|
+
return null;
|
|
109
132
|
}
|
|
110
|
-
|
|
133
|
+
const variable = node.variable;
|
|
134
|
+
const prefix = variable instanceof reference_1.default
|
|
135
|
+
? variable.identifier
|
|
136
|
+
: Expression.propertyPath(variable);
|
|
137
|
+
return prefix === null ? null : `${prefix}.${index.value()}`;
|
|
111
138
|
}
|
|
112
139
|
toString() {
|
|
113
140
|
if (this._alias !== null) {
|