@ultipa-graph/ultipa-driver 6.0.14 → 6.0.15
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 -1
- package/dist/client.js +70 -3
- package/dist/config.d.ts +9 -1
- package/dist/config.js +1 -1
- package/dist/services/data-service.d.ts +17 -0
- package/dist/services/data-service.js +54 -1
- package/dist/services/service-context.d.ts +13 -1
- package/dist/services/service-context.js +13 -2
- package/dist/transaction.d.ts +8 -1
- package/dist/transaction.js +3 -2
- package/dist/types/metadata.d.ts +13 -0
- package/dist/types/metadata.js +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -26,9 +26,17 @@ export interface GqldbConfig {
|
|
|
26
26
|
retryCount?: number;
|
|
27
27
|
/** Delay between retries in milliseconds (default 100ms) */
|
|
28
28
|
retryDelay?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Optional stable per-client logical session id used by the
|
|
31
|
+
* transaction-branch model (sent as `x-ultipa-session-id` metadata
|
|
32
|
+
* when §2.1 opt-in is enabled in TRANSACTIONS_DRIVER_GUIDE.md).
|
|
33
|
+
* When omitted, the driver auto-generates a random hex string at
|
|
34
|
+
* client construction time.
|
|
35
|
+
*/
|
|
36
|
+
sessionId?: string;
|
|
29
37
|
}
|
|
30
38
|
/** Default configuration values */
|
|
31
|
-
export declare const DEFAULT_CONFIG: Required<Omit<GqldbConfig, 'username' | 'password' | 'defaultGraph' | 'tlsOptions'>>;
|
|
39
|
+
export declare const DEFAULT_CONFIG: Required<Omit<GqldbConfig, 'username' | 'password' | 'defaultGraph' | 'tlsOptions' | 'sessionId'>>;
|
|
32
40
|
/** Builder for creating GqldbConfig */
|
|
33
41
|
export declare class ConfigBuilder {
|
|
34
42
|
private config;
|
package/dist/config.js
CHANGED
|
@@ -132,4 +132,4 @@ function createConfig(options = {}) {
|
|
|
132
132
|
validateConfig(config);
|
|
133
133
|
return config;
|
|
134
134
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQTJJSCx3Q0FnQkM7QUFHRCxvQ0FpQkM7QUFqSkQsbUNBQW1DO0FBQ3RCLFFBQUEsY0FBYyxHQUF5RjtJQUNsSCxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsT0FBTztJQUN0QyxRQUFRLEVBQUUsRUFBRTtJQUNaLG1CQUFtQixFQUFFLEtBQUssRUFBRSwrQkFBK0I7SUFDM0QsVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVE7Q0FDMUIsQ0FBQztBQUVGLHVDQUF1QztBQUN2QyxNQUFhLGFBQWE7SUFDaEIsTUFBTSxHQUF5QixFQUFFLENBQUM7SUFFMUMsMkJBQTJCO0lBQzNCLEtBQUssQ0FBQyxHQUFHLEtBQWU7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLENB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T0FBTyxDQUFDLFVBQVUsSUFBSSxzQkFBYyxDQUFDLFVBQVU7UUFDM0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksc0JBQWMsQ0FBQyxVQUFVO0tBQzVELENBQUM7SUFFRixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0ICogYXMgdGxzIGZyb20gJ3Rscyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdxbGRiQ2xpZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIEdxbGRiQ29uZmlnIHtcbiAgLyoqIFNlcnZlciBob3N0cyBpbiBmb3JtYXQgXCJob3N0OnBvcnRcIiAqL1xuICBob3N0czogc3RyaW5nW107XG4gIC8qKiBVc2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIC8qKiBQYXNzd29yZCBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IGdyYXBoIHRvIHVzZSAqL1xuICBkZWZhdWx0R3JhcGg/OiBzdHJpbmc7XG4gIC8qKiBRdWVyeSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZWNlaXZlIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcyAoZGVmYXVsdCA2NE1CKSAqL1xuICBtYXhSZWN2U2l6ZT86IG51bWJlcjtcbiAgLyoqIFRMUyBvcHRpb25zIGZvciBzZWN1cmUgY29ubmVjdGlvbnMgKi9cbiAgdGxzT3B0aW9ucz86IHRscy5Db25uZWN0aW9uT3B0aW9ucztcbiAgLyoqIENvbm5lY3Rpb24gcG9vbCBzaXplIHBlciBob3N0ICovXG4gIHBvb2xTaXplPzogbnVtYmVyO1xuICAvKiogSGVhbHRoIGNoZWNrIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICBoZWFsdGhDaGVja0ludGVydmFsPzogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHJldHJpZXMgZm9yIGZhaWxlZCByZXF1ZXN0cyAqL1xuICByZXRyeUNvdW50PzogbnVtYmVyO1xuICAvKiogRGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAxMDBtcykgKi9cbiAgcmV0cnlEZWxheT86IG51bWJlcjtcbn1cblxuLyoqIERlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJRzogUmVxdWlyZWQ8T21pdDxHcWxkYkNvbmZpZywgJ3VzZXJuYW1lJyB8ICdwYXNzd29yZCcgfCAnZGVmYXVsdEdyYXBoJyB8ICd0bHNPcHRpb25zJz4+ID0ge1xuICBob3N0czogWydsb2NhbGhvc3Q6OTAwMCddLFxuICB0aW1lb3V0OiAzMDAwMCwgLy8gMzAgc2Vjb25kcyAoaW4gbWlsbGlzZWNvbmRzKVxuICBtYXhSZWN2U2l6ZTogNjQgKiAxMDI0ICogMTAyNCwgLy8gNjRNQlxuICBwb29sU2l6ZTogMTAsXG4gIGhlYWx0aENoZWNrSW50ZXJ2YWw6IDMwMDAwLCAvLyAzMCBzZWNvbmRzIChpbiBtaWxsaXNlY29uZHMpXG4gIHJldHJ5Q291bnQ6IDMsXG4gIHJldHJ5RGVsYXk6IDEwMCwgLy8gMTAwbXNcbn07XG5cbi8qKiBCdWlsZGVyIGZvciBjcmVhdGluZyBHcWxkYkNvbmZpZyAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZ0J1aWxkZXIge1xuICBwcml2YXRlIGNvbmZpZzogUGFydGlhbDxHcWxkYkNvbmZpZz4gPSB7fTtcblxuICAvKiogU2V0IHRoZSBzZXJ2ZXIgaG9zdHMgKi9cbiAgaG9zdHMoLi4uaG9zdHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcuaG9zdHMgPSBob3N0cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHVzZXJuYW1lIGZvciBhdXRoZW50aWNhdGlvbiAqL1xuICB1c2VybmFtZSh1c2VybmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcudXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGlvbiAqL1xuICBwYXNzd29yZChwYXNzd29yZDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcucGFzc3dvcmQgPSBwYXNzd29yZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGRlZmF1bHQgZ3JhcGggKi9cbiAgZGVmYXVsdEdyYXBoKGdyYXBoOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5kZWZhdWx0R3JhcGggPSBncmFwaDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHF1ZXJ5IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXG4gIHRpbWVvdXQobXM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnRpbWVvdXQgPSBtcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHF1ZXJ5IHRpbWVvdXQgaW4gc2Vjb25kcyAoY29udmVuaWVuY2UgbWV0aG9kKSAqL1xuICB0aW1lb3V0U2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy50aW1lb3V0ID0gc2Vjb25kcyAqIDEwMDA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBtYXhpbXVtIHJlY2VpdmUgbWVzc2FnZSBzaXplICovXG4gIG1heFJlY3ZTaXplKGJ5dGVzOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA9IGJ5dGVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCBUTFMgb3B0aW9ucyAqL1xuICB0bHMob3B0aW9uczogdGxzLkNvbm5lY3Rpb25PcHRpb25zKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcudGxzT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBjb25uZWN0aW9uIHBvb2wgc2l6ZSBwZXIgaG9zdCAqL1xuICBwb29sU2l6ZShzaXplOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5wb29sU2l6ZSA9IHNpemU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBoZWFsdGggY2hlY2sgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzICovXG4gIGhlYWx0aENoZWNrSW50ZXJ2YWwobXM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPSBtcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIG51bWJlciBvZiByZXRyaWVzICovXG4gIHJldHJ5Q291bnQoY291bnQ6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnJldHJ5Q291bnQgPSBjb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGRlbGF5IGJldHdlZW4gcmV0cmllcyBpbiBtaWxsaXNlY29uZHMgKi9cbiAgcmV0cnlEZWxheShtczogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcucmV0cnlEZWxheSA9IG1zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEJ1aWxkIGFuZCByZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gKi9cbiAgYnVpbGQoKTogR3FsZGJDb25maWcge1xuICAgIGNvbnN0IGNvbmZpZzogR3FsZGJDb25maWcgPSB7XG4gICAgICBob3N0czogdGhpcy5jb25maWcuaG9zdHMgPz8gREVGQVVMVF9DT05GSUcuaG9zdHMsXG4gICAgICB1c2VybmFtZTogdGhpcy5jb25maWcudXNlcm5hbWUsXG4gICAgICBwYXNzd29yZDogdGhpcy5jb25maWcucGFzc3dvcmQsXG4gICAgICBkZWZhdWx0R3JhcGg6IHRoaXMuY29uZmlnLmRlZmF1bHRHcmFwaCxcbiAgICAgIHRpbWVvdXQ6IHRoaXMuY29uZmlnLnRpbWVvdXQgPz8gREVGQVVMVF9DT05GSUcudGltZW91dCxcbiAgICAgIG1heFJlY3ZTaXplOiB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA/PyBERUZBVUxUX0NPTkZJRy5tYXhSZWN2U2l6ZSxcbiAgICAgIHRsc09wdGlvbnM6IHRoaXMuY29uZmlnLnRsc09wdGlvbnMsXG4gICAgICBwb29sU2l6ZTogdGhpcy5jb25maWcucG9vbFNpemUgPz8gREVGQVVMVF9DT05GSUcucG9vbFNpemUsXG4gICAgICBoZWFsdGhDaGVja0ludGVydmFsOiB0aGlzLmNvbmZpZy5oZWFsdGhDaGVja0ludGVydmFsID8/IERFRkFVTFRfQ09ORklHLmhlYWx0aENoZWNrSW50ZXJ2YWwsXG4gICAgICByZXRyeUNvdW50OiB0aGlzLmNvbmZpZy5yZXRyeUNvdW50ID8/IERFRkFVTFRfQ09ORklHLnJldHJ5Q291bnQsXG4gICAgICByZXRyeURlbGF5OiB0aGlzLmNvbmZpZy5yZXRyeURlbGF5ID8/IERFRkFVTFRfQ09ORklHLnJldHJ5RGVsYXksXG4gICAgfTtcblxuICAgIHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxufVxuXG4vKiogVmFsaWRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IEdxbGRiQ29uZmlnKTogdm9pZCB7XG4gIGlmICghY29uZmlnLmhvc3RzIHx8IGNvbmZpZy5ob3N0cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGhvc3RzIGNvbmZpZ3VyZWQnKTtcbiAgfVxuXG4gIGlmIChjb25maWcudGltZW91dCAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy50aW1lb3V0IDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0aW1lb3V0IHZhbHVlJyk7XG4gIH1cblxuICBpZiAoY29uZmlnLm1heFJlY3ZTaXplICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLm1heFJlY3ZTaXplIDw9IDApIHtcbiAgICBjb25maWcubWF4UmVjdlNpemUgPSBERUZBVUxUX0NPTkZJRy5tYXhSZWN2U2l6ZTtcbiAgfVxuXG4gIGlmIChjb25maWcucG9vbFNpemUgIT09IHVuZGVmaW5lZCAmJiBjb25maWcucG9vbFNpemUgPD0gMCkge1xuICAgIGNvbmZpZy5wb29sU2l6ZSA9IERFRkFVTFRfQ09ORklHLnBvb2xTaXplO1xuICB9XG59XG5cbi8qKiBDcmVhdGUgYSBjb25maWd1cmF0aW9uIHdpdGggZGVmYXVsdHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWcob3B0aW9uczogUGFydGlhbDxHcWxkYkNvbmZpZz4gPSB7fSk6IEdxbGRiQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnOiBHcWxkYkNvbmZpZyA9IHtcbiAgICBob3N0czogb3B0aW9ucy5ob3N0cyA/PyBERUZBVUxUX0NPTkZJRy5ob3N0cyxcbiAgICB1c2VybmFtZTogb3B0aW9ucy51c2VybmFtZSxcbiAgICBwYXNzd29yZDogb3B0aW9ucy5wYXNzd29yZCxcbiAgICBkZWZhdWx0R3JhcGg6IG9wdGlvbnMuZGVmYXVsdEdyYXBoLFxuICAgIHRpbWVvdXQ6IG9wdGlvbnMudGltZW91dCA/PyBERUZBVUxUX0NPTkZJRy50aW1lb3V0LFxuICAgIG1heFJlY3ZTaXplOiBvcHRpb25zLm1heFJlY3ZTaXplID8/IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplLFxuICAgIHRsc09wdGlvbnM6IG9wdGlvbnMudGxzT3B0aW9ucyxcbiAgICBwb29sU2l6ZTogb3B0aW9ucy5wb29sU2l6ZSA/PyBERUZBVUxUX0NPTkZJRy5wb29sU2l6ZSxcbiAgICBoZWFsdGhDaGVja0ludGVydmFsOiBvcHRpb25zLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gREVGQVVMVF9DT05GSUcuaGVhbHRoQ2hlY2tJbnRlcnZhbCxcbiAgICByZXRyeUNvdW50OiBvcHRpb25zLnJldHJ5Q291bnQgPz8gREVGQVVMVF9DT05GSUcucmV0cnlDb3VudCxcbiAgICByZXRyeURlbGF5OiBvcHRpb25zLnJldHJ5RGVsYXkgPz8gREVGQVVMVF9DT05GSUcucmV0cnlEZWxheSxcbiAgfTtcblxuICB2YWxpZGF0ZUNvbmZpZyhjb25maWcpO1xuICByZXR1cm4gY29uZmlnO1xufVxuIl19
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQW1KSCx3Q0FnQkM7QUFHRCxvQ0FpQkM7QUFqSkQsbUNBQW1DO0FBQ3RCLFFBQUEsY0FBYyxHQUF1RztJQUNoSSxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsT0FBTztJQUN0QyxRQUFRLEVBQUUsRUFBRTtJQUNaLG1CQUFtQixFQUFFLEtBQUssRUFBRSwrQkFBK0I7SUFDM0QsVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVE7Q0FDMUIsQ0FBQztBQUVGLHVDQUF1QztBQUN2QyxNQUFhLGFBQWE7SUFDaEIsTUFBTSxHQUF5QixFQUFFLENBQUM7SUFFMUMsMkJBQTJCO0lBQzNCLEtBQUssQ0FBQyxHQUFHLEtBQWU7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLENB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T0FBTyxDQUFDLFVBQVUsSUFBSSxzQkFBYyxDQUFDLFVBQVU7UUFDM0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksc0JBQWMsQ0FBQyxVQUFVO0tBQzVELENBQUM7SUFFRixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0ICogYXMgdGxzIGZyb20gJ3Rscyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdxbGRiQ2xpZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIEdxbGRiQ29uZmlnIHtcbiAgLyoqIFNlcnZlciBob3N0cyBpbiBmb3JtYXQgXCJob3N0OnBvcnRcIiAqL1xuICBob3N0czogc3RyaW5nW107XG4gIC8qKiBVc2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIC8qKiBQYXNzd29yZCBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IGdyYXBoIHRvIHVzZSAqL1xuICBkZWZhdWx0R3JhcGg/OiBzdHJpbmc7XG4gIC8qKiBRdWVyeSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZWNlaXZlIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcyAoZGVmYXVsdCA2NE1CKSAqL1xuICBtYXhSZWN2U2l6ZT86IG51bWJlcjtcbiAgLyoqIFRMUyBvcHRpb25zIGZvciBzZWN1cmUgY29ubmVjdGlvbnMgKi9cbiAgdGxzT3B0aW9ucz86IHRscy5Db25uZWN0aW9uT3B0aW9ucztcbiAgLyoqIENvbm5lY3Rpb24gcG9vbCBzaXplIHBlciBob3N0ICovXG4gIHBvb2xTaXplPzogbnVtYmVyO1xuICAvKiogSGVhbHRoIGNoZWNrIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICBoZWFsdGhDaGVja0ludGVydmFsPzogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHJldHJpZXMgZm9yIGZhaWxlZCByZXF1ZXN0cyAqL1xuICByZXRyeUNvdW50PzogbnVtYmVyO1xuICAvKiogRGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAxMDBtcykgKi9cbiAgcmV0cnlEZWxheT86IG51bWJlcjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN0YWJsZSBwZXItY2xpZW50IGxvZ2ljYWwgc2Vzc2lvbiBpZCB1c2VkIGJ5IHRoZVxuICAgKiB0cmFuc2FjdGlvbi1icmFuY2ggbW9kZWwgKHNlbnQgYXMgYHgtdWx0aXBhLXNlc3Npb24taWRgIG1ldGFkYXRhXG4gICAqIHdoZW4gwqcyLjEgb3B0LWluIGlzIGVuYWJsZWQgaW4gVFJBTlNBQ1RJT05TX0RSSVZFUl9HVUlERS5tZCkuXG4gICAqIFdoZW4gb21pdHRlZCwgdGhlIGRyaXZlciBhdXRvLWdlbmVyYXRlcyBhIHJhbmRvbSBoZXggc3RyaW5nIGF0XG4gICAqIGNsaWVudCBjb25zdHJ1Y3Rpb24gdGltZS5cbiAgICovXG4gIHNlc3Npb25JZD86IHN0cmluZztcbn1cblxuLyoqIERlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJRzogUmVxdWlyZWQ8T21pdDxHcWxkYkNvbmZpZywgJ3VzZXJuYW1lJyB8ICdwYXNzd29yZCcgfCAnZGVmYXVsdEdyYXBoJyB8ICd0bHNPcHRpb25zJyB8ICdzZXNzaW9uSWQnPj4gPSB7XG4gIGhvc3RzOiBbJ2xvY2FsaG9zdDo5MDAwJ10sXG4gIHRpbWVvdXQ6IDMwMDAwLCAvLyAzMCBzZWNvbmRzIChpbiBtaWxsaXNlY29uZHMpXG4gIG1heFJlY3ZTaXplOiA2NCAqIDEwMjQgKiAxMDI0LCAvLyA2NE1CXG4gIHBvb2xTaXplOiAxMCxcbiAgaGVhbHRoQ2hlY2tJbnRlcnZhbDogMzAwMDAsIC8vIDMwIHNlY29uZHMgKGluIG1pbGxpc2Vjb25kcylcbiAgcmV0cnlDb3VudDogMyxcbiAgcmV0cnlEZWxheTogMTAwLCAvLyAxMDBtc1xufTtcblxuLyoqIEJ1aWxkZXIgZm9yIGNyZWF0aW5nIEdxbGRiQ29uZmlnICovXG5leHBvcnQgY2xhc3MgQ29uZmlnQnVpbGRlciB7XG4gIHByaXZhdGUgY29uZmlnOiBQYXJ0aWFsPEdxbGRiQ29uZmlnPiA9IHt9O1xuXG4gIC8qKiBTZXQgdGhlIHNlcnZlciBob3N0cyAqL1xuICBob3N0cyguLi5ob3N0czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5ob3N0cyA9IGhvc3RzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgdXNlcm5hbWUgZm9yIGF1dGhlbnRpY2F0aW9uICovXG4gIHVzZXJuYW1lKHVzZXJuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy51c2VybmFtZSA9IHVzZXJuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgcGFzc3dvcmQgZm9yIGF1dGhlbnRpY2F0aW9uICovXG4gIHBhc3N3b3JkKHBhc3N3b3JkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5wYXNzd29yZCA9IHBhc3N3b3JkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgZGVmYXVsdCBncmFwaCAqL1xuICBkZWZhdWx0R3JhcGgoZ3JhcGg6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLmRlZmF1bHRHcmFwaCA9IGdyYXBoO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgcXVlcnkgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKi9cbiAgdGltZW91dChtczogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcudGltZW91dCA9IG1zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgcXVlcnkgdGltZW91dCBpbiBzZWNvbmRzIChjb252ZW5pZW5jZSBtZXRob2QpICovXG4gIHRpbWVvdXRTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnRpbWVvdXQgPSBzZWNvbmRzICogMTAwMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIG1heGltdW0gcmVjZWl2ZSBtZXNzYWdlIHNpemUgKi9cbiAgbWF4UmVjdlNpemUoYnl0ZXM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID0gYnl0ZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IFRMUyBvcHRpb25zICovXG4gIHRscyhvcHRpb25zOiB0bHMuQ29ubmVjdGlvbk9wdGlvbnMpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy50bHNPcHRpb25zID0gb3B0aW9ucztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGNvbm5lY3Rpb24gcG9vbCBzaXplIHBlciBob3N0ICovXG4gIHBvb2xTaXplKHNpemU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnBvb2xTaXplID0gc2l6ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGhlYWx0aCBjaGVjayBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgKi9cbiAgaGVhbHRoQ2hlY2tJbnRlcnZhbChtczogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcuaGVhbHRoQ2hlY2tJbnRlcnZhbCA9IG1zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgbnVtYmVyIG9mIHJldHJpZXMgKi9cbiAgcmV0cnlDb3VudChjb3VudDogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcucmV0cnlDb3VudCA9IGNvdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgZGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1pbGxpc2Vjb25kcyAqL1xuICByZXRyeURlbGF5KG1zOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5yZXRyeURlbGF5ID0gbXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQnVpbGQgYW5kIHJldHVybiB0aGUgY29uZmlndXJhdGlvbiAqL1xuICBidWlsZCgpOiBHcWxkYkNvbmZpZyB7XG4gICAgY29uc3QgY29uZmlnOiBHcWxkYkNvbmZpZyA9IHtcbiAgICAgIGhvc3RzOiB0aGlzLmNvbmZpZy5ob3N0cyA/PyBERUZBVUxUX0NPTkZJRy5ob3N0cyxcbiAgICAgIHVzZXJuYW1lOiB0aGlzLmNvbmZpZy51c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmNvbmZpZy5wYXNzd29yZCxcbiAgICAgIGRlZmF1bHRHcmFwaDogdGhpcy5jb25maWcuZGVmYXVsdEdyYXBoLFxuICAgICAgdGltZW91dDogdGhpcy5jb25maWcudGltZW91dCA/PyBERUZBVUxUX0NPTkZJRy50aW1lb3V0LFxuICAgICAgbWF4UmVjdlNpemU6IHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID8/IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplLFxuICAgICAgdGxzT3B0aW9uczogdGhpcy5jb25maWcudGxzT3B0aW9ucyxcbiAgICAgIHBvb2xTaXplOiB0aGlzLmNvbmZpZy5wb29sU2l6ZSA/PyBERUZBVUxUX0NPTkZJRy5wb29sU2l6ZSxcbiAgICAgIGhlYWx0aENoZWNrSW50ZXJ2YWw6IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gREVGQVVMVF9DT05GSUcuaGVhbHRoQ2hlY2tJbnRlcnZhbCxcbiAgICAgIHJldHJ5Q291bnQ6IHRoaXMuY29uZmlnLnJldHJ5Q291bnQgPz8gREVGQVVMVF9DT05GSUcucmV0cnlDb3VudCxcbiAgICAgIHJldHJ5RGVsYXk6IHRoaXMuY29uZmlnLnJldHJ5RGVsYXkgPz8gREVGQVVMVF9DT05GSUcucmV0cnlEZWxheSxcbiAgICB9O1xuXG4gICAgdmFsaWRhdGVDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbi8qKiBWYWxpZGF0ZSB0aGUgY29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ29uZmlnKGNvbmZpZzogR3FsZGJDb25maWcpOiB2b2lkIHtcbiAgaWYgKCFjb25maWcuaG9zdHMgfHwgY29uZmlnLmhvc3RzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gaG9zdHMgY29uZmlndXJlZCcpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy50aW1lb3V0ICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLnRpbWVvdXQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRpbWVvdXQgdmFsdWUnKTtcbiAgfVxuXG4gIGlmIChjb25maWcubWF4UmVjdlNpemUgIT09IHVuZGVmaW5lZCAmJiBjb25maWcubWF4UmVjdlNpemUgPD0gMCkge1xuICAgIGNvbmZpZy5tYXhSZWN2U2l6ZSA9IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5wb29sU2l6ZSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5wb29sU2l6ZSA8PSAwKSB7XG4gICAgY29uZmlnLnBvb2xTaXplID0gREVGQVVMVF9DT05GSUcucG9vbFNpemU7XG4gIH1cbn1cblxuLyoqIENyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZyhvcHRpb25zOiBQYXJ0aWFsPEdxbGRiQ29uZmlnPiA9IHt9KTogR3FsZGJDb25maWcge1xuICBjb25zdCBjb25maWc6IEdxbGRiQ29uZmlnID0ge1xuICAgIGhvc3RzOiBvcHRpb25zLmhvc3RzID8/IERFRkFVTFRfQ09ORklHLmhvc3RzLFxuICAgIHVzZXJuYW1lOiBvcHRpb25zLnVzZXJuYW1lLFxuICAgIHBhc3N3b3JkOiBvcHRpb25zLnBhc3N3b3JkLFxuICAgIGRlZmF1bHRHcmFwaDogb3B0aW9ucy5kZWZhdWx0R3JhcGgsXG4gICAgdGltZW91dDogb3B0aW9ucy50aW1lb3V0ID8/IERFRkFVTFRfQ09ORklHLnRpbWVvdXQsXG4gICAgbWF4UmVjdlNpemU6IG9wdGlvbnMubWF4UmVjdlNpemUgPz8gREVGQVVMVF9DT05GSUcubWF4UmVjdlNpemUsXG4gICAgdGxzT3B0aW9uczogb3B0aW9ucy50bHNPcHRpb25zLFxuICAgIHBvb2xTaXplOiBvcHRpb25zLnBvb2xTaXplID8/IERFRkFVTFRfQ09ORklHLnBvb2xTaXplLFxuICAgIGhlYWx0aENoZWNrSW50ZXJ2YWw6IG9wdGlvbnMuaGVhbHRoQ2hlY2tJbnRlcnZhbCA/PyBERUZBVUxUX0NPTkZJRy5oZWFsdGhDaGVja0ludGVydmFsLFxuICAgIHJldHJ5Q291bnQ6IG9wdGlvbnMucmV0cnlDb3VudCA/PyBERUZBVUxUX0NPTkZJRy5yZXRyeUNvdW50LFxuICAgIHJldHJ5RGVsYXk6IG9wdGlvbnMucmV0cnlEZWxheSA/PyBERUZBVUxUX0NPTkZJRy5yZXRyeURlbGF5LFxuICB9O1xuXG4gIHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XG4gIHJldHVybiBjb25maWc7XG59XG4iXX0=
|
|
@@ -5,12 +5,29 @@ import { ServiceContext } from './service-context';
|
|
|
5
5
|
import { InsertNodesResult, InsertEdgesResult, DeleteResult, ExportNodesResult, ExportEdgesResult, ExportConfig, ExportChunk } from '../response';
|
|
6
6
|
import { NodeData, EdgeData } from '../types';
|
|
7
7
|
import { InsertNodesConfig, InsertEdgesConfig } from '../client';
|
|
8
|
+
/**
|
|
9
|
+
* Parse leading major.minor.patch from a server version string.
|
|
10
|
+
* Returns [0,0,0] on parse failure (treated as "unknown / pre-6.1.149").
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseVersion(s: string | null | undefined): [number, number, number];
|
|
8
13
|
/**
|
|
9
14
|
* Data service for inserting, deleting, and exporting graph data.
|
|
10
15
|
*/
|
|
11
16
|
export declare class DataService {
|
|
12
17
|
private ctx;
|
|
13
18
|
constructor(ctx: ServiceContext);
|
|
19
|
+
/**
|
|
20
|
+
* Throw GqldbError if `mode` is UPSERT and the connected server is
|
|
21
|
+
* older than 6.1.149.
|
|
22
|
+
*
|
|
23
|
+
* Server >= 6.1.154 reports the real version in
|
|
24
|
+
* `LoginResponse.server_version`. Older servers either return a
|
|
25
|
+
* placeholder "1.0.0" or leave the field empty — both are now treated
|
|
26
|
+
* as "definitely older than 6.1.149" and rejected. (Earlier versions
|
|
27
|
+
* of this gate let those cases pass through; that workaround was
|
|
28
|
+
* removed once 6.1.154+ started populating the field correctly.)
|
|
29
|
+
*/
|
|
30
|
+
private requireUpsertSupport;
|
|
14
31
|
/**
|
|
15
32
|
* Insert multiple nodes into a graph.
|
|
16
33
|
*/
|
|
@@ -4,8 +4,38 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.DataService = void 0;
|
|
7
|
+
exports.parseVersion = parseVersion;
|
|
8
|
+
const types_1 = require("../types");
|
|
7
9
|
const services_1 = require("../services");
|
|
8
10
|
const converters_1 = require("./converters");
|
|
11
|
+
const errors_1 = require("../errors");
|
|
12
|
+
/**
|
|
13
|
+
* Minimum server version that supports `InsertMode.UPSERT` on the bulk-import
|
|
14
|
+
* RPCs. Older servers ignore the unknown enum value and silently downgrade
|
|
15
|
+
* to Normal, surfacing as a confusing "duplicate _id" error.
|
|
16
|
+
*
|
|
17
|
+
* See `GQLDB-6.1.149-DRIVER-AND-TEST-HANDOFF-2026-05-05.md` (Test plan section D).
|
|
18
|
+
*/
|
|
19
|
+
const UPSERT_MIN_VERSION = [6, 1, 149];
|
|
20
|
+
/**
|
|
21
|
+
* Parse leading major.minor.patch from a server version string.
|
|
22
|
+
* Returns [0,0,0] on parse failure (treated as "unknown / pre-6.1.149").
|
|
23
|
+
*/
|
|
24
|
+
function parseVersion(s) {
|
|
25
|
+
if (!s)
|
|
26
|
+
return [0, 0, 0];
|
|
27
|
+
const m = s.match(/(\d+)\.(\d+)\.(\d+)/);
|
|
28
|
+
if (!m)
|
|
29
|
+
return [0, 0, 0];
|
|
30
|
+
return [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];
|
|
31
|
+
}
|
|
32
|
+
function versionGTE(actual, required) {
|
|
33
|
+
for (let i = 0; i < 3; i++) {
|
|
34
|
+
if (actual[i] !== required[i])
|
|
35
|
+
return actual[i] > required[i];
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
9
39
|
/**
|
|
10
40
|
* Data service for inserting, deleting, and exporting graph data.
|
|
11
41
|
*/
|
|
@@ -14,10 +44,32 @@ class DataService {
|
|
|
14
44
|
constructor(ctx) {
|
|
15
45
|
this.ctx = ctx;
|
|
16
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Throw GqldbError if `mode` is UPSERT and the connected server is
|
|
49
|
+
* older than 6.1.149.
|
|
50
|
+
*
|
|
51
|
+
* Server >= 6.1.154 reports the real version in
|
|
52
|
+
* `LoginResponse.server_version`. Older servers either return a
|
|
53
|
+
* placeholder "1.0.0" or leave the field empty — both are now treated
|
|
54
|
+
* as "definitely older than 6.1.149" and rejected. (Earlier versions
|
|
55
|
+
* of this gate let those cases pass through; that workaround was
|
|
56
|
+
* removed once 6.1.154+ started populating the field correctly.)
|
|
57
|
+
*/
|
|
58
|
+
requireUpsertSupport(mode) {
|
|
59
|
+
if (mode !== types_1.InsertType.Upsert)
|
|
60
|
+
return;
|
|
61
|
+
const session = this.ctx.sessions.getSession();
|
|
62
|
+
const serverVer = session?.serverVersion || '';
|
|
63
|
+
if (!versionGTE(parseVersion(serverVer), UPSERT_MIN_VERSION)) {
|
|
64
|
+
throw new errors_1.GqldbError(`InsertType.Upsert requires server >= ${UPSERT_MIN_VERSION.join('.')}, ` +
|
|
65
|
+
`connected server reports ${serverVer || 'unknown'}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
17
68
|
/**
|
|
18
69
|
* Insert multiple nodes into a graph.
|
|
19
70
|
*/
|
|
20
71
|
async insertNodes(graphName, nodes, config) {
|
|
72
|
+
this.requireUpsertSupport(config?.options?.mode);
|
|
21
73
|
const request = {
|
|
22
74
|
graph_name: graphName,
|
|
23
75
|
nodes: nodes.map((n) => (0, converters_1.nodeDataToProto)(n)),
|
|
@@ -41,6 +93,7 @@ class DataService {
|
|
|
41
93
|
* Insert multiple edges into a graph.
|
|
42
94
|
*/
|
|
43
95
|
async insertEdges(graphName, edges, config) {
|
|
96
|
+
this.requireUpsertSupport(config?.options?.mode);
|
|
44
97
|
const request = {
|
|
45
98
|
graph_name: graphName,
|
|
46
99
|
edges: edges.map((e) => (0, converters_1.edgeDataToProto)(e)),
|
|
@@ -205,4 +258,4 @@ class DataService {
|
|
|
205
258
|
}
|
|
206
259
|
}
|
|
207
260
|
exports.DataService = DataService;
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2RhdGEtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQWNILDBDQUE0QztBQUM1Qyw2Q0FBd0Y7QUFHeEY7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFDRjtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUNmLFNBQWlCLEVBQ2pCLEtBQWlCLEVBQ2pCLE1BQTBCO1FBRTFCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDRCQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUMsQ0FBQztRQUVGLHNGQUFzRjtRQUN0Rix3RkFBd0Y7UUFDeEYsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBVyxFQUFFLENBQUM7UUFFbkUsSUFBSSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFDNUIsYUFBYSxFQUNiLE9BQU8sRUFDUCxRQUFRLENBQ1QsQ0FBQztRQUVGLE9BQU87WUFDTCxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8s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RSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLFFBQVEsQ0FBQzt3QkFDUCxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTs0QkFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFOzRCQUNwQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFOzRCQUNoQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFOzRCQUM1QixVQUFVLEVBQUUsSUFBQSxtQ0FBc0IsRUFBQyxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQzt5QkFDdkQsQ0FBQyxDQUFDO3dCQUNILE9BQU8sRUFBRSxRQUFRLENBQUMsUUFBUSxJQUFJLEtBQUs7cUJBQ3BDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRSRCxrQ0FzUkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGEgc2VydmljZSBoYW5kbGVzIG5vZGUgYW5kIGVkZ2UgaW5zZXJ0L2RlbGV0ZS9leHBvcnQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7XG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRGVsZXRlUmVzdWx0LFxuICBFeHBvcnROb2Rlc1Jlc3VsdCxcbiAgRXhwb3J0RWRnZXNSZXN1bHQsXG4gIEV4cG9ydENvbmZpZyxcbiAgRXhwb3J0Q2h1bmssXG4gIEV4cG9ydFN0YXRzLFxufSBmcm9tICcuLi9yZXNwb25zZSc7XG5pbXBvcnQgeyBOb2RlRGF0YSwgRWRnZURhdGEgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbm9kZURhdGFUb1Byb3RvLCBlZGdlRGF0YVRvUHJvdG8sIGNvbnZlcnRQcm90b1Byb3BlcnRpZXMgfSBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0IHsgSW5zZXJ0Tm9kZXNDb25maWcsIEluc2VydEVkZ2VzQ29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBEYXRhIHNlcnZpY2UgZm9yIGluc2VydGluZywgZGVsZXRpbmcsIGFuZCBleHBvcnRpbmcgZ3JhcGggZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbXVsdGlwbGUgbm9kZXMgaW50byBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgaW5zZXJ0Tm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZXM6IE5vZGVEYXRhW10sXG4gICAgY29uZmlnPzogSW5zZXJ0Tm9kZXNDb25maWdcbiAgKTogUHJvbWlzZTxJbnNlcnROb2Rlc1Jlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVzOiBub2Rlcy5tYXAoKG4pID0+IG5vZGVEYXRhVG9Qcm90byhuKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3IuXG4gICAgLy8gYG1vZGVgIGlzIGEgbnVtZXJpYyBlbnVtIGFsaWduZWQgd2l0aCBwcm90byBJbnNlcnRNb2RlIHZhbHVlczsgcGFzcyB0aHJvdWdoIGRpcmVjdGx5LlxuICAgIHJlcXVlc3Qub3B0aW9ucyA9IHsgbW9kZTogKGNvbmZpZz8ub3B0aW9ucz8ubW9kZSA/PyAwKSBhcyBudW1iZXIgfTtcblxuICAgIGlmIChjb25maWc/LmJ1bGtJbXBvcnRTZXNzaW9uSWQpIHtcbiAgICAgIHJlcXVlc3QuYnVsa19pbXBvcnRfc2Vzc2lvbl9pZCA9IGNvbmZpZy5idWxrSW1wb3J0U2Vzc2lvbklkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0luc2VydE5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIG5vZGVJZHM6IHJlc3BvbnNlLm5vZGVfaWRzIHx8IFtdLFxuICAgICAgbm9kZUNvdW50OiBwYXJzZUludChyZXNwb25zZS5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBlZGdlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBlZGdlczogRWRnZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnRFZGdlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydEVkZ2VzUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdDogYW55ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgZWRnZXM6IGVkZ2VzLm1hcCgoZSkgPT4gZWRnZURhdGFUb1Byb3RvKGUpKSxcbiAgICB9O1xuXG4gICAgLy8gQUxXQVlTIHNldCBvcHRpb25zIChldmVuIHdoZW4gdW5kZWZpbmVkKSB0byBhdm9pZCBkZXByZWNhdGVkIGJ1bGsgb3BlcmF0aW9ucyBlcnJvci5cbiAgICByZXF1ZXN0Lm9wdGlvbnMgPSB7XG4gICAgICBza2lwX2ludmFsaWRfbm9kZXM6IGNvbmZpZz8ub3B0aW9ucz8uc2tpcEludmFsaWROb2RlcyB8fCBmYWxzZSxcbiAgICAgIG1vZGU6IChjb25maWc/Lm9wdGlvbnM/Lm1vZGUgPz8gMCkgYXMgbnVtYmVyLFxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnPy5idWxrSW1wb3J0U2Vzc2lvbklkKSB7XG4gICAgICByZXF1ZXN0LmJ1bGtfaW1wb3J0X3Nlc3Npb25faWQgPSBjb25maWcuYnVsa0ltcG9ydFNlc3Npb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdJbnNlcnRFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBlZGdlSWRzOiByZXNwb25zZS5lZGdlX2lkcyB8fCBbXSxcbiAgICAgIGVkZ2VDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZWRnZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgICBza2lwcGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLnNraXBwZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgbm9kZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVfaWRzOiBub2RlSWRzIHx8IFtdLFxuICAgICAgbGFiZWxzOiBsYWJlbHMgfHwgW10sXG4gICAgICB3aGVyZTogd2hlcmUgfHwgJycsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0RlbGV0ZU5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIGRlbGV0ZWRDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZGVsZXRlZF9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgZWRnZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlRWRnZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgZWRnZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVsPzogc3RyaW5nLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGVkZ2VfaWRzOiBlZGdlSWRzIHx8IFtdLFxuICAgICAgbGFiZWw6IGxhYmVsIHx8ICcnLFxuICAgICAgd2hlcmU6IHdoZXJlIHx8ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdEZWxldGVFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBkZWxldGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmRlbGV0ZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGdyYXBoIGRhdGEgaW4gSlNPTiBMaW5lcyBmb3JtYXQgKHN0cmVhbWluZykuXG4gICAqL1xuICBhc3luYyBleHBvcnQoXG4gICAgY29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgY2FsbGJhY2s/OiAoY2h1bms6IEV4cG9ydENodW5rKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBjb25maWcuZ3JhcGhOYW1lLFxuICAgICAgYmF0Y2hfc2l6ZTogY29uZmlnLmJhdGNoU2l6ZSB8fCAwLFxuICAgICAgZXhwb3J0X25vZGVzOiBjb25maWcuZXhwb3J0Tm9kZXMgIT09IGZhbHNlLFxuICAgICAgZXhwb3J0X2VkZ2VzOiBjb25maWcuZXhwb3J0RWRnZXMgIT09IGZhbHNlLFxuICAgICAgbm9kZV9sYWJlbHM6IGNvbmZpZy5ub2RlTGFiZWxzIHx8IFtdLFxuICAgICAgZWRnZV9sYWJlbHM6IGNvbmZpZy5lZGdlTGFiZWxzIHx8IFtdLFxuICAgICAgaW5jbHVkZV9tZXRhZGF0YTogY29uZmlnLmluY2x1ZGVNZXRhZGF0YSB8fCBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSBhcyBhbnkpLkV4cG9ydChyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGxldCBzdGF0czogRXhwb3J0U3RhdHMgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXRzKSB7XG4gICAgICAgICAgICBzdGF0cyA9IHtcbiAgICAgICAgICAgICAgbm9kZXNFeHBvcnRlZDogcGFyc2VJbnQocmVzcG9uc2Uuc3RhdHMubm9kZXNfZXhwb3J0ZWQgfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGVkZ2VzRXhwb3J0ZWQ6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmVkZ2VzX2V4cG9ydGVkIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBieXRlc1dyaXR0ZW46IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmJ5dGVzX3dyaXR0ZW4gfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGR1cmF0aW9uTXM6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmR1cmF0aW9uX21zIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjaHVuazogRXhwb3J0Q2h1bmsgPSB7XG4gICAgICAgICAgICBkYXRhOiBCdWZmZXIuZnJvbShyZXNwb25zZS5kYXRhIHx8IFtdKSxcbiAgICAgICAgICAgIGlzRmluYWw6IHJlc3BvbnNlLmlzX2ZpbmFsIHx8IGZhbHNlLFxuICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNhbGxiYWNrKGNodW5rKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5pc19maW5hbCkge1xuICAgICAgICAgIHN0cmVhbS5jYW5jZWwoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIG5vZGVzIGZyb20gYSBncmFwaC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWRcbiAgICovXG4gIGFzeW5jIGV4cG9ydE5vZGVzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIGxpbWl0OiBudW1iZXIgPSAwLFxuICAgIGNhbGxiYWNrPzogKHJlc3VsdDogRXhwb3J0Tm9kZXNSZXN1bHQpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS53YXJuKCdleHBvcnROb2RlcyBpcyBkZXByZWNhdGVkLCB1c2UgZXhwb3J0KCkgd2l0aCBFeHBvcnRDb25maWcgaW5zdGVhZCcpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGxhYmVsczogbGFiZWxzIHx8IFtdLFxuICAgICAgbGltaXQ6IGxpbWl0LnRvU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UgYXMgYW55KS5FeHBvcnROb2RlcyhyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgIG5vZGVzOiAocmVzcG9uc2Uubm9kZXMgfHwgW10pLm1hcCgobjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICBpZDogbi5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgbGFiZWxzOiBuLmxhYmVscyB8fCBbXSxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhuLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSBlZGdlcyBmcm9tIGEgZ3JhcGguXG4gICAqIEBkZXByZWNhdGVkIFVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBleHBvcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICBsaW1pdDogbnVtYmVyID0gMCxcbiAgICBjYWxsYmFjaz86IChyZXN1bHQ6IEV4cG9ydEVkZ2VzUmVzdWx0KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUud2FybignZXhwb3J0RWRnZXMgaXMgZGVwcmVjYXRlZCwgdXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWQnKTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBsYWJlbHM6IGxhYmVscyB8fCBbXSxcbiAgICAgIGxpbWl0OiBsaW1pdC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9ICh0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlIGFzIGFueSkuRXhwb3J0RWRnZXMocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICBlZGdlczogKHJlc3BvbnNlLmVkZ2VzIHx8IFtdKS5tYXAoKGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IGUuaWQgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsIHx8ICcnLFxuICAgICAgICAgICAgICBmcm9tTm9kZUlkOiBlLmZyb21fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgdG9Ob2RlSWQ6IGUudG9fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhlLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2RhdGEtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQWdDSCxvQ0FLQztBQXhCRCxvQ0FBMEQ7QUFDMUQsMENBQTRDO0FBQzVDLDZDQUF3RjtBQUV4RixzQ0FBdUM7QUFFdkM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxrQkFBa0IsR0FBNkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRWpFOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxDQUE0QjtJQUN2RCxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxNQUFnQyxFQUFFLFFBQWtDO0lBQ3RGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxD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QUs7cUJBQ3BDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpURCxrQ0FpVEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGEgc2VydmljZSBoYW5kbGVzIG5vZGUgYW5kIGVkZ2UgaW5zZXJ0L2RlbGV0ZS9leHBvcnQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7XG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRGVsZXRlUmVzdWx0LFxuICBFeHBvcnROb2Rlc1Jlc3VsdCxcbiAgRXhwb3J0RWRnZXNSZXN1bHQsXG4gIEV4cG9ydENvbmZpZyxcbiAgRXhwb3J0Q2h1bmssXG4gIEV4cG9ydFN0YXRzLFxufSBmcm9tICcuLi9yZXNwb25zZSc7XG5pbXBvcnQgeyBOb2RlRGF0YSwgRWRnZURhdGEsIEluc2VydFR5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbm9kZURhdGFUb1Byb3RvLCBlZGdlRGF0YVRvUHJvdG8sIGNvbnZlcnRQcm90b1Byb3BlcnRpZXMgfSBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0IHsgSW5zZXJ0Tm9kZXNDb25maWcsIEluc2VydEVkZ2VzQ29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IEdxbGRiRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG4vKipcbiAqIE1pbmltdW0gc2VydmVyIHZlcnNpb24gdGhhdCBzdXBwb3J0cyBgSW5zZXJ0TW9kZS5VUFNFUlRgIG9uIHRoZSBidWxrLWltcG9ydFxuICogUlBDcy4gT2xkZXIgc2VydmVycyBpZ25vcmUgdGhlIHVua25vd24gZW51bSB2YWx1ZSBhbmQgc2lsZW50bHkgZG93bmdyYWRlXG4gKiB0byBOb3JtYWwsIHN1cmZhY2luZyBhcyBhIGNvbmZ1c2luZyBcImR1cGxpY2F0ZSBfaWRcIiBlcnJvci5cbiAqXG4gKiBTZWUgYEdRTERCLTYuMS4xNDktRFJJVkVSLUFORC1URVNULUhBTkRPRkYtMjAyNi0wNS0wNS5tZGAgKFRlc3QgcGxhbiBzZWN0aW9uIEQpLlxuICovXG5jb25zdCBVUFNFUlRfTUlOX1ZFUlNJT046IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFs2LCAxLCAxNDldO1xuXG4vKipcbiAqIFBhcnNlIGxlYWRpbmcgbWFqb3IubWlub3IucGF0Y2ggZnJvbSBhIHNlcnZlciB2ZXJzaW9uIHN0cmluZy5cbiAqIFJldHVybnMgWzAsMCwwXSBvbiBwYXJzZSBmYWlsdXJlICh0cmVhdGVkIGFzIFwidW5rbm93biAvIHByZS02LjEuMTQ5XCIpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBpZiAoIXMpIHJldHVybiBbMCwgMCwgMF07XG4gIGNvbnN0IG0gPSBzLm1hdGNoKC8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykvKTtcbiAgaWYgKCFtKSByZXR1cm4gWzAsIDAsIDBdO1xuICByZXR1cm4gW3BhcnNlSW50KG1bMV0sIDEwKSwgcGFyc2VJbnQobVsyXSwgMTApLCBwYXJzZUludChtWzNdLCAxMCldO1xufVxuXG5mdW5jdGlvbiB2ZXJzaW9uR1RFKGFjdHVhbDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdLCByZXF1aXJlZDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdKTogYm9vbGVhbiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgaWYgKGFjdHVhbFtpXSAhPT0gcmVxdWlyZWRbaV0pIHJldHVybiBhY3R1YWxbaV0gPiByZXF1aXJlZFtpXTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBEYXRhIHNlcnZpY2UgZm9yIGluc2VydGluZywgZGVsZXRpbmcsIGFuZCBleHBvcnRpbmcgZ3JhcGggZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBUaHJvdyBHcWxkYkVycm9yIGlmIGBtb2RlYCBpcyBVUFNFUlQgYW5kIHRoZSBjb25uZWN0ZWQgc2VydmVyIGlzXG4gICAqIG9sZGVyIHRoYW4gNi4xLjE0OS5cbiAgICpcbiAgICogU2VydmVyID49IDYuMS4xNTQgcmVwb3J0cyB0aGUgcmVhbCB2ZXJzaW9uIGluXG4gICAqIGBMb2dpblJlc3BvbnNlLnNlcnZlcl92ZXJzaW9uYC4gT2xkZXIgc2VydmVycyBlaXRoZXIgcmV0dXJuIGFcbiAgICogcGxhY2Vob2xkZXIgXCIxLjAuMFwiIG9yIGxlYXZlIHRoZSBmaWVsZCBlbXB0eSDigJQgYm90aCBhcmUgbm93IHRyZWF0ZWRcbiAgICogYXMgXCJkZWZpbml0ZWx5IG9sZGVyIHRoYW4gNi4xLjE0OVwiIGFuZCByZWplY3RlZC4gKEVhcmxpZXIgdmVyc2lvbnNcbiAgICogb2YgdGhpcyBnYXRlIGxldCB0aG9zZSBjYXNlcyBwYXNzIHRocm91Z2g7IHRoYXQgd29ya2Fyb3VuZCB3YXNcbiAgICogcmVtb3ZlZCBvbmNlIDYuMS4xNTQrIHN0YXJ0ZWQgcG9wdWxhdGluZyB0aGUgZmllbGQgY29ycmVjdGx5LilcbiAgICovXG4gIHByaXZhdGUgcmVxdWlyZVVwc2VydFN1cHBvcnQobW9kZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKG1vZGUgIT09IEluc2VydFR5cGUuVXBzZXJ0KSByZXR1cm47XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBjb25zdCBzZXJ2ZXJWZXIgPSBzZXNzaW9uPy5zZXJ2ZXJWZXJzaW9uIHx8ICcnO1xuICAgIGlmICghdmVyc2lvbkdURShwYXJzZVZlcnNpb24oc2VydmVyVmVyKSwgVVBTRVJUX01JTl9WRVJTSU9OKSkge1xuICAgICAgdGhyb3cgbmV3IEdxbGRiRXJyb3IoXG4gICAgICAgIGBJbnNlcnRUeXBlLlVwc2VydCByZXF1aXJlcyBzZXJ2ZXIgPj0gJHtVUFNFUlRfTUlOX1ZFUlNJT04uam9pbignLicpfSwgYCArXG4gICAgICAgIGBjb25uZWN0ZWQgc2VydmVyIHJlcG9ydHMgJHtzZXJ2ZXJWZXIgfHwgJ3Vua25vd24nfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBub2RlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnROb2RlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBub2RlczogTm9kZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnROb2Rlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydE5vZGVzUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlVXBzZXJ0U3VwcG9ydChjb25maWc/Lm9wdGlvbnM/Lm1vZGUgYXMgbnVtYmVyIHwgdW5kZWZpbmVkKTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVzOiBub2Rlcy5tYXAoKG4pID0+IG5vZGVEYXRhVG9Qcm90byhuKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3IuXG4gICAgLy8gYG1vZGVgIGlzIGEgbnVtZXJpYyBlbnVtIGFsaWduZWQgd2l0aCBwcm90byBJbnNlcnRNb2RlIHZhbHVlczsgcGFzcyB0aHJvdWdoIGRpcmVjdGx5LlxuICAgIHJlcXVlc3Qub3B0aW9ucyA9IHsgbW9kZTogKGNvbmZpZz8ub3B0aW9ucz8ubW9kZSA/PyAwKSBhcyBudW1iZXIgfTtcblxuICAgIGlmIChjb25maWc/LmJ1bGtJbXBvcnRTZXNzaW9uSWQpIHtcbiAgICAgIHJlcXVlc3QuYnVsa19pbXBvcnRfc2Vzc2lvbl9pZCA9IGNvbmZpZy5idWxrSW1wb3J0U2Vzc2lvbklkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0luc2VydE5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIG5vZGVJZHM6IHJlc3BvbnNlLm5vZGVfaWRzIHx8IFtdLFxuICAgICAgbm9kZUNvdW50OiBwYXJzZUludChyZXNwb25zZS5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBlZGdlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBlZGdlczogRWRnZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnRFZGdlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydEVkZ2VzUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlVXBzZXJ0U3VwcG9ydChjb25maWc/Lm9wdGlvbnM/Lm1vZGUgYXMgbnVtYmVyIHwgdW5kZWZpbmVkKTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGVkZ2VzOiBlZGdlcy5tYXAoKGUpID0+IGVkZ2VEYXRhVG9Qcm90byhlKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3IuXG4gICAgcmVxdWVzdC5vcHRpb25zID0ge1xuICAgICAgc2tpcF9pbnZhbGlkX25vZGVzOiBjb25maWc/Lm9wdGlvbnM/LnNraXBJbnZhbGlkTm9kZXMgfHwgZmFsc2UsXG4gICAgICBtb2RlOiAoY29uZmlnPy5vcHRpb25zPy5tb2RlID8/IDApIGFzIG51bWJlcixcbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpZz8uYnVsa0ltcG9ydFNlc3Npb25JZCkge1xuICAgICAgcmVxdWVzdC5idWxrX2ltcG9ydF9zZXNzaW9uX2lkID0gY29uZmlnLmJ1bGtJbXBvcnRTZXNzaW9uSWQ7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UsXG4gICAgICAnSW5zZXJ0RWRnZXMnLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiByZXNwb25zZS5zdWNjZXNzIHx8IGZhbHNlLFxuICAgICAgZWRnZUlkczogcmVzcG9uc2UuZWRnZV9pZHMgfHwgW10sXG4gICAgICBlZGdlQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmVkZ2VfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgICAgc2tpcHBlZENvdW50OiBwYXJzZUludChyZXNwb25zZS5za2lwcGVkX2NvdW50IHx8ICcwJywgMTApLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIG5vZGVzIGZyb20gYSBncmFwaC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZU5vZGVzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIG5vZGVJZHM/OiBzdHJpbmdbXSxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICB3aGVyZT86IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBub2RlX2lkczogbm9kZUlkcyB8fCBbXSxcbiAgICAgIGxhYmVsczogbGFiZWxzIHx8IFtdLFxuICAgICAgd2hlcmU6IHdoZXJlIHx8ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdEZWxldGVOb2RlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBkZWxldGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmRlbGV0ZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGVkZ2VzIGZyb20gYSBncmFwaC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZUVkZ2VzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIGVkZ2VJZHM/OiBzdHJpbmdbXSxcbiAgICBsYWJlbD86IHN0cmluZyxcbiAgICB3aGVyZT86IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBlZGdlX2lkczogZWRnZUlkcyB8fCBbXSxcbiAgICAgIGxhYmVsOiBsYWJlbCB8fCAnJyxcbiAgICAgIHdoZXJlOiB3aGVyZSB8fCAnJyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UsXG4gICAgICAnRGVsZXRlRWRnZXMnLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiByZXNwb25zZS5zdWNjZXNzIHx8IGZhbHNlLFxuICAgICAgZGVsZXRlZENvdW50OiBwYXJzZUludChyZXNwb25zZS5kZWxldGVkX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBncmFwaCBkYXRhIGluIEpTT04gTGluZXMgZm9ybWF0IChzdHJlYW1pbmcpLlxuICAgKi9cbiAgYXN5bmMgZXhwb3J0KFxuICAgIGNvbmZpZzogRXhwb3J0Q29uZmlnLFxuICAgIGNhbGxiYWNrPzogKGNodW5rOiBFeHBvcnRDaHVuaykgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogY29uZmlnLmdyYXBoTmFtZSxcbiAgICAgIGJhdGNoX3NpemU6IGNvbmZpZy5iYXRjaFNpemUgfHwgMCxcbiAgICAgIGV4cG9ydF9ub2RlczogY29uZmlnLmV4cG9ydE5vZGVzICE9PSBmYWxzZSxcbiAgICAgIGV4cG9ydF9lZGdlczogY29uZmlnLmV4cG9ydEVkZ2VzICE9PSBmYWxzZSxcbiAgICAgIG5vZGVfbGFiZWxzOiBjb25maWcubm9kZUxhYmVscyB8fCBbXSxcbiAgICAgIGVkZ2VfbGFiZWxzOiBjb25maWcuZWRnZUxhYmVscyB8fCBbXSxcbiAgICAgIGluY2x1ZGVfbWV0YWRhdGE6IGNvbmZpZy5pbmNsdWRlTWV0YWRhdGEgfHwgZmFsc2UsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UgYXMgYW55KS5FeHBvcnQocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBsZXQgc3RhdHM6IEV4cG9ydFN0YXRzIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0cykge1xuICAgICAgICAgICAgc3RhdHMgPSB7XG4gICAgICAgICAgICAgIG5vZGVzRXhwb3J0ZWQ6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLm5vZGVzX2V4cG9ydGVkIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBlZGdlc0V4cG9ydGVkOiBwYXJzZUludChyZXNwb25zZS5zdGF0cy5lZGdlc19leHBvcnRlZCB8fCAnMCcsIDEwKSxcbiAgICAgICAgICAgICAgYnl0ZXNXcml0dGVuOiBwYXJzZUludChyZXNwb25zZS5zdGF0cy5ieXRlc193cml0dGVuIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBkdXJhdGlvbk1zOiBwYXJzZUludChyZXNwb25zZS5zdGF0cy5kdXJhdGlvbl9tcyB8fCAnMCcsIDEwKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY2h1bms6IEV4cG9ydENodW5rID0ge1xuICAgICAgICAgICAgZGF0YTogQnVmZmVyLmZyb20ocmVzcG9uc2UuZGF0YSB8fCBbXSksXG4gICAgICAgICAgICBpc0ZpbmFsOiByZXNwb25zZS5pc19maW5hbCB8fCBmYWxzZSxcbiAgICAgICAgICAgIHN0YXRzLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjYWxsYmFjayhjaHVuayk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2UuaXNfZmluYWwpIHtcbiAgICAgICAgICBzdHJlYW0uY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSBub2RlcyBmcm9tIGEgZ3JhcGguXG4gICAqIEBkZXByZWNhdGVkIFVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBleHBvcnROb2RlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICBsaW1pdDogbnVtYmVyID0gMCxcbiAgICBjYWxsYmFjaz86IChyZXN1bHQ6IEV4cG9ydE5vZGVzUmVzdWx0KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUud2FybignZXhwb3J0Tm9kZXMgaXMgZGVwcmVjYXRlZCwgdXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWQnKTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBsYWJlbHM6IGxhYmVscyB8fCBbXSxcbiAgICAgIGxpbWl0OiBsaW1pdC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9ICh0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlIGFzIGFueSkuRXhwb3J0Tm9kZXMocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICBub2RlczogKHJlc3BvbnNlLm5vZGVzIHx8IFtdKS5tYXAoKG46IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IG4uaWQgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsczogbi5sYWJlbHMgfHwgW10sXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IGNvbnZlcnRQcm90b1Byb3BlcnRpZXMobi5wcm9wZXJ0aWVzIHx8IHt9KSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGhhc01vcmU6IHJlc3BvbnNlLmhhc19tb3JlIHx8IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gZWRnZXMgZnJvbSBhIGdyYXBoLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXhwb3J0KCkgd2l0aCBFeHBvcnRDb25maWcgaW5zdGVhZFxuICAgKi9cbiAgYXN5bmMgZXhwb3J0RWRnZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbGFiZWxzPzogc3RyaW5nW10sXG4gICAgbGltaXQ6IG51bWJlciA9IDAsXG4gICAgY2FsbGJhY2s/OiAocmVzdWx0OiBFeHBvcnRFZGdlc1Jlc3VsdCkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLndhcm4oJ2V4cG9ydEVkZ2VzIGlzIGRlcHJlY2F0ZWQsIHVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkJyk7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgbGFiZWxzOiBsYWJlbHMgfHwgW10sXG4gICAgICBsaW1pdDogbGltaXQudG9TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSBhcyBhbnkpLkV4cG9ydEVkZ2VzKHJlcXVlc3QsIG1ldGFkYXRhKTtcblxuICAgICAgc3RyZWFtLm9uKCdkYXRhJywgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgZWRnZXM6IChyZXNwb25zZS5lZGdlcyB8fCBbXSkubWFwKChlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgIGlkOiBlLmlkIHx8ICcnLFxuICAgICAgICAgICAgICBsYWJlbDogZS5sYWJlbCB8fCAnJyxcbiAgICAgICAgICAgICAgZnJvbU5vZGVJZDogZS5mcm9tX25vZGVfaWQgfHwgJycsXG4gICAgICAgICAgICAgIHRvTm9kZUlkOiBlLnRvX25vZGVfaWQgfHwgJycsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IGNvbnZlcnRQcm90b1Byb3BlcnRpZXMoZS5wcm9wZXJ0aWVzIHx8IHt9KSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGhhc01vcmU6IHJlc3BvbnNlLmhhc19tb3JlIHx8IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -27,7 +27,19 @@ export declare class ServiceContext {
|
|
|
27
27
|
readonly sessions: SessionManager;
|
|
28
28
|
readonly txManager: TransactionManager;
|
|
29
29
|
readonly clients: ServiceClients;
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Stable per-client logical session id sent as the
|
|
32
|
+
* `x-ultipa-session-id` gRPC metadata header. Empty string omits the
|
|
33
|
+
* header (legacy behavior). See TRANSACTIONS_DRIVER_GUIDE.md §2.1.
|
|
34
|
+
*/
|
|
35
|
+
readonly clientSessionId: string;
|
|
36
|
+
constructor(config: GqldbConfig, sessions: SessionManager, txManager: TransactionManager, clients: ServiceClients,
|
|
37
|
+
/**
|
|
38
|
+
* Stable per-client logical session id sent as the
|
|
39
|
+
* `x-ultipa-session-id` gRPC metadata header. Empty string omits the
|
|
40
|
+
* header (legacy behavior). See TRANSACTIONS_DRIVER_GUIDE.md §2.1.
|
|
41
|
+
*/
|
|
42
|
+
clientSessionId?: string);
|
|
31
43
|
/**
|
|
32
44
|
* Get session metadata for authenticated requests.
|
|
33
45
|
*/
|
|
@@ -47,11 +47,19 @@ class ServiceContext {
|
|
|
47
47
|
sessions;
|
|
48
48
|
txManager;
|
|
49
49
|
clients;
|
|
50
|
-
|
|
50
|
+
clientSessionId;
|
|
51
|
+
constructor(config, sessions, txManager, clients,
|
|
52
|
+
/**
|
|
53
|
+
* Stable per-client logical session id sent as the
|
|
54
|
+
* `x-ultipa-session-id` gRPC metadata header. Empty string omits the
|
|
55
|
+
* header (legacy behavior). See TRANSACTIONS_DRIVER_GUIDE.md §2.1.
|
|
56
|
+
*/
|
|
57
|
+
clientSessionId = '') {
|
|
51
58
|
this.config = config;
|
|
52
59
|
this.sessions = sessions;
|
|
53
60
|
this.txManager = txManager;
|
|
54
61
|
this.clients = clients;
|
|
62
|
+
this.clientSessionId = clientSessionId;
|
|
55
63
|
}
|
|
56
64
|
/**
|
|
57
65
|
* Get session metadata for authenticated requests.
|
|
@@ -60,6 +68,9 @@ class ServiceContext {
|
|
|
60
68
|
const metadata = new grpc.Metadata();
|
|
61
69
|
const session = this.sessions.getSession();
|
|
62
70
|
metadata.add('session-id', session?.id?.toString() || '0');
|
|
71
|
+
if (this.clientSessionId) {
|
|
72
|
+
metadata.add('x-ultipa-session-id', this.clientSessionId);
|
|
73
|
+
}
|
|
63
74
|
return metadata;
|
|
64
75
|
}
|
|
65
76
|
/**
|
|
@@ -70,4 +81,4 @@ class ServiceContext {
|
|
|
70
81
|
}
|
|
71
82
|
}
|
|
72
83
|
exports.ServiceContext = ServiceContext;
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBc0M7QUFtQnRDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRVA7SUFDQTtJQUNBO0lBQ0E7SUFNQTtJQVZsQixZQUNrQixNQUFtQixFQUNuQixRQUF3QixFQUN4QixTQUE2QixFQUM3QixPQUF1QjtJQUN2Qzs7OztPQUlHO0lBQ2Esa0JBQTBCLEVBQUU7UUFUNUIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQU12QixvQkFBZSxHQUFmLGVBQWUsQ0FBYTtJQUMzQyxDQUFDO0lBRUo7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFqQ0Qsd0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgY29udGV4dCBmb3IgYWxsIHNlcnZpY2UgY2xhc3Nlcy5cbiAqIENvbnRhaW5zIGdSUEMgY2xpZW50cywgbWFuYWdlcnMsIGFuZCBjb25maWd1cmF0aW9uLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBHcWxkYkNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4uL3Nlc3Npb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24nO1xuXG4vKipcbiAqIFNlcnZpY2UgY2xpZW50IHR5cGVzIGZvciBnUlBDIGNvbW11bmljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUNsaWVudHMge1xuICBzZXNzaW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIHF1ZXJ5U2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGdyYXBoU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIHRyYW5zYWN0aW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGRhdGFTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgaGVhbHRoU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGFkbWluU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGJ1bGtJbXBvcnRTZXJ2aWNlOiBncnBjLkNsaWVudDtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGNvbnRleHQgaG9sZHMgc2hhcmVkIGRlcGVuZGVuY2llcyBmb3IgYWxsIHNlcnZpY2UgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogR3FsZGJDb25maWcsXG4gICAgcHVibGljIHJlYWRvbmx5IHNlc3Npb25zOiBTZXNzaW9uTWFuYWdlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHhNYW5hZ2VyOiBUcmFuc2FjdGlvbk1hbmFnZXIsXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWVudHM6IFNlcnZpY2VDbGllbnRzLFxuICAgIC8qKlxuICAgICAqIFN0YWJsZSBwZXItY2xpZW50IGxvZ2ljYWwgc2Vzc2lvbiBpZCBzZW50IGFzIHRoZVxuICAgICAqIGB4LXVsdGlwYS1zZXNzaW9uLWlkYCBnUlBDIG1ldGFkYXRhIGhlYWRlci4gRW1wdHkgc3RyaW5nIG9taXRzIHRoZVxuICAgICAqIGhlYWRlciAobGVnYWN5IGJlaGF2aW9yKS4gU2VlIFRSQU5TQUNUSU9OU19EUklWRVJfR1VJREUubWQgwqcyLjEuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWVudFNlc3Npb25JZDogc3RyaW5nID0gJydcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBtZXRhZGF0YSBmb3IgYXV0aGVudGljYXRlZCByZXF1ZXN0cy5cbiAgICovXG4gIGdldFNlc3Npb25NZXRhZGF0YSgpOiBncnBjLk1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IG5ldyBncnBjLk1ldGFkYXRhKCk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIG1ldGFkYXRhLmFkZCgnc2Vzc2lvbi1pZCcsIHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyk7XG4gICAgaWYgKHRoaXMuY2xpZW50U2Vzc2lvbklkKSB7XG4gICAgICBtZXRhZGF0YS5hZGQoJ3gtdWx0aXBhLXNlc3Npb24taWQnLCB0aGlzLmNsaWVudFNlc3Npb25JZCk7XG4gICAgfVxuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc2Vzc2lvbiBhY3Rpdml0eSB0aW1lc3RhbXAuXG4gICAqL1xuICB1cGRhdGVBY3Rpdml0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25zLnVwZGF0ZUFjdGl2aXR5KCk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/transaction.d.ts
CHANGED
|
@@ -11,12 +11,19 @@ export interface Transaction {
|
|
|
11
11
|
timeout: number;
|
|
12
12
|
committed: boolean;
|
|
13
13
|
rolledBack: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Stable per-client logical session id surfaced under the
|
|
16
|
+
* transaction-branch model. Distinct from `sessionId: number` (the
|
|
17
|
+
* legacy uint64 from Login). Always populated by the driver. See
|
|
18
|
+
* TRANSACTIONS_DRIVER_GUIDE.md §2.0–2.1.
|
|
19
|
+
*/
|
|
20
|
+
clientSessionId: string;
|
|
14
21
|
}
|
|
15
22
|
/** Manages transactions for the client */
|
|
16
23
|
export declare class TransactionManager {
|
|
17
24
|
private transactions;
|
|
18
25
|
/** Create a new transaction */
|
|
19
|
-
begin(txId: number, sessionId: number, graphName: string, readOnly: boolean, timeout: number): Transaction;
|
|
26
|
+
begin(txId: number, sessionId: number, graphName: string, readOnly: boolean, timeout: number, clientSessionId?: string): Transaction;
|
|
20
27
|
/** Mark a transaction as committed */
|
|
21
28
|
commit(txId: number): void;
|
|
22
29
|
/** Mark a transaction as rolled back */
|
package/dist/transaction.js
CHANGED
|
@@ -9,7 +9,7 @@ const errors_1 = require("./errors");
|
|
|
9
9
|
class TransactionManager {
|
|
10
10
|
transactions = new Map();
|
|
11
11
|
/** Create a new transaction */
|
|
12
|
-
begin(txId, sessionId, graphName, readOnly, timeout) {
|
|
12
|
+
begin(txId, sessionId, graphName, readOnly, timeout, clientSessionId = '') {
|
|
13
13
|
const tx = {
|
|
14
14
|
id: txId,
|
|
15
15
|
sessionId,
|
|
@@ -19,6 +19,7 @@ class TransactionManager {
|
|
|
19
19
|
timeout,
|
|
20
20
|
committed: false,
|
|
21
21
|
rolledBack: false,
|
|
22
|
+
clientSessionId,
|
|
22
23
|
};
|
|
23
24
|
this.transactions.set(txId, tx);
|
|
24
25
|
return tx;
|
|
@@ -86,4 +87,4 @@ class TransactionManager {
|
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
exports.TransactionManager = TransactionManager;
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxxQ0FBb0Q7QUFxQnBELDBDQUEwQztBQUMxQyxNQUFhLGtCQUFrQjtJQUNyQixZQUFZLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFM0QsK0JBQStCO0lBQy9CLEtBQUssQ0FDSCxJQUFZLEVBQ1osU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsUUFBaUIsRUFDakIsT0FBZSxFQUNmLGtCQUEwQixFQUFFO1FBRTVCLE1BQU0sRUFBRSxHQUFnQjtZQUN0QixFQUFFLEVBQUUsSUFBSTtZQUNSLFNBQVM7WUFDVCxTQUFTO1lBQ1QsUUFBUTtZQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE9BQU87WUFDUCxTQUFTLEVBQUUsS0FBSztZQUNoQixVQUFVLEVBQUUsS0FBSztZQUNqQixlQUFlO1NBQ2hCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxpQ0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxpQ0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLEdBQUcsQ0FBQyxJQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFNBQVM7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsbUJBQW1CLENBQUMsU0FBaUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxRQUFRLENBQUMsSUFBWTtRQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLEVBQUUsS0FBSyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUM3RCxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsR0FBRyxDQUFDLElBQVk7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBaEdELGdEQWdHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb24gbWFuYWdlbWVudCBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKiogUmVwcmVzZW50cyBhbiBhY3RpdmUgZGF0YWJhc2UgdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb24ge1xuICBpZDogbnVtYmVyO1xuICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgZ3JhcGhOYW1lOiBzdHJpbmc7XG4gIHJlYWRPbmx5OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgdGltZW91dDogbnVtYmVyOyAvLyBpbiBtaWxsaXNlY29uZHNcbiAgY29tbWl0dGVkOiBib29sZWFuO1xuICByb2xsZWRCYWNrOiBib29sZWFuO1xuICAvKipcbiAgICogU3RhYmxlIHBlci1jbGllbnQgbG9naWNhbCBzZXNzaW9uIGlkIHN1cmZhY2VkIHVuZGVyIHRoZVxuICAgKiB0cmFuc2FjdGlvbi1icmFuY2ggbW9kZWwuIERpc3RpbmN0IGZyb20gYHNlc3Npb25JZDogbnVtYmVyYCAodGhlXG4gICAqIGxlZ2FjeSB1aW50NjQgZnJvbSBMb2dpbikuIEFsd2F5cyBwb3B1bGF0ZWQgYnkgdGhlIGRyaXZlci4gU2VlXG4gICAqIFRSQU5TQUNUSU9OU19EUklWRVJfR1VJREUubWQgwqcyLjDigJMyLjEuXG4gICAqL1xuICBjbGllbnRTZXNzaW9uSWQ6IHN0cmluZztcbn1cblxuLyoqIE1hbmFnZXMgdHJhbnNhY3Rpb25zIGZvciB0aGUgY2xpZW50ICovXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbnM6IE1hcDxudW1iZXIsIFRyYW5zYWN0aW9uPiA9IG5ldyBNYXAoKTtcblxuICAvKiogQ3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uICovXG4gIGJlZ2luKFxuICAgIHR4SWQ6IG51bWJlcixcbiAgICBzZXNzaW9uSWQ6IG51bWJlcixcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICByZWFkT25seTogYm9vbGVhbixcbiAgICB0aW1lb3V0OiBudW1iZXIsXG4gICAgY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSAnJ1xuICApOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHg6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWQ6IHR4SWQsXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBncmFwaE5hbWUsXG4gICAgICByZWFkT25seSxcbiAgICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBjb21taXR0ZWQ6IGZhbHNlLFxuICAgICAgcm9sbGVkQmFjazogZmFsc2UsXG4gICAgICBjbGllbnRTZXNzaW9uSWQsXG4gICAgfTtcbiAgICB0aGlzLnRyYW5zYWN0aW9ucy5zZXQodHhJZCwgdHgpO1xuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBNYXJrIGEgdHJhbnNhY3Rpb24gYXMgY29tbWl0dGVkICovXG4gIGNvbW1pdCh0eElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIHR4LmNvbW1pdHRlZCA9IHRydWU7XG4gICAgdGhpcy50cmFuc2FjdGlvbnMuZGVsZXRlKHR4SWQpO1xuICB9XG5cbiAgLyoqIE1hcmsgYSB0cmFuc2FjdGlvbiBhcyByb2xsZWQgYmFjayAqL1xuICByb2xsYmFjayh0eElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIHR4LnJvbGxlZEJhY2sgPSB0cnVlO1xuICAgIHRoaXMudHJhbnNhY3Rpb25zLmRlbGV0ZSh0eElkKTtcbiAgfVxuXG4gIC8qKiBHZXQgYSB0cmFuc2FjdGlvbiBieSBJRCAqL1xuICBnZXQodHhJZDogbnVtYmVyKTogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9ucy5nZXQodHhJZCk7XG4gIH1cblxuICAvKiogR2V0IGFsbCBhY3RpdmUgdHJhbnNhY3Rpb25zICovXG4gIGdldEFjdGl2ZSgpOiBUcmFuc2FjdGlvbltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnRyYW5zYWN0aW9ucy52YWx1ZXMoKSk7XG4gIH1cblxuICAvKiogR2V0IGFsbCBhY3RpdmUgdHJhbnNhY3Rpb25zIGZvciBhIHNlc3Npb24gKi9cbiAgZ2V0QWN0aXZlRm9yU2Vzc2lvbihzZXNzaW9uSWQ6IG51bWJlcik6IFRyYW5zYWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLmZpbHRlcih0eCA9PiB0eC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBhY3RpdmUgdHJhbnNhY3Rpb25zICovXG4gIGhhc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbnMuc2l6ZSA+IDA7XG4gIH1cblxuICAvKiogR2V0IHRoZSBudW1iZXIgb2YgYWN0aXZlIHRyYW5zYWN0aW9ucyAqL1xuICBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9ucy5zaXplO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCB0cmFuc2FjdGlvbnMgKi9cbiAgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiBhIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZSAqL1xuICBpc0FjdGl2ZSh0eElkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICByZXR1cm4gdHggIT09IHVuZGVmaW5lZCAmJiAhdHguY29tbWl0dGVkICYmICF0eC5yb2xsZWRCYWNrO1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIGEgdHJhbnNhY3Rpb24gaGFzIGV4cGlyZWQgKi9cbiAgaXNFeHBpcmVkKHR4SWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR4ID0gdGhpcy50cmFuc2FjdGlvbnMuZ2V0KHR4SWQpO1xuICAgIGlmICghdHggfHwgdHgudGltZW91dCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdHguY3JlYXRlZEF0ID4gdHgudGltZW91dDtcbiAgfVxuXG4gIC8qKiBHZXQgdHJhbnNhY3Rpb24gYWdlIGluIG1pbGxpc2Vjb25kcyAqL1xuICBhZ2UodHhJZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSByZXR1cm4gMDtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHR4LmNyZWF0ZWRBdDtcbiAgfVxufVxuIl19
|
package/dist/types/metadata.d.ts
CHANGED
|
@@ -20,6 +20,19 @@ export interface TransactionInfo {
|
|
|
20
20
|
durationMs: number;
|
|
21
21
|
internalTxId: string;
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* One row from `SHOW TRANSACTIONS` (admin DDL added by transaction-branch).
|
|
25
|
+
* `sessionId` is `''` when the server has not auto-derived one from peer
|
|
26
|
+
* info and the driver has not surfaced explicit `x-ultipa-session-id`
|
|
27
|
+
* metadata. See TRANSACTIONS_DRIVER_GUIDE.md §3.1.
|
|
28
|
+
*/
|
|
29
|
+
export interface TransactionRow {
|
|
30
|
+
transactionId: string;
|
|
31
|
+
status: string;
|
|
32
|
+
readOnly: boolean;
|
|
33
|
+
startTime: string;
|
|
34
|
+
sessionId: string;
|
|
35
|
+
}
|
|
23
36
|
/** AST cache statistics */
|
|
24
37
|
export interface ASTCacheStats {
|
|
25
38
|
hits: number;
|
package/dist/types/metadata.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Metadata types for GQLDB Node.js driver.
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRhZGF0YSB0eXBlcyBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgR3JhcGhUeXBlIH0gZnJvbSAnLi9lbnVtcyc7XG5cbi8qKiBJbmZvcm1hdGlvbiBhYm91dCBhIGdyYXBoICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZ3JhcGhUeXBlOiBHcmFwaFR5cGU7XG4gIG5vZGVDb3VudDogbnVtYmVyO1xuICBlZGdlQ291bnQ6IG51bWJlcjtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuLyoqIEluZm9ybWF0aW9uIGFib3V0IGEgdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25JbmZvIHtcbiAgdHJhbnNhY3Rpb25JZDogbnVtYmVyO1xuICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgZ3JhcGhOYW1lOiBzdHJpbmc7XG4gIHJlYWRPbmx5OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBpbnRlcm5hbFR4SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPbmUgcm93IGZyb20gYFNIT1cgVFJBTlNBQ1RJT05TYCAoYWRtaW4gRERMIGFkZGVkIGJ5IHRyYW5zYWN0aW9uLWJyYW5jaCkuXG4gKiBgc2Vzc2lvbklkYCBpcyBgJydgIHdoZW4gdGhlIHNlcnZlciBoYXMgbm90IGF1dG8tZGVyaXZlZCBvbmUgZnJvbSBwZWVyXG4gKiBpbmZvIGFuZCB0aGUgZHJpdmVyIGhhcyBub3Qgc3VyZmFjZWQgZXhwbGljaXQgYHgtdWx0aXBhLXNlc3Npb24taWRgXG4gKiBtZXRhZGF0YS4gU2VlIFRSQU5TQUNUSU9OU19EUklWRVJfR1VJREUubWQgwqczLjEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25Sb3cge1xuICB0cmFuc2FjdGlvbklkOiBzdHJpbmc7ICAgLy8gJ3R4Xzx1dWlkPicgZm9ybVxuICBzdGF0dXM6IHN0cmluZzsgICAgICAgICAgLy8gJ2FjdGl2ZScgLyBldGNcbiAgcmVhZE9ubHk6IGJvb2xlYW47XG4gIHN0YXJ0VGltZTogc3RyaW5nOyAgICAgICAvLyBJU08gODYwMVxuICBzZXNzaW9uSWQ6IHN0cmluZztcbn1cblxuLyoqIEFTVCBjYWNoZSBzdGF0aXN0aWNzICovXG5leHBvcnQgaW50ZXJmYWNlIEFTVENhY2hlU3RhdHMge1xuICBoaXRzOiBudW1iZXI7XG4gIG1pc3NlczogbnVtYmVyO1xuICBldmljdGlvbnM6IG51bWJlcjtcbiAgZW50cmllczogbnVtYmVyO1xuICBoaXRSYXRlOiBudW1iZXI7XG59XG5cbi8qKiBQbGFuIGNhY2hlIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbkNhY2hlU3RhdHMge1xuICBzaXplOiBudW1iZXI7XG4gIGNhcGFjaXR5OiBudW1iZXI7XG4gIGhpdHM6IG51bWJlcjtcbiAgbWlzc2VzOiBudW1iZXI7XG4gIGhpdFJhdGU6IG51bWJlcjtcbn1cblxuLyoqIENvbWJpbmVkIGNhY2hlIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVTdGF0cyB7XG4gIGFzdFN0YXRzPzogQVNUQ2FjaGVTdGF0cztcbiAgcGxhblN0YXRzPzogUGxhbkNhY2hlU3RhdHM7XG59XG5cbi8qKiBEYXRhYmFzZSBzdGF0aXN0aWNzICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpc3RpY3Mge1xuICBub2RlQ291bnQ6IG51bWJlcjtcbiAgZWRnZUNvdW50OiBudW1iZXI7XG4gIGxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBlZGdlTGFiZWxDb3VudHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbi8qKiBDUFUgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDcHVNZXRyaWNzIHtcbiAgcHJvY2Vzc1BlcmNlbnQ6IG51bWJlcjtcbiAgc3lzdGVtUGVyY2VudDogbnVtYmVyO1xuICBudW1Db3JlczogbnVtYmVyO1xufVxuXG4vKiogTWVtb3J5IG1ldHJpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5TWV0cmljcyB7XG4gIHByb2Nlc3NSc3M6IG51bWJlcjtcbiAgaGVhcEFsbG9jOiBudW1iZXI7XG4gIGhlYXBTeXM6IG51bWJlcjtcbiAgc3RhY2tJblVzZTogbnVtYmVyO1xuICBzeXN0ZW1Ub3RhbDogbnVtYmVyO1xuICBzeXN0ZW1BdmFpbGFibGU6IG51bWJlcjtcbiAgc3lzdGVtVXNlZDogbnVtYmVyO1xuICBzeXN0ZW1Vc2VkUGVyY2VudDogbnVtYmVyO1xufVxuXG4vKiogRGlzayBJL08gbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNrSU9NZXRyaWNzIHtcbiAgcmVhZEJ5dGVzOiBudW1iZXI7XG4gIHdyaXRlQnl0ZXM6IG51bWJlcjtcbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqIFN0b3JhZ2UgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTWV0cmljcyB7XG4gIGRiUGF0aDogc3RyaW5nO1xuICBkYlNpemVCeXRlczogbnVtYmVyO1xuICB2b2x1bWVUb3RhbDogbnVtYmVyO1xuICB2b2x1bWVGcmVlOiBudW1iZXI7XG4gIHZvbHVtZVVzZWQ6IG51bWJlcjtcbn1cblxuLyoqIE5ldHdvcmsgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrTWV0cmljcyB7XG4gIGJ5dGVzU2VudDogbnVtYmVyO1xuICBieXRlc1JlY3Y6IG51bWJlcjtcbiAgcGFja2V0c1NlbnQ6IG51bWJlcjtcbiAgcGFja2V0c1JlY3Y6IG51bWJlcjtcbn1cblxuLyoqIFN5c3RlbS1sZXZlbCBtZXRyaWNzICovXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbU1ldHJpY3Mge1xuICBjcHU/OiBDcHVNZXRyaWNzO1xuICBtZW1vcnk/OiBNZW1vcnlNZXRyaWNzO1xuICBkaXNrSU8/OiBEaXNrSU9NZXRyaWNzO1xuICBzdG9yYWdlPzogU3RvcmFnZU1ldHJpY3M7XG4gIG5ldHdvcms/OiBOZXR3b3JrTWV0cmljcztcbn1cblxuLyoqIFJlc3VsdCBvZiBhIGNvbXBhY3Qgb3BlcmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhY3RSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2YgYSB3YWl0LWZvci1jb21wdXRlLXRvcG9sb2d5IG9wZXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlVG9wb2xvZ3lSZXN1bHQge1xuICByZWFkeTogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuIl19
|