flowquery 1.0.86 → 1.0.88

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 (141) 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/operations/aggregated_return.d.ts +2 -0
  95. package/dist/parsing/operations/aggregated_return.d.ts.map +1 -1
  96. package/dist/parsing/operations/aggregated_return.js +6 -0
  97. package/dist/parsing/operations/aggregated_return.js.map +1 -1
  98. package/dist/parsing/operations/aggregated_with.d.ts +2 -0
  99. package/dist/parsing/operations/aggregated_with.d.ts.map +1 -1
  100. package/dist/parsing/operations/aggregated_with.js +6 -0
  101. package/dist/parsing/operations/aggregated_with.js.map +1 -1
  102. package/dist/parsing/operations/create_node.d.ts +5 -1
  103. package/dist/parsing/operations/create_node.d.ts.map +1 -1
  104. package/dist/parsing/operations/create_node.js +20 -1
  105. package/dist/parsing/operations/create_node.js.map +1 -1
  106. package/dist/parsing/operations/create_relationship.d.ts +5 -1
  107. package/dist/parsing/operations/create_relationship.d.ts.map +1 -1
  108. package/dist/parsing/operations/create_relationship.js +21 -1
  109. package/dist/parsing/operations/create_relationship.js.map +1 -1
  110. package/dist/parsing/operations/limit.d.ts +1 -0
  111. package/dist/parsing/operations/limit.d.ts.map +1 -1
  112. package/dist/parsing/operations/limit.js +3 -0
  113. package/dist/parsing/operations/limit.js.map +1 -1
  114. package/dist/parsing/operations/match.d.ts +16 -0
  115. package/dist/parsing/operations/match.d.ts.map +1 -1
  116. package/dist/parsing/operations/match.js +104 -8
  117. package/dist/parsing/operations/match.js.map +1 -1
  118. package/dist/parsing/operations/operation.d.ts +6 -0
  119. package/dist/parsing/operations/operation.d.ts.map +1 -1
  120. package/dist/parsing/operations/operation.js +8 -0
  121. package/dist/parsing/operations/operation.js.map +1 -1
  122. package/dist/parsing/operations/return.d.ts +10 -0
  123. package/dist/parsing/operations/return.d.ts.map +1 -1
  124. package/dist/parsing/operations/return.js +23 -0
  125. package/dist/parsing/operations/return.js.map +1 -1
  126. package/dist/parsing/operations/unwind.d.ts +1 -0
  127. package/dist/parsing/operations/unwind.d.ts.map +1 -1
  128. package/dist/parsing/operations/unwind.js +9 -2
  129. package/dist/parsing/operations/unwind.js.map +1 -1
  130. package/dist/parsing/operations/where.d.ts +1 -0
  131. package/dist/parsing/operations/where.d.ts.map +1 -1
  132. package/dist/parsing/operations/where.js +4 -0
  133. package/dist/parsing/operations/where.js.map +1 -1
  134. package/dist/parsing/operations/with.d.ts +1 -0
  135. package/dist/parsing/operations/with.d.ts.map +1 -1
  136. package/dist/parsing/operations/with.js +4 -0
  137. package/dist/parsing/operations/with.js.map +1 -1
  138. package/dist/parsing/parser.d.ts.map +1 -1
  139. package/dist/parsing/parser.js +20 -2
  140. package/dist/parsing/parser.js.map +1 -1
  141. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"relationship_reference.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,cAAM,qBAAsB,SAAQ,YAAY;IAC5C,OAAO,CAAC,UAAU,CAA6B;gBACnC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;IASzC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,GAAG,cAAc,CAAC,IAAI,CAAC;CAY7E;AAED,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"relationship_reference.d.ts","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,cAAM,qBAAsB,SAAQ,YAAY;IAC5C,OAAO,CAAC,UAAU,CAA6B;gBACnC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;IASzC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,GAAG,cAAc,CAAC,IAAI,CAAC;CAU7E;AAED,eAAe,qBAAqB,CAAC"}
@@ -42,9 +42,8 @@ class RelationshipReference extends relationship_1.default {
42
42
  }
