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.
Files changed (145) hide show
  1. package/README.md +101 -0
  2. package/dist/compute/flowquery.d.ts +18 -0
  3. package/dist/compute/flowquery.d.ts.map +1 -1
  4. package/dist/compute/flowquery.js +26 -0
  5. package/dist/compute/flowquery.js.map +1 -1
  6. package/dist/compute/runner.d.ts +29 -0
  7. package/dist/compute/runner.d.ts.map +1 -1
  8. package/dist/compute/runner.js +111 -3
  9. package/dist/compute/runner.js.map +1 -1
  10. package/dist/extensibility.d.ts +4 -1
  11. package/dist/extensibility.d.ts.map +1 -1
  12. package/dist/extensibility.js +14 -1
  13. package/dist/extensibility.js.map +1 -1
  14. package/dist/flowquery.min.js +1 -1
  15. package/dist/graph/data.d.ts +1 -0
  16. package/dist/graph/data.d.ts.map +1 -1
  17. package/dist/graph/data.js +3 -0
  18. package/dist/graph/data.js.map +1 -1
  19. package/dist/graph/data_cache.d.ts +3 -1
  20. package/dist/graph/data_cache.d.ts.map +1 -1
  21. package/dist/graph/data_cache.js +5 -4
  22. package/dist/graph/data_cache.js.map +1 -1
  23. package/dist/graph/data_resolver.d.ts +13 -0
  24. package/dist/graph/data_resolver.d.ts.map +1 -1
  25. package/dist/graph/data_resolver.js +52 -0
  26. package/dist/graph/data_resolver.js.map +1 -1
  27. package/dist/graph/database.d.ts +19 -0
  28. package/dist/graph/database.d.ts.map +1 -1
  29. package/dist/graph/database.js +76 -0
  30. package/dist/graph/database.js.map +1 -1
  31. package/dist/graph/node.d.ts +21 -0
  32. package/dist/graph/node.d.ts.map +1 -1
  33. package/dist/graph/node.js +147 -0
  34. package/dist/graph/node.js.map +1 -1
  35. package/dist/graph/pattern.d.ts +19 -1
  36. package/dist/graph/pattern.d.ts.map +1 -1
  37. package/dist/graph/pattern.js +279 -1
  38. package/dist/graph/pattern.js.map +1 -1
  39. package/dist/graph/pattern_expression.d.ts +3 -1
  40. package/dist/graph/pattern_expression.d.ts.map +1 -1
  41. package/dist/graph/pattern_expression.js +8 -3
  42. package/dist/graph/pattern_expression.js.map +1 -1
  43. package/dist/graph/patterns.d.ts +2 -1
  44. package/dist/graph/patterns.d.ts.map +1 -1
  45. package/dist/graph/patterns.js +3 -3
  46. package/dist/graph/patterns.js.map +1 -1
  47. package/dist/graph/physical_node.d.ts +10 -1
  48. package/dist/graph/physical_node.d.ts.map +1 -1
  49. package/dist/graph/physical_node.js +19 -2
  50. package/dist/graph/physical_node.js.map +1 -1
  51. package/dist/graph/physical_relationship.d.ts +10 -1
  52. package/dist/graph/physical_relationship.d.ts.map +1 -1
  53. package/dist/graph/physical_relationship.js +21 -2
  54. package/dist/graph/physical_relationship.js.map +1 -1
  55. package/dist/graph/relationship.d.ts +25 -1
  56. package/dist/graph/relationship.d.ts.map +1 -1
  57. package/dist/graph/relationship.js +135 -0
  58. package/dist/graph/relationship.js.map +1 -1
  59. package/dist/graph/relationship_match_collector.d.ts +1 -1
  60. package/dist/graph/relationship_match_collector.d.ts.map +1 -1
  61. package/dist/graph/relationship_match_collector.js +29 -3
  62. package/dist/graph/relationship_match_collector.js.map +1 -1
  63. package/dist/graph/relationship_reference.d.ts.map +1 -1
  64. package/dist/graph/relationship_reference.js +1 -2
  65. package/dist/graph/relationship_reference.js.map +1 -1
  66. package/dist/graph/source_access.d.ts +107 -0
  67. package/dist/graph/source_access.d.ts.map +1 -0
  68. package/dist/graph/source_access.js +726 -0
  69. package/dist/graph/source_access.js.map +1 -0
  70. package/dist/graph/source_context.d.ts +101 -0
  71. package/dist/graph/source_context.d.ts.map +1 -0
  72. package/dist/graph/source_context.js +392 -0
  73. package/dist/graph/source_context.js.map +1 -0
  74. package/dist/graph/source_provider.d.ts +263 -0
  75. package/dist/graph/source_provider.d.ts.map +1 -0
  76. package/dist/graph/source_provider.js +306 -0
  77. package/dist/graph/source_provider.js.map +1 -0
  78. package/dist/graph/statement_source.d.ts +27 -0
  79. package/dist/graph/statement_source.d.ts.map +1 -0
  80. package/dist/graph/statement_source.js +117 -0
  81. package/dist/graph/statement_source.js.map +1 -0
  82. package/dist/graph/virtual_statement.d.ts +19 -1
  83. package/dist/graph/virtual_statement.d.ts.map +1 -1
  84. package/dist/graph/virtual_statement.js +197 -5
  85. package/dist/graph/virtual_statement.js.map +1 -1
  86. package/dist/index.browser.d.ts +3 -0
  87. package/dist/index.browser.d.ts.map +1 -1
  88. package/dist/index.browser.js +14 -0
  89. package/dist/index.browser.js.map +1 -1
  90. package/dist/index.node.d.ts +3 -0
  91. package/dist/index.node.d.ts.map +1 -1
  92. package/dist/index.node.js +14 -1
  93. package/dist/index.node.js.map +1 -1
  94. package/dist/parsing/expressions/expression.d.ts +6 -0
  95. package/dist/parsing/expressions/expression.d.ts.map +1 -1
  96. package/dist/parsing/expressions/expression.js +30 -3
  97. package/dist/parsing/expressions/expression.js.map +1 -1
  98. package/dist/parsing/operations/aggregated_return.d.ts +2 -0
  99. package/dist/parsing/operations/aggregated_return.d.ts.map +1 -1
  100. package/dist/parsing/operations/aggregated_return.js +6 -0
  101. package/dist/parsing/operations/aggregated_return.js.map +1 -1
  102. package/dist/parsing/operations/aggregated_with.d.ts +2 -0
  103. package/dist/parsing/operations/aggregated_with.d.ts.map +1 -1
  104. package/dist/parsing/operations/aggregated_with.js +6 -0
  105. package/dist/parsing/operations/aggregated_with.js.map +1 -1
  106. package/dist/parsing/operations/create_node.d.ts +5 -1
  107. package/dist/parsing/operations/create_node.d.ts.map +1 -1
  108. package/dist/parsing/operations/create_node.js +20 -1
  109. package/dist/parsing/operations/create_node.js.map +1 -1
  110. package/dist/parsing/operations/create_relationship.d.ts +5 -1
  111. package/dist/parsing/operations/create_relationship.d.ts.map +1 -1
  112. package/dist/parsing/operations/create_relationship.js +21 -1
  113. package/dist/parsing/operations/create_relationship.js.map +1 -1
  114. package/dist/parsing/operations/limit.d.ts +1 -0
  115. package/dist/parsing/operations/limit.d.ts.map +1 -1
  116. package/dist/parsing/operations/limit.js +3 -0
  117. package/dist/parsing/operations/limit.js.map +1 -1
  118. package/dist/parsing/operations/match.d.ts +16 -0
  119. package/dist/parsing/operations/match.d.ts.map +1 -1
  120. package/dist/parsing/operations/match.js +104 -8
  121. package/dist/parsing/operations/match.js.map +1 -1
  122. package/dist/parsing/operations/operation.d.ts +6 -0
  123. package/dist/parsing/operations/operation.d.ts.map +1 -1
  124. package/dist/parsing/operations/operation.js +8 -0
  125. package/dist/parsing/operations/operation.js.map +1 -1
  126. package/dist/parsing/operations/return.d.ts +10 -0
  127. package/dist/parsing/operations/return.d.ts.map +1 -1
  128. package/dist/parsing/operations/return.js +23 -0
  129. package/dist/parsing/operations/return.js.map +1 -1
  130. package/dist/parsing/operations/unwind.d.ts +1 -0
  131. package/dist/parsing/operations/unwind.d.ts.map +1 -1
  132. package/dist/parsing/operations/unwind.js +9 -2
  133. package/dist/parsing/operations/unwind.js.map +1 -1
  134. package/dist/parsing/operations/where.d.ts +1 -0
  135. package/dist/parsing/operations/where.d.ts.map +1 -1
  136. package/dist/parsing/operations/where.js +4 -0
  137. package/dist/parsing/operations/where.js.map +1 -1
  138. package/dist/parsing/operations/with.d.ts +1 -0
  139. package/dist/parsing/operations/with.d.ts.map +1 -1
  140. package/dist/parsing/operations/with.js +4 -0
  141. package/dist/parsing/operations/with.js.map +1 -1
  142. package/dist/parsing/parser.d.ts.map +1 -1
  143. package/dist/parsing/parser.js +20 -2
  144. package/dist/parsing/parser.js.map +1 -1
  145. package/package.json +1 -1
