flowquery 1.0.68 → 1.0.70

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 (94) hide show
  1. package/README.md +244 -1
  2. package/dist/compute/runner.d.ts +6 -0
  3. package/dist/compute/runner.d.ts.map +1 -1
  4. package/dist/compute/runner.js +26 -0
  5. package/dist/compute/runner.js.map +1 -1
  6. package/dist/flowquery.min.js +1 -1
  7. package/dist/graph/bindings.d.ts +78 -0
  8. package/dist/graph/bindings.d.ts.map +1 -0
  9. package/dist/graph/bindings.js +210 -0
  10. package/dist/graph/bindings.js.map +1 -0
  11. package/dist/graph/database.d.ts +4 -2
  12. package/dist/graph/database.d.ts.map +1 -1
  13. package/dist/graph/database.js +45 -9
  14. package/dist/graph/database.js.map +1 -1
  15. package/dist/graph/physical_node.d.ts +9 -0
  16. package/dist/graph/physical_node.d.ts.map +1 -1
  17. package/dist/graph/physical_node.js +70 -3
  18. package/dist/graph/physical_node.js.map +1 -1
  19. package/dist/graph/physical_relationship.d.ts +9 -0
  20. package/dist/graph/physical_relationship.d.ts.map +1 -1
  21. package/dist/graph/physical_relationship.js +70 -3
  22. package/dist/graph/physical_relationship.js.map +1 -1
  23. package/dist/parsing/ast_node.d.ts +9 -0
  24. package/dist/parsing/ast_node.d.ts.map +1 -1
  25. package/dist/parsing/ast_node.js +21 -4
  26. package/dist/parsing/ast_node.js.map +1 -1
  27. package/dist/parsing/expressions/binding_reference.d.ts +16 -0
  28. package/dist/parsing/expressions/binding_reference.d.ts.map +1 -0
  29. package/dist/parsing/expressions/binding_reference.js +34 -0
  30. package/dist/parsing/expressions/binding_reference.js.map +1 -0
  31. package/dist/parsing/operations/create_node.d.ts +5 -1
  32. package/dist/parsing/operations/create_node.d.ts.map +1 -1
  33. package/dist/parsing/operations/create_node.js +12 -2
  34. package/dist/parsing/operations/create_node.js.map +1 -1
  35. package/dist/parsing/operations/create_relationship.d.ts +5 -1
  36. package/dist/parsing/operations/create_relationship.d.ts.map +1 -1
  37. package/dist/parsing/operations/create_relationship.js +12 -2
  38. package/dist/parsing/operations/create_relationship.js.map +1 -1
  39. package/dist/parsing/operations/drop_binding.d.ts +15 -0
  40. package/dist/parsing/operations/drop_binding.d.ts.map +1 -0
  41. package/dist/parsing/operations/drop_binding.js +42 -0
  42. package/dist/parsing/operations/drop_binding.js.map +1 -0
  43. package/dist/parsing/operations/let.d.ts +36 -0
  44. package/dist/parsing/operations/let.d.ts.map +1 -0
  45. package/dist/parsing/operations/let.js +101 -0
  46. package/dist/parsing/operations/let.js.map +1 -0
  47. package/dist/parsing/operations/load.d.ts +11 -0
  48. package/dist/parsing/operations/load.d.ts.map +1 -1
  49. package/dist/parsing/operations/load.js +31 -2
  50. package/dist/parsing/operations/load.js.map +1 -1
  51. package/dist/parsing/operations/merge.d.ts +158 -0
  52. package/dist/parsing/operations/merge.d.ts.map +1 -0
  53. package/dist/parsing/operations/merge.js +338 -0
  54. package/dist/parsing/operations/merge.js.map +1 -0
  55. package/dist/parsing/operations/refresh_binding.d.ts +15 -0
  56. package/dist/parsing/operations/refresh_binding.d.ts.map +1 -0
  57. package/dist/parsing/operations/refresh_binding.js +42 -0
  58. package/dist/parsing/operations/refresh_binding.js.map +1 -0
  59. package/dist/parsing/operations/refresh_node.d.ts +11 -0
  60. package/dist/parsing/operations/refresh_node.d.ts.map +1 -0
  61. package/dist/parsing/operations/refresh_node.js +46 -0
  62. package/dist/parsing/operations/refresh_node.js.map +1 -0
  63. package/dist/parsing/operations/refresh_relationship.d.ts +11 -0
  64. package/dist/parsing/operations/refresh_relationship.d.ts.map +1 -0
  65. package/dist/parsing/operations/refresh_relationship.js +46 -0
  66. package/dist/parsing/operations/refresh_relationship.js.map +1 -0
  67. package/dist/parsing/operations/return.d.ts.map +1 -1
  68. package/dist/parsing/operations/return.js +7 -1
  69. package/dist/parsing/operations/return.js.map +1 -1
  70. package/dist/parsing/operations/update.d.ts +27 -0
  71. package/dist/parsing/operations/update.d.ts.map +1 -0
  72. package/dist/parsing/operations/update.js +88 -0
  73. package/dist/parsing/operations/update.js.map +1 -0
  74. package/dist/parsing/operations/update_delete.d.ts +43 -0
  75. package/dist/parsing/operations/update_delete.d.ts.map +1 -0
  76. package/dist/parsing/operations/update_delete.js +105 -0
  77. package/dist/parsing/operations/update_delete.js.map +1 -0
  78. package/dist/parsing/parser.d.ts +70 -1
  79. package/dist/parsing/parser.d.ts.map +1 -1
  80. package/dist/parsing/parser.js +704 -10
  81. package/dist/parsing/parser.js.map +1 -1
  82. package/dist/parsing/statement_info_crawler.d.ts +26 -0
  83. package/dist/parsing/statement_info_crawler.d.ts.map +1 -1
  84. package/dist/parsing/statement_info_crawler.js +86 -4
  85. package/dist/parsing/statement_info_crawler.js.map +1 -1
  86. package/dist/tokenization/keyword.d.ts +21 -1
  87. package/dist/tokenization/keyword.d.ts.map +1 -1
  88. package/dist/tokenization/keyword.js +20 -0
  89. package/dist/tokenization/keyword.js.map +1 -1
  90. package/dist/tokenization/token.d.ts +24 -0
  91. package/dist/tokenization/token.d.ts.map +1 -1
  92. package/dist/tokenization/token.js +73 -0
  93. package/dist/tokenization/token.js.map +1 -1
  94. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,cAAM,IAAK,SAAQ,SAAS;IACxB,OAAO,CAAC,MAAM,CAAa;;IAK3B,IAAW,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAEpC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,IAAI,CAE/B;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,GAAG,IAAI,CAG/C;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IACD,IAAW,OAAO,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAK9C;IACD,IAAW,OAAO,IAAI,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAUzF;IACD,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAcf;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAG9B;IAED;;;OAGG;YACW,YAAY;IA4B1B;;;OAGG;YACW,gBAAgB;IAS9B;;OAEG;YACW,WAAW;IAsBZ,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;IASpB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1B,KAAK,IAAI,GAAG;CAGtB;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,cAAM,IAAK,SAAQ,SAAS;IACxB,OAAO,CAAC,MAAM,CAAa;;IAK3B,IAAW,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAEpC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,IAAI,CAE/B;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,GAAG,IAAI,CAG/C;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IACD,IAAW,OAAO,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAK9C;IACD,IAAW,OAAO,IAAI,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAUzF;IACD,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAcf;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAG9B;IAED;;;OAGG;YACW,YAAY;IA4B1B;;;OAGG;YACW,gBAAgB;IAS9B;;OAEG;YACW,WAAW;IAWzB;;;;OAIG;YACW,aAAa;IAI3B;;;OAGG;YACW,IAAI;IAkBL,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;IAcpB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1B,KAAK,IAAI,GAAG;CAGtB;AAED,eAAe,IAAI,CAAC"}
