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.
Files changed (147) hide show
  1. package/README.md +682 -86
  2. package/dist/compute/provenance.d.ts +201 -0
  3. package/dist/compute/provenance.d.ts.map +1 -0
  4. package/dist/compute/provenance.js +216 -0
  5. package/dist/compute/provenance.js.map +1 -0
  6. package/dist/compute/runner.d.ts +202 -3
  7. package/dist/compute/runner.d.ts.map +1 -1
  8. package/dist/compute/runner.js +309 -2
  9. package/dist/compute/runner.js.map +1 -1
  10. package/dist/flowquery.min.js +1 -1
  11. package/dist/graph/bindings.d.ts +78 -0
  12. package/dist/graph/bindings.d.ts.map +1 -0
  13. package/dist/graph/bindings.js +224 -0
  14. package/dist/graph/bindings.js.map +1 -0
  15. package/dist/graph/data_cache.d.ts +4 -0
  16. package/dist/graph/data_cache.d.ts.map +1 -1
  17. package/dist/graph/data_cache.js +15 -3
  18. package/dist/graph/data_cache.js.map +1 -1
  19. package/dist/graph/data_resolver.d.ts.map +1 -1
  20. package/dist/graph/data_resolver.js +23 -4
  21. package/dist/graph/data_resolver.js.map +1 -1
  22. package/dist/graph/database.d.ts +4 -2
  23. package/dist/graph/database.d.ts.map +1 -1
  24. package/dist/graph/database.js +45 -9
  25. package/dist/graph/database.js.map +1 -1
  26. package/dist/graph/physical_node.d.ts +7 -2
  27. package/dist/graph/physical_node.d.ts.map +1 -1
  28. package/dist/graph/physical_node.js +22 -26
  29. package/dist/graph/physical_node.js.map +1 -1
  30. package/dist/graph/physical_relationship.d.ts +7 -2
  31. package/dist/graph/physical_relationship.d.ts.map +1 -1
  32. package/dist/graph/physical_relationship.js +22 -26
  33. package/dist/graph/physical_relationship.js.map +1 -1
  34. package/dist/graph/relationship_match_collector.d.ts.map +1 -1
  35. package/dist/graph/relationship_match_collector.js +9 -0
  36. package/dist/graph/relationship_match_collector.js.map +1 -1
  37. package/dist/graph/virtual_sources.d.ts +8 -0
  38. package/dist/graph/virtual_sources.d.ts.map +1 -0
  39. package/dist/graph/virtual_sources.js +31 -0
  40. package/dist/graph/virtual_sources.js.map +1 -0
  41. package/dist/graph/virtual_statement.d.ts +41 -0
  42. package/dist/graph/virtual_statement.d.ts.map +1 -0
  43. package/dist/graph/virtual_statement.js +143 -0
  44. package/dist/graph/virtual_statement.js.map +1 -0
  45. package/dist/index.browser.d.ts +3 -3
  46. package/dist/index.browser.d.ts.map +1 -1
  47. package/dist/index.browser.js.map +1 -1
  48. package/dist/index.node.d.ts +3 -3
  49. package/dist/index.node.d.ts.map +1 -1
  50. package/dist/index.node.js.map +1 -1
  51. package/dist/parsing/ast_node.d.ts +9 -0
  52. package/dist/parsing/ast_node.d.ts.map +1 -1
  53. package/dist/parsing/ast_node.js +21 -4
  54. package/dist/parsing/ast_node.js.map +1 -1
  55. package/dist/parsing/expressions/binding_reference.d.ts +16 -0
  56. package/dist/parsing/expressions/binding_reference.d.ts.map +1 -0
  57. package/dist/parsing/expressions/binding_reference.js +34 -0
  58. package/dist/parsing/expressions/binding_reference.js.map +1 -0
  59. package/dist/parsing/operations/aggregated_return.d.ts +10 -0
  60. package/dist/parsing/operations/aggregated_return.d.ts.map +1 -1
  61. package/dist/parsing/operations/aggregated_return.js +56 -3
  62. package/dist/parsing/operations/aggregated_return.js.map +1 -1
  63. package/dist/parsing/operations/aggregated_with.d.ts +20 -0
  64. package/dist/parsing/operations/aggregated_with.d.ts.map +1 -1
  65. package/dist/parsing/operations/aggregated_with.js +33 -1
  66. package/dist/parsing/operations/aggregated_with.js.map +1 -1
  67. package/dist/parsing/operations/create_node.d.ts +5 -1
  68. package/dist/parsing/operations/create_node.d.ts.map +1 -1
  69. package/dist/parsing/operations/create_node.js +12 -2
  70. package/dist/parsing/operations/create_node.js.map +1 -1
  71. package/dist/parsing/operations/create_relationship.d.ts +5 -1
  72. package/dist/parsing/operations/create_relationship.d.ts.map +1 -1
  73. package/dist/parsing/operations/create_relationship.js +12 -2
  74. package/dist/parsing/operations/create_relationship.js.map +1 -1
  75. package/dist/parsing/operations/drop_binding.d.ts +15 -0
  76. package/dist/parsing/operations/drop_binding.d.ts.map +1 -0
  77. package/dist/parsing/operations/drop_binding.js +42 -0
  78. package/dist/parsing/operations/drop_binding.js.map +1 -0
  79. package/dist/parsing/operations/group_by.d.ts +32 -0
  80. package/dist/parsing/operations/group_by.d.ts.map +1 -1
  81. package/dist/parsing/operations/group_by.js +103 -0
  82. package/dist/parsing/operations/group_by.js.map +1 -1
  83. package/dist/parsing/operations/let.d.ts +36 -0
  84. package/dist/parsing/operations/let.d.ts.map +1 -0
  85. package/dist/parsing/operations/let.js +154 -0
  86. package/dist/parsing/operations/let.js.map +1 -0
  87. package/dist/parsing/operations/load.d.ts +31 -0
  88. package/dist/parsing/operations/load.d.ts.map +1 -1
  89. package/dist/parsing/operations/load.js +102 -2
  90. package/dist/parsing/operations/load.js.map +1 -1
  91. package/dist/parsing/operations/merge.d.ts +158 -0
  92. package/dist/parsing/operations/merge.d.ts.map +1 -0
  93. package/dist/parsing/operations/merge.js +338 -0
  94. package/dist/parsing/operations/merge.js.map +1 -0
  95. package/dist/parsing/operations/order_by.d.ts +6 -0
  96. package/dist/parsing/operations/order_by.d.ts.map +1 -1
  97. package/dist/parsing/operations/order_by.js +10 -1
  98. package/dist/parsing/operations/order_by.js.map +1 -1
  99. package/dist/parsing/operations/refresh_binding.d.ts +15 -0
  100. package/dist/parsing/operations/refresh_binding.d.ts.map +1 -0
  101. package/dist/parsing/operations/refresh_binding.js +42 -0
  102. package/dist/parsing/operations/refresh_binding.js.map +1 -0
  103. package/dist/parsing/operations/refresh_node.d.ts +11 -0
  104. package/dist/parsing/operations/refresh_node.d.ts.map +1 -0
  105. package/dist/parsing/operations/refresh_node.js +46 -0
  106. package/dist/parsing/operations/refresh_node.js.map +1 -0
  107. package/dist/parsing/operations/refresh_relationship.d.ts +11 -0
  108. package/dist/parsing/operations/refresh_relationship.d.ts.map +1 -0
  109. package/dist/parsing/operations/refresh_relationship.js +46 -0
  110. package/dist/parsing/operations/refresh_relationship.js.map +1 -0
  111. package/dist/parsing/operations/return.d.ts +34 -0
  112. package/dist/parsing/operations/return.d.ts.map +1 -1
  113. package/dist/parsing/operations/return.js +102 -3
  114. package/dist/parsing/operations/return.js.map +1 -1
  115. package/dist/parsing/operations/union.d.ts +19 -2
  116. package/dist/parsing/operations/union.d.ts.map +1 -1
  117. package/dist/parsing/operations/union.js +47 -11
  118. package/dist/parsing/operations/union.js.map +1 -1
  119. package/dist/parsing/operations/union_all.d.ts +5 -1
  120. package/dist/parsing/operations/union_all.d.ts.map +1 -1
  121. package/dist/parsing/operations/union_all.js +8 -2
  122. package/dist/parsing/operations/union_all.js.map +1 -1
  123. package/dist/parsing/operations/update.d.ts +27 -0
  124. package/dist/parsing/operations/update.d.ts.map +1 -0
  125. package/dist/parsing/operations/update.js +88 -0
  126. package/dist/parsing/operations/update.js.map +1 -0
  127. package/dist/parsing/operations/update_delete.d.ts +43 -0
  128. package/dist/parsing/operations/update_delete.d.ts.map +1 -0
  129. package/dist/parsing/operations/update_delete.js +105 -0
  130. package/dist/parsing/operations/update_delete.js.map +1 -0
  131. package/dist/parsing/parser.d.ts +70 -1
  132. package/dist/parsing/parser.d.ts.map +1 -1
  133. package/dist/parsing/parser.js +704 -10
  134. package/dist/parsing/parser.js.map +1 -1
  135. package/dist/parsing/statement_info_crawler.d.ts +106 -0
  136. package/dist/parsing/statement_info_crawler.d.ts.map +1 -1
  137. package/dist/parsing/statement_info_crawler.js +231 -12
  138. package/dist/parsing/statement_info_crawler.js.map +1 -1
  139. package/dist/tokenization/keyword.d.ts +21 -1
  140. package/dist/tokenization/keyword.d.ts.map +1 -1
  141. package/dist/tokenization/keyword.js +20 -0
  142. package/dist/tokenization/keyword.js.map +1 -1
  143. package/dist/tokenization/token.d.ts +24 -0
  144. package/dist/tokenization/token.d.ts.map +1 -1
  145. package/dist/tokenization/token.js +73 -0
  146. package/dist/tokenization/token.js.map +1 -1
  147. package/package.json +1 -1