@@ -19,6 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  return (mod && mod.__esModule) ? mod : { "default": mod };
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
+ const data_resolver_1 = __importDefault(require("./data_resolver"));
22
23
  const node_reference_1 = __importDefault(require("./node_reference"));
23
24
  const pattern_1 = __importDefault(require("./pattern"));
24
25
  class PatternExpression extends pattern_1.default {
@@ -26,6 +27,7 @@ class PatternExpression extends pattern_1.default {
26
27
  super(...arguments);
27
28
  this._fetched = false;
28
29
  this._evaluation = false;
30
+ this._fetchedContext = null;
29
31
  }
30
32
  set identifier(id) {
31
33
  throw new Error("Cannot set identifier on PatternExpression");
@@ -75,12 +77,15 @@ class PatternExpression extends pattern_1.default {
75
77
  const _super = Object.create(null, {
76
78
  fetchData: { get: () => super.fetchData }
77
79
  });
78
- return __awaiter(this, void 0, void 0, function* () {
79
- if (this._fetched) {
80
+ return __awaiter(this, arguments, void 0, function* (ctx = null) {
81
+ const context = ctx !== null && ctx !== void 0 ? ctx : data_resolver_1.default.getInstance().sourceContext;
82
+ // Source-backed access is bound to one query's context.
83
+ if (this._fetched && (!this.deferred || this._fetchedContext === context)) {
80
84
  return;
81
85
  }
82
- yield _super.fetchData.call(this);
86
+ yield _super.fetchData.call(this, context);
83
87
  this._fetched = true;
88
+ this._fetchedContext = context;
84
89
  });
85
90
  }
86
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pattern_expression.js","sourceRoot":"","sources":["../../src/graph/pattern_expression.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,sEAA6C;AAC7C,wDAAgC;AAGhC,MAAM,iBAAkB,SAAQ,iBAAO;IAAvC;;QACY,aAAQ,GAAY,KAAK,CAAC;QAC1B,gBAAW,GAAY,KAAK,CAAC;IAqCzC,CAAC;IApCG,IAAW,UAAU,CAAC,EAAiB;QACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IACM,UAAU,CAAC,OAA4B;QAC1C,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACM,MAAM;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,OAAO,YAAY,wBAAa,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACjF,CAAC;IACL,CAAC;IACY,QAAQ;;;YACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;gBACzB,KAAsB,eAAA,KAAA,cAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA,IAAA,sDAAE,CAAC;oBAAxB,cAAqB;oBAArB,WAAqB;oBAAhC,MAAM,CAAC,KAAA,CAAA;oBACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC5B,CAAC;;;;;;;;;QACL,CAAC;KAAA;IACM,KAAK;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACY,SAAS;;;;;YAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,OAAO;YACX,CAAC;YACD,MAAM,OAAM,SAAS,WAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;KAAA;CACJ;AAED,kBAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"pattern_expression.js","sourceRoot":"","sources":["../../src/graph/pattern_expression.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,oEAA2C;AAE3C,sEAA6C;AAC7C,wDAAgC;AAIhC,MAAM,iBAAkB,SAAQ,iBAAO;IAAvC;;QACY,aAAQ,GAAY,KAAK,CAAC;QAC1B,gBAAW,GAAY,KAAK,CAAC;QAC7B,oBAAe,GAAyB,IAAI,CAAC;IAwCzD,CAAC;IAvCG,IAAW,UAAU,CAAC,EAAiB;QACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IACM,UAAU,CAAC,OAA4B;QAC1C,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACM,MAAM;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,IAAI,OAAO,YAAY,wBAAa,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACjF,CAAC;IACL,CAAC;IACY,QAAQ;;;YACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;gBACzB,KAAsB,eAAA,KAAA,cAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA,IAAA,sDAAE,CAAC;oBAAxB,cAAqB;oBAArB,WAAqB;oBAAhC,MAAM,CAAC,KAAA,CAAA;oBACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC5B,CAAC;;;;;;;;;QACL,CAAC;KAAA;IACM,KAAK;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACY,SAAS;;;;6DAAC,MAA4B,IAAI;YACnD,MAAM,OAAO,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,uBAAY,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC;YAChE,wDAAwD;YACxD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,CAAC,EAAE,CAAC;gBACxE,OAAO;YACX,CAAC;YACD,MAAM,OAAM,SAAS,YAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACnC,CAAC;KAAA;CACJ;AAED,kBAAe,iBAAiB,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import Pattern from "./pattern";
2
+ import type SourceContext from "./source_context";
2
3
  declare class Patterns {
3
4
  private _patterns;
4
5
  constructor(patterns?: Pattern[]);
5
6
  get patterns(): Pattern[];
6
- initialize(): Promise<void>;
7
+ initialize(ctx?: SourceContext | null): Promise<void>;
7
8
  traverse(): AsyncGenerator<void>;
8
9
  private _chainPatterns;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/graph/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,cAAM,QAAQ;IACV,OAAO,CAAC,SAAS,CAAiB;gBACtB,QAAQ,GAAE,OAAO,EAAO;IAGpC,IAAW,QAAQ,IAAI,OAAO,EAAE,CAE/B;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC;YAI/B,cAAc;CAShC;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/graph/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAElD,cAAM,QAAQ;IACV,OAAO,CAAC,SAAS,CAAiB;gBACtB,QAAQ,GAAE,OAAO,EAAO;IAGpC,IAAW,QAAQ,IAAI,OAAO,EAAE,CAE/B;IACY,UAAU,CAAC,GAAG,GAAE,aAAa,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC;YAI/B,cAAc;CAShC;AAED,eAAe,QAAQ,CAAC"}
@@ -43,9 +43,9 @@ class Patterns {
43
43
  return this._patterns;
44
44
  }
45
45
  initialize() {
46
- return __awaiter(this, void 0, void 0, function* () {
46
+ return __awaiter(this, arguments, void 0, function* (ctx = null) {
47
47
  for (const pattern of this._patterns) {
48
- yield pattern.fetchData();
48
+ yield pattern.fetchData(ctx);
49
49
  }
50
50
  });
51
51
  }
@@ -60,7 +60,7 @@ class Patterns {
60
60
  return __asyncGenerator(this, arguments, function* _chainPatterns_1() {
61
61
  var _a, e_1, _b, _c;
62
62
  try {
63
- for (var _d = true, _e = __asyncValues(this._patterns[index].startNode.next()), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {
63
+ for (var _d = true, _e = __asyncValues(this._patterns[index].traverse()), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {
64
64
  _c = _f.value;
65
65
  _d = false;
66
66
  const _ = _c;
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/graph/patterns.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,QAAQ;IAEV,YAAY,WAAsB,EAAE;QAD5B,cAAS,GAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IACD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACY,UAAU;;YACnB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC;KAAA;IACa,QAAQ;;YAClB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,6BAAO;YACxC,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;QAClC,CAAC;KAAA;IACc,cAAc,CAAC,KAAa;;;;gBACvC,KAAsB,eAAA,KAAA,cAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA,IAAA,+DAAE,CAAC;oBAAzC,cAAsC;oBAAtC,WAAsC;oBAAjD,MAAM,CAAC,KAAA,CAAA;oBACd,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;wBACpC,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACJ,2BAAK,CAAC;oBACV,CAAC;gBACL,CAAC;;;;;;;;;QACL,CAAC;KAAA;CACJ;AAED,kBAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/graph/patterns.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,QAAQ;IAEV,YAAY,WAAsB,EAAE;QAD5B,cAAS,GAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IACD,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACY,UAAU;6DAAC,MAA4B,IAAI;YACpD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnC,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;KAAA;IACa,QAAQ;;YAClB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,6BAAO;YACxC,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;QAClC,CAAC;KAAA;IACc,cAAc,CAAC,KAAa;;;;gBACvC,KAAsB,eAAA,KAAA,cAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA,IAAA,+DAAE,CAAC;oBAAnC,cAAgC;oBAAhC,WAAgC;oBAA3C,MAAM,CAAC,KAAA,CAAA;oBACd,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;wBACpC,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACJ,2BAAK,CAAC;oBACV,CAAC;gBACL,CAAC;;;;;;;;;QACL,CAAC;KAAA;CACJ;AAED,kBAAe,QAAQ,CAAC"}
@@ -1,15 +1,24 @@
1
1
  import ASTNode from "../parsing/ast_node";
2
2
  import Node from "./node";
3
+ import type SourceContext from "./source_context";
4
+ import { NodeSourceProvider } from "./source_provider";
5
+ import VirtualStatement from "./virtual_statement";
3
6
  declare class PhysicalNode extends Node {
4
7
  private _virtual;
8
+ private _provider;
5
9
  set statement(statement: ASTNode | null);
6
10
  get statement(): ASTNode | null;
11
+ /** @internal The backing statement wrapper (for capability opt-in). */
12
+ get virtual(): VirtualStatement;
13
+ /** Source provider serving this label, or `null` for legacy eager loading. */
14
+ get provider(): NodeSourceProvider | null;
15
+ set provider(provider: NodeSourceProvider | null);
7
16
  set isStatic(value: boolean);
8
17
  get isStatic(): boolean;
9
18
  set refreshEveryMs(value: number | null);
10
19
  get refreshEveryMs(): number | null;
11
20
  invalidateCache(): void;
12
- data(args?: Record<string, any> | null, provenance?: boolean): Promise<Record<string, any>[]>;
21
+ data(args?: Record<string, any> | null, provenance?: boolean, sourceContext?: SourceContext | null): Promise<Record<string, any>[]>;
13
22
  }
14
23
  export default PhysicalNode;
15
24
  //# 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":"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
+ {"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;AAC1B,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,cAAM,YAAa,SAAQ,IAAI;IAC3B,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,SAAS,CAAmC;IAEpD,IAAW,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAE7C;IACD,IAAW,SAAS,IAAI,OAAO,GAAG,IAAI,CAErC;IACD,uEAAuE;IACvE,IAAW,OAAO,IAAI,gBAAgB,CAErC;IACD,8EAA8E;IAC9E,IAAW,QAAQ,IAAI,kBAAkB,GAAG,IAAI,CAE/C;IACD,IAAW,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EAEtD;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,EAC3B,aAAa,GAAE,aAAa,GAAG,IAAW,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAapC;AAED,eAAe,YAAY,CAAC"}
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const node_1 = __importDefault(require("./node"));
7
+ const statement_source_1 = require("./statement_source");
7
8
  const virtual_statement_1 = __importDefault(require("./virtual_statement"));
8
9
  class PhysicalNode extends node_1.default {
9
10
  constructor() {
10
11
  super(...arguments);
11
12
  this._virtual = new virtual_statement_1.default();
13
+ this._provider = null;
12
14
  }
13
15
  set statement(statement) {
14
16
  this._virtual.statement = statement;
@@ -16,6 +18,17 @@ class PhysicalNode extends node_1.default {
16
18
  get statement() {
17
19
  return this._virtual.statement;
18
20
  }
21
+ /** @internal The backing statement wrapper (for capability opt-in). */
22
+ get virtual() {
23
+ return this._virtual;
24
+ }
25
+ /** Source provider serving this label, or `null` for legacy eager loading. */
26
+ get provider() {
27
+ return this._provider;
28
+ }
29
+ set provider(provider) {
30
+ this._provider = provider;
31
+ }
19
32
  set isStatic(value) {
20
33
  this._virtual.isStatic = value;
21
34
  }
@@ -31,8 +44,12 @@ class PhysicalNode extends node_1.default {
31
44
  invalidateCache() {
32
45
  this._virtual.invalidateCache();
33
46
  }
34
- data(args = null, provenance = false) {
35
- return this._virtual.data(args, provenance);
47
+ data(args = null, provenance = false, sourceContext = null) {
48
+ var _a;
49
+ if (this._virtual.statement === null && this._provider !== null) {
50
+ return (0, statement_source_1.materializeScan)(this._provider, "node", (_a = this.label) !== null && _a !== void 0 ? _a : "", { label: this.label }, args, sourceContext);
51
+ }
52
+ return this._virtual.data(args, provenance, sourceContext);
36
53
  }
37
54
  }
38
55
  exports.default = PhysicalNode;
@@ -1 +1 @@
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
+ {"version":3,"file":"physical_node.js","sourceRoot":"","sources":["../../src/graph/physical_node.ts"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAG1B,yDAAqD;AACrD,4EAAmD;AAEnD,MAAM,YAAa,SAAQ,cAAI;IAA/B;;QACY,aAAQ,GAAqB,IAAI,2BAAgB,EAAE,CAAC;QACpD,cAAS,GAA8B,IAAI,CAAC;IAmDxD,CAAC;IAjDG,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,uEAAuE;IACvE,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,8EAA8E;IAC9E,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAW,QAAQ,CAAC,QAAmC;QACnD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,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,EAC3B,gBAAsC,IAAI;;QAE1C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC9D,OAAO,IAAA,kCAAe,EAClB,IAAI,CAAC,SAAS,EACd,MAAM,EACN,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,EAChB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EACrB,IAAI,EACJ,aAAa,CAChB,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC/D,CAAC;CACJ;AAED,kBAAe,YAAY,CAAC"}
@@ -1,15 +1,24 @@
1
1
  import ASTNode from "../parsing/ast_node";
2
2
  import Relationship from "./relationship";
3
+ import type SourceContext from "./source_context";
4
+ import { RelationshipSourceProvider } from "./source_provider";
5
+ import VirtualStatement from "./virtual_statement";
3
6
  declare class PhysicalRelationship extends Relationship {
4
7
  private _virtual;
8
+ private _provider;
5
9
  set statement(statement: ASTNode | null);
6
10
  get statement(): ASTNode | null;
11
+ /** @internal The backing statement wrapper (for capability opt-in). */
12
+ get virtual(): VirtualStatement;
13
+ /** Source provider serving this relationship, or `null` for legacy eager loading. */
14
+ get provider(): RelationshipSourceProvider | null;
15
+ set provider(provider: RelationshipSourceProvider | null);
7
16
  set isStatic(value: boolean);
8
17
  get isStatic(): boolean;
9
18
  set refreshEveryMs(value: number | null);
10
19
  get refreshEveryMs(): number | null;
11
20
  invalidateCache(): void;
12
- data(args?: Record<string, any> | null, provenance?: boolean): Promise<Record<string, any>[]>;
21
+ data(args?: Record<string, any> | null, provenance?: boolean, sourceContext?: SourceContext | null): Promise<Record<string, any>[]>;
13
22
  }
14
23
  export default PhysicalRelationship;
15
24
  //# 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":"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
+ {"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;AAC1C,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,cAAM,oBAAqB,SAAQ,YAAY;IAC3C,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,SAAS,CAA2C;IAE5D,IAAW,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAE7C;IACD,IAAW,SAAS,IAAI,OAAO,GAAG,IAAI,CAErC;IACD,uEAAuE;IACvE,IAAW,OAAO,IAAI,gBAAgB,CAErC;IACD,qFAAqF;IACrF,IAAW,QAAQ,IAAI,0BAA0B,GAAG,IAAI,CAEvD;IACD,IAAW,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,GAAG,IAAI,EAE9D;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,EAC3B,aAAa,GAAE,aAAa,GAAG,IAAW,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAepC;AAED,eAAe,oBAAoB,CAAC"}
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const relationship_1 = __importDefault(require("./relationship"));
7
+ const statement_source_1 = require("./statement_source");
7
8
  const virtual_statement_1 = __importDefault(require("./virtual_statement"));
8
9
  class PhysicalRelationship extends relationship_1.default {
9
10
  constructor() {
10
11
  super(...arguments);
11
12
  this._virtual = new virtual_statement_1.default();
13
+ this._provider = null;
12
14
  }
13
15
  set statement(statement) {
14
16
  this._virtual.statement = statement;
@@ -16,6 +18,17 @@ class PhysicalRelationship extends relationship_1.default {
16
18
  get statement() {
17
19
  return this._virtual.statement;
18
20
  }
21
+ /** @internal The backing statement wrapper (for capability opt-in). */
22
+ get virtual() {
23
+ return this._virtual;
24
+ }
25
+ /** Source provider serving this relationship, or `null` for legacy eager loading. */
26
+ get provider() {
27
+ return this._provider;
28
+ }
29
+ set provider(provider) {
30
+ this._provider = provider;
31
+ }
19
32
  set isStatic(value) {
20
33
  this._virtual.isStatic = value;
21
34
  }
@@ -31,8 +44,14 @@ class PhysicalRelationship extends relationship_1.default {
31
44
  invalidateCache() {
32
45
  this._virtual.invalidateCache();
33
46
  }
34
- data(args = null, provenance = false) {
35
- return this._virtual.data(args, provenance);
47
+ data(args = null, provenance = false, sourceContext = null) {
48
+ var _a, _b, _c, _d;
49
+ if (this._virtual.statement === null && this._provider !== null) {
50
+ const sourceLabel = (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : null;
51
+ const targetLabel = (_d = (_c = this.target) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : null;
52
+ return (0, statement_source_1.materializeScan)(this._provider, "relationship", `(:${sourceLabel !== null && sourceLabel !== void 0 ? sourceLabel : ""})-[:${this.type}]->(:${targetLabel !== null && targetLabel !== void 0 ? targetLabel : ""})`, { type: this.type, sourceLabel, targetLabel }, args, sourceContext);
53
+ }
54
+ return this._virtual.data(args, provenance, sourceContext);
36
55
  }
37
56
  }
38
57
  exports.default = PhysicalRelationship;
@@ -1 +1 @@
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
+ {"version":3,"file":"physical_relationship.js","sourceRoot":"","sources":["../../src/graph/physical_relationship.ts"],"names":[],"mappings":";;;;;AACA,kEAA0C;AAG1C,yDAAqD;AACrD,4EAAmD;AAEnD,MAAM,oBAAqB,SAAQ,sBAAY;IAA/C;;QACY,aAAQ,GAAqB,IAAI,2BAAgB,EAAE,CAAC;QACpD,cAAS,GAAsC,IAAI,CAAC;IAqDhE,CAAC;IAnDG,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,uEAAuE;IACvE,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,qFAAqF;IACrF,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAW,QAAQ,CAAC,QAA2C;QAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,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,EAC3B,gBAAsC,IAAI;;QAE1C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC9D,MAAM,WAAW,GAAG,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,mCAAI,IAAI,CAAC;YAC/C,MAAM,WAAW,GAAG,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,mCAAI,IAAI,CAAC;YAC/C,OAAO,IAAA,kCAAe,EAClB,IAAI,CAAC,SAAS,EACd,cAAc,EACd,KAAK,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,OAAO,IAAI,CAAC,IAAI,QAAQ,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,GAAG,EAClE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAC7C,IAAI,EACJ,aAAa,CAChB,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC/D,CAAC;CACJ;AAED,kBAAe,oBAAoB,CAAC"}
@@ -2,8 +2,9 @@ import ASTNode from "../parsing/ast_node";
2
2
  import Expression from "../parsing/expressions/expression";
3
3
  import Hops from "./hops";
4
4
  import Node from "./node";
5
- import RelationshipData from "./relationship_data";
5
+ import RelationshipData, { RelationshipRecord } from "./relationship_data";
6
6
  import RelationshipMatchCollector, { RelationshipMatchRecord } from "./relationship_match_collector";
7
+ import { RelationshipAccess, SourceTerms } from "./source_access";
7
8
  declare class Relationship extends ASTNode {
8
9
  protected _identifier: string | null;
9
10
  protected _types: string[];
@@ -15,6 +16,8 @@ declare class Relationship extends ASTNode {
15
16
  protected _target: Node | null;
16
17
  protected _direction: "left" | "right";
17
18
  private _data;
19
+ private _access;
20
+ private _frames;
18
21
  constructor(identifier?: string | null, type?: string | null);
19
22
  set identifier(identifier: string);
20
23
  get identifier(): string | null;
@@ -40,9 +43,30 @@ declare class Relationship extends ASTNode {
40
43
  get matches(): RelationshipMatchRecord[];
41
44
  setData(data: RelationshipData | null): void;
42
45
  getData(): RelationshipData | null;
46
+ /** @internal Provider-backed access; when set, rows are fetched on demand. */
47
+ setAccess(access: RelationshipAccess | null): void;
48
+ get access(): RelationshipAccess | null;
49
+ sourceTerms(): SourceTerms;
50
+ /** Stored endpoint matched against the traversal's current node id. */
51
+ get anchorSide(): "left" | "right";
52
+ /** Stored endpoint holding the id of the next node in traversal order. */
53
+ get nextField(): "left_id" | "right_id";
54
+ /** The relationship row bound at `hop` (deferred frames or legacy data cursor). */
55
+ currentRecord(hop?: number): RelationshipRecord | null;
56
+ /** @internal Bind a row for `hop` (used by reversed plans). */
57
+ setFrame(hop: number, record: RelationshipRecord): void;
58
+ /** @internal Unbind the row for `hop` (end of a reversed match). */
59
+ clearFrame(hop: number): void;
60
+ /** @internal Push a match for an explicitly supplied row. */
61
+ pushMatch(record: RelationshipRecord, traversalId: string): void;
62
+ /** @internal Pop the most recent match. */
63
+ popMatch(): void;
43
64
  setEndNode(node: Node): void;
44
65
  _left_id_or_right_id(): string;
45
66
  find(left_id: string, hop?: number): AsyncGenerator<void>;
67
+ private _deferredFind;
68
+ private _visit;
69
+ matchesRecord(record: RelationshipRecord): boolean;
46
70
  }
47
71
  export default Relationship;
48
72
  //# sourceMappingURL=relationship.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../src/graph/relationship.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,UAAU,MAAM,mCAAmC,CAAC;AAC3D,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,gBAAwC,MAAM,qBAAqB,CAAC;AAC3E,OAAO,0BAA0B,EAAE,EAC/B,uBAAuB,EAC1B,MAAM,gCAAgC,CAAC;AAExC,cAAM,YAAa,SAAQ,OAAO;IAC9B,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAChC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;IAC3D,SAAS,CAAC,KAAK,EAAE,IAAI,CAAc;IAEnC,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAQ;IACpF,SAAS,CAAC,QAAQ,EAAE,0BAA0B,CAAoC;IAElF,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IACtC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IACtC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAW;IAEjD,OAAO,CAAC,KAAK,CAAiC;gBAElC,UAAU,GAAE,MAAM,GAAG,IAAW,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW;IAOxE,IAAW,UAAU,CAAC,UAAU,EAAE,MAAM,EAEvC;IACD,IAAW,UAAU,IAAI,MAAM,GAAG,IAAI,CAErC;IACD,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IACD,IAAW,IAAI,IAAI,MAAM,GAAG,IAAI,CAE/B;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAE/B;IACD,IAAW,KAAK,IAAI,MAAM,EAAE,CAE3B;IACD,IAAW,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAE/C;IACD,IAAW,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAExD;IACD,OAAO,CAAC,kBAAkB;IAgBnB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAGjD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAGlD,IAAW,IAAI,CAAC,IAAI,EAAE,IAAI,EAEzB;IACD,IAAW,IAAI,IAAI,IAAI,GAAG,IAAI,CAE7B;IACM,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,GAAE,MAAW,GAAG,IAAI;IAI3E,IAAW,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAElC;IACD,IAAW,MAAM,IAAI,IAAI,GAAG,IAAI,CAE/B;IACD,IAAW,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAElC;IACD,IAAW,MAAM,IAAI,IAAI,GAAG,IAAI,CAE/B;IACD,IAAW,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAE/C;IACD,IAAW,SAAS,IAAI,MAAM,GAAG,OAAO,CAEvC;IACM,KAAK,IAAI,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,IAAI;IAG1E,IAAW,OAAO,IAAI,uBAAuB,EAAE,CAE9C;IACM,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAG5C,OAAO,IAAI,gBAAgB,GAAG,IAAI;IAGlC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAG5B,oBAAoB,IAAI,MAAM;IAGvB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,GAAG,cAAc,CAAC,IAAI,CAAC;CA8C7E;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../src/graph/relationship.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,UAAU,MAAM,mCAAmC,CAAC;AAC3D,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,gBAAgB,EAAE,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,0BAA0B,EAAE,EAC/B,uBAAuB,EAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAc,MAAM,iBAAiB,CAAC;AAE9E,cAAM,YAAa,SAAQ,OAAO;IAC9B,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAChC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;IAC3D,SAAS,CAAC,KAAK,EAAE,IAAI,CAAc;IAEnC,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAQ;IACpF,SAAS,CAAC,QAAQ,EAAE,0BAA0B,CAAoC;IAElF,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IACtC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAQ;IACtC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAW;IAEjD,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,OAAO,CAA8C;gBAEjD,UAAU,GAAE,MAAM,GAAG,IAAW,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW;IAOxE,IAAW,UAAU,CAAC,UAAU,EAAE,MAAM,EAEvC;IACD,IAAW,UAAU,IAAI,MAAM,GAAG,IAAI,CAErC;IACD,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IACD,IAAW,IAAI,IAAI,MAAM,GAAG,IAAI,CAE/B;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAE/B;IACD,IAAW,KAAK,IAAI,MAAM,EAAE,CAE3B;IACD,IAAW,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAE/C;IACD,IAAW,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAExD;IACD,OAAO,CAAC,kBAAkB;IAgBnB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAGjD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAGlD,IAAW,IAAI,CAAC,IAAI,EAAE,IAAI,EAEzB;IACD,IAAW,IAAI,IAAI,IAAI,GAAG,IAAI,CAE7B;IACM,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,GAAE,MAAW,GAAG,IAAI;IAI3E,IAAW,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAElC;IACD,IAAW,MAAM,IAAI,IAAI,GAAG,IAAI,CAE/B;IACD,IAAW,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAElC;IACD,IAAW,MAAM,IAAI,IAAI,GAAG,IAAI,CAE/B;IACD,IAAW,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAE/C;IACD,IAAW,SAAS,IAAI,MAAM,GAAG,OAAO,CAEvC;IACM,KAAK,IAAI,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,IAAI;IAG1E,IAAW,OAAO,IAAI,uBAAuB,EAAE,CAE9C;IACM,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAG5C,OAAO,IAAI,gBAAgB,GAAG,IAAI;IAGzC,8EAA8E;IACvE,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAIzD,IAAW,MAAM,IAAI,kBAAkB,GAAG,IAAI,CAE7C;IACM,WAAW,IAAI,WAAW;IAGjC,uEAAuE;IACvE,IAAW,UAAU,IAAI,MAAM,GAAG,OAAO,CAExC;IACD,0EAA0E;IAC1E,IAAW,SAAS,IAAI,SAAS,GAAG,UAAU,CAE7C;IACD,mFAAmF;IAC5E,aAAa,CAAC,GAAG,GAAE,MAAU,GAAG,kBAAkB,GAAG,IAAI;IAOhE,+DAA+D;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAG9D,oEAAoE;IAC7D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAGpC,6DAA6D;IACtD,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAIvE,2CAA2C;IACpC,QAAQ,IAAI,IAAI;IAIhB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAG5B,oBAAoB,IAAI,MAAM;IAGvB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,GAAG,cAAc,CAAC,IAAI,CAAC;YAkD3D,aAAa;YAoCb,MAAM;IAwBd,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO;CAW5D;AAED,eAAe,YAAY,CAAC"}
@@ -31,6 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
31
  const ast_node_1 = __importDefault(require("../parsing/ast_node"));
32
32
  const hops_1 = __importDefault(require("./hops"));
33
33
  const relationship_match_collector_1 = __importDefault(require("./relationship_match_collector"));
34
+ const source_access_1 = require("./source_access");
34
35
  class Relationship extends ast_node_1.default {
35
36
  constructor(identifier = null, type = null) {
36
37
  super();
@@ -44,6 +45,8 @@ class Relationship extends ast_node_1.default {
44
45
  this._target = null;
45
46
  this._direction = "right";
46
47
  this._data = null;
48
+ this._access = null;
49
+ this._frames = new Map();
47
50
  this._identifier = identifier;
48
51
  if (type !== null) {
49
52
  this._types = [type];
@@ -135,6 +138,52 @@ class Relationship extends ast_node_1.default {
135
138
  getData() {
136
139
  return this._data;
137
140
  }
141
+ /** @internal Provider-backed access; when set, rows are fetched on demand. */
142
+ setAccess(access) {
143
+ this._access = access;
144
+ this._frames.clear();
145
+ }
146
+ get access() {
147
+ return this._access;
148
+ }
149
+ sourceTerms() {
150
+ return (0, source_access_1.buildTerms)(this._properties, []);
151
+ }
152
+ /** Stored endpoint matched against the traversal's current node id. */
153
+ get anchorSide() {
154
+ return this._direction === "left" ? "right" : "left";
155
+ }
156
+ /** Stored endpoint holding the id of the next node in traversal order. */
157
+ get nextField() {
158
+ return this._direction === "left" ? "left_id" : "right_id";
159
+ }
160
+ /** The relationship row bound at `hop` (deferred frames or legacy data cursor). */
161
+ currentRecord(hop = 0) {
162
+ var _a, _b;
163
+ const frame = this._frames.get(hop);
164
+ if (frame !== undefined || this._access !== null) {
165
+ return frame !== null && frame !== void 0 ? frame : null;
166
+ }
167
+ return (_b = (_a = this._data) === null || _a === void 0 ? void 0 : _a.current(hop)) !== null && _b !== void 0 ? _b : null;
168
+ }
169
+ /** @internal Bind a row for `hop` (used by reversed plans). */
170
+ setFrame(hop, record) {
171
+ this._frames.set(hop, record);
172
+ }
173
+ /** @internal Unbind the row for `hop` (end of a reversed match). */
174
+ clearFrame(hop) {
175
+ this._frames.delete(hop);
176
+ }
177
+ /** @internal Push a match for an explicitly supplied row. */
178
+ pushMatch(record, traversalId) {
179
+ this._matches.push(this, traversalId, record);
180
+ this._value = this._matches.value();
181
+ }
182
+ /** @internal Pop the most recent match. */
183
+ popMatch() {
184
+ this._matches.pop();
185
+ this._value = this._matches.value();
186
+ }
138
187
  setEndNode(node) {
139
188
  this._matches.endNode = node;
140
189
  }
@@ -144,6 +193,10 @@ class Relationship extends ast_node_1.default {
144
193
  find(left_id_1) {
145
194
  return __asyncGenerator(this, arguments, function* find_1(left_id, hop = 0) {
146
195
  var _a, _b, _c;
196
+ if (this._access !== null) {
197
+ yield __await(yield* __asyncDelegator(__asyncValues(this._deferredFind(left_id, hop))));
198
+ return yield __await(void 0);
199
+ }
147
200
  // Save original source node
148
201
  const original = this._source;
149
202
  if (hop > 0) {
@@ -191,6 +244,88 @@ class Relationship extends ast_node_1.default {
191
244
  }
192
245
  });
193
246
  }
247
+ _deferredFind(left_id, hop) {
248
+ return __asyncGenerator(this, arguments, function* _deferredFind_1() {
249
+ var _a, e_1, _b, _c;
250
+ var _d;
251
+ const original = this._source;
252
+ if (hop > 0) {
253
+ this._source = this._target;
254
+ }
255
+ try {
256
+ if (hop === 0 && ((_d = this.hops) === null || _d === void 0 ? void 0 : _d.multi()) && this.hops.min === 0 && this._target) {
257
+ yield __await(yield* __asyncDelegator(__asyncValues(this._target.find(left_id, hop))));
258
+ }
259
+ const { terms: allTerms, args } = this.sourceTerms();
260
+ // Hops below the minimum are traversed without a property check,
261
+ // so their edges must not be filtered by the source either.
262
+ const terms = hop + 1 >= this.hops.min ? allTerms : [];
263
+ const target = this._target;
264
+ try {
265
+ for (var _e = true, _f = __asyncValues(this._access.expand(left_id, this.anchorSide, terms, args)), _g; _g = yield __await(_f.next()), _a = _g.done, !_a; _e = true) {
266
+ _c = _g.value;
267
+ _e = false;
268
+ const page = _c;
269
+ if (target !== null &&
270
+ target.access !== null &&
271
+ target.access.deferred &&
272
+ page.length > 1) {
273
+ const targetTerms = target.sourceTerms();
274
+ yield __await(target.access.prefetch(page.map((row) => row[this.nextField]), targetTerms.terms, targetTerms.args));
275
+ }
276
+ for (const row of page) {
277
+ yield __await(yield* __asyncDelegator(__asyncValues(this._visit(row, left_id, hop))));
278
+ }
279
+ }
280
+ }
281
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
282
+ finally {
283
+ try {
284
+ if (!_e && !_a && (_b = _f.return)) yield __await(_b.call(_f));
285
+ }
286
+ finally { if (e_1) throw e_1.error; }
287
+ }
288
+ }
289
+ finally {
290
+ this._source = original;
291
+ }
292
+ });
293
+ }
294
+ _visit(record, left_id, hop) {
295
+ return __asyncGenerator(this, arguments, function* _visit_1() {
296
+ this._frames.set(hop, record);
297
+ const id = record[this.nextField];
298
+ if (hop + 1 >= this.hops.min) {
299
+ if (!this.matchesRecord(record)) {
300
+ return yield __await(void 0);
301
+ }
302
+ this.pushMatch(record, left_id);
303
+ try {
304
+ yield __await(yield* __asyncDelegator(__asyncValues(this._target.find(id, hop))));
305
+ if (hop + 1 < this.hops.max && !this._matches.isCircular(id)) {
306
+ yield __await(yield* __asyncDelegator(__asyncValues(this.find(id, hop + 1))));
307
+ }
308
+ }
309
+ finally {
310
+ this._matches.pop();
311
+ }
312
+ }
313
+ else {
314
+ yield __await(yield* __asyncDelegator(__asyncValues(this.find(id, hop + 1))));
315
+ }
316
+ });
317
+ }
318
+ matchesRecord(record) {
319
+ for (const [key, expression] of this._properties) {
320
+ if (!(key in record)) {
321
+ throw new Error("Relationship does not have property");
322
+ }
323
+ if (record[key] !== expression.value()) {
324
+ return false;
325
+ }
326
+ }
327
+ return true;
328
+ }
194
329
  }
195
330
  exports.default = Relationship;
196
331
  //# sourceMappingURL=relationship.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relationship.js","sourceRoot":"","sources":["../../src/graph/relationship.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relationship.js","sourceRoot":"","sources":["../../src/graph/relationship.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAA0C;AAE1C,kDAA0B;AAG1B,kGAEwC;AACxC,mDAA8E;AAE9E,MAAM,YAAa,SAAQ,kBAAO;IAiB9B,YAAY,aAA4B,IAAI,EAAE,OAAsB,IAAI;QACpE,KAAK,EAAE,CAAC;QAjBF,gBAAW,GAAkB,IAAI,CAAC;QAClC,WAAM,GAAa,EAAE,CAAC;QACtB,gBAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;QACjD,UAAK,GAAS,IAAI,cAAI,EAAE,CAAC;QAEzB,WAAM,GAA+D,IAAI,CAAC;QAC1E,aAAQ,GAA+B,IAAI,sCAA0B,EAAE,CAAC;QAExE,YAAO,GAAgB,IAAI,CAAC;QAC5B,YAAO,GAAgB,IAAI,CAAC;QAC5B,eAAU,GAAqB,OAAO,CAAC;QAEzC,UAAK,GAA4B,IAAI,CAAC;QACtC,YAAO,GAA8B,IAAI,CAAC;QAC1C,YAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;QAIzD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IACD,IAAW,UAAU,CAAC,UAAkB;QACpC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IACD,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,IAAW,IAAI,CAAC,IAAY;QACxB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IACD,IAAW,KAAK,CAAC,KAAe;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,IAAW,UAAU,CAAC,UAAmC;QACrD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IACO,kBAAkB,CAAC,MAAc,CAAC;QACtC,MAAM,IAAI,GAAqB,IAAI,CAAC,KAAM,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAuB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC;YACtD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACM,WAAW,CAAC,GAAW,EAAE,KAAiB;QAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACM,WAAW,CAAC,GAAW;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC7C,CAAC;IACD,IAAW,IAAI,CAAC,IAAU;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACM,QAAQ,CAAC,YAA0B,EAAE,cAAsB,EAAE;QAChE,MAAM,KAAK,GAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IACD,IAAW,MAAM,CAAC,IAAiB;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,IAAW,MAAM,CAAC,IAAiB;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,IAAW,SAAS,CAAC,SAA2B;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IACD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IACM,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACjC,CAAC;IACM,OAAO,CAAC,IAA6B;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IACM,OAAO;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,8EAA8E;IACvE,SAAS,CAAC,MAAiC;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IACD,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACM,WAAW;QACd,OAAO,IAAA,0BAAU,EAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,uEAAuE;IACvE,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,CAAC;IACD,0EAA0E;IAC1E,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/D,CAAC;IACD,mFAAmF;IAC5E,aAAa,CAAC,MAAc,CAAC;;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAmC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC/C,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAC;IAC5C,CAAC;IACD,+DAA+D;IACxD,QAAQ,CAAC,GAAW,EAAE,MAA0B;QACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,oEAAoE;IAC7D,UAAU,CAAC,GAAW;QACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,6DAA6D;IACtD,SAAS,CAAC,MAA0B,EAAE,WAAmB;QAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IACD,2CAA2C;IACpC,QAAQ;QACX,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IACM,UAAU,CAAC,IAAU;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IACjC,CAAC;IACM,oBAAoB;QACvB,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/D,CAAC;IACa,IAAI;kEAAC,OAAe,EAAE,MAAc,CAAC;;YAC/C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACxB,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;gBACxC,6BAAO;YACX,CAAC;YACD,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACV,6EAA6E;gBAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,IAAI,CAAC;gBACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;oBACZ,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,EAAE,CAAC;oBAEpB,yEAAyE;oBACzE,6CAA6C;oBAC7C,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,EAAE,KAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC5D,+DAA+D;wBAC/D,6DAA6D;wBAC7D,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;oBAC3C,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CAAC,KAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,GAAuB,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,CAAC,GAAG,CAAuB,CAAC;oBAChF,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;oBAC7C,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAK,CAAC,GAAG,EAAE,CAAC;wBAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;4BAChC,SAAS;wBACb,CAAC;wBACD,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;wBACnC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAK,CAAC,GAAG,EAAE,CAAC;4BAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gCAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gCACpB,SAAS;4BACb,CAAC;4BACD,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;wBAClC,CAAC;wBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACJ,iEAAiE;wBACjE,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;oBAClC,CAAC;gBACL,CAAC;YACL,CAAC;oBAAS,CAAC;gBACP,+BAA+B;gBAC/B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACL,CAAC;KAAA;IACc,aAAa,CAAC,OAAe,EAAE,GAAW;;;;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,IAAI,CAAC;gBACD,IAAI,GAAG,KAAK,CAAC,KAAI,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,EAAE,CAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzE,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;gBAC3C,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrD,iEAAiE;gBACjE,4DAA4D;gBAC5D,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;;oBAC5B,KAAyB,eAAA,KAAA,cAAA,IAAI,CAAC,OAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA,IAAA,+DAAE,CAAC;wBAA9D,cAA2D;wBAA3D,WAA2D;wBAAzE,MAAM,IAAI,KAAA,CAAA;wBACjB,IACI,MAAM,KAAK,IAAI;4BACf,MAAM,CAAC,MAAM,KAAK,IAAI;4BACtB,MAAM,CAAC,MAAM,CAAC,QAAQ;4BACtB,IAAI,CAAC,MAAM,GAAG,CAAC,EACjB,CAAC;4BACC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;4BACzC,cAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CACxB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EACtC,WAAW,CAAC,KAAK,EACjB,WAAW,CAAC,IAAI,CACnB,CAAA,CAAC;wBACN,CAAC;wBACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;4BACrB,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,MAAM,CAAC,GAAyB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;wBAChE,CAAC;oBACL,CAAC;;;;;;;;;YACL,CAAC;oBAAS,CAAC;gBACP,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACL,CAAC;KAAA;IACc,MAAM,CACjB,MAA0B,EAC1B,OAAe,EACf,GAAW;;YAEX,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAK,CAAC,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9B,6BAAO;gBACX,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChC,IAAI,CAAC;oBACD,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,OAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;oBACnC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC5D,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;oBAClC,CAAC;gBACL,CAAC;wBAAS,CAAC;oBACP,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACxB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA,CAAA,CAAA,CAAC;YAClC,CAAC;QACL,CAAC;KAAA;IACM,aAAa,CAAC,MAA0B;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,kBAAe,YAAY,CAAC"}
@@ -10,7 +10,7 @@ declare class RelationshipMatchCollector {
10
10
  private _matches;
11
11
  private _nodeIds;
12
12
  private _nodeIdSet;
13
- push(relationship: Relationship, traversalId: string): RelationshipMatchRecord;
13
+ push(relationship: Relationship, traversalId: string, record?: Record<string, any> | null): RelationshipMatchRecord;
14
14
  set endNode(node: any);
15
15
  pop(): RelationshipMatchRecord | undefined;
16
16
  value(): RelationshipMatchRecord | RelationshipMatchRecord[] | null;
@@ -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;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
+ {"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,CACP,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GACpC,uBAAuB;IAuC1B,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,4 +1,15 @@
1
1
  "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
14
  const virtual_sources_1 = require("./virtual_sources");
4
15
  class RelationshipMatchCollector {
@@ -7,12 +18,27 @@ class RelationshipMatchCollector {
7
18
  this._nodeIds = [];
8
19
  this._nodeIdSet = new Set();
9
20
  }
10
- push(relationship, traversalId) {
21
+ push(relationship, traversalId, record) {
11
22
  var _a;
12
23
  const data = relationship.getData();
13
- const currentRecord = data === null || data === void 0 ? void 0 : data.current();
24
+ // Provider-backed relationships supply the bound row explicitly
25
+ // (or expose it via currentRecord) instead of a data cursor.
26
+ const explicit = record !== undefined || relationship.access !== null;
27
+ const currentRecord = explicit
28
+ ? (record !== null && record !== void 0 ? record : relationship.currentRecord(0))
29
+ : data === null || data === void 0 ? void 0 : data.current();
14
30
  const actualType = currentRecord && "_type" in currentRecord ? currentRecord["_type"] : relationship.type;
15
- const relProperties = data === null || data === void 0 ? void 0 : data.properties();
31
+ let relProperties;
32
+ if (explicit) {
33
+ relProperties = {};
34
+ if (currentRecord != null) {
35
+ const { left_id, right_id, _type } = currentRecord, props = __rest(currentRecord, ["left_id", "right_id", "_type"]);
36
+ relProperties = props;
37
+ }
38
+ }
39
+ else {
40
+ relProperties = data === null || data === void 0 ? void 0 : data.properties();
41
+ }
16
42
  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
43
  // Thread the underlying record's inner provenance onto the
18
44
  // freshly constructed match object so the snapshot can read it
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"relationship_match_collector.js","sourceRoot":"","sources":["../../src/graph/relationship_match_collector.ts"],"names":[],"mappings":"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"}