@@ -168,7 +168,6 @@ class Load extends operation_1.default {
168
168
  */
169
169
  loadFromUrl() {
170
170
  return __awaiter(this, void 0, void 0, function* () {
171
- var _a, _b, _c;
172
171
  const result = yield fetch(this.from, this.options());
173
172
  let data = null;
174
173
  if (this.type instanceof json_1.default) {
@@ -177,6 +176,26 @@ class Load extends operation_1.default {
177
176
  else if (this.type instanceof text_1.default) {
178
177
  data = yield result.text();
179
178
  }
179
+ yield this.emit(data);
180
+ });
181
+ }
182
+ /**
183
+ * Emits an already-resolved JSON value (e.g. coming from a LET-binding
184
+ * referenced by `LOAD JSON FROM <name>`). Arrays expand into one
185
+ * iteration per element; non-array values are emitted once.
186
+ */
187
+ loadFromValue(data) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ yield this.emit(data);
190
+ });
191
+ }
192
+ /**
193
+ * Drives the downstream pipeline for the given data. Shared by
194
+ * URL / file / value loading paths.
195
+ */
196
+ emit(data) {
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ var _a, _b, _c, _d;
180
199
  if (Array.isArray(data)) {
181
200
  for (const item of data) {
182
201
  this._value = item;
@@ -191,6 +210,10 @@ class Load extends operation_1.default {
191
210
  this._value = data;
192
211
  yield ((_c = this.next) === null || _c === void 0 ? void 0 : _c.run());
193
212
  }
213
+ else if (data !== null && data !== undefined) {
214
+ this._value = data;
215
+ yield ((_d = this.next) === null || _d === void 0 ? void 0 : _d.run());
216
+ }
194
217
  });
195
218
  }