@@ -1,10 +1,15 @@
1
1
  import ASTNode from "../parsing/ast_node";
2
2
  import Node from "./node";
3
3
  declare class PhysicalNode extends Node {
4
- private _statement;
4
+ private _virtual;
5
5
  set statement(statement: ASTNode | null);
6
6
  get statement(): ASTNode | null;
7
- data(args?: Record<string, any> | null): Promise<Record<string, any>[]>;
7
+ set isStatic(value: boolean);
8
+ get isStatic(): boolean;
9
+ set refreshEveryMs(value: number | null);
10
+ get refreshEveryMs(): number | null;
11
+ invalidateCache(): void;
12
+ data(args?: Record<string, any> | null, provenance?: boolean): Promise<Record<string, any>[]>;
8
13
  }
9
14
  export default PhysicalNode;
10
15
  //# sourceMappingURL=physical_node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"physical_node.d.ts","sourceRoot":"","sources":["../../src/graph/physical_node.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,cAAM,YAAa,SAAQ,IAAI;IAC3B,OAAO,CAAC,UAAU,CAAwB;IAC1C,IAAW,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAE7C;IACD,IAAW,SAAS,IAAI,OAAO,GAAG,IAAI,CAErC;IACY,IAAI,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAY7F;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"physical_node.d.ts","sourceRoot":"","sources":["../../src/graph/physical_node.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAG1B,cAAM,YAAa,SAAQ,IAAI;IAC3B,OAAO,CAAC,QAAQ,CAA4C;IAE5D,IAAW,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAE7C;IACD,IAAW,SAAS,IAAI,OAAO,GAAG,IAAI,CAErC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAEjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,IAAW,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE7C;IACD,IAAW,cAAc,IAAI,MAAM,GAAG,IAAI,CAEzC;IACM,eAAe,IAAI,IAAI;IAGvB,IAAI,CACP,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,EACvC,UAAU,GAAE,OAAe,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAGpC;AAED,eAAe,YAAY,CAAC"}