43
43
  find(left_id_1) {
44
44
  return __asyncGenerator(this, arguments, function* find_1(left_id, hop = 0) {
45
- var _a;
46
45
  this.setValue(this._reference);
47
- const data = (_a = this._reference.getData()) === null || _a === void 0 ? void 0 : _a.current(hop);
46
+ const data = this._reference.currentRecord(hop);
48
47
  const followId = this._direction === "left" ? "left_id" : "right_id";
49
48
  if (this._target) {
50
49
  yield __await(yield* __asyncDelegator(__asyncValues(this._target.find(data[followId], hop))));
@@ -1 +1 @@
1
- {"version":3,"file":"relationship_reference.js","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAA0C;AAG1C,MAAM,qBAAsB,SAAQ,sBAAY;IAE5C,YAAY,IAAkB,EAAE,SAAuB;QACnD,KAAK,EAAE,CAAC;QAFJ,eAAU,GAAwB,IAAI,CAAC;QAG3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IACa,IAAI;kEAAC,OAAe,EAAE,MAAc,CAAC;;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;YAChC,MAAM,IAAI,GAAuB,MAAA,IAAI,CAAC,UAAW,CAAC,OAAO,EAAE,0CAAE,OAAO,CAChE,GAAG,CACgB,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACrE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACJ,2BAAK,CAAC;YACV,CAAC;QACL,CAAC;KAAA;CACJ;AAED,kBAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"relationship_reference.js","sourceRoot":"","sources":["../../src/graph/relationship_reference.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAA0C;AAG1C,MAAM,qBAAsB,SAAQ,sBAAY;IAE5C,YAAY,IAAkB,EAAE,SAAuB;QACnD,KAAK,EAAE,CAAC;QAFJ,eAAU,GAAwB,IAAI,CAAC;QAG3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IACa,IAAI;kEAAC,OAAe,EAAE,MAAc,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;YAChC,MAAM,IAAI,GAAuB,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,GAAG,CAAuB,CAAC;YAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACrE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,cAAA,KAAK,CAAC,CAAC,iBAAA,cAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,CAAA,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACJ,2BAAK,CAAC;YACV,CAAC;QACL,CAAC;KAAA;CACJ;AAED,kBAAe,qBAAqB,CAAC"}
@@ -0,0 +1,107 @@
1
+ import ASTNode from "../parsing/ast_node";
2
+ import Expression from "../parsing/expressions/expression";
3
+ import SourceContext from "./source_context";
4
+ import { NodeSourceProvider, PredicateCapabilities, PredicateOperator, RelationshipSourceProvider, SourcePredicate, SourceRow } from "./source_provider";
5
+ /** A constraint FlowQuery may push to a source (evaluated per request). */
6
+ export interface PushTerm {
7
+ op: PredicateOperator;
8
+ property: string;
9
+ value?: any;
10
+ values?: any[];
11
+ }
12
+ /** A WHERE comparison attached to a pattern node for push-down. */
13
+ export interface PushedPredicate {
14
+ op: "gt" | "gte" | "lt" | "lte" | "in";
15
+ property: string;
16
+ expression: ASTNode;
17
+ }
18
+ export interface SourceTerms {
19
+ terms: PushTerm[];
20
+ /** Legacy `$args` equality map from the element's own static properties. */
21
+ args: Record<string, any> | null;
22
+ }
23
+ /**
24
+ * True when the expression only depends on literals and query
25
+ * parameters, i.e. its value is fixed for the whole query.
26
+ */
27
+ export declare function isStaticExpression(node: ASTNode): boolean;
28
+ /** Evaluate static element properties and pushed WHERE predicates into push terms. */
29
+ export declare function buildTerms(properties: Map<string, Expression>, pushed: PushedPredicate[]): SourceTerms;
30
+ export declare function predicateFor(caps: PredicateCapabilities | undefined, terms: PushTerm[]): SourcePredicate | null;
31
+ /** Common node access used by deferred traversal. */
32
+ export interface NodeAccess {
33
+ readonly deferred: boolean;
34
+ scan(terms: PushTerm[], args: Record<string, any> | null): AsyncIterable<SourceRow[]>;
35
+ lookup(id: any, terms: PushTerm[], args: Record<string, any> | null): Promise<SourceRow[]>;
36
+ prefetch(ids: any[], terms: PushTerm[], args: Record<string, any> | null): Promise<void>;
37
+ /** Selectivity hints for start-point selection. */
38
+ canLookup(): boolean;
39
+ pushes(terms: PushTerm[]): boolean;
40
+ estimate(terms: PushTerm[], args: Record<string, any> | null): number | undefined;
41
+ }
42
+ /** Common relationship access used by deferred traversal. */
43
+ export interface RelationshipAccess {
44
+ readonly deferred: boolean;
45
+ /** Relationships whose `${side}_id` equals `anchor`, as pages. */
46
+ expand(anchor: any, side: "left" | "right", terms: PushTerm[], args: Record<string, any> | null): AsyncIterable<SourceRow[]>;
47
+ /**
48
+ * Batch-fetch relationships for many anchors. Returns the buffered
49
+ * rows, or null when nothing was prefetched (not batch-capable or the
50
+ * buffer limit was exceeded).
51
+ */
52
+ prefetch(anchors: any[], side: "left" | "right", terms: PushTerm[], args: Record<string, any> | null): Promise<SourceRow[] | null>;
53
+ }
54
+ /** Provider-backed node access across one or more labels. */
55
+ export declare class NodeSourceAccess implements NodeAccess {
56
+ private readonly ctx;
57
+ readonly deferred = true;
58
+ private _entries;
59
+ private _buffer;
60
+ constructor(ctx: SourceContext, entries: {
61
+ label: string;
62
+ provider: NodeSourceProvider;
63
+ }[]);
64
+ scan(terms: PushTerm[], args: Record<string, any> | null): AsyncGenerator<SourceRow[]>;
65
+ prefetch(ids: any[], terms: PushTerm[], args: Record<string, any> | null): Promise<void>;
66
+ lookup(id: any, terms: PushTerm[], args: Record<string, any> | null): Promise<SourceRow[]>;
67
+ canLookup(): boolean;
68
+ pushes(terms: PushTerm[]): boolean;
69
+ estimate(terms: PushTerm[], args: Record<string, any> | null): number | undefined;
70
+ }
71
+ /** Provider-backed relationship access across one or more types/endpoints. */
72
+ export declare class RelationshipSourceAccess implements RelationshipAccess {
73
+ private readonly ctx;
74
+ readonly deferred = true;
75
+ private _entries;
76
+ private _buffer;
77
+ private _bufferSide;
78
+ constructor(ctx: SourceContext, entries: {
79
+ type: string;
80
+ sourceLabel: string | null;
81
+ targetLabel: string | null;
82
+ provider: RelationshipSourceProvider;
83
+ }[]);
84
+ expand(anchor: any, side: "left" | "right", terms: PushTerm[], args: Record<string, any> | null): AsyncGenerator<SourceRow[]>;
85
+ prefetch(anchors: any[], side: "left" | "right", terms: PushTerm[], args: Record<string, any> | null): Promise<SourceRow[] | null>;
86
+ }
87
+ /** In-memory node access over materialized legacy records (used by reversed plans). */
88
+ export declare class MemoryNodeAccess implements NodeAccess {
89
+ private readonly _records;
90
+ readonly deferred = false;
91
+ constructor(_records: SourceRow[]);
92
+ scan(): AsyncGenerator<SourceRow[]>;
93
+ lookup(id: any): Promise<SourceRow[]>;
94
+ prefetch(): Promise<void>;
95
+ canLookup(): boolean;
96
+ pushes(): boolean;
97
+ estimate(): number | undefined;
98
+ }
99
+ /** In-memory relationship access over materialized legacy records (used by reversed plans). */
100
+ export declare class MemoryRelationshipAccess implements RelationshipAccess {
101
+ private readonly _records;
102
+ readonly deferred = false;
103
+ constructor(_records: SourceRow[]);
104
+ expand(anchor: any, side: "left" | "right"): AsyncGenerator<SourceRow[]>;
105
+ prefetch(): Promise<SourceRow[] | null>;
106
+ }
107
+ //# sourceMappingURL=source_access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source_access.d.ts","sourceRoot":"","sources":["../../src/graph/source_access.ts"],"names":[],"mappings":"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"}