196
219
  load() {
@@ -202,7 +225,13 @@ class Load extends operation_1.default {
202
225
  yield this.loadFromFile();
203
226
  }
204
227
  else {
205
- yield this.loadFromUrl();
228
+ const source = this.children[1].value();
229
+ if (typeof source === "string") {
230
+ yield this.loadFromUrl();
231
+ }
232
+ else {
233
+ yield this.loadFromValue(source);
234
+ }
206
235
  }
207
236
  });
208
237
  }
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/parsing/operations/load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import ASTNode from "../ast_node";
2
+ import Expression from "../expressions/expression";
3
+ import Operation from "./operation";
4
+ /**
5
+ * One item in the `WHEN MATCHED THEN UPDATE SET` list.
6
+ *
7
+ * `field` is the name of the field on the matched target row to
8
+ * overwrite; `expression` is the value to assign. When `expression`
9
+ * is `null`, the default is `source.<field>` — i.e. the value of the
10
+ * same-named field on the current incoming row. This makes the
11
+ * partial-merge case (`SET .name, .email`) ergonomic without having to
12
+ * write `SET .name = source.name, .email = source.email`.
13
+ */
14
+ export interface MergeSetItem {
15
+ field: string;
16
+ expression: Expression | null;
17
+ }
18
+ /**
19
+ * The action taken when an incoming source row matches an existing
20
+ * target row. Either rewrite specific fields (`update`) or remove
21
+ * the matched target row (`delete`).
22
+ */
23
+ export type MergeMatchedAction = {
24
+ type: "update";
25
+ setItems: MergeSetItem[];
26
+ } | {
27
+ type: "delete";
28
+ };
29
+ /**
30
+ * The action taken when an incoming source row matches no existing
31
+ * target row. Inserts the row produced by `expression`, or the bare
32
+ * source row if `expression` is `null` (the implicit-insert default).
33
+ */
34
+ export interface MergeNotMatchedAction {
35
+ type: "insert";
36
+ expression: Expression | null;
37
+ }
38
+ /**
39
+ * The `ON` clause: either a short-form list of key fields (matched
40
+ * positionally against the source row by name) or an arbitrary
41
+ * predicate evaluated per (target, source) pair.
42
+ */
43
+ export type MergeOnClause = {
44
+ type: "keys";
45
+ keys: string[];
46
+ } | {
47
+ type: "predicate";
48
+ predicate: Expression;
49
+ };
50
+ /**
51
+ * `MERGE INTO <name> [AS <target>] USING <source-rhs> [AS <source>]
52
+ * ON ( <key> | (<k1>, <k2>, …) | <predicate> )
53
+ * [ WHEN MATCHED THEN UPDATE SET <set-list> ]
54
+ * [ WHEN MATCHED THEN DELETE ]
55
+ * [ WHEN NOT MATCHED THEN INSERT [<expr>] ]`
56
+ *
57
+ * SQL-MERGE-style upsert into an existing list-binding. The source
58
+ * may be any expression, sub-query, or bare binding name; both the
59
+ * `target` and `source` aliases are in scope inside the `ON`
60
+ * predicate and any `SET .field = <expr>` / `INSERT <expr>`
61
+ * expressions, allowing per-pair computation across both sides.
62
+ *
63
+ * Execution semantics:
64
+ *
65
+ * - The source RHS is evaluated once to produce a list of rows.
66
+ * - For each source row, the target list is scanned for a matching
67
+ * row using the `ON` clause.
68
+ * - If a match is found and a `WHEN MATCHED` branch is present, that
69
+ * branch is applied (rewriting the matched target row in place, or
70
+ * removing it). Without a `WHEN MATCHED` branch, the source row is
71
+ * silently ignored.
72
+ * - If no match is found and a `WHEN NOT MATCHED THEN INSERT` branch
73
+ * is present, the row is appended to the target list. Without the
74
+ * branch, the source row is silently ignored.
75
+ *
76
+ * The target binding must already exist (use `LET` to create it).
77
+ */
78
+ /**
79
+ * Proxy AST node used by the parser to register the `target` /
80
+ * `source` alias in the variable scope while parsing the ON
81
+ * predicate and SET / INSERT expressions. Resolves to the row
82
+ * currently exposed by the owning Merge instance.
83
+ */
84
+ export declare class MergeTargetAlias extends ASTNode {
85
+ private _merge;
86
+ constructor(merge: Merge);
87
+ value(): any;
88
+ }
89
+ export declare class MergeSourceAlias extends ASTNode {
90
+ private _merge;
91
+ constructor(merge: Merge);
92
+ value(): any;
93
+ }
94
+ declare class Merge extends Operation {
95
+ private _name;
96
+ private _targetAlias;
97
+ private _sourceAlias;
98
+ private _onClause;
99
+ private _matched;
100
+ private _notMatched;
101
+ private _sourceExpression;
102
+ private _sourceSubQuery;
103
+ /**
104
+ * The target row currently in scope (during ON / SET / INSERT
105
+ * evaluation). `undefined` for `WHEN NOT MATCHED` rows.
106
+ */
107
+ private _currentTarget;
108
+ /**
109
+ * The source row currently in scope (during ON / SET / INSERT
110
+ * evaluation).
111
+ */
112
+ private _currentSource;
113
+ /** The last value written back to the binding (for `results`). */
114
+ private _value;
115
+ constructor(name: string, targetAlias: string | null, sourceAlias: string | null, sourceExpression: Expression | null, sourceSubQuery: ASTNode | null, onClause: MergeOnClause, matched: MergeMatchedAction | null, notMatched: MergeNotMatchedAction | null);
116
+ /**
117
+ * Replaces the placeholder ON clause and matched / not-matched
118
+ * actions with their parsed counterparts (used by the parser,
119
+ * which must register the operation in its variable scope before
120
+ * parsing those expressions so that the target / source aliases
121
+ * resolve to this node).
122
+ */
123
+ setClauses(onClause: MergeOnClause, matched: MergeMatchedAction | null, notMatched: MergeNotMatchedAction | null): void;
124
+ get name(): string;
125
+ get targetAlias(): string | null;
126
+ get sourceAlias(): string | null;
127
+ get sourceExpression(): Expression | null;
128
+ get sourceSubQuery(): ASTNode | null;
129
+ get onClause(): MergeOnClause;
130
+ get matched(): MergeMatchedAction | null;
131
+ get notMatched(): MergeNotMatchedAction | null;
132
+ /**
133
+ * Returns the row currently in scope for the given alias. This is
134
+ * what {@link Reference}.value() resolves to when the target /
135
+ * source alias is referenced inside the ON predicate or in a
136
+ * SET / INSERT expression. The parser stamps an aliasContext on
137
+ * the proxy AST nodes it registers in the variable scope so we
138
+ * can disambiguate without name comparison.
139
+ */
140
+ targetValue(): any;
141
+ sourceValue(): any;
142
+ run(): Promise<void>;
143
+ /**
144
+ * Finds the first index in `target` (skipping tombstones) for
145
+ * which the ON clause holds against the current source row. The
146
+ * source row is already exposed via {@link sourceValue}.
147
+ */
148
+ private findMatch;
149
+ /**
150
+ * Builds the next value for a matched target row by applying the
151
+ * `SET <set-list>` items. Items without an explicit expression
152
+ * default to `source.<field>`.
153
+ */
154
+ private applySet;
155
+ get results(): Record<string, any>[];
156
+ }
157
+ export default Merge;
158
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,338 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MergeSourceAlias = exports.MergeTargetAlias = void 0;
16
+ const bindings_1 = __importDefault(require("../../graph/bindings"));
17
+ const ast_node_1 = __importDefault(require("../ast_node"));
18
+ const operation_1 = __importDefault(require("./operation"));
19
+ /**
20
+ * `MERGE INTO <name> [AS <target>] USING <source-rhs> [AS <source>]
21
+ * ON ( <key> | (<k1>, <k2>, …) | <predicate> )
22
+ * [ WHEN MATCHED THEN UPDATE SET <set-list> ]
23
+ * [ WHEN MATCHED THEN DELETE ]
24
+ * [ WHEN NOT MATCHED THEN INSERT [<expr>] ]`
25
+ *
26
+ * SQL-MERGE-style upsert into an existing list-binding. The source
27
+ * may be any expression, sub-query, or bare binding name; both the
28
+ * `target` and `source` aliases are in scope inside the `ON`
29
+ * predicate and any `SET .field = <expr>` / `INSERT <expr>`
30
+ * expressions, allowing per-pair computation across both sides.
31
+ *
32
+ * Execution semantics:
33
+ *
34
+ * - The source RHS is evaluated once to produce a list of rows.
35
+ * - For each source row, the target list is scanned for a matching
36
+ * row using the `ON` clause.
37
+ * - If a match is found and a `WHEN MATCHED` branch is present, that
38
+ * branch is applied (rewriting the matched target row in place, or
39
+ * removing it). Without a `WHEN MATCHED` branch, the source row is
40
+ * silently ignored.
41
+ * - If no match is found and a `WHEN NOT MATCHED THEN INSERT` branch
42
+ * is present, the row is appended to the target list. Without the
43
+ * branch, the source row is silently ignored.
44
+ *
45
+ * The target binding must already exist (use `LET` to create it).
46
+ */
47
+ /**
48
+ * Proxy AST node used by the parser to register the `target` /
49
+ * `source` alias in the variable scope while parsing the ON
50
+ * predicate and SET / INSERT expressions. Resolves to the row
51
+ * currently exposed by the owning Merge instance.
52
+ */
53
+ class MergeTargetAlias extends ast_node_1.default {
54
+ constructor(merge) {
55
+ super();
56
+ this._merge = merge;
57
+ }
58
+ value() {
59
+ return this._merge.targetValue();
60
+ }
61
+ }
62
+ exports.MergeTargetAlias = MergeTargetAlias;
63
+ class MergeSourceAlias extends ast_node_1.default {
64
+ constructor(merge) {
65
+ super();
66
+ this._merge = merge;
67
+ }
68
+ value() {
69
+ return this._merge.sourceValue();
70
+ }
71
+ }
72
+ exports.MergeSourceAlias = MergeSourceAlias;
73
+ class Merge extends operation_1.default {
74
+ constructor(name, targetAlias, sourceAlias, sourceExpression, sourceSubQuery, onClause, matched, notMatched) {
75
+ super();
76
+ /**
77
+ * The target row currently in scope (during ON / SET / INSERT
78
+ * evaluation). `undefined` for `WHEN NOT MATCHED` rows.
79
+ */
80
+ this._currentTarget = undefined;
81
+ /**
82
+ * The source row currently in scope (during ON / SET / INSERT
83
+ * evaluation).
84
+ */
85
+ this._currentSource = undefined;
86
+ /** The last value written back to the binding (for `results`). */
87
+ this._value = [];
88
+ this._name = name;
89
+ this._targetAlias = targetAlias;
90
+ this._sourceAlias = sourceAlias;
91
+ this._sourceExpression = sourceExpression;
92
+ this._sourceSubQuery = sourceSubQuery;
93
+ this._onClause = onClause;
94
+ this._matched = matched;
95
+ this._notMatched = notMatched;
96
+ if (sourceExpression !== null) {
97
+ this.addChild(sourceExpression);
98
+ }
99
+ if (sourceSubQuery !== null) {
100
+ this.addChild(sourceSubQuery);
101
+ }
102
+ if (onClause.type === "predicate") {
103
+ this.addChild(onClause.predicate);
104
+ }
105
+ if (matched !== null && matched.type === "update") {
106
+ for (const item of matched.setItems) {
107
+ if (item.expression !== null) {
108
+ this.addChild(item.expression);
109
+ }
110
+ }
111
+ }
112
+ if (notMatched !== null && notMatched.expression !== null) {
113
+ this.addChild(notMatched.expression);
114
+ }
115
+ }
116
+ /**
117
+ * Replaces the placeholder ON clause and matched / not-matched
118
+ * actions with their parsed counterparts (used by the parser,
119
+ * which must register the operation in its variable scope before
120
+ * parsing those expressions so that the target / source aliases
121
+ * resolve to this node).
122
+ */
123
+ setClauses(onClause, matched, notMatched) {
124
+ this._onClause = onClause;
125
+ this._matched = matched;
126
+ this._notMatched = notMatched;
127
+ if (onClause.type === "predicate") {
128
+ this.addChild(onClause.predicate);
129
+ }
130
+ if (matched !== null && matched.type === "update") {
131
+ for (const item of matched.setItems) {
132
+ if (item.expression !== null) {
133
+ this.addChild(item.expression);
134
+ }
135
+ }
136
+ }
137
+ if (notMatched !== null && notMatched.expression !== null) {
138
+ this.addChild(notMatched.expression);
139
+ }
140
+ }
141
+ get name() {
142
+ return this._name;
143
+ }
144
+ get targetAlias() {
145
+ return this._targetAlias;
146
+ }
147
+ get sourceAlias() {
148
+ return this._sourceAlias;
149
+ }
150
+ get sourceExpression() {
151
+ return this._sourceExpression;
152
+ }
153
+ get sourceSubQuery() {
154
+ return this._sourceSubQuery;
155
+ }
156
+ get onClause() {
157
+ return this._onClause;
158
+ }
159
+ get matched() {
160
+ return this._matched;
161
+ }
162
+ get notMatched() {
163
+ return this._notMatched;
164
+ }
165
+ /**
166
+ * Returns the row currently in scope for the given alias. This is
167
+ * what {@link Reference}.value() resolves to when the target /
168
+ * source alias is referenced inside the ON predicate or in a
169
+ * SET / INSERT expression. The parser stamps an aliasContext on
170
+ * the proxy AST nodes it registers in the variable scope so we
171
+ * can disambiguate without name comparison.
172
+ */
173
+ targetValue() {
174
+ return this._currentTarget;
175
+ }
176
+ sourceValue() {
177
+ return this._currentSource;
178
+ }
179
+ run() {
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ var _a;
182
+ const bindings = bindings_1.default.getInstance();
183
+ if (!bindings.has(this._name)) {
184
+ throw new Error(`Binding '${this._name}' is not defined; use LET to create it`);
185
+ }
186
+ if (bindings.isRefreshable(this._name)) {
187
+ throw new Error(`Binding '${this._name}' is refreshable; use REFRESH BINDING ${this._name} to re-evaluate or DROP BINDING ${this._name} first`);
188
+ }
189
+ const existing = bindings.get(this._name);
190
+ if (!Array.isArray(existing)) {
191
+ throw new Error(`MERGE INTO ${this._name} requires '${this._name}' to be a list`);
192
+ }
193
+ // Evaluate source once.
194
+ let source;
195
+ if (this._sourceSubQuery !== null) {
196
+ const first = this._sourceSubQuery.firstChild();
197
+ const last = this._sourceSubQuery.lastChild();
198
+ yield first.initialize();
199
+ yield first.run();
200
+ yield first.finish();
201
+ source = last.results;
202
+ }
203
+ else if (this._sourceExpression !== null) {
204
+ source = this._sourceExpression.value();
205
+ }
206
+ else {
207
+ source = null;
208
+ }
209
+ if (!Array.isArray(source)) {
210
+ throw new Error(`MERGE INTO ${this._name} USING … requires the source to evaluate to a list of rows`);
211
+ }
212
+ // Working copy of the target list; mutations are applied in
213
+ // place and a final assignment writes it back to the binding.
214
+ const result = existing.slice();
215
+ // Tombstone marker for delete actions; we sweep at the end so
216
+ // that intra-merge index lookups remain stable.
217
+ const tombstones = new Set();
218
+ for (const sourceRow of source) {
219
+ this._currentSource = sourceRow;
220
+ const matchedIndex = this.findMatch(result, tombstones, sourceRow);
221
+ if (matchedIndex !== -1) {
222
+ this._currentTarget = result[matchedIndex];
223
+ if (this._matched !== null) {
224
+ if (this._matched.type === "delete") {
225
+ tombstones.add(matchedIndex);
226
+ }
227
+ else {
228
+ result[matchedIndex] = this.applySet(result[matchedIndex], this._matched.setItems);
229
+ }
230
+ }
231
+ this._currentTarget = undefined;
232
+ }
233
+ else {
234
+ if (this._notMatched !== null) {
235
+ const inserted = this._notMatched.expression !== null
236
+ ? this._notMatched.expression.value()
237
+ : sourceRow;
238
+ result.push(inserted);
239
+ }
240
+ }
241
+ }
242
+ this._currentSource = undefined;
243
+ const swept = [];
244
+ for (let i = 0; i < result.length; i++) {
245
+ if (!tombstones.has(i)) {
246
+ swept.push(result[i]);
247
+ }
248
+ }
249
+ bindings.set(this._name, swept);
250
+ this._value = swept;
251
+ yield ((_a = this.next) === null || _a === void 0 ? void 0 : _a.run());
252
+ });
253
+ }
254
+ /**
255
+ * Finds the first index in `target` (skipping tombstones) for
256
+ * which the ON clause holds against the current source row. The
257
+ * source row is already exposed via {@link sourceValue}.
258
+ */
259
+ findMatch(target, tombstones, sourceRow) {
260
+ if (this._onClause.type === "keys") {
261
+ const keys = this._onClause.keys;
262
+ // Source row must be an object with all keys defined; if not,
263
+ // it cannot match anything and falls through to NOT MATCHED.
264
+ if (sourceRow === null || typeof sourceRow !== "object") {
265
+ return -1;
266
+ }
267
+ for (const k of keys) {
268
+ if (!(k in sourceRow)) {
269
+ return -1;
270
+ }
271
+ }
272
+ for (let i = 0; i < target.length; i++) {
273
+ if (tombstones.has(i)) {
274
+ continue;
275
+ }
276
+ const t = target[i];
277
+ if (t === null || typeof t !== "object") {
278
+ continue;
279
+ }
280
+ let matches = true;
281
+ for (const k of keys) {
282
+ if (!(k in t) || t[k] !== sourceRow[k]) {
283
+ matches = false;
284
+ break;
285
+ }
286
+ }
287
+ if (matches) {
288
+ return i;
289
+ }
290
+ }
291
+ return -1;
292
+ }
293
+ // Predicate ON — evaluate per (target, source) pair.
294
+ for (let i = 0; i < target.length; i++) {
295
+ if (tombstones.has(i)) {
296
+ continue;
297
+ }
298
+ this._currentTarget = target[i];
299
+ const ok = this._onClause.predicate.value();
300
+ if (ok) {
301
+ this._currentTarget = undefined;
302
+ return i;
303
+ }
304
+ }
305
+ this._currentTarget = undefined;
306
+ return -1;
307
+ }
308
+ /**
309
+ * Builds the next value for a matched target row by applying the
310
+ * `SET <set-list>` items. Items without an explicit expression
311
+ * default to `source.<field>`.
312
+ */
313
+ applySet(targetRow, setItems) {
314
+ const base = targetRow !== null && typeof targetRow === "object" ? Object.assign({}, targetRow) : {};
315
+ for (const item of setItems) {
316
+ if (item.expression !== null) {
317
+ base[item.field] = item.expression.value();
318
+ }
319
+ else {
320
+ // Default: copy source.<field> if present, otherwise
321
+ // leave the existing field untouched. This makes
322
+ // `SET .name, .email` behave like the old partial-merge
323
+ // form (only listed fields overwrite; missing ones
324
+ // preserve the target's value).
325
+ const src = this._currentSource;
326
+ if (src !== null && typeof src === "object" && item.field in src) {
327
+ base[item.field] = src[item.field];
328
+ }
329
+ }
330
+ }
331
+ return base;
332
+ }
333
+ get results() {
334
+ return this._value;
335
+ }
336
+ }
337
+ exports.default = Merge;
338
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/parsing/operations/merge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oEAA4C;AAC5C,2DAAkC;AAElC,4DAAoC;AA2CpC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;;;;;GAKG;AACH,MAAa,gBAAiB,SAAQ,kBAAO;IAEzC,YAAY,KAAY;QACpB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACM,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;CACJ;AATD,4CASC;AAED,MAAa,gBAAiB,SAAQ,kBAAO;IAEzC,YAAY,KAAY;QACpB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IACM,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;CACJ;AATD,4CASC;AAED,MAAM,KAAM,SAAQ,mBAAS;IAwBzB,YACI,IAAY,EACZ,WAA0B,EAC1B,WAA0B,EAC1B,gBAAmC,EACnC,cAA8B,EAC9B,QAAuB,EACvB,OAAkC,EAClC,UAAwC;QAExC,KAAK,EAAE,CAAC;QAxBZ;;;WAGG;QACK,mBAAc,GAAQ,SAAS,CAAC;QACxC;;;WAGG;QACK,mBAAc,GAAQ,SAAS,CAAC;QAExC,kEAAkE;QAC1D,WAAM,GAAU,EAAE,CAAC;QAavB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CACb,QAAuB,EACvB,OAAkC,EAClC,UAAwC;QAExC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEY,GAAG;;;YACZ,MAAM,QAAQ,GAAG,kBAAQ,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,wCAAwC,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACX,YAAY,IAAI,CAAC,KAAK,yCAAyC,IAAI,CAAC,KAAK,mCAAmC,IAAI,CAAC,KAAK,QAAQ,CACjI,CAAC;YACN,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,KAAK,gBAAgB,CAAC,CAAC;YACtF,CAAC;YACD,wBAAwB;YACxB,IAAI,MAAW,CAAC;YAChB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAe,CAAC;gBAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAe,CAAC;gBAC3D,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;gBACzB,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;gBAClB,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;gBACrB,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBACzC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACX,cAAc,IAAI,CAAC,KAAK,4DAA4D,CACvF,CAAC;YACN,CAAC;YAED,4DAA4D;YAC5D,8DAA8D;YAC9D,MAAM,MAAM,GAAU,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvC,8DAA8D;YAC9D,gDAAgD;YAChD,MAAM,UAAU,GAAgB,IAAI,GAAG,EAAE,CAAC;YAE1C,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;gBAChC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACnE,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC3C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;wBACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAClC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBACjC,CAAC;6BAAM,CAAC;4BACJ,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAChC,MAAM,CAAC,YAAY,CAAC,EACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACzB,CAAC;wBACN,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACJ,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;wBAC5B,MAAM,QAAQ,GACV,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI;4BAChC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE;4BACrC,CAAC,CAAC,SAAS,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAEhC,MAAM,KAAK,GAAU,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC;YACL,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,MAAM,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG,EAAE,CAAA,CAAC;QAC3B,CAAC;KAAA;IAED;;;;OAIG;IACK,SAAS,CAAC,MAAa,EAAE,UAAuB,EAAE,SAAc;QACpE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACjC,8DAA8D;YAC9D,6DAA6D;YAC7D,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO,CAAC,CAAC,CAAC;YACd,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC;oBACpB,OAAO,CAAC,CAAC,CAAC;gBACd,CAAC;YACL,CAAC;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpB,SAAS;gBACb,CAAC;gBACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACtC,SAAS;gBACb,CAAC;gBACD,IAAI,OAAO,GAAG,IAAI,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACnB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrC,OAAO,GAAG,KAAK,CAAC;wBAChB,MAAM;oBACV,CAAC;gBACL,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,CAAC;gBACb,CAAC;YACL,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;QACd,CAAC;QACD,qDAAqD;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,SAAS;YACb,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,EAAE,EAAE,CAAC;gBACL,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;gBAChC,OAAO,CAAC,CAAC;YACb,CAAC;QACL,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,SAAc,EAAE,QAAwB;QACrD,MAAM,IAAI,GAAG,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,mBAAM,SAAS,EAAG,CAAC,CAAC,EAAE,CAAC;QACzF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACJ,qDAAqD;gBACrD,kDAAkD;gBAClD,wDAAwD;gBACxD,mDAAmD;gBACnD,gCAAgC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;gBAChC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;oBAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,MAA+B,CAAC;IAChD,CAAC;CACJ;AAED,kBAAe,KAAK,CAAC"}
@@ -0,0 +1,15 @@
1
+ import Operation from "./operation";
2
+ /**
3
+ * `REFRESH BINDING name`: clear the cached value of a refreshable
4
+ * binding so the next read re-executes the backing sub-query. No-op
5
+ * for plain bindings.
6
+ */
7
+ declare class RefreshBinding extends Operation {
8
+ private _name;
9
+ constructor(name: string);
10
+ get name(): string;
11
+ run(): Promise<void>;
12
+ get results(): Record<string, any>[];
13
+ }
14
+ export default RefreshBinding;
15
+ //# sourceMappingURL=refresh_binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh_binding.d.ts","sourceRoot":"","sources":["../../../src/parsing/operations/refresh_binding.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC;;;;GAIG;AACH,cAAM,cAAe,SAAQ,SAAS;IAClC,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,MAAM;IAKxB,IAAW,IAAI,IAAI,MAAM,CAExB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,IAAW,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAE1C;CACJ;AAED,eAAe,cAAc,CAAC"}