@@ -1,42 +1,38 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
14
5
  Object.defineProperty(exports, "__esModule", { value: true });
15
6
  const node_1 = __importDefault(require("./node"));
7
+ const virtual_statement_1 = __importDefault(require("./virtual_statement"));
16
8
  class PhysicalNode extends node_1.default {
17
9
  constructor() {
18
10
  super(...arguments);
19
- this._statement = null;
11
+ this._virtual = new virtual_statement_1.default();
20
12
  }
21
13
  set statement(statement) {
22
- this._statement = statement;
14
+ this._virtual.statement = statement;
23
15
  }
24
16
  get statement() {
25
- return this._statement;
26
- }
27
- data() {
28
- return __awaiter(this, arguments, void 0, function* (args = null) {
29
- if (this._statement === null) {
30
- throw new Error("Statement is null");
31
- }
32
- // Lazy require to avoid a load-time cycle:
33
- // physical_node -> runner -> parsing -> graph (back to here).
34
- // Python uses the same idiom (function-local import).
35
- const RunnerCtor = require("../compute/runner").default;
36
- const runner = new RunnerCtor(null, this._statement, args);
37
- yield runner.run();
38
- return runner.results;
39
- });
17
+ return this._virtual.statement;
18
+ }
19
+ set isStatic(value) {
20
+ this._virtual.isStatic = value;
21
+ }
22
+ get isStatic() {
23
+ return this._virtual.isStatic;
24
+ }
25
+ set refreshEveryMs(value) {
26
+ this._virtual.refreshEveryMs = value;
27
+ }
28
+ get refreshEveryMs() {
29
+ return this._virtual.refreshEveryMs;
30
+ }
31
+ invalidateCache() {
32
+ this._virtual.invalidateCache();
33
+ }
34
+ data(args = null, provenance = false) {
35
+ return this._virtual.data(args, provenance);
40
36
  }
41
37
  }
42
38
  exports.default = PhysicalNode;
