@ultipa-graph/ultipa-driver 6.2.2 → 6.2.4
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.
- package/dist/client.d.ts +30 -7
- package/dist/client.js +58 -10
- package/dist/connection.d.ts +8 -0
- package/dist/connection.js +16 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -3
- package/dist/proto/gqldb.proto +83 -32
- package/dist/response.d.ts +31 -1
- package/dist/response.js +22 -2
- package/dist/services/converters.js +4 -2
- package/dist/services/query-service.js +15 -4
- package/dist/services/service-context.d.ts +13 -2
- package/dist/services/service-context.js +8 -2
- package/dist/types/enums.d.ts +5 -0
- package/dist/types/enums.js +8 -2
- package/dist/types/typed_value.js +7 -7
- package/package.json +1 -1
package/dist/connection.d.ts
CHANGED
|
@@ -43,6 +43,14 @@ export declare class ConnectionPool {
|
|
|
43
43
|
* Earlier versions closed the old channel synchronously here, which
|
|
44
44
|
* cancelled every pending RPC with a "Channel closed!"-style error.
|
|
45
45
|
*/
|
|
46
|
+
/**
|
|
47
|
+
* Rebuild every host's gRPC client in the pool. Called by the client
|
|
48
|
+
* on transport-level errors (UNAVAILABLE / connection reset) so the
|
|
49
|
+
* next RPC gets a fresh channel. Like reconnect, this does NOT close
|
|
50
|
+
* old clients synchronously — in-flight RPCs hold them alive and gRPC
|
|
51
|
+
* closes them naturally once those calls complete.
|
|
52
|
+
*/
|
|
53
|
+
forceReconnectAll(): Promise<void>;
|
|
46
54
|
private reconnect;
|
|
47
55
|
/** Close all connections in the pool */
|
|
48
56
|
close(): void;
|
package/dist/connection.js
CHANGED
|
@@ -175,6 +175,21 @@ class ConnectionPool {
|
|
|
175
175
|
* Earlier versions closed the old channel synchronously here, which
|
|
176
176
|
* cancelled every pending RPC with a "Channel closed!"-style error.
|
|
177
177
|
*/
|
|
178
|
+
/**
|
|
179
|
+
* Rebuild every host's gRPC client in the pool. Called by the client
|
|
180
|
+
* on transport-level errors (UNAVAILABLE / connection reset) so the
|
|
181
|
+
* next RPC gets a fresh channel. Like reconnect, this does NOT close
|
|
182
|
+
* old clients synchronously — in-flight RPCs hold them alive and gRPC
|
|
183
|
+
* closes them naturally once those calls complete.
|
|
184
|
+
*/
|
|
185
|
+
async forceReconnectAll() {
|
|
186
|
+
if (this.closed)
|
|
187
|
+
return;
|
|
188
|
+
const hosts = Array.from(this.connections.keys());
|
|
189
|
+
for (const host of hosts) {
|
|
190
|
+
await this.reconnect(host);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
178
193
|
async reconnect(host) {
|
|
179
194
|
if (this.closed)
|
|
180
195
|
return;
|
|
@@ -229,4 +244,4 @@ class ConnectionPool {
|
|
|
229
244
|
}
|
|
230
245
|
}
|
|
231
246
|
exports.ConnectionPool = ConnectionPool;
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLHFDQUF5RjtBQWtCekY7Ozs7R0FJRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBRXhDLHFEQUFxRDtBQUNyRCxNQUFhLGNBQWM7SUFDakIsTUFBTSxDQUFjO0lBQ3BCLFdBQVcsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsZ0JBQWdCLENBQWtCO0lBRTFDLFlBQVksTUFBbUI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsNEJBQTRCO2dCQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLDRCQUFt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O1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQTFNRCx3Q0EwTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbm5lY3Rpb24gbWFuYWdlbWVudCBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7IEdxbGRiQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQWxsSG9zdHNGYWlsZWRFcnJvciwgQ29ubmVjdGlvbkNsb3NlZEVycm9yLCBOb0Nvbm5lY3Rpb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgZ1JQQyBjb25uZWN0aW9uICovXG5pbnRlcmZhY2UgQ29ubmVjdGlvbiB7XG4gIGhvc3Q6IHN0cmluZztcbiAgY2xpZW50OiBncnBjLkNsaWVudDtcbiAgaGVhbHRoeTogYm9vbGVhbjtcbiAgbGFzdFBpbmc6IG51bWJlcjtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBjb25zZWN1dGl2ZSBoZWFsdGgtY2hlY2sgdGlja3MgdGhhdCBvYnNlcnZlZCBhIG5vbi1SRUFEWVxuICAgKiBzdGF0ZS4gUmVjb25uZWN0IGlzIG9ubHkgdHJpZ2dlcmVkIGFmdGVyIHRoaXMgcmVhY2hlc1xuICAgKiBVTkhFQUxUSFlfUkVDT05ORUNUX1RIUkVTSE9MRCwgc28gYSBzaW5nbGUgdHJhbnNpZW50IGZsaWNrZXJcbiAgICogZHVyaW5nIGEgYnVzeSBpbi1mbGlnaHQgUlBDIGRvZXMgbm90IHRlYXIgdGhlIGNoYW5uZWwgZG93biBhbmRcbiAgICogY2FuY2VsIGV2ZXJ5IHBlbmRpbmcgcmVxdWVzdC5cbiAgICovXG4gIGNvbnNlY3V0aXZlVW5oZWFsdGh5OiBudW1iZXI7XG59XG5cbi8qKlxuICogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIHVuaGVhbHRoeSB0aWNrcyByZXF1aXJlZCBiZWZvcmUgZm9yY2luZyBhXG4gKiByZWNvbm5lY3QgKHdoaWNoIHJlcGxhY2VzIHRoZSBjaGFubmVsOyBpbi1mbGlnaHQgUlBDcyBhcmUgTk9UXG4gKiBjYW5jZWxsZWQgYmVjYXVzZSB0aGUgb2xkIGNoYW5uZWwgaXMgbGVmdCBhbGl2ZSB1bnRpbCBHQykuXG4gKi9cbmNvbnN0IFVOSEVBTFRIWV9SRUNPTk5FQ1RfVEhSRVNIT0xEID0gMztcblxuLyoqIE1hbmFnZXMgYSBwb29sIG9mIGNvbm5lY3Rpb25zIHRvIEdRTERCIHNlcnZlcnMgKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uUG9vbCB7XG4gIHByaXZhdGUgY29uZmlnOiBHcWxkYkNvbmZpZztcbiAgcHJpdmF0ZSBjb25uZWN0aW9uczogTWFwPHN0cmluZywgQ29ubmVjdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgY2xvc2VkID0gZmFsc2U7XG4gIHByaXZhdGUgaGVhbHRoQ2hlY2tUaW1lcj86IE5vZGVKUy5UaW1lb3V0O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogR3FsZGJDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmluaXRDb25uZWN0aW9ucygpO1xuICAgIHRoaXMuc3RhcnRIZWFsdGhDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29ubmVjdGlvbnMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBob3N0IG9mIHRoaXMuY29uZmlnLmhvc3RzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25uID0gdGhpcy5jcmVhdGVDb25uZWN0aW9uKGhvc3QpO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zLnNldChob3N0LCBjb25uKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gQ29udGludWUgd2l0aCBvdGhlciBob3N0c1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY29ubmVjdCB0byAke2hvc3R9OmAsIGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25zLnNpemUgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBBbGxIb3N0c0ZhaWxlZEVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25uZWN0aW9uKGhvc3Q6IHN0cmluZyk6IENvbm5lY3Rpb24ge1xuICAgIGxldCBjcmVkZW50aWFsczogZ3JwYy5DaGFubmVsQ3JlZGVudGlhbHM7XG5cbiAgICBpZiAodGhpcy5jb25maWcudGxzT3B0aW9ucykge1xuICAgICAgY3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjcmVkZW50aWFscyA9IGdycGMuY3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zOiBncnBjLkNoYW5uZWxPcHRpb25zID0ge1xuICAgICAgJ2dycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGgnOiB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA/PyA2NCAqIDEwMjQgKiAxMDI0LFxuICAgICAgJ2dycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGgnOiB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA/PyA2NCAqIDEwMjQgKiAxMDI0LFxuICAgICAgJ2dycGMua2VlcGFsaXZlX3RpbWVfbXMnOiAzMDAwMCxcbiAgICAgICdncnBjLmtlZXBhbGl2ZV90aW1lb3V0X21zJzogMTAwMDAsXG4gICAgICAnZ3JwYy5rZWVwYWxpdmVfcGVybWl0X3dpdGhvdXRfY2FsbHMnOiAxLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYSBnZW5lcmljIGNsaWVudCBmb3IgdGhlIGNoYW5uZWxcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgZ3JwYy5DbGllbnQoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhvc3QsXG4gICAgICBjbGllbnQsXG4gICAgICBoZWFsdGh5OiB0cnVlLFxuICAgICAgbGFzdFBpbmc6IERhdGUubm93KCksXG4gICAgICBjb25zZWN1dGl2ZVVuaGVhbHRoeTogMCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBhIGhlYWx0aHkgY29ubmVjdGlvbiBmcm9tIHRoZSBwb29sICovXG4gIGdldENvbm5lY3Rpb24oKTogZ3JwYy5DbGllbnQge1xuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IENvbm5lY3Rpb25DbG9zZWRFcnJvcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSB7XG4gICAgICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgTm9Db25uZWN0aW9uRXJyb3IoKTtcbiAgfVxuXG4gIC8qKiBHZXQgYSBjb25uZWN0aW9uIGZvciBhIHNwZWNpZmljIGhvc3QgKi9cbiAgZ2V0Q29ubmVjdGlvbkZvckhvc3QoaG9zdDogc3RyaW5nKTogZ3JwYy5DbGllbnQge1xuICAgIGNvbnN0IGNvbm4gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChob3N0KTtcbiAgICBpZiAoIWNvbm4gfHwgIWNvbm4uaGVhbHRoeSkge1xuICAgICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiBjb25uLmNsaWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRIZWFsdGhDaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gMzAwMDA7XG4gICAgaWYgKGludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5oZWFsdGhDaGVja1RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5jaGVja0hlYWx0aCgpLCBpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlYWx0aC1jaGVjayB0aWNrLiAgQ29ubmVjdGl2aXR5LXN0YXRlIHNlbWFudGljczpcbiAgICogIC0gUkVBRFkgLyBJRExFICAgICAgICAg4oaSIGhlYWx0aHk7IHJlc2V0IHRoZSB1bmhlYWx0aHkgY291bnRlci5cbiAgICogIC0gQ09OTkVDVElORyAgICAgICAgICAg4oaSIHRyYW5zaWVudDsgbGV0IHRoZSBjaGFubmVsIGhlYWwgaXRzZWxmLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb24ndCBjb3VudCB0b3dhcmQgdW5oZWFsdGh5LlxuICAgKiAgLSBTSFVURE9XTiAgICAgICAgICAgICDihpIgdGVybWluYWw7IHJlY29ubmVjdCBpbW1lZGlhdGVseS5cbiAgICogIC0gVFJBTlNJRU5UX0ZBSUxVUkUgICAg4oaSIGNvdW50IHRvd2FyZCB1bmhlYWx0aHk7IHJlY29ubmVjdCBvbmx5XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIFVOSEVBTFRIWV9SRUNPTk5FQ1RfVEhSRVNIT0xEXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNlY3V0aXZlIHRpY2tzLlxuICAgKlxuICAgKiBSZWNvbm5lY3QgcmVwbGFjZXMgdGhlIHBvb2wncyBjaGFubmVsIHJlZmVyZW5jZTsgaXQgZG9lcyBOT1QgY2xvc2VcbiAgICogdGhlIG9sZCBjaGFubmVsLCBzbyBpbi1mbGlnaHQgUlBDcyBjb250aW51ZSB0byBjb21wbGV0aW9uIG9uIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0hlYWx0aCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtob3N0LCBjb25uXSBvZiB0aGlzLmNvbm5lY3Rpb25zKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGNvbm4uY2xpZW50LmdldENoYW5uZWwoKS5nZXRDb25uZWN0aXZpdHlTdGF0ZShmYWxzZSk7XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gZ3JwYy5jb25uZWN0aXZpdHlTdGF0ZS5SRUFEWSB8fFxuICAgICAgICAgIHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLklETEUpIHtcbiAgICAgICAgY29ubi5oZWFsdGh5ID0gdHJ1ZTtcbiAgICAgICAgY29ubi5jb25zZWN1dGl2ZVVuaGVhbHRoeSA9IDA7XG4gICAgICAgIGNvbm4ubGFzdFBpbmcgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLkNPTk5FQ1RJTkcpIHtcbiAgICAgICAgLy8gVHJhbnNpZW50IOKAlCBsZXQgdGhlIGNoYW5uZWwgaGVhbCBpdHNlbGYuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuU0hVVERPV04pIHtcbiAgICAgICAgY29ubi5oZWFsdGh5ID0gZmFsc2U7XG4gICAgICAgIGNvbm4uY29uc2VjdXRpdmVVbmhlYWx0aHkgPSBVTkhFQUxUSFlfUkVDT05ORUNUX1RIUkVTSE9MRDtcbiAgICAgICAgdGhpcy5yZWNvbm5lY3QoaG9zdCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBUUkFOU0lFTlRfRkFJTFVSRSBvciBhbnkgb3RoZXIgbm9uLVJFQURZIHN0YXRlLlxuICAgICAgY29ubi5jb25zZWN1dGl2ZVVuaGVhbHRoeSsrO1xuICAgICAgaWYgKGNvbm4uY29uc2VjdXRpdmVVbmhlYWx0aHkgPj0gVU5IRUFMVEhZX1JFQ09OTkVDVF9USFJFU0hPTEQpIHtcbiAgICAgICAgY29ubi5oZWFsdGh5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVjb25uZWN0KGhvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBwb29sJ3MgY2hhbm5lbCBmb3IgYGhvc3RgIHdpdGggYSBmcmVzaCBvbmUuXG4gICAqXG4gICAqIENyaXRpY2FsbHksIGRvZXMgTk9UIGNsb3NlIHRoZSBvbGQgY2hhbm5lbC4gIEluLWZsaWdodCBSUENzIGhvbGRcbiAgICogdGhlaXIgb3duIHJlZmVyZW5jZSB0byBpdCB2aWEgdGhlIGNsaWVudCB0aGV5IHdlcmUgaXNzdWVkIG9uIGFuZFxuICAgKiBjb250aW51ZSB0byBjb21wbGV0aW9uIG9uIHRoYXQgY2hhbm5lbDsgdGhlIE5vZGUuanMgcnVudGltZSdzXG4gICAqIGdhcmJhZ2UgY29sbGVjdG9yIHJlbGVhc2VzIHRoZSBvbGQgY2hhbm5lbCBvbmx5IGFmdGVyIGV2ZXJ5XG4gICAqIGluLWZsaWdodCBSUEMgaGFzIHJlc29sdmVkLlxuICAgKlxuICAgKiBFYXJsaWVyIHZlcnNpb25zIGNsb3NlZCB0aGUgb2xkIGNoYW5uZWwgc3luY2hyb25vdXNseSBoZXJlLCB3aGljaFxuICAgKiBjYW5jZWxsZWQgZXZlcnkgcGVuZGluZyBSUEMgd2l0aCBhIFwiQ2hhbm5lbCBjbG9zZWQhXCItc3R5bGUgZXJyb3IuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlY29ubmVjdChob3N0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBCdWlsZCB0aGUgbmV3IGNvbm5lY3Rpb24gdXAtZnJvbnQ7IG9ubHkgc3dhcCBpZiBpdCBzdWNjZWVkcy5cbiAgICAgIGNvbnN0IG5ld0Nvbm4gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oaG9zdCk7XG4gICAgICAvLyBPdmVyd3JpdGUgdGhlIHBvb2wgZW50cnkuICBUaGUgb2xkIENvbm5lY3Rpb24gaXMgbm93XG4gICAgICAvLyB1bnJlZmVyZW5jZWQgYnkgdGhlIHBvb2w7IGluLWZsaWdodCBSUENzIHN0aWxsIGhvbGQgaXRzXG4gICAgICAvLyBncnBjLkNsaWVudCBhbGl2ZSB2aWEgcGVyLWNhbGwgcmVmZXJlbmNlcy4gIE9uY2UgdGhleVxuICAgICAgLy8gY29tcGxldGUgdGhlIGNsaWVudCBiZWNvbWVzIGdhcmJhZ2UgYW5kIGdSUEMgY2xvc2VzIGl0XG4gICAgICAvLyBuYXR1cmFsbHkuXG4gICAgICB0aGlzLmNvbm5lY3Rpb25zLnNldChob3N0LCBuZXdDb25uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcmVjb25uZWN0IHRvICR7aG9zdH06YCwgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlIGFsbCBjb25uZWN0aW9ucyBpbiB0aGUgcG9vbCAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcblxuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmhlYWx0aENoZWNrVGltZXIpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5oZWFsdGhDaGVja1RpbWVyKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbm4gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29ubi5jbGllbnQuY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWdub3JlXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb25uZWN0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgbnVtYmVyIG9mIGhlYWx0aHkgaG9zdHMgKi9cbiAgaGVhbHRoeUhvc3RDb3VudCgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZm9yIChjb25zdCBjb25uIG9mIHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIGlmIChjb25uLmhlYWx0aHkpIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxpc3Qgb2YgY29uZmlndXJlZCBob3N0cyAqL1xuICBob3N0cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jb25uZWN0aW9ucy5rZXlzKCkpO1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIHRoZSBwb29sIGlzIGNsb3NlZCAqL1xuICBpc0Nsb3NlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLHFDQUF5RjtBQWtCekY7Ozs7R0FJRztBQUNILE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBRXhDLHFEQUFxRDtBQUNyRCxNQUFhLGNBQWM7SUFDakIsTUFBTSxDQUFjO0lBQ3BCLFdBQVcsR0FBNEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqRCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsZ0JBQWdCLENBQWtCO0lBRTFDLFlBQVksTUFBbUI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsNEJBQTRCO2dCQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLDRCQUFt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QUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLEtBQUs7UUFDSCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUF6TkQsd0NBeU5DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25uZWN0aW9uIG1hbmFnZW1lbnQgZm9yIEdRTERCIE5vZGUuanMgZHJpdmVyLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBHcWxkYkNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IEFsbEhvc3RzRmFpbGVkRXJyb3IsIENvbm5lY3Rpb25DbG9zZWRFcnJvciwgTm9Db25uZWN0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8qKiBSZXByZXNlbnRzIGEgc2luZ2xlIGdSUEMgY29ubmVjdGlvbiAqL1xuaW50ZXJmYWNlIENvbm5lY3Rpb24ge1xuICBob3N0OiBzdHJpbmc7XG4gIGNsaWVudDogZ3JwYy5DbGllbnQ7XG4gIGhlYWx0aHk6IGJvb2xlYW47XG4gIGxhc3RQaW5nOiBudW1iZXI7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY29uc2VjdXRpdmUgaGVhbHRoLWNoZWNrIHRpY2tzIHRoYXQgb2JzZXJ2ZWQgYSBub24tUkVBRFlcbiAgICogc3RhdGUuIFJlY29ubmVjdCBpcyBvbmx5IHRyaWdnZXJlZCBhZnRlciB0aGlzIHJlYWNoZXNcbiAgICogVU5IRUFMVEhZX1JFQ09OTkVDVF9USFJFU0hPTEQsIHNvIGEgc2luZ2xlIHRyYW5zaWVudCBmbGlja2VyXG4gICAqIGR1cmluZyBhIGJ1c3kgaW4tZmxpZ2h0IFJQQyBkb2VzIG5vdCB0ZWFyIHRoZSBjaGFubmVsIGRvd24gYW5kXG4gICAqIGNhbmNlbCBldmVyeSBwZW5kaW5nIHJlcXVlc3QuXG4gICAqL1xuICBjb25zZWN1dGl2ZVVuaGVhbHRoeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE51bWJlciBvZiBjb25zZWN1dGl2ZSB1bmhlYWx0aHkgdGlja3MgcmVxdWlyZWQgYmVmb3JlIGZvcmNpbmcgYVxuICogcmVjb25uZWN0ICh3aGljaCByZXBsYWNlcyB0aGUgY2hhbm5lbDsgaW4tZmxpZ2h0IFJQQ3MgYXJlIE5PVFxuICogY2FuY2VsbGVkIGJlY2F1c2UgdGhlIG9sZCBjaGFubmVsIGlzIGxlZnQgYWxpdmUgdW50aWwgR0MpLlxuICovXG5jb25zdCBVTkhFQUxUSFlfUkVDT05ORUNUX1RIUkVTSE9MRCA9IDM7XG5cbi8qKiBNYW5hZ2VzIGEgcG9vbCBvZiBjb25uZWN0aW9ucyB0byBHUUxEQiBzZXJ2ZXJzICovXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvblBvb2wge1xuICBwcml2YXRlIGNvbmZpZzogR3FsZGJDb25maWc7XG4gIHByaXZhdGUgY29ubmVjdGlvbnM6IE1hcDxzdHJpbmcsIENvbm5lY3Rpb24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGNsb3NlZCA9IGZhbHNlO1xuICBwcml2YXRlIGhlYWx0aENoZWNrVGltZXI/OiBOb2RlSlMuVGltZW91dDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEdxbGRiQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0Q29ubmVjdGlvbnMoKTtcbiAgICB0aGlzLnN0YXJ0SGVhbHRoQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbm5lY3Rpb25zKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaG9zdCBvZiB0aGlzLmNvbmZpZy5ob3N0cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29ubiA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbihob3N0KTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoaG9zdCwgY29ubik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIENvbnRpbnVlIHdpdGggb3RoZXIgaG9zdHNcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbm5lY3QgdG8gJHtob3N0fTpgLCBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aW9ucy5zaXplID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQWxsSG9zdHNGYWlsZWRFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29ubmVjdGlvbihob3N0OiBzdHJpbmcpOiBDb25uZWN0aW9uIHtcbiAgICBsZXQgY3JlZGVudGlhbHM6IGdycGMuQ2hhbm5lbENyZWRlbnRpYWxzO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnRsc09wdGlvbnMpIHtcbiAgICAgIGNyZWRlbnRpYWxzID0gZ3JwYy5jcmVkZW50aWFscy5jcmVhdGVTc2woKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uczogZ3JwYy5DaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgICdncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoJzogdGhpcy5jb25maWcubWF4UmVjdlNpemUgPz8gNjQgKiAxMDI0ICogMTAyNCxcbiAgICAgICdncnBjLm1heF9zZW5kX21lc3NhZ2VfbGVuZ3RoJzogdGhpcy5jb25maWcubWF4UmVjdlNpemUgPz8gNjQgKiAxMDI0ICogMTAyNCxcbiAgICAgICdncnBjLmtlZXBhbGl2ZV90aW1lX21zJzogMzAwMDAsXG4gICAgICAnZ3JwYy5rZWVwYWxpdmVfdGltZW91dF9tcyc6IDEwMDAwLFxuICAgICAgJ2dycGMua2VlcGFsaXZlX3Blcm1pdF93aXRob3V0X2NhbGxzJzogMSxcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIGEgZ2VuZXJpYyBjbGllbnQgZm9yIHRoZSBjaGFubmVsXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IGdycGMuQ2xpZW50KGhvc3QsIGNyZWRlbnRpYWxzLCBvcHRpb25zKTtcblxuICAgIHJldHVybiB7XG4gICAgICBob3N0LFxuICAgICAgY2xpZW50LFxuICAgICAgaGVhbHRoeTogdHJ1ZSxcbiAgICAgIGxhc3RQaW5nOiBEYXRlLm5vdygpLFxuICAgICAgY29uc2VjdXRpdmVVbmhlYWx0aHk6IDAsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBHZXQgYSBoZWFsdGh5IGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbCAqL1xuICBnZXRDb25uZWN0aW9uKCk6IGdycGMuQ2xpZW50IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBDb25uZWN0aW9uQ2xvc2VkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbm4gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGNvbm4uaGVhbHRoeSkge1xuICAgICAgICByZXR1cm4gY29ubi5jbGllbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XG4gIH1cblxuICAvKiogR2V0IGEgY29ubmVjdGlvbiBmb3IgYSBzcGVjaWZpYyBob3N0ICovXG4gIGdldENvbm5lY3Rpb25Gb3JIb3N0KGhvc3Q6IHN0cmluZyk6IGdycGMuQ2xpZW50IHtcbiAgICBjb25zdCBjb25uID0gdGhpcy5jb25uZWN0aW9ucy5nZXQoaG9zdCk7XG4gICAgaWYgKCFjb25uIHx8ICFjb25uLmhlYWx0aHkpIHtcbiAgICAgIHRocm93IG5ldyBOb0Nvbm5lY3Rpb25FcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gY29ubi5jbGllbnQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0SGVhbHRoQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLmNvbmZpZy5oZWFsdGhDaGVja0ludGVydmFsID8/IDMwMDAwO1xuICAgIGlmIChpbnRlcnZhbCA+IDApIHtcbiAgICAgIHRoaXMuaGVhbHRoQ2hlY2tUaW1lciA9IHNldEludGVydmFsKCgpID0+IHRoaXMuY2hlY2tIZWFsdGgoKSwgaW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIZWFsdGgtY2hlY2sgdGljay4gIENvbm5lY3Rpdml0eS1zdGF0ZSBzZW1hbnRpY3M6XG4gICAqICAtIFJFQURZIC8gSURMRSAgICAgICAgIOKGkiBoZWFsdGh5OyByZXNldCB0aGUgdW5oZWFsdGh5IGNvdW50ZXIuXG4gICAqICAtIENPTk5FQ1RJTkcgICAgICAgICAgIOKGkiB0cmFuc2llbnQ7IGxldCB0aGUgY2hhbm5lbCBoZWFsIGl0c2VsZixcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uJ3QgY291bnQgdG93YXJkIHVuaGVhbHRoeS5cbiAgICogIC0gU0hVVERPV04gICAgICAgICAgICAg4oaSIHRlcm1pbmFsOyByZWNvbm5lY3QgaW1tZWRpYXRlbHkuXG4gICAqICAtIFRSQU5TSUVOVF9GQUlMVVJFICAgIOKGkiBjb3VudCB0b3dhcmQgdW5oZWFsdGh5OyByZWNvbm5lY3Qgb25seVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBVTkhFQUxUSFlfUkVDT05ORUNUX1RIUkVTSE9MRFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zZWN1dGl2ZSB0aWNrcy5cbiAgICpcbiAgICogUmVjb25uZWN0IHJlcGxhY2VzIHRoZSBwb29sJ3MgY2hhbm5lbCByZWZlcmVuY2U7IGl0IGRvZXMgTk9UIGNsb3NlXG4gICAqIHRoZSBvbGQgY2hhbm5lbCwgc28gaW4tZmxpZ2h0IFJQQ3MgY29udGludWUgdG8gY29tcGxldGlvbiBvbiBpdC5cbiAgICovXG4gIHByaXZhdGUgY2hlY2tIZWFsdGgoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbaG9zdCwgY29ubl0gb2YgdGhpcy5jb25uZWN0aW9ucykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBjb25uLmNsaWVudC5nZXRDaGFubmVsKCkuZ2V0Q29ubmVjdGl2aXR5U3RhdGUoZmFsc2UpO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuUkVBRFkgfHxcbiAgICAgICAgICBzdGF0ZSA9PT0gZ3JwYy5jb25uZWN0aXZpdHlTdGF0ZS5JRExFKSB7XG4gICAgICAgIGNvbm4uaGVhbHRoeSA9IHRydWU7XG4gICAgICAgIGNvbm4uY29uc2VjdXRpdmVVbmhlYWx0aHkgPSAwO1xuICAgICAgICBjb25uLmxhc3RQaW5nID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gZ3JwYy5jb25uZWN0aXZpdHlTdGF0ZS5DT05ORUNUSU5HKSB7XG4gICAgICAgIC8vIFRyYW5zaWVudCDigJQgbGV0IHRoZSBjaGFubmVsIGhlYWwgaXRzZWxmLlxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBncnBjLmNvbm5lY3Rpdml0eVN0YXRlLlNIVVRET1dOKSB7XG4gICAgICAgIGNvbm4uaGVhbHRoeSA9IGZhbHNlO1xuICAgICAgICBjb25uLmNvbnNlY3V0aXZlVW5oZWFsdGh5ID0gVU5IRUFMVEhZX1JFQ09OTkVDVF9USFJFU0hPTEQ7XG4gICAgICAgIHRoaXMucmVjb25uZWN0KGhvc3QpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gVFJBTlNJRU5UX0ZBSUxVUkUgb3IgYW55IG90aGVyIG5vbi1SRUFEWSBzdGF0ZS5cbiAgICAgIGNvbm4uY29uc2VjdXRpdmVVbmhlYWx0aHkrKztcbiAgICAgIGlmIChjb25uLmNvbnNlY3V0aXZlVW5oZWFsdGh5ID49IFVOSEVBTFRIWV9SRUNPTk5FQ1RfVEhSRVNIT0xEKSB7XG4gICAgICAgIGNvbm4uaGVhbHRoeSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlY29ubmVjdChob3N0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgcG9vbCdzIGNoYW5uZWwgZm9yIGBob3N0YCB3aXRoIGEgZnJlc2ggb25lLlxuICAgKlxuICAgKiBDcml0aWNhbGx5LCBkb2VzIE5PVCBjbG9zZSB0aGUgb2xkIGNoYW5uZWwuICBJbi1mbGlnaHQgUlBDcyBob2xkXG4gICAqIHRoZWlyIG93biByZWZlcmVuY2UgdG8gaXQgdmlhIHRoZSBjbGllbnQgdGhleSB3ZXJlIGlzc3VlZCBvbiBhbmRcbiAgICogY29udGludWUgdG8gY29tcGxldGlvbiBvbiB0aGF0IGNoYW5uZWw7IHRoZSBOb2RlLmpzIHJ1bnRpbWUnc1xuICAgKiBnYXJiYWdlIGNvbGxlY3RvciByZWxlYXNlcyB0aGUgb2xkIGNoYW5uZWwgb25seSBhZnRlciBldmVyeVxuICAgKiBpbi1mbGlnaHQgUlBDIGhhcyByZXNvbHZlZC5cbiAgICpcbiAgICogRWFybGllciB2ZXJzaW9ucyBjbG9zZWQgdGhlIG9sZCBjaGFubmVsIHN5bmNocm9ub3VzbHkgaGVyZSwgd2hpY2hcbiAgICogY2FuY2VsbGVkIGV2ZXJ5IHBlbmRpbmcgUlBDIHdpdGggYSBcIkNoYW5uZWwgY2xvc2VkIVwiLXN0eWxlIGVycm9yLlxuICAgKi9cbiAgLyoqXG4gICAqIFJlYnVpbGQgZXZlcnkgaG9zdCdzIGdSUEMgY2xpZW50IGluIHRoZSBwb29sLiAgQ2FsbGVkIGJ5IHRoZSBjbGllbnRcbiAgICogb24gdHJhbnNwb3J0LWxldmVsIGVycm9ycyAoVU5BVkFJTEFCTEUgLyBjb25uZWN0aW9uIHJlc2V0KSBzbyB0aGVcbiAgICogbmV4dCBSUEMgZ2V0cyBhIGZyZXNoIGNoYW5uZWwuICBMaWtlIHJlY29ubmVjdCwgdGhpcyBkb2VzIE5PVCBjbG9zZVxuICAgKiBvbGQgY2xpZW50cyBzeW5jaHJvbm91c2x5IOKAlCBpbi1mbGlnaHQgUlBDcyBob2xkIHRoZW0gYWxpdmUgYW5kIGdSUENcbiAgICogY2xvc2VzIHRoZW0gbmF0dXJhbGx5IG9uY2UgdGhvc2UgY2FsbHMgY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBmb3JjZVJlY29ubmVjdEFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBjb25zdCBob3N0cyA9IEFycmF5LmZyb20odGhpcy5jb25uZWN0aW9ucy5rZXlzKCkpO1xuICAgIGZvciAoY29uc3QgaG9zdCBvZiBob3N0cykge1xuICAgICAgYXdhaXQgdGhpcy5yZWNvbm5lY3QoaG9zdCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvbm5lY3QoaG9zdDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgLy8gQnVpbGQgdGhlIG5ldyBjb25uZWN0aW9uIHVwLWZyb250OyBvbmx5IHN3YXAgaWYgaXQgc3VjY2VlZHMuXG4gICAgICBjb25zdCBuZXdDb25uID0gdGhpcy5jcmVhdGVDb25uZWN0aW9uKGhvc3QpO1xuICAgICAgLy8gT3ZlcndyaXRlIHRoZSBwb29sIGVudHJ5LiAgVGhlIG9sZCBDb25uZWN0aW9uIGlzIG5vd1xuICAgICAgLy8gdW5yZWZlcmVuY2VkIGJ5IHRoZSBwb29sOyBpbi1mbGlnaHQgUlBDcyBzdGlsbCBob2xkIGl0c1xuICAgICAgLy8gZ3JwYy5DbGllbnQgYWxpdmUgdmlhIHBlci1jYWxsIHJlZmVyZW5jZXMuICBPbmNlIHRoZXlcbiAgICAgIC8vIGNvbXBsZXRlIHRoZSBjbGllbnQgYmVjb21lcyBnYXJiYWdlIGFuZCBnUlBDIGNsb3NlcyBpdFxuICAgICAgLy8gbmF0dXJhbGx5LlxuICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoaG9zdCwgbmV3Q29ubik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlY29ubmVjdCB0byAke2hvc3R9OmAsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbG9zZSBhbGwgY29ubmVjdGlvbnMgaW4gdGhlIHBvb2wgKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG5cbiAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5oZWFsdGhDaGVja1RpbWVyKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaGVhbHRoQ2hlY2tUaW1lcik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb25uIG9mIHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbm4uY2xpZW50LmNsb3NlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElnbm9yZVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIG51bWJlciBvZiBoZWFsdGh5IGhvc3RzICovXG4gIGhlYWx0aHlIb3N0Q291bnQoKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsaXN0IG9mIGNvbmZpZ3VyZWQgaG9zdHMgKi9cbiAgaG9zdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29ubmVjdGlvbnMua2V5cygpKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiB0aGUgcG9vbCBpcyBjbG9zZWQgKi9cbiAgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VkO1xuICB9XG59XG4iXX0=
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { GqldbClient, QueryConfig, InsertConfig, DeleteConfig, HealthWatcher } from './client';
|
|
5
5
|
export { GqldbConfig, ConfigBuilder, createConfig, validateConfig, DEFAULT_CONFIG } from './config';
|
|
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';
|
|
6
|
+
export { PropertyType, GraphType, EdgeIdMode, 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
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';
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* GQLDB Node.js Driver - A gRPC-based client for GQLDB graph database.
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.VERSION = exports.UnsupportedTypeError = exports.TypeConversionError = exports.InvalidTypeError = exports.ExportFailedError = exports.DeleteFailedError = exports.InsertFailedError = exports.DropGraphFailedError = exports.CreateGraphFailedError = exports.GraphExistsError = exports.GraphNotFoundError = exports.EmptyQueryError = void 0;
|
|
6
|
+
exports.QueryTimeoutError = exports.QueryFailedError = exports.TransactionAlreadyOpenError = exports.TransactionNotFoundError = exports.TransactionFailedError = exports.NoTransactionError = exports.InvalidSessionError = exports.SessionExpiredError = exports.LogoutFailedError = exports.LoginFailedError = exports.NotLoggedInError = exports.HealthCheckFailedError = exports.AllHostsFailedError = exports.ConnectionFailedError = exports.ConnectionClosedError = exports.NoConnectionError = exports.InvalidTimeoutError = exports.NoHostsError = exports.GqldbError = exports.promisifyCallWithDeadline = exports.promisifyCall = exports.createServiceClients = exports.ConnectionPool = exports.TransactionManager = exports.SessionManager = exports.printAny = exports.printTable = exports.printPaths = exports.printEdgesWithoutSchema = exports.printEdges = exports.printNodesWithoutSchema = exports.printNodes = exports.Row = exports.Response = exports.Point3D = exports.Point = exports.createParameter = exports.typedValueToJS = exports.createTypedValue = exports.InsertType = exports.CacheType = exports.HealthStatus = exports.EdgeIdMode = exports.GraphType = exports.PropertyType = exports.DEFAULT_CONFIG = exports.validateConfig = exports.createConfig = exports.ConfigBuilder = exports.GqldbClient = void 0;
|
|
7
|
+
exports.VERSION = exports.UnsupportedTypeError = exports.TypeConversionError = exports.InvalidTypeError = exports.ExportFailedError = exports.DeleteFailedError = exports.InsertFailedError = exports.DropGraphFailedError = exports.CreateGraphFailedError = exports.GraphExistsError = exports.GraphNotFoundError = exports.EmptyQueryError = exports.InvalidQueryError = void 0;
|
|
8
8
|
// Main client
|
|
9
9
|
var client_1 = require("./client");
|
|
10
10
|
Object.defineProperty(exports, "GqldbClient", { enumerable: true, get: function () { return client_1.GqldbClient; } });
|
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: functi
|
|
|
18
18
|
var types_1 = require("./types");
|
|
19
19
|
Object.defineProperty(exports, "PropertyType", { enumerable: true, get: function () { return types_1.PropertyType; } });
|
|
20
20
|
Object.defineProperty(exports, "GraphType", { enumerable: true, get: function () { return types_1.GraphType; } });
|
|
21
|
+
Object.defineProperty(exports, "EdgeIdMode", { enumerable: true, get: function () { return types_1.EdgeIdMode; } });
|
|
21
22
|
Object.defineProperty(exports, "HealthStatus", { enumerable: true, get: function () { return types_1.HealthStatus; } });
|
|
22
23
|
Object.defineProperty(exports, "CacheType", { enumerable: true, get: function () { return types_1.CacheType; } });
|
|
23
24
|
Object.defineProperty(exports, "InsertType", { enumerable: true, get: function () { return types_1.InsertType; } });
|
|
@@ -88,4 +89,4 @@ Object.defineProperty(exports, "TypeConversionError", { enumerable: true, get: f
|
|
|
88
89
|
Object.defineProperty(exports, "UnsupportedTypeError", { enumerable: true, get: function () { return errors_1.UnsupportedTypeError; } });
|
|
89
90
|
// Version
|
|
90
91
|
exports.VERSION = '0.1.0';
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7O0FBRUgsY0FBYztBQUNkLG1DQUErRjtBQUF0RixxR0FBQSxXQUFXLE9BQUE7QUFFcEIsZ0JBQWdCO0FBQ2hCLG1DQUFvRztBQUE5RSx1R0FBQSxhQUFhLE9BQUE7QUFBRSxzR0FBQSxZQUFZLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUE7QUFFakYsUUFBUTtBQUNSLGlDQTJDaUI7QUExQ2YscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QsbUdBQUEsVUFBVSxPQUFBO0FBQ1YscUdBQUEsWUFBWSxPQUFBO0FBQ1osa0dBQUEsU0FBUyxPQUFBO0FBQ1QsbUdBQUEsVUFBVSxPQUFBO0FBRVYseUdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsdUdBQUEsY0FBYyxPQUFBO0FBRWQsd0dBQUEsZUFBZSxPQUFBO0FBQ2YsOEZBQUEsS0FBSyxPQUFBO0FBQ0wsZ0dBQUEsT0FBTyxPQUFBO0FBZ0NULFdBQVc7QUFDWCx1Q0FZb0I7QUFYbEIsb0dBQUEsUUFBUSxPQUFBO0FBQ1IsK0ZBQUEsR0FBRyxPQUFBO0FBWUwsV0FBVztBQUNYLHVDQVFvQjtBQVBsQixzR0FBQSxVQUFVLE9BQUE7QUFDVixtSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixzR0FBQSxVQUFVLE9BQUE7QUFDVixtSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixzR0FBQSxVQUFVLE9BQUE7QUFDVixzR0FBQSxVQUFVLE9BQUE7QUFDVixvR0FBQSxRQUFRLE9BQUE7QUFHVixVQUFVO0FBQ1YscUNBQW9EO0FBQWxDLHlHQUFBLGNBQWMsT0FBQTtBQUVoQyxjQUFjO0FBQ2QsNkNBQWdFO0FBQTFDLGlIQUFBLGtCQUFrQixPQUFBO0FBRXhDLGFBQWE7QUFDYiwyQ0FBOEM7QUFBckMsNEdBQUEsY0FBYyxPQUFBO0FBRXZCLFdBQVc7QUFDWCx1Q0FBNEc7QUFBbkcsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBa0IseUdBQUEsYUFBYSxPQUFBO0FBQUUscUhBQUEseUJBQXlCLE9BQUE7QUFFdkYsU0FBUztBQUNULG1DQWdDa0I7QUEvQmhCLG9HQUFBLFVBQVUsT0FBQTtBQUNWLHNHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLCtHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLCtHQUFBLHFCQUFxQixPQUFBO0FBQ3JCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDRHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLHdCQUF3QixPQUFBO0FBQ3hCLHFIQUFBLDJCQUEyQixPQUFBO0FBQzNCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLHlHQUFBLGVBQWUsT0FBQTtBQUNmLDRHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLGdIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDhHQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDJHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDBHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLG1CQUFtQixPQUFBO0FBQ25CLDhHQUFBLG9CQUFvQixPQUFBO0FBR3RCLFVBQVU7QUFDRyxRQUFBLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdRTERCIE5vZGUuanMgRHJpdmVyIC0gQSBnUlBDLWJhc2VkIGNsaWVudCBmb3IgR1FMREIgZ3JhcGggZGF0YWJhc2UuXG4gKi9cblxuLy8gTWFpbiBjbGllbnRcbmV4cG9ydCB7IEdxbGRiQ2xpZW50LCBRdWVyeUNvbmZpZywgSW5zZXJ0Q29uZmlnLCBEZWxldGVDb25maWcsIEhlYWx0aFdhdGNoZXIgfSBmcm9tICcuL2NsaWVudCc7XG5cbi8vIENvbmZpZ3VyYXRpb25cbmV4cG9ydCB7IEdxbGRiQ29uZmlnLCBDb25maWdCdWlsZGVyLCBjcmVhdGVDb25maWcsIHZhbGlkYXRlQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcblxuLy8gVHlwZXNcbmV4cG9ydCB7XG4gIFByb3BlcnR5VHlwZSxcbiAgR3JhcGhUeXBlLFxuICBFZGdlSWRNb2RlLFxuICBIZWFsdGhTdGF0dXMsXG4gIENhY2hlVHlwZSxcbiAgSW5zZXJ0VHlwZSxcbiAgVHlwZWRWYWx1ZSxcbiAgY3JlYXRlVHlwZWRWYWx1ZSxcbiAgdHlwZWRWYWx1ZVRvSlMsXG4gIFBhcmFtZXRlcixcbiAgY3JlYXRlUGFyYW1ldGVyLFxuICBQb2ludCxcbiAgUG9pbnQzRCxcbiAgTm9kZURhdGEsXG4gIEVkZ2VEYXRhLFxuICBHcmFwaEluZm8sXG4gIFRyYW5zYWN0aW9uSW5mbyxcbiAgQVNUQ2FjaGVTdGF0cyxcbiAgUGxhbkNhY2hlU3RhdHMsXG4gIENhY2hlU3RhdHMsXG4gIFN0YXRpc3RpY3MsXG4gIFN5c3RlbU1ldHJpY3MsXG4gIENwdU1ldHJpY3MsXG4gIE1lbW9yeU1ldHJpY3MsXG4gIERpc2tJT01ldHJpY3MsXG4gIFN0b3JhZ2VNZXRyaWNzLFxuICBOZXR3b3JrTWV0cmljcyxcbiAgRXhwb3J0ZWROb2RlLFxuICBFeHBvcnRlZEVkZ2UsXG4gIEJ1bGtDcmVhdGVOb2Rlc09wdGlvbnMsXG4gIEJ1bGtDcmVhdGVFZGdlc09wdGlvbnMsXG4gIEJ1bGtJbXBvcnRPcHRpb25zLFxuICBCdWxrSW1wb3J0U2Vzc2lvbixcbiAgQ2hlY2twb2ludFJlc3VsdCxcbiAgRW5kQnVsa0ltcG9ydFJlc3VsdCxcbiAgQWJvcnRCdWxrSW1wb3J0UmVzdWx0LFxuICBCdWxrSW1wb3J0U3RhdHVzLFxuICBTY2hlbWEsXG4gIFByb3BlcnR5RGVmLFxuICBIZWFkZXIsXG4gIFRhYmxlLFxuICBBdHRyLFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gUmVzcG9uc2VcbmV4cG9ydCB7XG4gIFJlc3BvbnNlLFxuICBSb3csXG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRXhwb3J0Tm9kZXNSZXN1bHQsXG4gIEV4cG9ydEVkZ2VzUmVzdWx0LFxuICBOb2RlLFxuICBFZGdlLFxuICBQYXRoLFxuICBOb2RlUmVzdWx0LFxuICBFZGdlUmVzdWx0LFxufSBmcm9tICcuL3Jlc3BvbnNlJztcblxuLy8gUHJpbnRlcnNcbmV4cG9ydCB7XG4gIHByaW50Tm9kZXMsXG4gIHByaW50Tm9kZXNXaXRob3V0U2NoZW1hLFxuICBwcmludEVkZ2VzLFxuICBwcmludEVkZ2VzV2l0aG91dFNjaGVtYSxcbiAgcHJpbnRQYXRocyxcbiAgcHJpbnRUYWJsZSxcbiAgcHJpbnRBbnksXG59IGZyb20gJy4vcHJpbnRlcnMnO1xuXG4vLyBTZXNzaW9uXG5leHBvcnQgeyBTZXNzaW9uLCBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2Vzc2lvbic7XG5cbi8vIFRyYW5zYWN0aW9uXG5leHBvcnQgeyBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5cbi8vIENvbm5lY3Rpb25cbmV4cG9ydCB7IENvbm5lY3Rpb25Qb29sIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCB7IGNyZWF0ZVNlcnZpY2VDbGllbnRzLCBTZXJ2aWNlQ2xpZW50cywgcHJvbWlzaWZ5Q2FsbCwgcHJvbWlzaWZ5Q2FsbFdpdGhEZWFkbGluZSB9IGZyb20gJy4vc2VydmljZXMnO1xuXG4vLyBFcnJvcnNcbmV4cG9ydCB7XG4gIEdxbGRiRXJyb3IsXG4gIE5vSG9zdHNFcnJvcixcbiAgSW52YWxpZFRpbWVvdXRFcnJvcixcbiAgTm9Db25uZWN0aW9uRXJyb3IsXG4gIENvbm5lY3Rpb25DbG9zZWRFcnJvcixcbiAgQ29ubmVjdGlvbkZhaWxlZEVycm9yLFxuICBBbGxIb3N0c0ZhaWxlZEVycm9yLFxuICBIZWFsdGhDaGVja0ZhaWxlZEVycm9yLFxuICBOb3RMb2dnZWRJbkVycm9yLFxuICBMb2dpbkZhaWxlZEVycm9yLFxuICBMb2dvdXRGYWlsZWRFcnJvcixcbiAgU2Vzc2lvbkV4cGlyZWRFcnJvcixcbiAgSW52YWxpZFNlc3Npb25FcnJvcixcbiAgTm9UcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvbkZhaWxlZEVycm9yLFxuICBUcmFuc2FjdGlvbk5vdEZvdW5kRXJyb3IsXG4gIFRyYW5zYWN0aW9uQWxyZWFkeU9wZW5FcnJvcixcbiAgUXVlcnlGYWlsZWRFcnJvcixcbiAgUXVlcnlUaW1lb3V0RXJyb3IsXG4gIEludmFsaWRRdWVyeUVycm9yLFxuICBFbXB0eVF1ZXJ5RXJyb3IsXG4gIEdyYXBoTm90Rm91bmRFcnJvcixcbiAgR3JhcGhFeGlzdHNFcnJvcixcbiAgQ3JlYXRlR3JhcGhGYWlsZWRFcnJvcixcbiAgRHJvcEdyYXBoRmFpbGVkRXJyb3IsXG4gIEluc2VydEZhaWxlZEVycm9yLFxuICBEZWxldGVGYWlsZWRFcnJvcixcbiAgRXhwb3J0RmFpbGVkRXJyb3IsXG4gIEludmFsaWRUeXBlRXJyb3IsXG4gIFR5cGVDb252ZXJzaW9uRXJyb3IsXG4gIFVuc3VwcG9ydGVkVHlwZUVycm9yLFxufSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFZlcnNpb25cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzAuMS4wJztcbiJdfQ==
|
package/dist/proto/gqldb.proto
CHANGED
|
@@ -3,6 +3,7 @@ syntax = "proto3";
|
|
|
3
3
|
package gqldb;
|
|
4
4
|
|
|
5
5
|
option go_package = "github.com/zhangjsff/gqldb-grpc/proto";
|
|
6
|
+
option csharp_namespace = "Gqldb.Proto";
|
|
6
7
|
|
|
7
8
|
// =============================================================================
|
|
8
9
|
// Enums
|
|
@@ -110,6 +111,17 @@ message LoginResponse {
|
|
|
110
111
|
bool is_cluster = 10;
|
|
111
112
|
string cluster_id = 11;
|
|
112
113
|
int32 partition_count = 12;
|
|
114
|
+
// Capability tokens advertising supported features. Drivers test for
|
|
115
|
+
// membership instead of parsing server_version. Tokens are stable
|
|
116
|
+
// snake_case identifiers; older servers omit this field, drivers must
|
|
117
|
+
// treat the empty case as "no capabilities advertised". See
|
|
118
|
+
// server_bugs_open20.md #6.
|
|
119
|
+
repeated string capabilities = 20;
|
|
120
|
+
// Session's current graph immediately after Login. Equals
|
|
121
|
+
// req.default_graph when supplied (and validated), otherwise empty.
|
|
122
|
+
// Lets new drivers seed their local "current graph" cache without a
|
|
123
|
+
// follow-up USE GRAPH round-trip. Old servers leave this empty.
|
|
124
|
+
string current_graph = 21;
|
|
113
125
|
}
|
|
114
126
|
|
|
115
127
|
message LogoutRequest {
|
|
@@ -161,6 +173,48 @@ message GqlResponse {
|
|
|
161
173
|
bool has_more = 4;
|
|
162
174
|
repeated string warnings = 5;
|
|
163
175
|
int64 rows_affected = 6; // For DML operations (INSERT/UPDATE/DELETE)
|
|
176
|
+
// Session's current graph after this query has executed. Always
|
|
177
|
+
// populated on success; reflects the engine's view (covers
|
|
178
|
+
// single/compound USE GRAPH at any position, last-write-wins).
|
|
179
|
+
// Empty means "no graph selected" (e.g. fresh session, or
|
|
180
|
+
// current graph was DROPPed). Drivers update their local cache
|
|
181
|
+
// unconditionally on every successful Gql RPC. Old servers leave
|
|
182
|
+
// this empty; drivers fall back to text parsing in that case.
|
|
183
|
+
// Streaming GqlStream populates only on the final batch
|
|
184
|
+
// (has_more=false); intermediate batches leave it empty.
|
|
185
|
+
string current_graph = 7;
|
|
186
|
+
|
|
187
|
+
// Server-side timing of the underlying query, in nanoseconds. Values
|
|
188
|
+
// are read from the source DB's ResultSet (TimeCost/DiskCost/
|
|
189
|
+
// ComputeCost). Network and client-side time are NOT included —
|
|
190
|
+
// these measure only what the engine spent inside QueryContext.
|
|
191
|
+
//
|
|
192
|
+
// - time_cost_ns: total wall-clock for parse + plan + execute.
|
|
193
|
+
// - disk_cost_ns: subset of time_cost_ns spent in the storage /
|
|
194
|
+
// LSM layer (cursors, point lookups, index
|
|
195
|
+
// reads).
|
|
196
|
+
// - compute_cost_ns: subset of time_cost_ns spent in the in-memory
|
|
197
|
+
// compute engine (k-hop, shortest path, algo.*
|
|
198
|
+
// procedures via the topology accelerator).
|
|
199
|
+
// Zero when the graph has compute DISABLED or
|
|
200
|
+
// the query path did not invoke the accelerator.
|
|
201
|
+
//
|
|
202
|
+
// The three are not mutually exclusive of all of time_cost_ns —
|
|
203
|
+
// (time_cost_ns - disk_cost_ns - compute_cost_ns) is the "other"
|
|
204
|
+
// bucket (parser, planner, RBAC, result marshaling).
|
|
205
|
+
//
|
|
206
|
+
// Streaming: populated only on the final batch (has_more=false),
|
|
207
|
+
// matching the current_graph / rows_affected pattern. Intermediate
|
|
208
|
+
// batches leave them zero — TimeCost is only valid after iteration
|
|
209
|
+
// has completed. Drivers should read the values from the final
|
|
210
|
+
// frame.
|
|
211
|
+
//
|
|
212
|
+
// Proto3 additive: pre-change drivers ignore these fields. Old
|
|
213
|
+
// servers omit them, so new drivers must treat zero as "not
|
|
214
|
+
// reported" and not "query took zero time".
|
|
215
|
+
int64 time_cost_ns = 8;
|
|
216
|
+
int64 disk_cost_ns = 9;
|
|
217
|
+
int64 compute_cost_ns = 10;
|
|
164
218
|
}
|
|
165
219
|
|
|
166
220
|
message ExplainResponse {
|
|
@@ -180,10 +234,6 @@ service DataService {
|
|
|
180
234
|
rpc InsertNodes(InsertNodesRequest) returns (InsertNodesResponse);
|
|
181
235
|
// InsertEdges inserts multiple edges into a graph.
|
|
182
236
|
rpc InsertEdges(InsertEdgesRequest) returns (InsertEdgesResponse);
|
|
183
|
-
// DeleteNodes deletes nodes from a graph.
|
|
184
|
-
rpc DeleteNodes(DeleteNodesRequest) returns (DeleteNodesResponse);
|
|
185
|
-
// DeleteEdges deletes edges from a graph.
|
|
186
|
-
rpc DeleteEdges(DeleteEdgesRequest) returns (DeleteEdgesResponse);
|
|
187
237
|
// Export streams graph data in JSON Lines format (nodes and/or edges).
|
|
188
238
|
rpc Export(ExportRequest) returns (stream ExportResponse);
|
|
189
239
|
}
|
|
@@ -199,16 +249,41 @@ message EdgeData {
|
|
|
199
249
|
string from_node_id = 2;
|
|
200
250
|
string to_node_id = 3;
|
|
201
251
|
map<string, TypedValue> properties = 4;
|
|
252
|
+
string id = 5; // Optional custom edge ID; requires EDGE_ID enabled on the target graph (if empty, auto-generated; rejected if EDGE_ID is disabled)
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// InsertMode selects duplicate-`_id` semantics for INSERT/UPSERT
|
|
256
|
+
// operations.
|
|
257
|
+
//
|
|
258
|
+
// - INSERT_MODE_NORMAL: error if `_id` already exists.
|
|
259
|
+
// - INSERT_MODE_OVERWRITE: REPLACE existing entity wholesale on
|
|
260
|
+
// duplicate `_id`. Existing fields not in the write are LOST.
|
|
261
|
+
// - INSERT_MODE_UPSERT: MERGE new properties into existing entity
|
|
262
|
+
// on duplicate `_id`. Existing fields not in the write are
|
|
263
|
+
// PRESERVED; properties in the write OVERWRITE existing values.
|
|
264
|
+
//
|
|
265
|
+
// REPLACE and MERGE are different semantics; the single enum makes
|
|
266
|
+
// the mutually-exclusive choice explicit (replaces the previous pair
|
|
267
|
+
// of `overwrite`/`upsert` boolean flags).
|
|
268
|
+
enum InsertMode {
|
|
269
|
+
INSERT_MODE_NORMAL = 0;
|
|
270
|
+
INSERT_MODE_OVERWRITE = 1;
|
|
271
|
+
INSERT_MODE_UPSERT = 2;
|
|
202
272
|
}
|
|
203
273
|
|
|
204
274
|
// BulkCreateNodesOptions configures bulk node creation behavior.
|
|
205
275
|
message BulkCreateNodesOptions {
|
|
206
|
-
|
|
276
|
+
// mode selects duplicate-`_id` semantics. Defaults to
|
|
277
|
+
// INSERT_MODE_NORMAL (zero value).
|
|
278
|
+
InsertMode mode = 1;
|
|
207
279
|
}
|
|
208
280
|
|
|
209
281
|
// BulkCreateEdgesOptions configures bulk edge creation behavior.
|
|
282
|
+
// Edge INSERT_MODE_OVERWRITE and INSERT_MODE_UPSERT require EDGE_ID
|
|
283
|
+
// enabled on the target graph.
|
|
210
284
|
message BulkCreateEdgesOptions {
|
|
211
285
|
bool skip_invalid_nodes = 1; // Skip edges where source/target node doesn't exist
|
|
286
|
+
InsertMode mode = 2; // duplicate-`_id` semantics; defaults to NORMAL
|
|
212
287
|
}
|
|
213
288
|
|
|
214
289
|
message InsertNodesRequest {
|
|
@@ -240,32 +315,6 @@ message InsertEdgesResponse {
|
|
|
240
315
|
int64 skipped_count = 5; // Number of edges skipped due to invalid nodes
|
|
241
316
|
}
|
|
242
317
|
|
|
243
|
-
message DeleteNodesRequest {
|
|
244
|
-
string graph_name = 1;
|
|
245
|
-
repeated string node_ids = 2;
|
|
246
|
-
repeated string labels = 3;
|
|
247
|
-
string where = 4; // Optional WHERE clause
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
message DeleteNodesResponse {
|
|
251
|
-
bool success = 1;
|
|
252
|
-
int64 deleted_count = 2;
|
|
253
|
-
string message = 3;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
message DeleteEdgesRequest {
|
|
257
|
-
string graph_name = 1;
|
|
258
|
-
repeated string edge_ids = 2;
|
|
259
|
-
string label = 3;
|
|
260
|
-
string where = 4; // Optional WHERE clause
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
message DeleteEdgesResponse {
|
|
264
|
-
bool success = 1;
|
|
265
|
-
int64 deleted_count = 2;
|
|
266
|
-
string message = 3;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
318
|
// ExportRequest configures the streaming export.
|
|
270
319
|
message ExportRequest {
|
|
271
320
|
string graph_name = 1; // Required: graph to export
|
|
@@ -659,8 +708,10 @@ message MemoryMetrics {
|
|
|
659
708
|
uint64 heap_alloc = 2; // Heap bytes allocated and in use
|
|
660
709
|
uint64 heap_sys = 3; // Heap bytes obtained from OS
|
|
661
710
|
uint64 stack_in_use = 4; // Stack bytes in use
|
|
711
|
+
uint64 total_alloc = 5; // Cumulative bytes allocated (monotonic)
|
|
712
|
+
uint32 num_gc = 6; // Number of completed GC cycles
|
|
662
713
|
// System memory
|
|
663
|
-
uint64 system_total =
|
|
714
|
+
uint64 system_total = 7; // Total physical memory in bytes
|
|
664
715
|
uint64 system_available = 8; // Available memory in bytes
|
|
665
716
|
uint64 system_used = 9; // Used memory in bytes
|
|
666
717
|
double system_used_percent = 10; // System memory usage percent
|
package/dist/response.d.ts
CHANGED
|
@@ -124,6 +124,22 @@ export declare class Response {
|
|
|
124
124
|
* internally to keep the local default-graph cache in sync.
|
|
125
125
|
*/
|
|
126
126
|
readonly currentGraph: string;
|
|
127
|
+
/**
|
|
128
|
+
* Server-side timing (nanoseconds), read from the engine's ResultSet.
|
|
129
|
+
* Network / client-side time is NOT included.
|
|
130
|
+
* - timeCostNs: total wall-clock parse + plan + execute
|
|
131
|
+
* - diskCostNs: subset spent in storage / LSM layer
|
|
132
|
+
* - computeCostNs: subset spent in the in-memory compute engine
|
|
133
|
+
* (k-hop, shortest path, algo.* via topology
|
|
134
|
+
* accelerator); 0 when compute is disabled or
|
|
135
|
+
* the query path did not invoke the accelerator.
|
|
136
|
+
* Old servers omit these proto3 fields → treat 0 as "not reported",
|
|
137
|
+
* not "took zero time". Streaming queries populate only on the
|
|
138
|
+
* final batch (hasMore=false), matching currentGraph / rowsAffected.
|
|
139
|
+
*/
|
|
140
|
+
readonly timeCostNs: number;
|
|
141
|
+
readonly diskCostNs: number;
|
|
142
|
+
readonly computeCostNs: number;
|
|
127
143
|
constructor(columns: string[], rows: Row[], rowCount: number, hasMore: boolean, warnings: string[], rowsAffected?: number,
|
|
128
144
|
/**
|
|
129
145
|
* Session's current graph after this RPC executed, as authoritatively
|
|
@@ -133,7 +149,21 @@ export declare class Response {
|
|
|
133
149
|
* which case the driver falls back to its USE GRAPH text-parsing path
|
|
134
150
|
* internally to keep the local default-graph cache in sync.
|
|
135
151
|
*/
|
|
136
|
-
currentGraph?: string
|
|
152
|
+
currentGraph?: string,
|
|
153
|
+
/**
|
|
154
|
+
* Server-side timing (nanoseconds), read from the engine's ResultSet.
|
|
155
|
+
* Network / client-side time is NOT included.
|
|
156
|
+
* - timeCostNs: total wall-clock parse + plan + execute
|
|
157
|
+
* - diskCostNs: subset spent in storage / LSM layer
|
|
158
|
+
* - computeCostNs: subset spent in the in-memory compute engine
|
|
159
|
+
* (k-hop, shortest path, algo.* via topology
|
|
160
|
+
* accelerator); 0 when compute is disabled or
|
|
161
|
+
* the query path did not invoke the accelerator.
|
|
162
|
+
* Old servers omit these proto3 fields → treat 0 as "not reported",
|
|
163
|
+
* not "took zero time". Streaming queries populate only on the
|
|
164
|
+
* final batch (hasMore=false), matching currentGraph / rowsAffected.
|
|
165
|
+
*/
|
|
166
|
+
timeCostNs?: number, diskCostNs?: number, computeCostNs?: number);
|
|
137
167
|
/** Check if the response has no rows */
|
|
138
168
|
isEmpty(): boolean;
|
|
139
169
|
/** Get the first row */
|