@ultipa-graph/ultipa-driver 6.2.0 → 6.2.2

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.
@@ -17,7 +17,32 @@ export declare class ConnectionPool {
17
17
  /** Get a connection for a specific host */
18
18
  getConnectionForHost(host: string): grpc.Client;
19
19
  private startHealthCheck;
20
+ /**
21
+ * Health-check tick. Connectivity-state semantics:
22
+ * - READY / IDLE → healthy; reset the unhealthy counter.
23
+ * - CONNECTING → transient; let the channel heal itself,
24
+ * don't count toward unhealthy.
25
+ * - SHUTDOWN → terminal; reconnect immediately.
26
+ * - TRANSIENT_FAILURE → count toward unhealthy; reconnect only
27
+ * after UNHEALTHY_RECONNECT_THRESHOLD
28
+ * consecutive ticks.
29
+ *
30
+ * Reconnect replaces the pool's channel reference; it does NOT close
31
+ * the old channel, so in-flight RPCs continue to completion on it.
32
+ */
20
33
  private checkHealth;
34
+ /**
35
+ * Replace the pool's channel for `host` with a fresh one.
36
+ *
37
+ * Critically, does NOT close the old channel. In-flight RPCs hold
38
+ * their own reference to it via the client they were issued on and
39
+ * continue to completion on that channel; the Node.js runtime's
40
+ * garbage collector releases the old channel only after every
41
+ * in-flight RPC has resolved.
42
+ *
43
+ * Earlier versions closed the old channel synchronously here, which
44
+ * cancelled every pending RPC with a "Channel closed!"-style error.
45
+ */
21
46
  private reconnect;
22
47
  /** Close all connections in the pool */
23
48
  close(): void;
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.ConnectionPool = void 0;
40
40
  const grpc = __importStar(require("@grpc/grpc-js"));
41
41
  const errors_1 = require("./errors");
42
+ /**
43
+ * Number of consecutive unhealthy ticks required before forcing a
44
+ * reconnect (which replaces the channel; in-flight RPCs are NOT
45
+ * cancelled because the old channel is left alive until GC).
46
+ */
47
+ const UNHEALTHY_RECONNECT_THRESHOLD = 3;
42
48
  /** Manages a pool of connections to GQLDB servers */
43
49
  class ConnectionPool {
44
50
  config;
@@ -87,6 +93,7 @@ class ConnectionPool {
87
93
  client,
88
94
  healthy: true,
89
95
  lastPing: Date.now(),
96
+ consecutiveUnhealthy: 0,
90
97
  };
91
98
  }
92
99
  /** Get a healthy connection from the pool */
@@ -115,39 +122,73 @@ class ConnectionPool {
115
122
  this.healthCheckTimer = setInterval(() => this.checkHealth(), interval);
116
123
  }
117
124
  }
