ultipa 6.0.0
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/LICENSE +21 -0
- package/README.md +65 -0
- package/dist/client.d.ts +194 -0
- package/dist/client.js +390 -0
- package/dist/config.d.ts +65 -0
- package/dist/config.js +135 -0
- package/dist/connection.d.ts +30 -0
- package/dist/connection.js +190 -0
- package/dist/errors.d.ts +99 -0
- package/dist/errors.js +237 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +88 -0
- package/dist/printers.d.ts +33 -0
- package/dist/printers.js +312 -0
- package/dist/proto/gqldb.proto +632 -0
- package/dist/response.d.ts +256 -0
- package/dist/response.js +723 -0
- package/dist/services/admin-service.d.ts +40 -0
- package/dist/services/admin-service.js +115 -0
- package/dist/services/bulk-import-service.d.ts +35 -0
- package/dist/services/bulk-import-service.js +108 -0
- package/dist/services/converters.d.ts +57 -0
- package/dist/services/converters.js +254 -0
- package/dist/services/data-service.d.ts +44 -0
- package/dist/services/data-service.js +206 -0
- package/dist/services/graph-service.d.ts +32 -0
- package/dist/services/graph-service.js +127 -0
- package/dist/services/health-service.d.ts +50 -0
- package/dist/services/health-service.js +78 -0
- package/dist/services/index.d.ts +13 -0
- package/dist/services/index.js +30 -0
- package/dist/services/query-service.d.ts +39 -0
- package/dist/services/query-service.js +112 -0
- package/dist/services/service-context.d.ts +39 -0
- package/dist/services/service-context.js +73 -0
- package/dist/services/session-service.d.ts +24 -0
- package/dist/services/session-service.js +66 -0
- package/dist/services/transaction-service.d.ts +33 -0
- package/dist/services/transaction-service.js +100 -0
- package/dist/services.d.ts +28 -0
- package/dist/services.js +122 -0
- package/dist/session.d.ts +45 -0
- package/dist/session.js +75 -0
- package/dist/transaction.d.ts +42 -0
- package/dist/transaction.js +89 -0
- package/dist/types/bulk_import.d.ts +53 -0
- package/dist/types/bulk_import.js +6 -0
- package/dist/types/data_types.d.ts +116 -0
- package/dist/types/data_types.js +122 -0
- package/dist/types/enums.d.ts +59 -0
- package/dist/types/enums.js +67 -0
- package/dist/types/graph_models.d.ts +54 -0
- package/dist/types/graph_models.js +6 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +36 -0
- package/dist/types/metadata.d.ts +60 -0
- package/dist/types/metadata.js +6 -0
- package/dist/types/schema.d.ts +31 -0
- package/dist/types/schema.js +6 -0
- package/dist/types/typed_value.d.ts +25 -0
- package/dist/types/typed_value.js +1176 -0
- package/dist/types/wrappers.d.ts +23 -0
- package/dist/types/wrappers.js +39 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +24 -0
- package/package.json +50 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for GQLDB Node.js driver.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ConfigBuilder = exports.DEFAULT_CONFIG = void 0;
|
|
7
|
+
exports.validateConfig = validateConfig;
|
|
8
|
+
exports.createConfig = createConfig;
|
|
9
|
+
/** Default configuration values */
|
|
10
|
+
exports.DEFAULT_CONFIG = {
|
|
11
|
+
hosts: ['localhost:9000'],
|
|
12
|
+
timeout: 30000, // 30 seconds (in milliseconds)
|
|
13
|
+
maxRecvSize: 64 * 1024 * 1024, // 64MB
|
|
14
|
+
poolSize: 10,
|
|
15
|
+
healthCheckInterval: 30000, // 30 seconds (in milliseconds)
|
|
16
|
+
retryCount: 3,
|
|
17
|
+
retryDelay: 100, // 100ms
|
|
18
|
+
};
|
|
19
|
+
/** Builder for creating GqldbConfig */
|
|
20
|
+
class ConfigBuilder {
|
|
21
|
+
config = {};
|
|
22
|
+
/** Set the server hosts */
|
|
23
|
+
hosts(...hosts) {
|
|
24
|
+
this.config.hosts = hosts;
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
/** Set the username for authentication */
|
|
28
|
+
username(username) {
|
|
29
|
+
this.config.username = username;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
/** Set the password for authentication */
|
|
33
|
+
password(password) {
|
|
34
|
+
this.config.password = password;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
/** Set the default graph */
|
|
38
|
+
defaultGraph(graph) {
|
|
39
|
+
this.config.defaultGraph = graph;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
/** Set the query timeout in milliseconds */
|
|
43
|
+
timeout(ms) {
|
|
44
|
+
this.config.timeout = ms;
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
/** Set the query timeout in seconds (convenience method) */
|
|
48
|
+
timeoutSeconds(seconds) {
|
|
49
|
+
this.config.timeout = seconds * 1000;
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/** Set the maximum receive message size */
|
|
53
|
+
maxRecvSize(bytes) {
|
|
54
|
+
this.config.maxRecvSize = bytes;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/** Set TLS options */
|
|
58
|
+
tls(options) {
|
|
59
|
+
this.config.tlsOptions = options;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
/** Set the connection pool size per host */
|
|
63
|
+
poolSize(size) {
|
|
64
|
+
this.config.poolSize = size;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/** Set the health check interval in milliseconds */
|
|
68
|
+
healthCheckInterval(ms) {
|
|
69
|
+
this.config.healthCheckInterval = ms;
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
/** Set the number of retries */
|
|
73
|
+
retryCount(count) {
|
|
74
|
+
this.config.retryCount = count;
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
/** Set the delay between retries in milliseconds */
|
|
78
|
+
retryDelay(ms) {
|
|
79
|
+
this.config.retryDelay = ms;
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
/** Build and return the configuration */
|
|
83
|
+
build() {
|
|
84
|
+
const config = {
|
|
85
|
+
hosts: this.config.hosts ?? exports.DEFAULT_CONFIG.hosts,
|
|
86
|
+
username: this.config.username,
|
|
87
|
+
password: this.config.password,
|
|
88
|
+
defaultGraph: this.config.defaultGraph,
|
|
89
|
+
timeout: this.config.timeout ?? exports.DEFAULT_CONFIG.timeout,
|
|
90
|
+
maxRecvSize: this.config.maxRecvSize ?? exports.DEFAULT_CONFIG.maxRecvSize,
|
|
91
|
+
tlsOptions: this.config.tlsOptions,
|
|
92
|
+
poolSize: this.config.poolSize ?? exports.DEFAULT_CONFIG.poolSize,
|
|
93
|
+
healthCheckInterval: this.config.healthCheckInterval ?? exports.DEFAULT_CONFIG.healthCheckInterval,
|
|
94
|
+
retryCount: this.config.retryCount ?? exports.DEFAULT_CONFIG.retryCount,
|
|
95
|
+
retryDelay: this.config.retryDelay ?? exports.DEFAULT_CONFIG.retryDelay,
|
|
96
|
+
};
|
|
97
|
+
validateConfig(config);
|
|
98
|
+
return config;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.ConfigBuilder = ConfigBuilder;
|
|
102
|
+
/** Validate the configuration */
|
|
103
|
+
function validateConfig(config) {
|
|
104
|
+
if (!config.hosts || config.hosts.length === 0) {
|
|
105
|
+
throw new Error('No hosts configured');
|
|
106
|
+
}
|
|
107
|
+
if (config.timeout !== undefined && config.timeout < 0) {
|
|
108
|
+
throw new Error('Invalid timeout value');
|
|
109
|
+
}
|
|
110
|
+
if (config.maxRecvSize !== undefined && config.maxRecvSize <= 0) {
|
|
111
|
+
config.maxRecvSize = exports.DEFAULT_CONFIG.maxRecvSize;
|
|
112
|
+
}
|
|
113
|
+
if (config.poolSize !== undefined && config.poolSize <= 0) {
|
|
114
|
+
config.poolSize = exports.DEFAULT_CONFIG.poolSize;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** Create a configuration with defaults */
|
|
118
|
+
function createConfig(options = {}) {
|
|
119
|
+
const config = {
|
|
120
|
+
hosts: options.hosts ?? exports.DEFAULT_CONFIG.hosts,
|
|
121
|
+
username: options.username,
|
|
122
|
+
password: options.password,
|
|
123
|
+
defaultGraph: options.defaultGraph,
|
|
124
|
+
timeout: options.timeout ?? exports.DEFAULT_CONFIG.timeout,
|
|
125
|
+
maxRecvSize: options.maxRecvSize ?? exports.DEFAULT_CONFIG.maxRecvSize,
|
|
126
|
+
tlsOptions: options.tlsOptions,
|
|
127
|
+
poolSize: options.poolSize ?? exports.DEFAULT_CONFIG.poolSize,
|
|
128
|
+
healthCheckInterval: options.healthCheckInterval ?? exports.DEFAULT_CONFIG.healthCheckInterval,
|
|
129
|
+
retryCount: options.retryCount ?? exports.DEFAULT_CONFIG.retryCount,
|
|
130
|
+
retryDelay: options.retryDelay ?? exports.DEFAULT_CONFIG.retryDelay,
|
|
131
|
+
};
|
|
132
|
+
validateConfig(config);
|
|
133
|
+
return config;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQTJJSCx3Q0FnQkM7QUFHRCxvQ0FpQkM7QUFqSkQsbUNBQW1DO0FBQ3RCLFFBQUEsY0FBYyxHQUF5RjtJQUNsSCxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsT0FBTztJQUN0QyxRQUFRLEVBQUUsRUFBRTtJQUNaLG1CQUFtQixFQUFFLEtBQUssRUFBRSwrQkFBK0I7SUFDM0QsVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVE7Q0FDMUIsQ0FBQztBQUVGLHVDQUF1QztBQUN2QyxNQUFhLGFBQWE7SUFDaEIsTUFBTSxHQUF5QixFQUFFLENBQUM7SUFFMUMsMkJBQTJCO0lBQzNCLEtBQUssQ0FBQyxHQUFHLEtBQWU7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLENB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T0FBTyxDQUFDLFVBQVUsSUFBSSxzQkFBYyxDQUFDLFVBQVU7UUFDM0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksc0JBQWMsQ0FBQyxVQUFVO0tBQzVELENBQUM7SUFFRixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBHUUxEQiBOb2RlLmpzIGRyaXZlci5cclxuICovXHJcblxyXG5pbXBvcnQgKiBhcyB0bHMgZnJvbSAndGxzJztcclxuXHJcbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdxbGRiQ2xpZW50ICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3FsZGJDb25maWcge1xyXG4gIC8qKiBTZXJ2ZXIgaG9zdHMgaW4gZm9ybWF0IFwiaG9zdDpwb3J0XCIgKi9cclxuICBob3N0czogc3RyaW5nW107XHJcbiAgLyoqIFVzZXJuYW1lIGZvciBhdXRoZW50aWNhdGlvbiAqL1xyXG4gIHVzZXJuYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBQYXNzd29yZCBmb3IgYXV0aGVudGljYXRpb24gKi9cclxuICBwYXNzd29yZD86IHN0cmluZztcclxuICAvKiogRGVmYXVsdCBncmFwaCB0byB1c2UgKi9cclxuICBkZWZhdWx0R3JhcGg/OiBzdHJpbmc7XHJcbiAgLyoqIFF1ZXJ5IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIChkZWZhdWx0IDMwMDAwbXMgPSAzMHMpICovXHJcbiAgdGltZW91dD86IG51bWJlcjtcclxuICAvKiogTWF4aW11bSByZWNlaXZlIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcyAoZGVmYXVsdCA2NE1CKSAqL1xyXG4gIG1heFJlY3ZTaXplPzogbnVtYmVyO1xyXG4gIC8qKiBUTFMgb3B0aW9ucyBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zICovXHJcbiAgdGxzT3B0aW9ucz86IHRscy5Db25uZWN0aW9uT3B0aW9ucztcclxuICAvKiogQ29ubmVjdGlvbiBwb29sIHNpemUgcGVyIGhvc3QgKi9cclxuICBwb29sU2l6ZT86IG51bWJlcjtcclxuICAvKiogSGVhbHRoIGNoZWNrIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xyXG4gIGhlYWx0aENoZWNrSW50ZXJ2YWw/OiBudW1iZXI7XHJcbiAgLyoqIE51bWJlciBvZiByZXRyaWVzIGZvciBmYWlsZWQgcmVxdWVzdHMgKi9cclxuICByZXRyeUNvdW50PzogbnVtYmVyO1xyXG4gIC8qKiBEZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbWlsbGlzZWNvbmRzIChkZWZhdWx0IDEwMG1zKSAqL1xyXG4gIHJldHJ5RGVsYXk/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzICovXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJRzogUmVxdWlyZWQ8T21pdDxHcWxkYkNvbmZpZywgJ3VzZXJuYW1lJyB8ICdwYXNzd29yZCcgfCAnZGVmYXVsdEdyYXBoJyB8ICd0bHNPcHRpb25zJz4+ID0ge1xyXG4gIGhvc3RzOiBbJ2xvY2FsaG9zdDo5MDAwJ10sXHJcbiAgdGltZW91dDogMzAwMDAsIC8vIDMwIHNlY29uZHMgKGluIG1pbGxpc2Vjb25kcylcclxuICBtYXhSZWN2U2l6ZTogNjQgKiAxMDI0ICogMTAyNCwgLy8gNjRNQlxyXG4gIHBvb2xTaXplOiAxMCxcclxuICBoZWFsdGhDaGVja0ludGVydmFsOiAzMDAwMCwgLy8gMzAgc2Vjb25kcyAoaW4gbWlsbGlzZWNvbmRzKVxyXG4gIHJldHJ5Q291bnQ6IDMsXHJcbiAgcmV0cnlEZWxheTogMTAwLCAvLyAxMDBtc1xyXG59O1xyXG5cclxuLyoqIEJ1aWxkZXIgZm9yIGNyZWF0aW5nIEdxbGRiQ29uZmlnICovXHJcbmV4cG9ydCBjbGFzcyBDb25maWdCdWlsZGVyIHtcclxuICBwcml2YXRlIGNvbmZpZzogUGFydGlhbDxHcWxkYkNvbmZpZz4gPSB7fTtcclxuXHJcbiAgLyoqIFNldCB0aGUgc2VydmVyIGhvc3RzICovXHJcbiAgaG9zdHMoLi4uaG9zdHM6IHN0cmluZ1tdKTogdGhpcyB7XHJcbiAgICB0aGlzLmNvbmZpZy5ob3N0cyA9IGhvc3RzO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSB1c2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24gKi9cclxuICB1c2VybmFtZSh1c2VybmFtZTogc3RyaW5nKTogdGhpcyB7XHJcbiAgICB0aGlzLmNvbmZpZy51c2VybmFtZSA9IHVzZXJuYW1lO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBwYXNzd29yZCBmb3IgYXV0aGVudGljYXRpb24gKi9cclxuICBwYXNzd29yZChwYXNzd29yZDogc3RyaW5nKTogdGhpcyB7XHJcbiAgICB0aGlzLmNvbmZpZy5wYXNzd29yZCA9IHBhc3N3b3JkO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBkZWZhdWx0IGdyYXBoICovXHJcbiAgZGVmYXVsdEdyYXBoKGdyYXBoOiBzdHJpbmcpOiB0aGlzIHtcclxuICAgIHRoaXMuY29uZmlnLmRlZmF1bHRHcmFwaCA9IGdyYXBoO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBxdWVyeSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAqL1xyXG4gIHRpbWVvdXQobXM6IG51bWJlcik6IHRoaXMge1xyXG4gICAgdGhpcy5jb25maWcudGltZW91dCA9IG1zO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBxdWVyeSB0aW1lb3V0IGluIHNlY29uZHMgKGNvbnZlbmllbmNlIG1ldGhvZCkgKi9cclxuICB0aW1lb3V0U2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpOiB0aGlzIHtcclxuICAgIHRoaXMuY29uZmlnLnRpbWVvdXQgPSBzZWNvbmRzICogMTAwMDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldCB0aGUgbWF4aW11bSByZWNlaXZlIG1lc3NhZ2Ugc2l6ZSAqL1xyXG4gIG1heFJlY3ZTaXplKGJ5dGVzOiBudW1iZXIpOiB0aGlzIHtcclxuICAgIHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID0gYnl0ZXM7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBTZXQgVExTIG9wdGlvbnMgKi9cclxuICB0bHMob3B0aW9uczogdGxzLkNvbm5lY3Rpb25PcHRpb25zKTogdGhpcyB7XHJcbiAgICB0aGlzLmNvbmZpZy50bHNPcHRpb25zID0gb3B0aW9ucztcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldCB0aGUgY29ubmVjdGlvbiBwb29sIHNpemUgcGVyIGhvc3QgKi9cclxuICBwb29sU2l6ZShzaXplOiBudW1iZXIpOiB0aGlzIHtcclxuICAgIHRoaXMuY29uZmlnLnBvb2xTaXplID0gc2l6ZTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldCB0aGUgaGVhbHRoIGNoZWNrIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyAqL1xyXG4gIGhlYWx0aENoZWNrSW50ZXJ2YWwobXM6IG51bWJlcik6IHRoaXMge1xyXG4gICAgdGhpcy5jb25maWcuaGVhbHRoQ2hlY2tJbnRlcnZhbCA9IG1zO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBudW1iZXIgb2YgcmV0cmllcyAqL1xyXG4gIHJldHJ5Q291bnQoY291bnQ6IG51bWJlcik6IHRoaXMge1xyXG4gICAgdGhpcy5jb25maWcucmV0cnlDb3VudCA9IGNvdW50O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHRoZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbWlsbGlzZWNvbmRzICovXHJcbiAgcmV0cnlEZWxheShtczogbnVtYmVyKTogdGhpcyB7XHJcbiAgICB0aGlzLmNvbmZpZy5yZXRyeURlbGF5ID0gbXM7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBCdWlsZCBhbmQgcmV0dXJuIHRoZSBjb25maWd1cmF0aW9uICovXHJcbiAgYnVpbGQoKTogR3FsZGJDb25maWcge1xyXG4gICAgY29uc3QgY29uZmlnOiBHcWxkYkNvbmZpZyA9IHtcclxuICAgICAgaG9zdHM6IHRoaXMuY29uZmlnLmhvc3RzID8/IERFRkFVTFRfQ09ORklHLmhvc3RzLFxyXG4gICAgICB1c2VybmFtZTogdGhpcy5jb25maWcudXNlcm5hbWUsXHJcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmNvbmZpZy5wYXNzd29yZCxcclxuICAgICAgZGVmYXVsdEdyYXBoOiB0aGlzLmNvbmZpZy5kZWZhdWx0R3JhcGgsXHJcbiAgICAgIHRpbWVvdXQ6IHRoaXMuY29uZmlnLnRpbWVvdXQgPz8gREVGQVVMVF9DT05GSUcudGltZW91dCxcclxuICAgICAgbWF4UmVjdlNpemU6IHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID8/IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplLFxyXG4gICAgICB0bHNPcHRpb25zOiB0aGlzLmNvbmZpZy50bHNPcHRpb25zLFxyXG4gICAgICBwb29sU2l6ZTogdGhpcy5jb25maWcucG9vbFNpemUgPz8gREVGQVVMVF9DT05GSUcucG9vbFNpemUsXHJcbiAgICAgIGhlYWx0aENoZWNrSW50ZXJ2YWw6IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gREVGQVVMVF9DT05GSUcuaGVhbHRoQ2hlY2tJbnRlcnZhbCxcclxuICAgICAgcmV0cnlDb3VudDogdGhpcy5jb25maWcucmV0cnlDb3VudCA/PyBERUZBVUxUX0NPTkZJRy5yZXRyeUNvdW50LFxyXG4gICAgICByZXRyeURlbGF5OiB0aGlzLmNvbmZpZy5yZXRyeURlbGF5ID8/IERFRkFVTFRfQ09ORklHLnJldHJ5RGVsYXksXHJcbiAgICB9O1xyXG5cclxuICAgIHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XHJcbiAgICByZXR1cm4gY29uZmlnO1xyXG4gIH1cclxufVxyXG5cclxuLyoqIFZhbGlkYXRlIHRoZSBjb25maWd1cmF0aW9uICovXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IEdxbGRiQ29uZmlnKTogdm9pZCB7XHJcbiAgaWYgKCFjb25maWcuaG9zdHMgfHwgY29uZmlnLmhvc3RzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBob3N0cyBjb25maWd1cmVkJyk7XHJcbiAgfVxyXG5cclxuICBpZiAoY29uZmlnLnRpbWVvdXQgIT09IHVuZGVmaW5lZCAmJiBjb25maWcudGltZW91dCA8IDApIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0aW1lb3V0IHZhbHVlJyk7XHJcbiAgfVxyXG5cclxuICBpZiAoY29uZmlnLm1heFJlY3ZTaXplICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLm1heFJlY3ZTaXplIDw9IDApIHtcclxuICAgIGNvbmZpZy5tYXhSZWN2U2l6ZSA9IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplO1xyXG4gIH1cclxuXHJcbiAgaWYgKGNvbmZpZy5wb29sU2l6ZSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5wb29sU2l6ZSA8PSAwKSB7XHJcbiAgICBjb25maWcucG9vbFNpemUgPSBERUZBVUxUX0NPTkZJRy5wb29sU2l6ZTtcclxuICB9XHJcbn1cclxuXHJcbi8qKiBDcmVhdGUgYSBjb25maWd1cmF0aW9uIHdpdGggZGVmYXVsdHMgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZyhvcHRpb25zOiBQYXJ0aWFsPEdxbGRiQ29uZmlnPiA9IHt9KTogR3FsZGJDb25maWcge1xyXG4gIGNvbnN0IGNvbmZpZzogR3FsZGJDb25maWcgPSB7XHJcbiAgICBob3N0czogb3B0aW9ucy5ob3N0cyA/PyBERUZBVUxUX0NPTkZJRy5ob3N0cyxcclxuICAgIHVzZXJuYW1lOiBvcHRpb25zLnVzZXJuYW1lLFxyXG4gICAgcGFzc3dvcmQ6IG9wdGlvbnMucGFzc3dvcmQsXHJcbiAgICBkZWZhdWx0R3JhcGg6IG9wdGlvbnMuZGVmYXVsdEdyYXBoLFxyXG4gICAgdGltZW91dDogb3B0aW9ucy50aW1lb3V0ID8/IERFRkFVTFRfQ09ORklHLnRpbWVvdXQsXHJcbiAgICBtYXhSZWN2U2l6ZTogb3B0aW9ucy5tYXhSZWN2U2l6ZSA/PyBERUZBVUxUX0NPTkZJRy5tYXhSZWN2U2l6ZSxcclxuICAgIHRsc09wdGlvbnM6IG9wdGlvbnMudGxzT3B0aW9ucyxcclxuICAgIHBvb2xTaXplOiBvcHRpb25zLnBvb2xTaXplID8/IERFRkFVTFRfQ09ORklHLnBvb2xTaXplLFxyXG4gICAgaGVhbHRoQ2hlY2tJbnRlcnZhbDogb3B0aW9ucy5oZWFsdGhDaGVja0ludGVydmFsID8/IERFRkFVTFRfQ09ORklHLmhlYWx0aENoZWNrSW50ZXJ2YWwsXHJcbiAgICByZXRyeUNvdW50OiBvcHRpb25zLnJldHJ5Q291bnQgPz8gREVGQVVMVF9DT05GSUcucmV0cnlDb3VudCxcclxuICAgIHJldHJ5RGVsYXk6IG9wdGlvbnMucmV0cnlEZWxheSA/PyBERUZBVUxUX0NPTkZJRy5yZXRyeURlbGF5LFxyXG4gIH07XHJcblxyXG4gIHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XHJcbiAgcmV0dXJuIGNvbmZpZztcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection management for GQLDB Node.js driver.
|
|
3
|
+
*/
|
|
4
|
+
import * as grpc from '@grpc/grpc-js';
|
|
5
|
+
import { GqldbConfig } from './config';
|
|
6
|
+
/** Manages a pool of connections to GQLDB servers */
|
|
7
|
+
export declare class ConnectionPool {
|
|
8
|
+
private config;
|
|
9
|
+
private connections;
|
|
10
|
+
private closed;
|
|
11
|
+
private healthCheckTimer?;
|
|
12
|
+
constructor(config: GqldbConfig);
|
|
13
|
+
private initConnections;
|
|
14
|
+
private createConnection;
|
|
15
|
+
/** Get a healthy connection from the pool */
|
|
16
|
+
getConnection(): grpc.Client;
|
|
17
|
+
/** Get a connection for a specific host */
|
|
18
|
+
getConnectionForHost(host: string): grpc.Client;
|
|
19
|
+
private startHealthCheck;
|
|
20
|
+
private checkHealth;
|
|
21
|
+
private reconnect;
|
|
22
|
+
/** Close all connections in the pool */
|
|
23
|
+
close(): void;
|
|
24
|
+
/** Get the number of healthy hosts */
|
|
25
|
+
healthyHostCount(): number;
|
|
26
|
+
/** Get the list of configured hosts */
|
|
27
|
+
hosts(): string[];
|
|
28
|
+
/** Check if the pool is closed */
|
|
29
|
+
isClosed(): boolean;
|
|
30
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Connection management for GQLDB Node.js driver.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.ConnectionPool = void 0;
|
|
40
|
+
const grpc = __importStar(require("@grpc/grpc-js"));
|
|
41
|
+
const errors_1 = require("./errors");
|
|
42
|
+
/** Manages a pool of connections to GQLDB servers */
|
|
43
|
+
class ConnectionPool {
|
|
44
|
+
config;
|
|
45
|
+
connections = new Map();
|
|
46
|
+
closed = false;
|
|
47
|
+
healthCheckTimer;
|
|
48
|
+
constructor(config) {
|
|
49
|
+
this.config = config;
|
|
50
|
+
this.initConnections();
|
|
51
|
+
this.startHealthCheck();
|
|
52
|
+
}
|
|
53
|
+
initConnections() {
|
|
54
|
+
for (const host of this.config.hosts) {
|
|
55
|
+
try {
|
|
56
|
+
const conn = this.createConnection(host);
|
|
57
|
+
this.connections.set(host, conn);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
// Continue with other hosts
|
|
61
|
+
console.error(`Failed to connect to ${host}:`, e);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (this.connections.size === 0) {
|
|
65
|
+
throw new errors_1.AllHostsFailedError();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
createConnection(host) {
|
|
69
|
+
let credentials;
|
|
70
|
+
if (this.config.tlsOptions) {
|
|
71
|
+
credentials = grpc.credentials.createSsl();
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
credentials = grpc.credentials.createInsecure();
|
|
75
|
+
}
|
|
76
|
+
const options = {
|
|
77
|
+
'grpc.max_receive_message_length': this.config.maxRecvSize ?? 4 * 1024 * 1024,
|
|
78
|
+
'grpc.keepalive_time_ms': 30000,
|
|
79
|
+
'grpc.keepalive_timeout_ms': 10000,
|
|
80
|
+
'grpc.keepalive_permit_without_calls': 1,
|
|
81
|
+
};
|
|
82
|
+
// Create a generic client for the channel
|
|
83
|
+
const client = new grpc.Client(host, credentials, options);
|
|
84
|
+
return {
|
|
85
|
+
host,
|
|
86
|
+
client,
|
|
87
|
+
healthy: true,
|
|
88
|
+
lastPing: Date.now(),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/** Get a healthy connection from the pool */
|
|
92
|
+
getConnection() {
|
|
93
|
+
if (this.closed) {
|
|
94
|
+
throw new errors_1.ConnectionClosedError();
|
|
95
|
+
}
|
|
96
|
+
for (const conn of this.connections.values()) {
|
|
97
|
+
if (conn.healthy) {
|
|
98
|
+
return conn.client;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
throw new errors_1.NoConnectionError();
|
|
102
|
+
}
|
|
103
|
+
/** Get a connection for a specific host */
|
|
104
|
+
getConnectionForHost(host) {
|
|
105
|
+
const conn = this.connections.get(host);
|
|
106
|
+
if (!conn || !conn.healthy) {
|
|
107
|
+
throw new errors_1.NoConnectionError();
|
|
108
|
+
}
|
|
109
|
+
return conn.client;
|
|
110
|
+
}
|
|
111
|
+
startHealthCheck() {
|
|
112
|
+
const interval = this.config.healthCheckInterval ?? 30000;
|
|
113
|
+
if (interval > 0) {
|
|
114
|
+
this.healthCheckTimer = setInterval(() => this.checkHealth(), interval);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
checkHealth() {
|
|
118
|
+
for (const [host, conn] of this.connections) {
|
|
119
|
+
const state = conn.client.getChannel().getConnectivityState(false);
|
|
120
|
+
const healthy = state === grpc.connectivityState.READY ||
|
|
121
|
+
state === grpc.connectivityState.IDLE;
|
|
122
|
+
conn.healthy = healthy;
|
|
123
|
+
if (healthy) {
|
|
124
|
+
conn.lastPing = Date.now();
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.reconnect(host);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async reconnect(host) {
|
|
132
|
+
if (this.closed)
|
|
133
|
+
return;
|
|
134
|
+
const oldConn = this.connections.get(host);
|
|
135
|
+
if (oldConn) {
|
|
136
|
+
try {
|
|
137
|
+
oldConn.client.close();
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
// Ignore
|
|
141
|
+
}
|
|
142
|
+
this.connections.delete(host);
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
const newConn = this.createConnection(host);
|
|
146
|
+
this.connections.set(host, newConn);
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
// Log and continue
|
|
150
|
+
console.error(`Failed to reconnect to ${host}:`, e);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** Close all connections in the pool */
|
|
154
|
+
close() {
|
|
155
|
+
if (this.closed)
|
|
156
|
+
return;
|
|
157
|
+
this.closed = true;
|
|
158
|
+
if (this.healthCheckTimer) {
|
|
159
|
+
clearInterval(this.healthCheckTimer);
|
|
160
|
+
}
|
|
161
|
+
for (const conn of this.connections.values()) {
|
|
162
|
+
try {
|
|
163
|
+
conn.client.close();
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
// Ignore
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
this.connections.clear();
|
|
170
|
+
}
|
|
171
|
+
/** Get the number of healthy hosts */
|
|
172
|
+
healthyHostCount() {
|
|
173
|
+
let count = 0;
|
|
174
|
+
for (const conn of this.connections.values()) {
|
|
175
|
+
if (conn.healthy)
|
|
176
|
+
count++;
|
|
177
|
+
}
|
|
178
|
+
return count;
|
|
179
|
+
}
|
|
180
|
+
/** Get the list of configured hosts */
|
|
181
|
+
hosts() {
|
|
182
|
+
return Array.from(this.connections.keys());
|
|
183
|
+
}
|
|
184
|
+
/** Check if the pool is closed */
|
|
185
|
+
isClosed() {
|
|
186
|
+
return this.closed;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.ConnectionPool = ConnectionPool;
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLHFDQUF5RjtBQVV6RixxREFBcUQ7QUFDckQsTUFBYSxjQUFjO0lBQ2pCLE1BQU0sQ0FBYztJQUNwQixXQUFXLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakQsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLGdCQUFnQixDQUFrQjtJQUUxQyxZQUFZLE1BQW1CO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZTtRQUNyQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLDRCQUE0QjtnQkFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSw0QkFBbUIsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENB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SSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxTQUFTO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsZ0JBQWdCO1FBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxJQUFJLENBQUMsT0FBTztnQkFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLEtBQUs7UUFDSCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFsS0Qsd0NBa0tDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvbm5lY3Rpb24gbWFuYWdlbWVudCBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXHJcbiAqL1xyXG5cclxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcclxuaW1wb3J0IHsgR3FsZGJDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IEFsbEhvc3RzRmFpbGVkRXJyb3IsIENvbm5lY3Rpb25DbG9zZWRFcnJvciwgTm9Db25uZWN0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIHNpbmdsZSBnUlBDIGNvbm5lY3Rpb24gKi9cclxuaW50ZXJmYWNlIENvbm5lY3Rpb24ge1xyXG4gIGhvc3Q6IHN0cmluZztcclxuICBjbGllbnQ6IGdycGMuQ2xpZW50O1xyXG4gIGhlYWx0aHk6IGJvb2xlYW47XHJcbiAgbGFzdFBpbmc6IG51bWJlcjtcclxufVxyXG5cclxuLyoqIE1hbmFnZXMgYSBwb29sIG9mIGNvbm5lY3Rpb25zIHRvIEdRTERCIHNlcnZlcnMgKi9cclxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25Qb29sIHtcclxuICBwcml2YXRlIGNvbmZpZzogR3FsZGJDb25maWc7XHJcbiAgcHJpdmF0ZSBjb25uZWN0aW9uczogTWFwPHN0cmluZywgQ29ubmVjdGlvbj4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBjbG9zZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIGhlYWx0aENoZWNrVGltZXI/OiBOb2RlSlMuVGltZW91dDtcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBHcWxkYkNvbmZpZykge1xyXG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XHJcbiAgICB0aGlzLmluaXRDb25uZWN0aW9ucygpO1xyXG4gICAgdGhpcy5zdGFydEhlYWx0aENoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDb25uZWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgaG9zdCBvZiB0aGlzLmNvbmZpZy5ob3N0cykge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGNvbm4gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oaG9zdCk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoaG9zdCwgY29ubik7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBDb250aW51ZSB3aXRoIG90aGVyIGhvc3RzXHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbm5lY3QgdG8gJHtob3N0fTpgLCBlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25zLnNpemUgPT09IDApIHtcclxuICAgICAgdGhyb3cgbmV3IEFsbEhvc3RzRmFpbGVkRXJyb3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ29ubmVjdGlvbihob3N0OiBzdHJpbmcpOiBDb25uZWN0aW9uIHtcclxuICAgIGxldCBjcmVkZW50aWFsczogZ3JwYy5DaGFubmVsQ3JlZGVudGlhbHM7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnRsc09wdGlvbnMpIHtcclxuICAgICAgY3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY3JlZGVudGlhbHMgPSBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb3B0aW9uczogZ3JwYy5DaGFubmVsT3B0aW9ucyA9IHtcclxuICAgICAgJ2dycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGgnOiB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA/PyA0ICogMTAyNCAqIDEwMjQsXHJcbiAgICAgICdncnBjLmtlZXBhbGl2ZV90aW1lX21zJzogMzAwMDAsXHJcbiAgICAgICdncnBjLmtlZXBhbGl2ZV90aW1lb3V0X21zJzogMTAwMDAsXHJcbiAgICAgICdncnBjLmtlZXBhbGl2ZV9wZXJtaXRfd2l0aG91dF9jYWxscyc6IDEsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIGdlbmVyaWMgY2xpZW50IGZvciB0aGUgY2hhbm5lbFxyXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IGdycGMuQ2xpZW50KGhvc3QsIGNyZWRlbnRpYWxzLCBvcHRpb25zKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBob3N0LFxyXG4gICAgICBjbGllbnQsXHJcbiAgICAgIGhlYWx0aHk6IHRydWUsXHJcbiAgICAgIGxhc3RQaW5nOiBEYXRlLm5vdygpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBHZXQgYSBoZWFsdGh5IGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbCAqL1xyXG4gIGdldENvbm5lY3Rpb24oKTogZ3JwYy5DbGllbnQge1xyXG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XHJcbiAgICAgIHRocm93IG5ldyBDb25uZWN0aW9uQ2xvc2VkRXJyb3IoKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbm4gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xyXG4gICAgICBpZiAoY29ubi5oZWFsdGh5KSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbm4uY2xpZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XHJcbiAgfVxyXG5cclxuICAvKiogR2V0IGEgY29ubmVjdGlvbiBmb3IgYSBzcGVjaWZpYyBob3N0ICovXHJcbiAgZ2V0Q29ubmVjdGlvbkZvckhvc3QoaG9zdDogc3RyaW5nKTogZ3JwYy5DbGllbnQge1xyXG4gICAgY29uc3QgY29ubiA9IHRoaXMuY29ubmVjdGlvbnMuZ2V0KGhvc3QpO1xyXG4gICAgaWYgKCFjb25uIHx8ICFjb25uLmhlYWx0aHkpIHtcclxuICAgICAgdGhyb3cgbmV3IE5vQ29ubmVjdGlvbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29ubi5jbGllbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0SGVhbHRoQ2hlY2soKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gMzAwMDA7XHJcbiAgICBpZiAoaW50ZXJ2YWwgPiAwKSB7XHJcbiAgICAgIHRoaXMuaGVhbHRoQ2hlY2tUaW1lciA9IHNldEludGVydmFsKCgpID0+IHRoaXMuY2hlY2tIZWFsdGgoKSwgaW50ZXJ2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0hlYWx0aCgpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgW2hvc3QsIGNvbm5dIG9mIHRoaXMuY29ubmVjdGlvbnMpIHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSBjb25uLmNsaWVudC5nZXRDaGFubmVsKCkuZ2V0Q29ubmVjdGl2aXR5U3RhdGUoZmFsc2UpO1xyXG4gICAgICBjb25zdCBoZWFsdGh5ID0gc3RhdGUgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuUkVBRFkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPT09IGdycGMuY29ubmVjdGl2aXR5U3RhdGUuSURMRTtcclxuXHJcbiAgICAgIGNvbm4uaGVhbHRoeSA9IGhlYWx0aHk7XHJcbiAgICAgIGlmIChoZWFsdGh5KSB7XHJcbiAgICAgICAgY29ubi5sYXN0UGluZyA9IERhdGUubm93KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZWNvbm5lY3QoaG9zdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVjb25uZWN0KGhvc3Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgb2xkQ29ubiA9IHRoaXMuY29ubmVjdGlvbnMuZ2V0KGhvc3QpO1xyXG4gICAgaWYgKG9sZENvbm4pIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBvbGRDb25uLmNsaWVudC5jbG9zZSgpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gSWdub3JlXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb25uZWN0aW9ucy5kZWxldGUoaG9zdCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbmV3Q29ubiA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbihob3N0KTtcclxuICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoaG9zdCwgbmV3Q29ubik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIExvZyBhbmQgY29udGludWVcclxuICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHJlY29ubmVjdCB0byAke2hvc3R9OmAsIGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIENsb3NlIGFsbCBjb25uZWN0aW9ucyBpbiB0aGUgcG9vbCAqL1xyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLmhlYWx0aENoZWNrVGltZXIpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhlYWx0aENoZWNrVGltZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgY29ubiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29ubi5jbGllbnQuY2xvc2UoKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIElnbm9yZVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9ucy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldCB0aGUgbnVtYmVyIG9mIGhlYWx0aHkgaG9zdHMgKi9cclxuICBoZWFsdGh5SG9zdENvdW50KCk6IG51bWJlciB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgZm9yIChjb25zdCBjb25uIG9mIHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpIHtcclxuICAgICAgaWYgKGNvbm4uaGVhbHRoeSkgY291bnQrKztcclxuICAgIH1cclxuICAgIHJldHVybiBjb3VudDtcclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdGhlIGxpc3Qgb2YgY29uZmlndXJlZCBob3N0cyAqL1xyXG4gIGhvc3RzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29ubmVjdGlvbnMua2V5cygpKTtcclxuICB9XHJcblxyXG4gIC8qKiBDaGVjayBpZiB0aGUgcG9vbCBpcyBjbG9zZWQgKi9cclxuICBpc0Nsb3NlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNsb3NlZDtcclxuICB9XHJcbn1cclxuIl19
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error definitions for GQLDB Node.js driver.
|
|
3
|
+
*/
|
|
4
|
+
/** Base error class for GQLDB errors */
|
|
5
|
+
export declare class GqldbError extends Error {
|
|
6
|
+
readonly code: number;
|
|
7
|
+
readonly cause?: Error | undefined;
|
|
8
|
+
constructor(message: string, code?: number, cause?: Error | undefined);
|
|
9
|
+
}
|
|
10
|
+
export declare class NoHostsError extends GqldbError {
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
13
|
+
export declare class InvalidTimeoutError extends GqldbError {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
export declare class NoConnectionError extends GqldbError {
|
|
17
|
+
constructor();
|
|
18
|
+
}
|
|
19
|
+
export declare class ConnectionClosedError extends GqldbError {
|
|
20
|
+
constructor();
|
|
21
|
+
}
|
|
22
|
+
export declare class ConnectionFailedError extends GqldbError {
|
|
23
|
+
constructor(message?: string, cause?: Error);
|
|
24
|
+
}
|
|
25
|
+
export declare class AllHostsFailedError extends GqldbError {
|
|
26
|
+
constructor();
|
|
27
|
+
}
|
|
28
|
+
export declare class HealthCheckFailedError extends GqldbError {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
export declare class NotLoggedInError extends GqldbError {
|
|
32
|
+
constructor();
|
|
33
|
+
}
|
|
34
|
+
export declare class LoginFailedError extends GqldbError {
|
|
35
|
+
constructor(message?: string, cause?: Error);
|
|
36
|
+
}
|
|
37
|
+
export declare class LogoutFailedError extends GqldbError {
|
|
38
|
+
constructor(message?: string, cause?: Error);
|
|
39
|
+
}
|
|
40
|
+
export declare class SessionExpiredError extends GqldbError {
|
|
41
|
+
constructor();
|
|
42
|
+
}
|
|
43
|
+
export declare class InvalidSessionError extends GqldbError {
|
|
44
|
+
constructor();
|
|
45
|
+
}
|
|
46
|
+
export declare class NoTransactionError extends GqldbError {
|
|
47
|
+
constructor();
|
|
48
|
+
}
|
|
49
|
+
export declare class TransactionFailedError extends GqldbError {
|
|
50
|
+
constructor(message?: string, cause?: Error);
|
|
51
|
+
}
|
|
52
|
+
export declare class TransactionNotFoundError extends GqldbError {
|
|
53
|
+
constructor();
|
|
54
|
+
}
|
|
55
|
+
export declare class TransactionAlreadyOpenError extends GqldbError {
|
|
56
|
+
constructor();
|
|
57
|
+
}
|
|
58
|
+
export declare class QueryFailedError extends GqldbError {
|
|
59
|
+
constructor(message?: string, cause?: Error);
|
|
60
|
+
}
|
|
61
|
+
export declare class QueryTimeoutError extends GqldbError {
|
|
62
|
+
constructor();
|
|
63
|
+
}
|
|
64
|
+
export declare class InvalidQueryError extends GqldbError {
|
|
65
|
+
constructor(message?: string);
|
|
66
|
+
}
|
|
67
|
+
export declare class EmptyQueryError extends GqldbError {
|
|
68
|
+
constructor();
|
|
69
|
+
}
|
|
70
|
+
export declare class GraphNotFoundError extends GqldbError {
|
|
71
|
+
constructor(graphName?: string);
|
|
72
|
+
}
|
|
73
|
+
export declare class GraphExistsError extends GqldbError {
|
|
74
|
+
constructor(graphName?: string);
|
|
75
|
+
}
|
|
76
|
+
export declare class CreateGraphFailedError extends GqldbError {
|
|
77
|
+
constructor(message?: string, cause?: Error);
|
|
78
|
+
}
|
|
79
|
+
export declare class DropGraphFailedError extends GqldbError {
|
|
80
|
+
constructor(message?: string, cause?: Error);
|
|
81
|
+
}
|
|
82
|
+
export declare class InsertFailedError extends GqldbError {
|
|
83
|
+
constructor(message?: string, cause?: Error);
|
|
84
|
+
}
|
|
85
|
+
export declare class DeleteFailedError extends GqldbError {
|
|
86
|
+
constructor(message?: string, cause?: Error);
|
|
87
|
+
}
|
|
88
|
+
export declare class ExportFailedError extends GqldbError {
|
|
89
|
+
constructor(message?: string, cause?: Error);
|
|
90
|
+
}
|
|
91
|
+
export declare class InvalidTypeError extends GqldbError {
|
|
92
|
+
constructor(message?: string);
|
|
93
|
+
}
|
|
94
|
+
export declare class TypeConversionError extends GqldbError {
|
|
95
|
+
constructor(message?: string);
|
|
96
|
+
}
|
|
97
|
+
export declare class UnsupportedTypeError extends GqldbError {
|
|
98
|
+
constructor(typeName?: string);
|
|
99
|
+
}
|