@@ -1 +1 @@
1
- {"version":3,"file":"physical_node.js","sourceRoot":"","sources":["../../src/graph/physical_node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,kDAA0B;AAE1B,MAAM,YAAa,SAAQ,cAAI;IAA/B;;QACY,eAAU,GAAmB,IAAI,CAAC;IAmB9C,CAAC;IAlBG,IAAW,SAAS,CAAC,SAAyB;QAC1C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IACY,IAAI;6DAAC,OAAmC,IAAI;YACrD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACzC,CAAC;YACD,2CAA2C;YAC3C,8DAA8D;YAC9D,sDAAsD;YACtD,MAAM,UAAU,GAAkB,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3D,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,OAAO,CAAC;QAC1B,CAAC;KAAA;CACJ;AAED,kBAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"physical_node.js","sourceRoot":"","sources":["../../src/graph/physical_node.ts"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAC1B,4EAAmD;AAEnD,MAAM,YAAa,SAAQ,cAAI;IAA/B;;QACY,aAAQ,GAAqB,IAAI,2BAAgB,EAAE,CAAC;IA6BhE,CAAC;IA3BG,IAAW,SAAS,CAAC,SAAyB;QAC1C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IACxC,CAAC;IACD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACnC,CAAC;IACD,IAAW,QAAQ,CAAC,KAAc;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IACnC,CAAC;IACD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAClC,CAAC;IACD,IAAW,cAAc,CAAC,KAAoB;QAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC;IACzC,CAAC;IACD,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;IACxC,CAAC;IACM,eAAe;QAClB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IACpC,CAAC;IACM,IAAI,CACP,OAAmC,IAAI,EACvC,aAAsB,KAAK;QAE3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;CACJ;AAED,kBAAe,YAAY,CAAC"}
@@ -1,10 +1,15 @@
1
1
  import ASTNode from "../parsing/ast_node";
2
2
  import Relationship from "./relationship";
3
3
  declare class PhysicalRelationship extends Relationship {
4
- private _statement;
4
+ private _virtual;
5
5
  set statement(statement: ASTNode | null);
6
6
  get statement(): ASTNode | null;
7
- data(args?: Record<string, any> | null): Promise<Record<string, any>[]>;
7
+ set isStatic(value: boolean);
8
+ get isStatic(): boolean;
9
+ set refreshEveryMs(value: number | null);
10
+ get refreshEveryMs(): number | null;
11
+ invalidateCache(): void;
12
+ data(args?: Record<string, any> | null, provenance?: boolean): Promise<Record<string, any>[]>;
8
13
  }
9
14
  export default PhysicalRelationship;
10
15
  //# sourceMappingURL=physical_relationship.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"physical_relationship.d.ts","sourceRoot":"","sources":["../../src/graph/physical_relationship.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,cAAM,oBAAqB,SAAQ,YAAY;IAC3C,OAAO,CAAC,UAAU,CAAwB;IAC1C,IAAW,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAE7C;IACD,IAAW,SAAS,IAAI,OAAO,GAAG,IAAI,CAErC;IACY,IAAI,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAY7F;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"physical_relationship.d.ts","sourceRoot":"","sources":["../../src/graph/physical_relationship.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,cAAM,oBAAqB,SAAQ,YAAY;IAC3C,OAAO,CAAC,QAAQ,CAA4C;IAE5D,IAAW,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAE7C;IACD,IAAW,SAAS,IAAI,OAAO,GAAG,IAAI,CAErC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAEjC;IACD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,IAAW,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE7C;IACD,IAAW,cAAc,IAAI,MAAM,GAAG,IAAI,CAEzC;IACM,eAAe,IAAI,IAAI;IAGvB,IAAI,CACP,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAW,EACvC,UAAU,GAAE,OAAe,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAGpC;AAED,eAAe,oBAAoB,CAAC"}
@@ -1,42 +1,38 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
14
5
  Object.defineProperty(exports, "__esModule", { value: true });
15
6
  const relationship_1 = __importDefault(require("./relationship"));
7
+ const virtual_statement_1 = __importDefault(require("./virtual_statement"));
16
8
  class PhysicalRelationship extends relationship_1.default {
17
9
  constructor() {
18
10
  super(...arguments);
19
- this._statement = null;
11
+ this._virtual = new virtual_statement_1.default();
20
12
  }
21
13
  set statement(statement) {
22
- this._statement = statement;
14
+ this._virtual.statement = statement;
23
15
  }
24
16
  get statement() {
25
- return this._statement;
26
- }
27
- data() {
28
- return __awaiter(this, arguments, void 0, function* (args = null) {
29
- if (this._statement === null) {
30
- throw new Error("Statement is null");
31
- }
32
- // Lazy require to avoid a load-time cycle:
33
- // physical_relationship -> runner -> parsing -> graph (back to here).
34
- // Python uses the same idiom (function-local import).
35
- const RunnerCtor = require("../compute/runner").default;
36
- const runner = new RunnerCtor(null, this._statement, args);
37
- yield runner.run();
38
- return runner.results;
39
- });
17
+ return this._virtual.statement;
18
+ }
19
+ set isStatic(value) {
20
+ this._virtual.isStatic = value;
21
+ }
22
+ get isStatic() {
23
+ return this._virtual.isStatic;
24
+ }
25
+ set refreshEveryMs(value) {
26
+ this._virtual.refreshEveryMs = value;
27
+ }
28
+ get refreshEveryMs() {
29
+ return this._virtual.refreshEveryMs;
30
+ }
31
+ invalidateCache() {
32
+ this._virtual.invalidateCache();
33
+ }
34
+ data(args = null, provenance = false) {
35
+ return this._virtual.data(args, provenance);
40
36
  }
41
37
  }
42
38
  exports.default = PhysicalRelationship;
@@ -1 +1 @@
1
- {"version":3,"file":"physical_relationship.js","sourceRoot":"","sources":["../../src/graph/physical_relationship.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,kEAA0C;AAE1C,MAAM,oBAAqB,SAAQ,sBAAY;IAA/C;;QACY,eAAU,GAAmB,IAAI,CAAC;IAmB9C,CAAC;IAlBG,IAAW,SAAS,CAAC,SAAyB;QAC1C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IACY,IAAI;6DAAC,OAAmC,IAAI;YACrD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACzC,CAAC;YACD,2CAA2C;YAC3C,sEAAsE;YACtE,sDAAsD;YACtD,MAAM,UAAU,GAAkB,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3D,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,OAAO,CAAC;QAC1B,CAAC;KAAA;CACJ;AAED,kBAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"physical_relationship.js","sourceRoot":"","sources":["../../src/graph/physical_relationship.ts"],"names":[],"mappings":";;;;;AACA,kEAA0C;AAC1C,4EAAmD;AAEnD,MAAM,oBAAqB,SAAQ,sBAAY;IAA/C;;QACY,aAAQ,GAAqB,IAAI,2BAAgB,EAAE,CAAC;IA6BhE,CAAC;IA3BG,IAAW,SAAS,CAAC,SAAyB;QAC1C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IACxC,CAAC;IACD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACnC,CAAC;IACD,IAAW,QAAQ,CAAC,KAAc;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IACnC,CAAC;IACD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAClC,CAAC;IACD,IAAW,cAAc,CAAC,KAAoB;QAC1C,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC;IACzC,CAAC;IACD,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;IACxC,CAAC;IACM,eAAe;QAClB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IACpC,CAAC;IACM,IAAI,CACP,OAAmC,IAAI,EACvC,aAAsB,KAAK;QAE3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;CACJ;AAED,kBAAe,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"relationship_match_collector.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAC;AAEF,cAAM,0BAA0B;IAC5B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAA0B;IAErC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,uBAAuB;IAkBrF,IAAW,OAAO,CAAC,IAAI,EAAE,GAAG,EAI3B;IACM,GAAG,IAAI,uBAAuB,GAAG,SAAS;IAO1C,KAAK,IAAI,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,IAAI;IAW1E,IAAW,OAAO,IAAI,uBAAuB,EAAE,CAE9C;IAKM,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAG7C;AAED,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"relationship_match_collector.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAC;AAEF,cAAM,0BAA0B;IAC5B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAA0B;IAErC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,uBAAuB;IAyBrF,IAAW,OAAO,CAAC,IAAI,EAAE,GAAG,EAI3B;IACM,GAAG,IAAI,uBAAuB,GAAG,SAAS;IAO1C,KAAK,IAAI,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,IAAI;IAW1E,IAAW,OAAO,IAAI,uBAAuB,EAAE,CAE9C;IAKM,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAG7C;AAED,eAAe,0BAA0B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const virtual_sources_1 = require("./virtual_sources");
3
4
  class RelationshipMatchCollector {
4
5
  constructor() {
5
6
  this._matches = [];
@@ -13,6 +14,14 @@ class RelationshipMatchCollector {
13
14
  const actualType = currentRecord && "_type" in currentRecord ? currentRecord["_type"] : relationship.type;
14
15
  const relProperties = data === null || data === void 0 ? void 0 : data.properties();
15
16
  const match = Object.assign(Object.assign({}, (relProperties || {})), { type: actualType, startNode: ((_a = relationship.source) === null || _a === void 0 ? void 0 : _a.value()) || {}, endNode: null, properties: relProperties });
17
+ // Thread the underlying record's inner provenance onto the
18
+ // freshly constructed match object so the snapshot can read it
19
+ // by reference.
20
+ if (currentRecord != null) {
21
+ const src = (0, virtual_sources_1.getVirtualSource)(currentRecord);
22
+ if (src !== undefined)
23
+ (0, virtual_sources_1.attachVirtualSource)(match, src);
24
+ }
16
25
  this._matches.push(match);
17
26
  this._nodeIds.push(traversalId);
18
27
  this._nodeIdSet.add(traversalId);
@@ -1 +1 @@
1
- {"version":3,"file":"relationship_match_collector.js","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":";;AAUA,MAAM,0BAA0B;IAAhC;QACY,aAAQ,GAA8B,EAAE,CAAC;QACzC,aAAQ,GAAkB,EAAE,CAAC;QAC7B,eAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;IAqDhD,CAAC;IAnDU,IAAI,CAAC,YAA0B,EAAE,WAAmB;;QACvD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAC;QACtC,MAAM,UAAU,GACZ,aAAa,IAAI,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAK,CAAC;QAC5F,MAAM,aAAa,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAyB,CAAC;QAChE,MAAM,KAAK,mCACJ,CAAC,aAAa,IAAI,EAAE,CAAC,KACxB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,CAAA,MAAA,YAAY,CAAC,MAAM,0CAAE,KAAK,EAAE,KAAI,EAAE,EAC7C,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,aAAa,GAC5B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAW,OAAO,CAAC,IAAS;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACnE,CAAC;IACL,CAAC;IACM,GAAG;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IACM,KAAK;QACR,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;IACD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD;;;OAGG;IACI,UAAU,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CACJ;AAED,kBAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"relationship_match_collector.js","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":";;AACA,uDAA0E;AAU1E,MAAM,0BAA0B;IAAhC;QACY,aAAQ,GAA8B,EAAE,CAAC;QACzC,aAAQ,GAAkB,EAAE,CAAC;QAC7B,eAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;IA4DhD,CAAC;IA1DU,IAAI,CAAC,YAA0B,EAAE,WAAmB;;QACvD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAC;QACtC,MAAM,UAAU,GACZ,aAAa,IAAI,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAK,CAAC;QAC5F,MAAM,aAAa,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAyB,CAAC;QAChE,MAAM,KAAK,mCACJ,CAAC,aAAa,IAAI,EAAE,CAAC,KACxB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,CAAA,MAAA,YAAY,CAAC,MAAM,0CAAE,KAAK,EAAE,KAAI,EAAE,EAC7C,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,aAAa,GAC5B,CAAC;QACF,2DAA2D;QAC3D,+DAA+D;QAC/D,gBAAgB;QAChB,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAA,kCAAgB,EAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,SAAS;gBAAE,IAAA,qCAAmB,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAW,OAAO,CAAC,IAAS;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACnE,CAAC;IACL,CAAC;IACM,GAAG;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IACM,KAAK;QACR,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,OAAO,QAAQ,CAAC;QACpB,CAAC;IACL,CAAC;IACD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD;;;OAGG;IACI,UAAU,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CACJ;AAED,kBAAe,0BAA0B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** Register a virtual-sourced record with its inner provenance row. */
2
+ export declare function attachVirtualSource(record: object, prov: unknown): void;
3
+ /**
4
+ * Look up the inner provenance for a record / match object. Returns
5
+ * `undefined` if the value did not originate from a deep-mode virtual.
6
+ */
7
+ export declare function getVirtualSource(record: object | null | undefined): unknown | undefined;
8
+ //# sourceMappingURL=virtual_sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual_sources.d.ts","sourceRoot":"","sources":["../../src/graph/virtual_sources.ts"],"names":[],"mappings":"AAcA,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAEvE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAGvF"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.attachVirtualSource = attachVirtualSource;
4
+ exports.getVirtualSource = getVirtualSource;
5
+ /**
6
+ * Module-level back-reference from a virtual node / relationship record
7
+ * (or `RelationshipMatchRecord`) to the inner-runner `RowProvenance` that
8
+ * produced it.
9
+ *
10
+ * Used by deep-mode provenance to thread lineage from a `CREATE VIRTUAL
11
+ * (:X) AS { ... }` sub-query into the outer query's row-level bindings.
12
+ *
13
+ * Decoupled from `compute/provenance` to keep the graph layer free of
14
+ * compute imports — the value is typed as `unknown` here and re-cast by
15
+ * the snapshot code that consumes it.
16
+ */
17
+ const virtualSources = new WeakMap();
18
+ /** Register a virtual-sourced record with its inner provenance row. */
19
+ function attachVirtualSource(record, prov) {
20
+ virtualSources.set(record, prov);
21
+ }
22
+ /**
23
+ * Look up the inner provenance for a record / match object. Returns
24
+ * `undefined` if the value did not originate from a deep-mode virtual.
25
+ */
26
+ function getVirtualSource(record) {
27
+ if (record == null)
28
+ return undefined;
29
+ return virtualSources.get(record);
30
+ }
31
+ //# sourceMappingURL=virtual_sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual_sources.js","sourceRoot":"","sources":["../../src/graph/virtual_sources.ts"],"names":[],"mappings":";;AAeA,kDAEC;AAMD,4CAGC;AA1BD;;;;;;;;;;;GAWG;AACH,MAAM,cAAc,GAA6B,IAAI,OAAO,EAAE,CAAC;AAE/D,uEAAuE;AACvE,SAAgB,mBAAmB,CAAC,MAAc,EAAE,IAAa;IAC7D,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAiC;IAC9D,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import ASTNode from "../parsing/ast_node";
2
+ /**
3
+ * Backing statement of a virtual node or relationship: owns the AST that
4
+ * synthesises the records and the optional in-memory cache around its
5
+ * execution.
6
+ *
7
+ * Used by {@link PhysicalNode} and {@link PhysicalRelationship} via
8
+ * composition so both physical kinds share a single caching + execution
9
+ * implementation.
10
+ */
11
+ declare class VirtualStatement {
12
+ private _statement;
13
+ private _isStatic;
14
+ private _refreshEveryMs;
15
+ private _cache;
16
+ private _cachedAt;
17
+ set statement(statement: ASTNode | null);
18
+ get statement(): ASTNode | null;
19
+ set isStatic(value: boolean);
20
+ get isStatic(): boolean;
21
+ set refreshEveryMs(value: number | null);
22
+ get refreshEveryMs(): number | null;
23
+ invalidateCache(): void;
24
+ /** True if the cached payload (if any) is still within its refresh window. */
25
+ private isCacheFresh;
26
+ /**
27
+ * Execute the backing statement and return its records, using the
28
+ * persistent cache when it is safe to do so.
29
+ *
30
+ * @param args Pass-down filter arguments; bypasses the cache.
31
+ * @param provenance Run the inner statement with provenance enabled
32
+ * so each emitted record carries a weak-map link to
33
+ * the inner row that produced it. Also bypasses the
34
+ * cache (the weak-map binding must be re-established
35
+ * each call).
36
+ */
37
+ data(args?: Record<string, any> | null, provenance?: boolean): Promise<Record<string, any>[]>;
38
+ private runInner;
39
+ }
40
+ export default VirtualStatement;
41
+ //# sourceMappingURL=virtual_statement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual_statement.d.ts","sourceRoot":"","sources":["../../src/graph/virtual_statement.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAG1C;;;;;;;;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;IAE9B,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,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAoBnB,QAAQ;CAoBzB;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,143 @@
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
+ const virtual_sources_1 = require("./virtual_sources");
46
+ /**
47
+ * Backing statement of a virtual node or relationship: owns the AST that
48
+ * synthesises the records and the optional in-memory cache around its
49
+ * execution.
50
+ *
51
+ * Used by {@link PhysicalNode} and {@link PhysicalRelationship} via
52
+ * composition so both physical kinds share a single caching + execution
53
+ * implementation.
54
+ */
55
+ class VirtualStatement {
56
+ constructor() {
57
+ this._statement = null;
58
+ this._isStatic = false;
59
+ this._refreshEveryMs = null;
60
+ this._cache = null;
61
+ this._cachedAt = 0;
62
+ }
63
+ set statement(statement) {
64
+ this._statement = statement;
65
+ this.invalidateCache();
66
+ }
67
+ get statement() {
68
+ return this._statement;
69
+ }
70
+ set isStatic(value) {
71
+ this._isStatic = value;
72
+ }
73
+ get isStatic() {
74
+ return this._isStatic;
75
+ }
76
+ set refreshEveryMs(value) {
77
+ this._refreshEveryMs = value;
78
+ }
79
+ get refreshEveryMs() {
80
+ return this._refreshEveryMs;
81
+ }
82
+ invalidateCache() {
83
+ this._cache = null;
84
+ this._cachedAt = 0;
85
+ }
86
+ /** True if the cached payload (if any) is still within its refresh window. */
87
+ isCacheFresh() {
88
+ return this._refreshEveryMs === null || Date.now() - this._cachedAt < this._refreshEveryMs;
89
+ }
90
+ /**
91
+ * Execute the backing statement and return its records, using the
92
+ * persistent cache when it is safe to do so.
93
+ *
94
+ * @param args Pass-down filter arguments; bypasses the cache.
95
+ * @param provenance Run the inner statement with provenance enabled
96
+ * so each emitted record carries a weak-map link to
97
+ * the inner row that produced it. Also bypasses the
98
+ * cache (the weak-map binding must be re-established
99
+ * each call).
100
+ */
101
+ data() {
102
+ return __awaiter(this, arguments, void 0, function* (args = null, provenance = false) {
103
+ if (this._statement === null) {
104
+ throw new Error("Statement is null");
105
+ }
106
+ // Filter pass-down queries (with args) and provenance mode bypass
107
+ // the persistent cache: arg-bound results depend on runtime values,
108
+ // and provenance mode needs fresh records to back the lineage
109
+ // weak-map.
110
+ const cacheable = !provenance && args === null && this._isStatic;
111
+ if (cacheable && this._cache !== null && this.isCacheFresh()) {
112
+ return this._cache;
113
+ }
114
+ const result = yield this.runInner(args, provenance);
115
+ if (cacheable) {
116
+ this._cache = result;
117
+ this._cachedAt = Date.now();
118
+ }
119
+ return result;
120
+ });
121
+ }
122
+ runInner(args, provenance) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ // Lazy dynamic import to avoid a load-time cycle:
125
+ // virtual_statement -> runner -> parsing -> graph (back to here).
126
+ // Python uses the same idiom (function-local import).
127
+ const RunnerCtor = (yield Promise.resolve().then(() => __importStar(require("../compute/runner")))).default;
128
+ const runner = new RunnerCtor(null, this._statement, args, { provenance });
129
+ yield runner.run();
130
+ const result = runner.results;
131
+ if (provenance) {
132
+ const prov = runner.provenance;
133
+ const len = Math.min(prov.length, result.length);
134
+ for (let i = 0; i < len; i++) {
135
+ (0, virtual_sources_1.attachVirtualSource)(result[i], prov[i]);
136
+ }
137
+ }
138
+ return result;
139
+ });
140
+ }
141
+ }
142
+ exports.default = VirtualStatement;
143
+ //# sourceMappingURL=virtual_statement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual_statement.js","sourceRoot":"","sources":["../../src/graph/virtual_statement.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,8 @@
6
6
  * @packageDocumentation
7
7
  */
8
8
  import { default as FlowQuery } from "./compute/flowquery";
9
- import type { RunnerMetadata } from "./compute/runner";
10
- import type { NodeInfo, RelationshipInfo, StatementInfo } from "./parsing/statement_info_crawler";
9
+ import type { CellBindingTrace, CellTrace, LineageReport, NodeBinding, RelationshipBinding, RelationshipHop, RowProvenance, RunnerMetadata, RunnerOptions } from "./compute/runner";
10
+ import type { ColumnLineage, ColumnReference, NodeInfo, RelationshipInfo, StatementInfo } from "./parsing/statement_info_crawler";
11
11
  export default FlowQuery;
12
- export type { NodeInfo, RelationshipInfo, RunnerMetadata, StatementInfo };
12
+ export type { CellBindingTrace, CellTrace, ColumnLineage, ColumnReference, LineageReport, NodeBinding, NodeInfo, RelationshipBinding, RelationshipHop, RelationshipInfo, RowProvenance, RunnerMetadata, RunnerOptions, StatementInfo, };
13
13
  //# 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,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQvD,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AA+BlG,eAAe,SAAS,CAAC;AACzB,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":";;;;;AAAA;;;;;;GAMG;AACH,oEAA2D;AAE3D,4EAAoD;AACpD,4FAAmE;AAQnE;;;;;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.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"}
@@ -6,11 +6,11 @@
6
6
  * @packageDocumentation
7
7
  */
8
8
  import { default as FlowQuery } from "./compute/flowquery";
9
- import { RunnerMetadata } from "./compute/runner";
9
+ import { CellBindingTrace, CellTrace, LineageReport, RunnerMetadata } from "./compute/runner";
10
10
  import Function from "./parsing/functions/function";
11
11
  import FunctionFactory, { AsyncDataProvider } from "./parsing/functions/function_factory";
12
12
  import { FunctionMetadata, OutputSchema, ParameterSchema } from "./parsing/functions/function_metadata";
13
- import { NodeInfo, RelationshipInfo, StatementInfo } from "./parsing/statement_info_crawler";
13
+ import { ColumnLineage, ColumnReference, NodeInfo, RelationshipInfo, StatementInfo } from "./parsing/statement_info_crawler";
14
14
  export default FlowQuery;
15
- export { FlowQuery, Function, FunctionFactory, AsyncDataProvider, FunctionMetadata, ParameterSchema, OutputSchema, RunnerMetadata, StatementInfo, NodeInfo, RelationshipInfo, };
15
+ export { FlowQuery, Function, FunctionFactory, AsyncDataProvider, FunctionMetadata, ParameterSchema, OutputSchema, RunnerMetadata, StatementInfo, NodeInfo, RelationshipInfo, ColumnLineage, ColumnReference, CellTrace, CellBindingTrace, LineageReport, };
16
16
  //# sourceMappingURL=index.node.d.ts.map
@@ -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,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,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,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AA+B7F,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,GACnB,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;GAMG;AACH,oEAA2D;AA0CvD,0FA1CgB,mBAAS,OA0ChB;AAxCb,4EAAoD;AAyChD,mBAzCG,kBAAQ,CAyCH;AAxCZ,4FAA0F;AAyCtF,0BAzCG,0BAAe,CAyCH;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"}
@@ -20,6 +20,15 @@ declare class ASTNode {
20
20
  * @param child - The child node to add
21
21
  */
22
22
  addChild(child: ASTNode): void;
23
+ /**
24
+ * Replaces an existing child node with a new node in-place. The
25
+ * new node takes the old node's position and parent reference.
26
+ *
27
+ * @param oldChild - The existing child to replace
28
+ * @param newChild - The replacement node
29
+ * @returns True if the replacement was performed, false otherwise
30
+ */
31
+ replaceChild(oldChild: ASTNode, newChild: ASTNode): boolean;
23
32
  /**
24
33
  * Returns the first child node.
25
34
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ast_node.d.ts","sourceRoot":"","sources":["../../src/parsing/ast_node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,cAAM,OAAO;IACT,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IACzC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAEnC;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAKrC;;;;;OAKG;IACI,UAAU,IAAI,OAAO;IAO5B;;;;;OAKG;IACI,SAAS,IAAI,OAAO;IAO3B;;;;OAIG;IACI,WAAW,IAAI,OAAO,EAAE;IAI/B;;;;OAIG;IACI,UAAU,IAAI,MAAM;IAI3B;;;;OAIG;IACI,KAAK,IAAI,GAAG;IAInB;;;;OAIG;IACI,UAAU,IAAI,OAAO;IAI5B;;;;OAIG;IACI,SAAS,IAAI,OAAO;IAI3B;;;;OAIG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;;;OAIG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;;;OAIG;IACI,KAAK,IAAI,MAAM;IAItB;;;;;OAKG;IACH,OAAO,CAAE,MAAM;IAWf;;;;OAIG;IACH,SAAS,CAAC,QAAQ,IAAI,MAAM;CAG/B;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"ast_node.d.ts","sourceRoot":"","sources":["../../src/parsing/ast_node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,cAAM,OAAO;IACT,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IACzC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAEnC;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAKrC;;;;;;;OAOG;IACI,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO;IAUlE;;;;;OAKG;IACI,UAAU,IAAI,OAAO;IAO5B;;;;;OAKG;IACI,SAAS,IAAI,OAAO;IAO3B;;;;OAIG;IACI,WAAW,IAAI,OAAO,EAAE;IAI/B;;;;OAIG;IACI,UAAU,IAAI,MAAM;IAI3B;;;;OAIG;IACI,KAAK,IAAI,GAAG;IAInB;;;;OAIG;IACI,UAAU,IAAI,OAAO;IAI5B;;;;OAIG;IACI,SAAS,IAAI,OAAO;IAI3B;;;;OAIG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;;;OAIG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;;;OAIG;IACI,KAAK,IAAI,MAAM;IAItB;;;;;OAKG;IACH,OAAO,CAAE,MAAM;IAWf;;;;OAIG;IACH,SAAS,CAAC,QAAQ,IAAI,MAAM;CAG/B;AAED,eAAe,OAAO,CAAC"}