125
+ /**
126
+ * Health-check tick. Connectivity-state semantics:
127
+ * - READY / IDLE → healthy; reset the unhealthy counter.
128
+ * - CONNECTING → transient; let the channel heal itself,
129
+ * don't count toward unhealthy.
130
+ * - SHUTDOWN → terminal; reconnect immediately.
131
+ * - TRANSIENT_FAILURE → count toward unhealthy; reconnect only
132
+ * after UNHEALTHY_RECONNECT_THRESHOLD
133
+ * consecutive ticks.
134
+ *
135
+ * Reconnect replaces the pool's channel reference; it does NOT close
136
+ * the old channel, so in-flight RPCs continue to completion on it.
137
+ */
118
138
  checkHealth() {
119
139
  for (const [host, conn] of this.connections) {
120
140
  const state = conn.client.getChannel().getConnectivityState(false);
121
- const healthy = state === grpc.connectivityState.READY ||
122
- state === grpc.connectivityState.IDLE;
123
- conn.healthy = healthy;
124
- if (healthy) {
141
+ if (state === grpc.connectivityState.READY ||
142
+ state === grpc.connectivityState.IDLE) {
143
+ conn.healthy = true;
144
+ conn.consecutiveUnhealthy = 0;
125
145
  conn.lastPing = Date.now();
146
+ continue;
147
+ }
148
+ if (state === grpc.connectivityState.CONNECTING) {
149
+ // Transient — let the channel heal itself.
150
+ continue;
126
151
  }
127
- else {
152
+ if (state === grpc.connectivityState.SHUTDOWN) {
153
+ conn.healthy = false;
154
+ conn.consecutiveUnhealthy = UNHEALTHY_RECONNECT_THRESHOLD;
155
+ this.reconnect(host);
156
+ continue;
157
+ }
158
+ // TRANSIENT_FAILURE or any other non-READY state.
159
+ conn.consecutiveUnhealthy++;
160
+ if (conn.consecutiveUnhealthy >= UNHEALTHY_RECONNECT_THRESHOLD) {
161
+ conn.healthy = false;
128
162
  this.reconnect(host);
129
163
  }
130
164
  }
131
165
  }
166
+ /**
167
+ * Replace the pool's channel for `host` with a fresh one.
168
+ *
169
+ * Critically, does NOT close the old channel. In-flight RPCs hold
170
+ * their own reference to it via the client they were issued on and
171
+ * continue to completion on that channel; the Node.js runtime's
172
+ * garbage collector releases the old channel only after every
173
+ * in-flight RPC has resolved.
174
+ *
175
+ * Earlier versions closed the old channel synchronously here, which
176
+ * cancelled every pending RPC with a "Channel closed!"-style error.
177
+ */
132
178
  async reconnect(host) {
133
179
  if (this.closed)
134
180
  return;
135
- const oldConn = this.connections.get(host);
136
- if (oldConn) {
137
- try {
138
- oldConn.client.close();
139
- }
140
- catch (e) {
141
- // Ignore
142
- }
143
- this.connections.delete(host);
144
- }
145
181
  try {
182
+ // Build the new connection up-front; only swap if it succeeds.
146
183
  const newConn = this.createConnection(host);
184
+ // Overwrite the pool entry. The old Connection is now
185
+ // unreferenced by the pool; in-flight RPCs still hold its
186
+ // grpc.Client alive via per-call references. Once they
187
+ // complete the client becomes garbage and gRPC closes it
188
+ // naturally.
147
189
  this.connections.set(host, newConn);
148
190
  }
149
191
  catch (e) {
150
- // Log and continue
151
192
  console.error(`Failed to reconnect to ${host}:`, e);
152
193
  }
153
194
  }
@@ -188,4 +229,4 @@ class ConnectionPool {
188
229
  }
189
230
  }
190
231
  exports.ConnectionPool = ConnectionPool;
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLHFDQUF5RjtBQVV6RixxREFBcUQ7QUFDckQsTUFBYSxjQUFjO0lBQ2pCLE1BQU0sQ0FBYztJQUNwQixXQUFXLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakQsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLGdCQUFnQixDQUFrQjtJQUUxQyxZQUFZLE1BQW1CO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZTtRQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLDRCQUE0QjtnQkFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSw0QkFBbUIsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENB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QUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsU0FBUztZQUNYLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLGdCQUFnQjtRQUNkLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLElBQUksSUFBSSxDQUFDLE9BQU87Z0JBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBbktELHdDQW1LQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29ubmVjdGlvbiBtYW5hZ2VtZW50IGZvciBHUUxEQiBOb2RlLmpzIGRyaXZlci5cbiAqL1xuXG5pbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnO1xuaW1wb3J0IHsgR3FsZGJDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBbGxIb3N0c0ZhaWxlZEVycm9yLCBDb25uZWN0aW9uQ2xvc2VkRXJyb3IsIE5vQ29ubmVjdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKiogUmVwcmVzZW50cyBhIHNpbmdsZSBnUlBDIGNvbm5lY3Rpb24gKi9cbmludGVyZmFjZSBDb25uZWN0aW9uIHtcbiAgaG9zdDogc3RyaW5nO1xuICBjbGllbnQ6IGdycGMuQ2xpZW50O1xuICBoZWFsdGh5OiBib29sZWFuO1xuICBsYXN0UGluZzogbnVtYmVyO1xufVxuXG4vKiogTWFuYWdlcyBhIHBvb2wgb2YgY29ubmVjdGlvbnMgdG8gR1FMREIgc2VydmVycyAqL1xuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25Qb29sIHtcbiAgcHJpdmF0ZSBjb25maWc6IEdxbGRiQ29uZmlnO1xuICBwcml2YXRlIGNvbm5lY3Rpb25zOiBNYXA8c3RyaW5nLCBDb25uZWN0aW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBjbG9zZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBoZWFsdGhDaGVja1RpbWVyPzogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBHcWxkYkNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdENvbm5lY3Rpb25zKCk7XG4gICAgdGhpcy5zdGFydEhlYWx0aENoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb25uZWN0aW9ucygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGhvc3Qgb2YgdGhpcy5jb25maWcuaG9zdHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbm4gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oaG9zdCk7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KGhvc3QsIGNvbm4pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBDb250aW51ZSB3aXRoIG90aGVyIGhvc3RzXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb25uZWN0IHRvICR7aG9zdH06YCwgZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbnMuc2l6ZSA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEFsbEhvc3RzRmFpbGVkRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbm5lY3Rpb24oaG9zdDogc3RyaW5nKTogQ29ubmVjdGlvbiB7XG4gICAgbGV0IGNyZWRlbnRpYWxzOiBncnBjLkNoYW5uZWxDcmVkZW50aWFscztcblxuICAgIGlmICh0aGlzLmNvbmZpZy50bHNPcHRpb25zKSB7XG4gICAgICBjcmVkZW50aWFscyA9IGdycGMuY3JlZGVudGlhbHMuY3JlYXRlU3NsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWRlbnRpYWxzID0gZ3JwYy5jcmVkZW50aWFscy5jcmVhdGVJbnNlY3VyZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnM6IGdycGMuQ2hhbm5lbE9wdGlvbnMgPSB7XG4gICAgICAnZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCc6IHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID8/IDY0ICogMTAyNCAqIDEwMjQsXG4gICAgICAnZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCc6IHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID8/IDY0ICogMTAyNCAqIDEwMjQsXG4gICAgICAnZ3JwYy5rZWVwYWxpdmVfdGltZV9tcyc6IDMwMDAwLFxuICAgICAgJ2dycGMua2VlcGFsaXZlX3RpbWVvdXRfbXMnOiAxMDAwMCxcbiAgICAgICdncnBjLmtlZXBhbGl2ZV9wZXJtaXRfd2l0aG91dF9jYWxscyc6IDEsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIGdlbmVyaWMgY2xpZW50IGZvciB0aGUgY2hhbm5lbFxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBncnBjLkNsaWVudChob3N0LCBjcmVkZW50aWFscywgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaG9zdCxcbiAgICAgIGNsaWVudCxcbiAgICAgIGhlYWx0aHk6IHRydWUsXG4gICAgICBsYXN0UGluZzogRGF0ZS5ub3coKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBhIGhlYWx0aHkgY29ubmVjdGlvbiBmcm9tIHRoZSBwb29sICovXG4gIGdldENvbm5lY3Rpb24oKTogZ3JwYy5DbGllbnQge1xuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IENvbm5lY3Rpb25DbG9zZWRFcnJvcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSB7XG4gICAgICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgTm9Db25uZWN0aW9uRXJyb3IoKTtcbiAgfVxuXG4gIC8qKiBHZXQgYSBjb25uZWN0aW9uIGZvciBhIHNwZWNpZmljIGhvc3QgKi9cbiAgZ2V0Q29ubmVjdGlvbkZvckhvc3QoaG9zdDogc3RyaW5nKTogZ3JwYy5DbGllbnQge1xuICAgIGNvbnN0IGNvbm4gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChob3N0KTtcbiAgICBpZiAoIWNvbm4gfHwgIWNvbm4uaGVhbHRoeSkge1xuICAgICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRIZWFsdGhDaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gMzAwMDA7XG4gICAgaWYgKGludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5oZWFsdGhDaGVja1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5jaGVja0hlYWx0aCgpLCBpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0hlYWx0aCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtob3N0LCBjb25uXSBvZiB0aGlzLmNvbm5lY3Rpb25zKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNvbm4uY2xpZW50LmdldENoYW5uZWwoKS5nZXRDb25uZWN0aXZpdHlTdGF0ZShmYWxzZSk7XG4gICAgICBjb25zdCBoZWFsdGh5ID0gc3RhdGUgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuUkVBRFkgfHxcbiAgICAgICAgICAgICAgICAgICAgIHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLklETEU7XG5cbiAgICAgIGNvbm4uaGVhbHRoeSA9IGhlYWx0aHk7XG4gICAgICBpZiAoaGVhbHRoeSkge1xuICAgICAgICBjb25uLmxhc3RQaW5nID0gRGF0ZS5ub3coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVjb25uZWN0KGhvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVjb25uZWN0KGhvc3Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2xkQ29ubiA9IHRoaXMuY29ubmVjdGlvbnMuZ2V0KGhvc3QpO1xuICAgIGlmIChvbGRDb25uKSB7XG4gICAgICB0cnkge1xuICAgICAgICBvbGRDb25uLmNsaWVudC5jbG9zZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBJZ25vcmVcbiAgICAgIH1cbiAgICAgIHRoaXMuY29ubmVjdGlvbnMuZGVsZXRlKGhvc3QpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBuZXdDb25uID0gdGhpcy5jcmVhdGVDb25uZWN0aW9uKGhvc3QpO1xuICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoaG9zdCwgbmV3Q29ubik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTG9nIGFuZCBjb250aW51ZVxuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlY29ubmVjdCB0byAke2hvc3R9OmAsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZSBhbGwgY29ubmVjdGlvbnMgaW4gdGhlIHBvb2wgKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG5cbiAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5oZWFsdGhDaGVja1RpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaGVhbHRoQ2hlY2tUaW1lcik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb25uIG9mIHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbm4uY2xpZW50LmNsb3NlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElnbm9yZVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIG51bWJlciBvZiBoZWFsdGh5IGhvc3RzICovXG4gIGhlYWx0aHlIb3N0Q291bnQoKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsaXN0IG9mIGNvbmZpZ3VyZWQgaG9zdHMgKi9cbiAgaG9zdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29ubmVjdGlvbnMua2V5cygpKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiB0aGUgcG9vbCBpcyBjbG9zZWQgKi9cbiAgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VkO1xuICB9XG59XG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLHFDQUF5RjtBQWtCekY7Ozs7R0FJRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBRXhDLHFEQUFxRDtBQUNyRCxNQUFhLGNBQWM7SUFDakIsTUFBTSxDQUFjO0lBQ3BCLFdBQVcsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsZ0JBQWdCLENBQWtCO0lBRTFDLFlBQVksTUFBbUI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsNEJBQTRCO2dCQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLDRCQUFtQixFQUFFLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ25DLElBQUksV0FBb0MsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0IsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNsRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQXdCO1lBQ25DLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSTtZQUM5RSw4QkFBOEIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUk7WUFDM0Usd0JBQXdCLEVBQUUsS0FBSztZQUMvQiwyQkFBMkIsRUFBRSxLQUFLO1lBQ2xDLHFDQUFxQyxFQUFFLENBQUM7U0FDekMsQ0FBQztRQUVGLDBDQUEwQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzRCxPQUFPO1lBQ0wsSUFBSTtZQUNKLE1BQU07WUFDTixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3BCLG9CQUFvQixFQUFFLENBQUM7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSw4QkFBcUIsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUM3QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFJLDBCQUFpQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLDBCQUFpQixFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLElBQUksS0FBSyxDQUFDO1FBQzFELElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ssV0FBVztRQUNqQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFbkUsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQ3RDLEtBQUssS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0IsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hELDJDQUEyQztnQkFDM0MsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsNkJBQTZCLENBQUM7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JCLFNBQVM7WUFDWCxDQUFDO1lBRUQsa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLDZCQUE2QixFQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ssS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFZO1FBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXhCLElBQUksQ0FBQztZQUNILCtEQUErRDtZQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsdURBQXVEO1lBQ3ZELDBEQUEwRDtZQUMxRCx3REFBd0Q7WUFDeEQseURBQXlEO1lBQ3pELGFBQWE7WUFDYixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLFNBQVM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNDQUFzQztJQUN0QyxnQkFBZ0I7UUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUM3QyxJQUFJLElBQUksQ0FBQyxPQUFPO2dCQUFFLEtBQUssRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsS0FBSztRQUNILE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQTFNRCx3Q0EwTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbm5lY3Rpb24gbWFuYWdlbWVudCBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7IEdxbGRiQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQWxsSG9zdHNGYWlsZWRFcnJvciwgQ29ubmVjdGlvbkNsb3NlZEVycm9yLCBOb0Nvbm5lY3Rpb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgZ1JQQyBjb25uZWN0aW9uICovXG5pbnRlcmZhY2UgQ29ubmVjdGlvbiB7XG4gIGhvc3Q6IHN0cmluZztcbiAgY2xpZW50OiBncnBjLkNsaWVudDtcbiAgaGVhbHRoeTogYm9vbGVhbjtcbiAgbGFzdFBpbmc6IG51bWJlcjtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBjb25zZWN1dGl2ZSBoZWFsdGgtY2hlY2sgdGlja3MgdGhhdCBvYnNlcnZlZCBhIG5vbi1SRUFEWVxuICAgKiBzdGF0ZS4gUmVjb25uZWN0IGlzIG9ubHkgdHJpZ2dlcmVkIGFmdGVyIHRoaXMgcmVhY2hlc1xuICAgKiBVTkhFQUxUSFlfUkVDT05ORUNUX1RIUkVTSE9MRCwgc28gYSBzaW5nbGUgdHJhbnNpZW50IGZsaWNrZXJcbiAgICogZHVyaW5nIGEgYnVzeSBpbi1mbGlnaHQgUlBDIGRvZXMgbm90IHRlYXIgdGhlIGNoYW5uZWwgZG93biBhbmRcbiAgICogY2FuY2VsIGV2ZXJ5IHBlbmRpbmcgcmVxdWVzdC5cbiAgICovXG4gIGNvbnNlY3V0aXZlVW5oZWFsdGh5OiBudW1iZXI7XG59XG5cbi8qKlxuICogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIHVuaGVhbHRoeSB0aWNrcyByZXF1aXJlZCBiZWZvcmUgZm9yY2luZyBhXG4gKiByZWNvbm5lY3QgKHdoaWNoIHJlcGxhY2VzIHRoZSBjaGFubmVsOyBpbi1mbGlnaHQgUlBDcyBhcmUgTk9UXG4gKiBjYW5jZWxsZWQgYmVjYXVzZSB0aGUgb2xkIGNoYW5uZWwgaXMgbGVmdCBhbGl2ZSB1bnRpbCBHQykuXG4gKi9cbmNvbnN0IFVOSEVBTFRIWV9SRUNPTk5FQ1RfVEhSRVNIT0xEID0gMztcblxuLyoqIE1hbmFnZXMgYSBwb29sIG9mIGNvbm5lY3Rpb25zIHRvIEdRTERCIHNlcnZlcnMgKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uUG9vbCB7XG4gIHByaXZhdGUgY29uZmlnOiBHcWxkYkNvbmZpZztcbiAgcHJpdmF0ZSBjb25uZWN0aW9uczogTWFwPHN0cmluZywgQ29ubmVjdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgY2xvc2VkID0gZmFsc2U7XG4gIHByaXZhdGUgaGVhbHRoQ2hlY2tUaW1lcj86IE5vZGVKUy5UaW1lb3V0O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogR3FsZGJDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmluaXRDb25uZWN0aW9ucygpO1xuICAgIHRoaXMuc3RhcnRIZWFsdGhDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29ubmVjdGlvbnMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBob3N0IG9mIHRoaXMuY29uZmlnLmhvc3RzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25uID0gdGhpcy5jcmVhdGVDb25uZWN0aW9uKGhvc3QpO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zLnNldChob3N0LCBjb25uKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gQ29udGludWUgd2l0aCBvdGhlciBob3N0c1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY29ubmVjdCB0byAke2hvc3R9OmAsIGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25zLnNpemUgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBBbGxIb3N0c0ZhaWxlZEVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25uZWN0aW9uKGhvc3Q6IHN0cmluZyk6IENvbm5lY3Rpb24ge1xuICAgIGxldCBjcmVkZW50aWFsczogZ3JwYy5DaGFubmVsQ3JlZGVudGlhbHM7XG5cbiAgICBpZiAodGhpcy5jb25maWcudGxzT3B0aW9ucykge1xuICAgICAgY3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjcmVkZW50aWFscyA9IGdycGMuY3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zOiBncnBjLkNoYW5uZWxPcHRpb25zID0ge1xuICAgICAgJ2dycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGgnOiB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA/PyA2NCAqIDEwMjQgKiAxMDI0LFxuICAgICAgJ2dycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGgnOiB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA/PyA2NCAqIDEwMjQgKiAxMDI0LFxuICAgICAgJ2dycGMua2VlcGFsaXZlX3RpbWVfbXMnOiAzMDAwMCxcbiAgICAgICdncnBjLmtlZXBhbGl2ZV90aW1lb3V0X21zJzogMTAwMDAsXG4gICAgICAnZ3JwYy5rZWVwYWxpdmVfcGVybWl0X3dpdGhvdXRfY2FsbHMnOiAxLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYSBnZW5lcmljIGNsaWVudCBmb3IgdGhlIGNoYW5uZWxcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgZ3JwYy5DbGllbnQoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhvc3QsXG4gICAgICBjbGllbnQsXG4gICAgICBoZWFsdGh5OiB0cnVlLFxuICAgICAgbGFzdFBpbmc6IERhdGUubm93KCksXG4gICAgICBjb25zZWN1dGl2ZVVuaGVhbHRoeTogMCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBhIGhlYWx0aHkgY29ubmVjdGlvbiBmcm9tIHRoZSBwb29sICovXG4gIGdldENvbm5lY3Rpb24oKTogZ3JwYy5DbGllbnQge1xuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IENvbm5lY3Rpb25DbG9zZWRFcnJvcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSB7XG4gICAgICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgTm9Db25uZWN0aW9uRXJyb3IoKTtcbiAgfVxuXG4gIC8qKiBHZXQgYSBjb25uZWN0aW9uIGZvciBhIHNwZWNpZmljIGhvc3QgKi9cbiAgZ2V0Q29ubmVjdGlvbkZvckhvc3QoaG9zdDogc3RyaW5nKTogZ3JwYy5DbGllbnQge1xuICAgIGNvbnN0IGNvbm4gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChob3N0KTtcbiAgICBpZiAoIWNvbm4gfHwgIWNvbm4uaGVhbHRoeSkge1xuICAgICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRIZWFsdGhDaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gMzAwMDA7XG4gICAgaWYgKGludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5oZWFsdGhDaGVja1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5jaGVja0hlYWx0aCgpLCBpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlYWx0aC1jaGVjayB0aWNrLiAgQ29ubmVjdGl2aXR5LXN0YXRlIHNlbWFudGljczpcbiAgICogIC0gUkVBRFkgLyBJRExFICAgICAgICAg4oaSIGhlYWx0aHk7IHJlc2V0IHRoZSB1bmhlYWx0aHkgY291bnRlci5cbiAgICogIC0gQ09OTkVDVElORyAgICAgICAgICAg4oaSIHRyYW5zaWVudDsgbGV0IHRoZSBjaGFubmVsIGhlYWwgaXRzZWxmLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb24ndCBjb3VudCB0b3dhcmQgdW5oZWFsdGh5LlxuICAgKiAgLSBTSFVURE9XTiAgICAgICAgICAgICDihpIgdGVybWluYWw7IHJlY29ubmVjdCBpbW1lZGlhdGVseS5cbiAgICogIC0gVFJBTlNJRU5UX0ZBSUxVUkUgICAg4oaSIGNvdW50IHRvd2FyZCB1bmhlYWx0aHk7IHJlY29ubmVjdCBvbmx5XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIFVOSEVBTFRIWV9SRUNPTk5FQ1RfVEhSRVNIT0xEXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNlY3V0aXZlIHRpY2tzLlxuICAgKlxuICAgKiBSZWNvbm5lY3QgcmVwbGFjZXMgdGhlIHBvb2wncyBjaGFubmVsIHJlZmVyZW5jZTsgaXQgZG9lcyBOT1QgY2xvc2VcbiAgICogdGhlIG9sZCBjaGFubmVsLCBzbyBpbi1mbGlnaHQgUlBDcyBjb250aW51ZSB0byBjb21wbGV0aW9uIG9uIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0hlYWx0aCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtob3N0LCBjb25uXSBvZiB0aGlzLmNvbm5lY3Rpb25zKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNvbm4uY2xpZW50LmdldENoYW5uZWwoKS5nZXRDb25uZWN0aXZpdHlTdGF0ZShmYWxzZSk7XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gZ3JwYy5jb25uZWN0aXZpdHlTdGF0ZS5SRUFEWSB8fFxuICAgICAgICAgIHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLklETEUpIHtcbiAgICAgICAgY29ubi5oZWFsdGh5ID0gdHJ1ZTtcbiAgICAgICAgY29ubi5jb25zZWN1dGl2ZVVuaGVhbHRoeSA9IDA7XG4gICAgICAgIGNvbm4ubGFzdFBpbmcgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLkNPTk5FQ1RJTkcpIHtcbiAgICAgICAgLy8gVHJhbnNpZW50IOKAlCBsZXQgdGhlIGNoYW5uZWwgaGVhbCBpdHNlbGYuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuU0hVVERPV04pIHtcbiAgICAgICAgY29ubi5oZWFsdGh5ID0gZmFsc2U7XG4gICAgICAgIGNvbm4uY29uc2VjdXRpdmVVbmhlYWx0aHkgPSBVTkhFQUxUSFlfUkVDT05ORUNUX1RIUkVTSE9MRDtcbiAgICAgICAgdGhpcy5yZWNvbm5lY3QoaG9zdCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBUUkFOU0lFTlRfRkFJTFVSRSBvciBhbnkgb3RoZXIgbm9uLVJFQURZIHN0YXRlLlxuICAgICAgY29ubi5jb25zZWN1dGl2ZVVuaGVhbHRoeSsrO1xuICAgICAgaWYgKGNvbm4uY29uc2VjdXRpdmVVbmhlYWx0aHkgPj0gVU5IRUFMVEhZX1JFQ09OTkVDVF9USFJFU0hPTEQpIHtcbiAgICAgICAgY29ubi5oZWFsdGh5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVjb25uZWN0KGhvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBwb29sJ3MgY2hhbm5lbCBmb3IgYGhvc3RgIHdpdGggYSBmcmVzaCBvbmUuXG4gICAqXG4gICAqIENyaXRpY2FsbHksIGRvZXMgTk9UIGNsb3NlIHRoZSBvbGQgY2hhbm5lbC4gIEluLWZsaWdodCBSUENzIGhvbGRcbiAgICogdGhlaXIgb3duIHJlZmVyZW5jZSB0byBpdCB2aWEgdGhlIGNsaWVudCB0aGV5IHdlcmUgaXNzdWVkIG9uIGFuZFxuICAgKiBjb250aW51ZSB0byBjb21wbGV0aW9uIG9uIHRoYXQgY2hhbm5lbDsgdGhlIE5vZGUuanMgcnVudGltZSdzXG4gICAqIGdhcmJhZ2UgY29sbGVjdG9yIHJlbGVhc2VzIHRoZSBvbGQgY2hhbm5lbCBvbmx5IGFmdGVyIGV2ZXJ5XG4gICAqIGluLWZsaWdodCBSUEMgaGFzIHJlc29sdmVkLlxuICAgKlxuICAgKiBFYXJsaWVyIHZlcnNpb25zIGNsb3NlZCB0aGUgb2xkIGNoYW5uZWwgc3luY2hyb25vdXNseSBoZXJlLCB3aGljaFxuICAgKiBjYW5jZWxsZWQgZXZlcnkgcGVuZGluZyBSUEMgd2l0aCBhIFwiQ2hhbm5lbCBjbG9zZWQhXCItc3R5bGUgZXJyb3IuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlY29ubmVjdChob3N0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBCdWlsZCB0aGUgbmV3IGNvbm5lY3Rpb24gdXAtZnJvbnQ7IG9ubHkgc3dhcCBpZiBpdCBzdWNjZWVkcy5cbiAgICAgIGNvbnN0IG5ld0Nvbm4gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oaG9zdCk7XG4gICAgICAvLyBPdmVyd3JpdGUgdGhlIHBvb2wgZW50cnkuICBUaGUgb2xkIENvbm5lY3Rpb24gaXMgbm93XG4gICAgICAvLyB1bnJlZmVyZW5jZWQgYnkgdGhlIHBvb2w7IGluLWZsaWdodCBSUENzIHN0aWxsIGhvbGQgaXRzXG4gICAgICAvLyBncnBjLkNsaWVudCBhbGl2ZSB2aWEgcGVyLWNhbGwgcmVmZXJlbmNlcy4gIE9uY2UgdGhleVxuICAgICAgLy8gY29tcGxldGUgdGhlIGNsaWVudCBiZWNvbWVzIGdhcmJhZ2UgYW5kIGdSUEMgY2xvc2VzIGl0XG4gICAgICAvLyBuYXR1cmFsbHkuXG4gICAgICB0aGlzLmNvbm5lY3Rpb25zLnNldChob3N0LCBuZXdDb25uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcmVjb25uZWN0IHRvICR7aG9zdH06YCwgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlIGFsbCBjb25uZWN0aW9ucyBpbiB0aGUgcG9vbCAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcblxuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmhlYWx0aENoZWNrVGltZXIpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5oZWFsdGhDaGVja1RpbWVyKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbm4gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29ubi5jbGllbnQuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWdub3JlXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb25uZWN0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgbnVtYmVyIG9mIGhlYWx0aHkgaG9zdHMgKi9cbiAgaGVhbHRoeUhvc3RDb3VudCgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZm9yIChjb25zdCBjb25uIG9mIHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIGlmIChjb25uLmhlYWx0aHkpIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxpc3Qgb2YgY29uZmlndXJlZCBob3N0cyAqL1xuICBob3N0cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jb25uZWN0aW9ucy5rZXlzKCkpO1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIHRoZSBwb29sIGlzIGNsb3NlZCAqL1xuICBpc0Nsb3NlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZWQ7XG4gIH1cbn1cbiJdfQ==
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * GQLDB Node.js Driver - A gRPC-based client for GQLDB graph database.
3
3
  */
4
- export { GqldbClient, QueryConfig, InsertConfig, HealthWatcher } from './client';
4
+ export { GqldbClient, QueryConfig, InsertConfig, DeleteConfig, HealthWatcher } from './client';
5
5
  export { GqldbConfig, ConfigBuilder, createConfig, validateConfig, DEFAULT_CONFIG } from './config';
6
6
  export { PropertyType, GraphType, HealthStatus, CacheType, InsertType, TypedValue, createTypedValue, typedValueToJS, Parameter, createParameter, Point, Point3D, NodeData, EdgeData, GraphInfo, TransactionInfo, ASTCacheStats, PlanCacheStats, CacheStats, Statistics, SystemMetrics, CpuMetrics, MemoryMetrics, DiskIOMetrics, StorageMetrics, NetworkMetrics, ExportedNode, ExportedEdge, BulkCreateNodesOptions, BulkCreateEdgesOptions, BulkImportOptions, BulkImportSession, CheckpointResult, EndBulkImportResult, AbortBulkImportResult, BulkImportStatus, Schema, PropertyDef, Header, Table, Attr, } from './types';
7
- export { Response, Row, InsertNodesResult, InsertEdgesResult, DeleteResult, ExportNodesResult, ExportEdgesResult, Node, Edge, Path, NodeResult, EdgeResult, } from './response';
7
+ export { Response, Row, InsertNodesResult, InsertEdgesResult, ExportNodesResult, ExportEdgesResult, Node, Edge, Path, NodeResult, EdgeResult, } from './response';
8
8
  export { printNodes, printNodesWithoutSchema, printEdges, printEdgesWithoutSchema, printPaths, printTable, printAny, } from './printers';
9
9
  export { Session, SessionManager } from './session';
10
10
  export { Transaction, TransactionManager } from './transaction';
package/dist/index.js CHANGED
@@ -88,4 +88,4 @@ Object.defineProperty(exports, "TypeConversionError", { enumerable: true, get: f
88
88
  Object.defineProperty(exports, "UnsupportedTypeError", { enumerable: true, get: function () { return errors_1.UnsupportedTypeError; } });
89
89
  // Version
90
90
  exports.VERSION = '0.1.0';
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7O0FBRUgsY0FBYztBQUNkLG1DQUFpRjtBQUF4RSxxR0FBQSxXQUFXLE9BQUE7QUFFcEIsZ0JBQWdCO0FBQ2hCLG1DQUFvRztBQUE5RSx1R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFFakYsUUFBUTtBQUNSLGlDQTBDaUI7QUF6Q2YscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QsbUdBQUEsVUFBVSxPQUFBO0FBRVYseUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsdUdBQUEsY0FBYyxPQUFBO0FBRWQsd0dBQUEsZUFBZSxPQUFBO0FBQ2YsOEZBQUEsS0FBSyxPQUFBO0FBQ0wsZ0dBQUEsT0FBTyxPQUFBO0FBZ0NULFdBQVc7QUFDWCx1Q0Fhb0I7QUFabEIsb0dBQUEsUUFBUSxPQUFBO0FBQ1IsK0ZBQUEsR0FBRyxPQUFBO0FBYUwsV0FBVztBQUNYLHVDQVFvQjtBQVBsQixzR0FBQSxVQUFVLE9BQUE7QUFDVixtSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixzR0FBQSxVQUFVLE9BQUE7QUFDVixtSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixzR0FBQSxVQUFVLE9BQUE7QUFDVixzR0FBQSxVQUFVLE9BQUE7QUFDVixvR0FBQSxRQUFRLE9BQUE7QUFHVixVQUFVO0FBQ1YscUNBQW9EO0FBQWxDLHlHQUFBLGNBQWMsT0FBQTtBQUVoQyxjQUFjO0FBQ2QsNkNBQWdFO0FBQTFDLGlIQUFBLGtCQUFrQixPQUFBO0FBRXhDLGFBQWE7QUFDYiwyQ0FBOEM7QUFBckMsNEdBQUEsY0FBYyxPQUFBO0FBRXZCLFdBQVc7QUFDWCx1Q0FBNEc7QUFBbkcsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBa0IseUdBQUEsYUFBYSxPQUFBO0FBQUUscUhBQUEseUJBQXlCLE9BQUE7QUFFdkYsU0FBUztBQUNULG1DQWdDa0I7QUEvQmhCLG9HQUFBLFVBQVUsT0FBQTtBQUNWLHNHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLCtHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDRHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLHFIQUFBLDJCQUEyQixPQUFBO0FBQzNCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLHlHQUFBLGVBQWUsT0FBQTtBQUNmLDRHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDhHQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDhHQUFBLG9CQUFvQixPQUFBO0FBR3RCLFVBQVU7QUFDRyxRQUFBLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdRTERCIE5vZGUuanMgRHJpdmVyIC0gQSBnUlBDLWJhc2VkIGNsaWVudCBmb3IgR1FMREIgZ3JhcGggZGF0YWJhc2UuXG4gKi9cblxuLy8gTWFpbiBjbGllbnRcbmV4cG9ydCB7IEdxbGRiQ2xpZW50LCBRdWVyeUNvbmZpZywgSW5zZXJ0Q29uZmlnLCBIZWFsdGhXYXRjaGVyIH0gZnJvbSAnLi9jbGllbnQnO1xuXG4vLyBDb25maWd1cmF0aW9uXG5leHBvcnQgeyBHcWxkYkNvbmZpZywgQ29uZmlnQnVpbGRlciwgY3JlYXRlQ29uZmlnLCB2YWxpZGF0ZUNvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbi8vIFR5cGVzXG5leHBvcnQge1xuICBQcm9wZXJ0eVR5cGUsXG4gIEdyYXBoVHlwZSxcbiAgSGVhbHRoU3RhdHVzLFxuICBDYWNoZVR5cGUsXG4gIEluc2VydFR5cGUsXG4gIFR5cGVkVmFsdWUsXG4gIGNyZWF0ZVR5cGVkVmFsdWUsXG4gIHR5cGVkVmFsdWVUb0pTLFxuICBQYXJhbWV0ZXIsXG4gIGNyZWF0ZVBhcmFtZXRlcixcbiAgUG9pbnQsXG4gIFBvaW50M0QsXG4gIE5vZGVEYXRhLFxuICBFZGdlRGF0YSxcbiAgR3JhcGhJbmZvLFxuICBUcmFuc2FjdGlvbkluZm8sXG4gIEFTVENhY2hlU3RhdHMsXG4gIFBsYW5DYWNoZVN0YXRzLFxuICBDYWNoZVN0YXRzLFxuICBTdGF0aXN0aWNzLFxuICBTeXN0ZW1NZXRyaWNzLFxuICBDcHVNZXRyaWNzLFxuICBNZW1vcnlNZXRyaWNzLFxuICBEaXNrSU9NZXRyaWNzLFxuICBTdG9yYWdlTWV0cmljcyxcbiAgTmV0d29ya01ldHJpY3MsXG4gIEV4cG9ydGVkTm9kZSxcbiAgRXhwb3J0ZWRFZGdlLFxuICBCdWxrQ3JlYXRlTm9kZXNPcHRpb25zLFxuICBCdWxrQ3JlYXRlRWRnZXNPcHRpb25zLFxuICBCdWxrSW1wb3J0T3B0aW9ucyxcbiAgQnVsa0ltcG9ydFNlc3Npb24sXG4gIENoZWNrcG9pbnRSZXN1bHQsXG4gIEVuZEJ1bGtJbXBvcnRSZXN1bHQsXG4gIEFib3J0QnVsa0ltcG9ydFJlc3VsdCxcbiAgQnVsa0ltcG9ydFN0YXR1cyxcbiAgU2NoZW1hLFxuICBQcm9wZXJ0eURlZixcbiAgSGVhZGVyLFxuICBUYWJsZSxcbiAgQXR0cixcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFJlc3BvbnNlXG5leHBvcnQge1xuICBSZXNwb25zZSxcbiAgUm93LFxuICBJbnNlcnROb2Rlc1Jlc3VsdCxcbiAgSW5zZXJ0RWRnZXNSZXN1bHQsXG4gIERlbGV0ZVJlc3VsdCxcbiAgRXhwb3J0Tm9kZXNSZXN1bHQsXG4gIEV4cG9ydEVkZ2VzUmVzdWx0LFxuICBOb2RlLFxuICBFZGdlLFxuICBQYXRoLFxuICBOb2RlUmVzdWx0LFxuICBFZGdlUmVzdWx0LFxufSBmcm9tICcuL3Jlc3BvbnNlJztcblxuLy8gUHJpbnRlcnNcbmV4cG9ydCB7XG4gIHByaW50Tm9kZXMsXG4gIHByaW50Tm9kZXNXaXRob3V0U2NoZW1hLFxuICBwcmludEVkZ2VzLFxuICBwcmludEVkZ2VzV2l0aG91dFNjaGVtYSxcbiAgcHJpbnRQYXRocyxcbiAgcHJpbnRUYWJsZSxcbiAgcHJpbnRBbnksXG59IGZyb20gJy4vcHJpbnRlcnMnO1xuXG4vLyBTZXNzaW9uXG5leHBvcnQgeyBTZXNzaW9uLCBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2Vzc2lvbic7XG5cbi8vIFRyYW5zYWN0aW9uXG5leHBvcnQgeyBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5cbi8vIENvbm5lY3Rpb25cbmV4cG9ydCB7IENvbm5lY3Rpb25Qb29sIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCB7IGNyZWF0ZVNlcnZpY2VDbGllbnRzLCBTZXJ2aWNlQ2xpZW50cywgcHJvbWlzaWZ5Q2FsbCwgcHJvbWlzaWZ5Q2FsbFdpdGhEZWFkbGluZSB9IGZyb20gJy4vc2VydmljZXMnO1xuXG4vLyBFcnJvcnNcbmV4cG9ydCB7XG4gIEdxbGRiRXJyb3IsXG4gIE5vSG9zdHNFcnJvcixcbiAgSW52YWxpZFRpbWVvdXRFcnJvcixcbiAgTm9Db25uZWN0aW9uRXJyb3IsXG4gIENvbm5lY3Rpb25DbG9zZWRFcnJvcixcbiAgQ29ubmVjdGlvbkZhaWxlZEVycm9yLFxuICBBbGxIb3N0c0ZhaWxlZEVycm9yLFxuICBIZWFsdGhDaGVja0ZhaWxlZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBMb2dpbkZhaWxlZEVycm9yLFxuICBMb2dvdXRGYWlsZWRFcnJvcixcbiAgU2Vzc2lvbkV4cGlyZWRFcnJvcixcbiAgSW52YWxpZFNlc3Npb25FcnJvcixcbiAgTm9UcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvbkZhaWxlZEVycm9yLFxuICBUcmFuc2FjdGlvbk5vdEZvdW5kRXJyb3IsXG4gIFRyYW5zYWN0aW9uQWxyZWFkeU9wZW5FcnJvcixcbiAgUXVlcnlGYWlsZWRFcnJvcixcbiAgUXVlcnlUaW1lb3V0RXJyb3IsXG4gIEludmFsaWRRdWVyeUVycm9yLFxuICBFbXB0eVF1ZXJ5RXJyb3IsXG4gIEdyYXBoTm90Rm91bmRFcnJvcixcbiAgR3JhcGhFeGlzdHNFcnJvcixcbiAgQ3JlYXRlR3JhcGhGYWlsZWRFcnJvcixcbiAgRHJvcEdyYXBoRmFpbGVkRXJyb3IsXG4gIEluc2VydEZhaWxlZEVycm9yLFxuICBEZWxldGVGYWlsZWRFcnJvcixcbiAgRXhwb3J0RmFpbGVkRXJyb3IsXG4gIEludmFsaWRUeXBlRXJyb3IsXG4gIFR5cGVDb252ZXJzaW9uRXJyb3IsXG4gIFVuc3VwcG9ydGVkVHlwZUVycm9yLFxufSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFZlcnNpb25cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzAuMS4wJztcbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7O0FBRUgsY0FBYztBQUNkLG1DQUErRjtBQUF0RixxR0FBQSxXQUFXLE9BQUE7QUFFcEIsZ0JBQWdCO0FBQ2hCLG1DQUFvRztBQUE5RSx1R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFFakYsUUFBUTtBQUNSLGlDQTBDaUI7QUF6Q2YscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QsbUdBQUEsVUFBVSxPQUFBO0FBRVYseUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsdUdBQUEsY0FBYyxPQUFBO0FBRWQsd0dBQUEsZUFBZSxPQUFBO0FBQ2YsOEZBQUEsS0FBSyxPQUFBO0FBQ0wsZ0dBQUEsT0FBTyxPQUFBO0FBZ0NULFdBQVc7QUFDWCx1Q0FZb0I7QUFYbEIsb0dBQUEsUUFBUSxPQUFBO0FBQ1IsK0ZBQUEsR0FBRyxPQUFBO0FBWUwsV0FBVztBQUNYLHVDQVFvQjtBQVBsQixzR0FBQSxVQUFVLE9BQUE7QUFDVixtSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixzR0FBQSxVQUFVLE9BQUE7QUFDVixtSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixzR0FBQSxVQUFVLE9BQUE7QUFDVixzR0FBQSxVQUFVLE9BQUE7QUFDVixvR0FBQSxRQUFRLE9BQUE7QUFHVixVQUFVO0FBQ1YscUNBQW9EO0FBQWxDLHlHQUFBLGNBQWMsT0FBQTtBQUVoQyxjQUFjO0FBQ2QsNkNBQWdFO0FBQTFDLGlIQUFBLGtCQUFrQixPQUFBO0FBRXhDLGFBQWE7QUFDYiwyQ0FBOEM7QUFBckMsNEdBQUEsY0FBYyxPQUFBO0FBRXZCLFdBQVc7QUFDWCx1Q0FBNEc7QUFBbkcsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBa0IseUdBQUEsYUFBYSxPQUFBO0FBQUUscUhBQUEseUJBQXlCLE9BQUE7QUFFdkYsU0FBUztBQUNULG1DQWdDa0I7QUEvQmhCLG9HQUFBLFVBQVUsT0FBQTtBQUNWLHNHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLCtHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDRHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLHFIQUFBLDJCQUEyQixPQUFBO0FBQzNCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLHlHQUFBLGVBQWUsT0FBQTtBQUNmLDRHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDhHQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDhHQUFBLG9CQUFvQixPQUFBO0FBR3RCLFVBQVU7QUFDRyxRQUFBLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdRTERCIE5vZGUuanMgRHJpdmVyIC0gQSBnUlBDLWJhc2VkIGNsaWVudCBmb3IgR1FMREIgZ3JhcGggZGF0YWJhc2UuXG4gKi9cblxuLy8gTWFpbiBjbGllbnRcbmV4cG9ydCB7IEdxbGRiQ2xpZW50LCBRdWVyeUNvbmZpZywgSW5zZXJ0Q29uZmlnLCBEZWxldGVDb25maWcsIEhlYWx0aFdhdGNoZXIgfSBmcm9tICcuL2NsaWVudCc7XG5cbi8vIENvbmZpZ3VyYXRpb25cbmV4cG9ydCB7IEdxbGRiQ29uZmlnLCBDb25maWdCdWlsZGVyLCBjcmVhdGVDb25maWcsIHZhbGlkYXRlQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcblxuLy8gVHlwZXNcbmV4cG9ydCB7XG4gIFByb3BlcnR5VHlwZSxcbiAgR3JhcGhUeXBlLFxuICBIZWFsdGhTdGF0dXMsXG4gIENhY2hlVHlwZSxcbiAgSW5zZXJ0VHlwZSxcbiAgVHlwZWRWYWx1ZSxcbiAgY3JlYXRlVHlwZWRWYWx1ZSxcbiAgdHlwZWRWYWx1ZVRvSlMsXG4gIFBhcmFtZXRlcixcbiAgY3JlYXRlUGFyYW1ldGVyLFxuICBQb2ludCxcbiAgUG9pbnQzRCxcbiAgTm9kZURhdGEsXG4gIEVkZ2VEYXRhLFxuICBHcmFwaEluZm8sXG4gIFRyYW5zYWN0aW9uSW5mbyxcbiAgQVNUQ2FjaGVTdGF0cyxcbiAgUGxhbkNhY2hlU3RhdHMsXG4gIENhY2hlU3RhdHMsXG4gIFN0YXRpc3RpY3MsXG4gIFN5c3RlbU1ldHJpY3MsXG4gIENwdU1ldHJpY3MsXG4gIE1lbW9yeU1ldHJpY3MsXG4gIERpc2tJT01ldHJpY3MsXG4gIFN0b3JhZ2VNZXRyaWNzLFxuICBOZXR3b3JrTWV0cmljcyxcbiAgRXhwb3J0ZWROb2RlLFxuICBFeHBvcnRlZEVkZ2UsXG4gIEJ1bGtDcmVhdGVOb2Rlc09wdGlvbnMsXG4gIEJ1bGtDcmVhdGVFZGdlc09wdGlvbnMsXG4gIEJ1bGtJbXBvcnRPcHRpb25zLFxuICBCdWxrSW1wb3J0U2Vzc2lvbixcbiAgQ2hlY2twb2ludFJlc3VsdCxcbiAgRW5kQnVsa0ltcG9ydFJlc3VsdCxcbiAgQWJvcnRCdWxrSW1wb3J0UmVzdWx0LFxuICBCdWxrSW1wb3J0U3RhdHVzLFxuICBTY2hlbWEsXG4gIFByb3BlcnR5RGVmLFxuICBIZWFkZXIsXG4gIFRhYmxlLFxuICBBdHRyLFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gUmVzcG9uc2VcbmV4cG9ydCB7XG4gIFJlc3BvbnNlLFxuICBSb3csXG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRXhwb3J0Tm9kZXNSZXN1bHQsXG4gIEV4cG9ydEVkZ2VzUmVzdWx0LFxuICBOb2RlLFxuICBFZGdlLFxuICBQYXRoLFxuICBOb2RlUmVzdWx0LFxuICBFZGdlUmVzdWx0LFxufSBmcm9tICcuL3Jlc3BvbnNlJztcblxuLy8gUHJpbnRlcnNcbmV4cG9ydCB7XG4gIHByaW50Tm9kZXMsXG4gIHByaW50Tm9kZXNXaXRob3V0U2NoZW1hLFxuICBwcmludEVkZ2VzLFxuICBwcmludEVkZ2VzV2l0aG91dFNjaGVtYSxcbiAgcHJpbnRQYXRocyxcbiAgcHJpbnRUYWJsZSxcbiAgcHJpbnRBbnksXG59IGZyb20gJy4vcHJpbnRlcnMnO1xuXG4vLyBTZXNzaW9uXG5leHBvcnQgeyBTZXNzaW9uLCBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2Vzc2lvbic7XG5cbi8vIFRyYW5zYWN0aW9uXG5leHBvcnQgeyBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5cbi8vIENvbm5lY3Rpb25cbmV4cG9ydCB7IENvbm5lY3Rpb25Qb29sIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCB7IGNyZWF0ZVNlcnZpY2VDbGllbnRzLCBTZXJ2aWNlQ2xpZW50cywgcHJvbWlzaWZ5Q2FsbCwgcHJvbWlzaWZ5Q2FsbFdpdGhEZWFkbGluZSB9IGZyb20gJy4vc2VydmljZXMnO1xuXG4vLyBFcnJvcnNcbmV4cG9ydCB7XG4gIEdxbGRiRXJyb3IsXG4gIE5vSG9zdHNFcnJvcixcbiAgSW52YWxpZFRpbWVvdXRFcnJvcixcbiAgTm9Db25uZWN0aW9uRXJyb3IsXG4gIENvbm5lY3Rpb25DbG9zZWRFcnJvcixcbiAgQ29ubmVjdGlvbkZhaWxlZEVycm9yLFxuICBBbGxIb3N0c0ZhaWxlZEVycm9yLFxuICBIZWFsdGhDaGVja0ZhaWxlZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBMb2dpbkZhaWxlZEVycm9yLFxuICBMb2dvdXRGYWlsZWRFcnJvcixcbiAgU2Vzc2lvbkV4cGlyZWRFcnJvcixcbiAgSW52YWxpZFNlc3Npb25FcnJvcixcbiAgTm9UcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvbkZhaWxlZEVycm9yLFxuICBUcmFuc2FjdGlvbk5vdEZvdW5kRXJyb3IsXG4gIFRyYW5zYWN0aW9uQWxyZWFkeU9wZW5FcnJvcixcbiAgUXVlcnlGYWlsZWRFcnJvcixcbiAgUXVlcnlUaW1lb3V0RXJyb3IsXG4gIEludmFsaWRRdWVyeUVycm9yLFxuICBFbXB0eVF1ZXJ5RXJyb3IsXG4gIEdyYXBoTm90Rm91bmRFcnJvcixcbiAgR3JhcGhFeGlzdHNFcnJvcixcbiAgQ3JlYXRlR3JhcGhGYWlsZWRFcnJvcixcbiAgRHJvcEdyYXBoRmFpbGVkRXJyb3IsXG4gIEluc2VydEZhaWxlZEVycm9yLFxuICBEZWxldGVGYWlsZWRFcnJvcixcbiAgRXhwb3J0RmFpbGVkRXJyb3IsXG4gIEludmFsaWRUeXBlRXJyb3IsXG4gIFR5cGVDb252ZXJzaW9uRXJyb3IsXG4gIFVuc3VwcG9ydGVkVHlwZUVycm9yLFxufSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFZlcnNpb25cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzAuMS4wJztcbiJdfQ==
@@ -220,12 +220,6 @@ export interface InsertEdgesResult {
220
220
  message: string;
221
221
  skippedCount: number;
222
222
  }
223
- /** Result of a delete operation */
224
- export interface DeleteResult {
225
- success: boolean;
226
- deletedCount: number;
227
- message: string;
228
- }
229
223
  /** Configuration for the unified Export operation */
230
224
  export interface ExportConfig {
231
225
  graphName: string;