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
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session service handles authentication and session lifecycle.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SessionService = void 0;
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
const services_1 = require("../services");
|
|
9
|
+
/**
|
|
10
|
+
* Session service for authentication and session management.
|
|
11
|
+
*/
|
|
12
|
+
class SessionService {
|
|
13
|
+
ctx;
|
|
14
|
+
constructor(ctx) {
|
|
15
|
+
this.ctx = ctx;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Authenticate the user and create a session.
|
|
19
|
+
*/
|
|
20
|
+
async login(username, password, defaultGraph) {
|
|
21
|
+
const request = {
|
|
22
|
+
username,
|
|
23
|
+
password,
|
|
24
|
+
default_graph: defaultGraph || '',
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
const response = await (0, services_1.promisifyCall)(this.ctx.clients.sessionService, 'Login', request);
|
|
28
|
+
const session = this.ctx.sessions.login(parseInt(response.session_id || '0', 10), response.server_version || '', response.roles || [], defaultGraph || '', {
|
|
29
|
+
isCluster: response.is_cluster || false,
|
|
30
|
+
clusterId: response.cluster_id || '',
|
|
31
|
+
partitionCount: response.partition_count || 0,
|
|
32
|
+
});
|
|
33
|
+
return session;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new errors_1.LoginFailedError(error.message || 'Login failed');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Terminate the current session.
|
|
41
|
+
*/
|
|
42
|
+
async logout() {
|
|
43
|
+
if (!this.ctx.sessions.isLoggedIn())
|
|
44
|
+
return;
|
|
45
|
+
try {
|
|
46
|
+
const metadata = this.ctx.getSessionMetadata();
|
|
47
|
+
await (0, services_1.promisifyCall)(this.ctx.clients.sessionService, 'Logout', {}, metadata);
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
// Ignore logout errors
|
|
51
|
+
}
|
|
52
|
+
this.ctx.txManager.clearAll();
|
|
53
|
+
this.ctx.sessions.logout();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check the connection and return the latency in nanoseconds.
|
|
57
|
+
*/
|
|
58
|
+
async ping() {
|
|
59
|
+
const metadata = this.ctx.getSessionMetadata();
|
|
60
|
+
const response = await (0, services_1.promisifyCall)(this.ctx.clients.sessionService, 'Ping', {}, metadata);
|
|
61
|
+
this.ctx.updateActivity();
|
|
62
|
+
return parseInt(response.latency_ns || '0', 10);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.SessionService = SessionService;
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3Nlc3Npb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUlILHNDQUE2QztBQUM3QywwQ0FBNEM7QUFFNUM7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDTDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxZQUFvQjtRQUNsRSxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVE7WUFDUixRQUFRO1lBQ1IsYUFBYSxFQUFFLFlBQVksSUFBSSxFQUFFO1NBQ2xDLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsd0JBQWEsRUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMvQixPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQ3JDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDeEMsUUFBUSxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQzdCLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUNwQixZQUFZLElBQUksRUFBRSxFQUNsQjtnQkFDRSxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsSUFBSSxLQUFLO2dCQUN2QyxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsSUFBSSxFQUFFO2dCQUNwQyxjQUFjLEVBQUUsUUFBUSxDQUFDLGVBQWUsSUFBSSxDQUFDO2FBQzlDLENBQ0YsQ0FBQztZQUVGLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSx5QkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPO1FBRTVDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUEsd0JBQWEsRUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMvQixRQUFRLEVBQ1IsRUFBRSxFQUNGLFFBQVEsQ0FDVCxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCx1QkFBdUI7UUFDekIsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRS9DLE1BQU0sUUFBUSxHQUFRLE1BQU0sSUFBQSx3QkFBYSxFQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQy9CLE1BQU0sRUFDTixFQUFFLEVBQ0YsUUFBUSxDQUNULENBQUM7UUFFRixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQTVFRCx3Q0E0RUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogU2Vzc2lvbiBzZXJ2aWNlIGhhbmRsZXMgYXV0aGVudGljYXRpb24gYW5kIHNlc3Npb24gbGlmZWN5Y2xlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSAnLi4vc2Vzc2lvbic7XHJcbmltcG9ydCB7IExvZ2luRmFpbGVkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xyXG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5cclxuLyoqXHJcbiAqIFNlc3Npb24gc2VydmljZSBmb3IgYXV0aGVudGljYXRpb24gYW5kIHNlc3Npb24gbWFuYWdlbWVudC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxyXG5cclxuICAvKipcclxuICAgKiBBdXRoZW50aWNhdGUgdGhlIHVzZXIgYW5kIGNyZWF0ZSBhIHNlc3Npb24uXHJcbiAgICovXHJcbiAgYXN5bmMgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgZGVmYXVsdEdyYXBoOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb24+IHtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XHJcbiAgICAgIHVzZXJuYW1lLFxyXG4gICAgICBwYXNzd29yZCxcclxuICAgICAgZGVmYXVsdF9ncmFwaDogZGVmYXVsdEdyYXBoIHx8ICcnLFxyXG4gICAgfTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcclxuICAgICAgICB0aGlzLmN0eC5jbGllbnRzLnNlc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgICdMb2dpbicsXHJcbiAgICAgICAgcmVxdWVzdFxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmxvZ2luKFxyXG4gICAgICAgIHBhcnNlSW50KHJlc3BvbnNlLnNlc3Npb25faWQgfHwgJzAnLCAxMCksXHJcbiAgICAgICAgcmVzcG9uc2Uuc2VydmVyX3ZlcnNpb24gfHwgJycsXHJcbiAgICAgICAgcmVzcG9uc2Uucm9sZXMgfHwgW10sXHJcbiAgICAgICAgZGVmYXVsdEdyYXBoIHx8ICcnLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlzQ2x1c3RlcjogcmVzcG9uc2UuaXNfY2x1c3RlciB8fCBmYWxzZSxcclxuICAgICAgICAgIGNsdXN0ZXJJZDogcmVzcG9uc2UuY2x1c3Rlcl9pZCB8fCAnJyxcclxuICAgICAgICAgIHBhcnRpdGlvbkNvdW50OiByZXNwb25zZS5wYXJ0aXRpb25fY291bnQgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgICByZXR1cm4gc2Vzc2lvbjtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgdGhyb3cgbmV3IExvZ2luRmFpbGVkRXJyb3IoZXJyb3IubWVzc2FnZSB8fCAnTG9naW4gZmFpbGVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXJtaW5hdGUgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cclxuICAgKi9cclxuICBhc3luYyBsb2dvdXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuY3R4LnNlc3Npb25zLmlzTG9nZ2VkSW4oKSkgcmV0dXJuO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XHJcbiAgICAgIGF3YWl0IHByb21pc2lmeUNhbGwoXHJcbiAgICAgICAgdGhpcy5jdHguY2xpZW50cy5zZXNzaW9uU2VydmljZSxcclxuICAgICAgICAnTG9nb3V0JyxcclxuICAgICAgICB7fSxcclxuICAgICAgICBtZXRhZGF0YVxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBJZ25vcmUgbG9nb3V0IGVycm9yc1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3R4LnR4TWFuYWdlci5jbGVhckFsbCgpO1xyXG4gICAgdGhpcy5jdHguc2Vzc2lvbnMubG9nb3V0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayB0aGUgY29ubmVjdGlvbiBhbmQgcmV0dXJuIHRoZSBsYXRlbmN5IGluIG5hbm9zZWNvbmRzLlxyXG4gICAqL1xyXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXHJcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuc2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICdQaW5nJyxcclxuICAgICAge30sXHJcbiAgICAgIG1ldGFkYXRhXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XHJcbiAgICByZXR1cm4gcGFyc2VJbnQocmVzcG9uc2UubGF0ZW5jeV9ucyB8fCAnMCcsIDEwKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transaction service handles transaction lifecycle management.
|
|
3
|
+
*/
|
|
4
|
+
import { ServiceContext } from './service-context';
|
|
5
|
+
import { Transaction } from '../transaction';
|
|
6
|
+
import { TransactionInfo } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Transaction service for managing database transactions.
|
|
9
|
+
*/
|
|
10
|
+
export declare class TransactionService {
|
|
11
|
+
private ctx;
|
|
12
|
+
constructor(ctx: ServiceContext);
|
|
13
|
+
/**
|
|
14
|
+
* Start a new transaction.
|
|
15
|
+
*/
|
|
16
|
+
beginTransaction(graphName: string, readOnly?: boolean, timeout?: number): Promise<Transaction>;
|
|
17
|
+
/**
|
|
18
|
+
* Commit a transaction.
|
|
19
|
+
*/
|
|
20
|
+
commit(transactionId: number): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Rollback a transaction.
|
|
23
|
+
*/
|
|
24
|
+
rollback(transactionId: number): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Return active transactions for the current session.
|
|
27
|
+
*/
|
|
28
|
+
listTransactions(): Promise<TransactionInfo[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Execute a function within a transaction.
|
|
31
|
+
*/
|
|
32
|
+
withTransaction<T>(graphName: string, fn: (txId: number) => Promise<T>, readOnly?: boolean): Promise<T>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Transaction service handles transaction lifecycle management.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TransactionService = void 0;
|
|
7
|
+
const services_1 = require("../services");
|
|
8
|
+
/**
|
|
9
|
+
* Transaction service for managing database transactions.
|
|
10
|
+
*/
|
|
11
|
+
class TransactionService {
|
|
12
|
+
ctx;
|
|
13
|
+
constructor(ctx) {
|
|
14
|
+
this.ctx = ctx;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Start a new transaction.
|
|
18
|
+
*/
|
|
19
|
+
async beginTransaction(graphName, readOnly = false, timeout = 0) {
|
|
20
|
+
const session = this.ctx.sessions.getSession();
|
|
21
|
+
const request = {
|
|
22
|
+
session_id: session?.id?.toString() || '0',
|
|
23
|
+
graph_name: graphName,
|
|
24
|
+
read_only: readOnly,
|
|
25
|
+
timeout: Math.floor((timeout || this.ctx.config.timeout || 30000) / 1000), // Convert ms to seconds for gRPC
|
|
26
|
+
};
|
|
27
|
+
const metadata = this.ctx.getSessionMetadata();
|
|
28
|
+
const response = await (0, services_1.promisifyCall)(this.ctx.clients.transactionService, 'Begin', request, metadata);
|
|
29
|
+
const txId = parseInt(response.transaction_id || '0', 10);
|
|
30
|
+
const sessionId = session?.id || 0;
|
|
31
|
+
const timeoutMs = timeout || this.ctx.config.timeout || 30000;
|
|
32
|
+
const tx = this.ctx.txManager.begin(txId, sessionId, graphName, readOnly, timeoutMs);
|
|
33
|
+
return tx;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Commit a transaction.
|
|
37
|
+
*/
|
|
38
|
+
async commit(transactionId) {
|
|
39
|
+
const session = this.ctx.sessions.getSession();
|
|
40
|
+
const request = {
|
|
41
|
+
session_id: session?.id?.toString() || '0',
|
|
42
|
+
transaction_id: transactionId.toString(),
|
|
43
|
+
};
|
|
44
|
+
const metadata = this.ctx.getSessionMetadata();
|
|
45
|
+
const response = await (0, services_1.promisifyCall)(this.ctx.clients.transactionService, 'Commit', request, metadata);
|
|
46
|
+
this.ctx.txManager.commit(transactionId);
|
|
47
|
+
return response.success || false;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Rollback a transaction.
|
|
51
|
+
*/
|
|
52
|
+
async rollback(transactionId) {
|
|
53
|
+
const session = this.ctx.sessions.getSession();
|
|
54
|
+
const request = {
|
|
55
|
+
session_id: session?.id?.toString() || '0',
|
|
56
|
+
transaction_id: transactionId.toString(),
|
|
57
|
+
};
|
|
58
|
+
const metadata = this.ctx.getSessionMetadata();
|
|
59
|
+
const response = await (0, services_1.promisifyCall)(this.ctx.clients.transactionService, 'Rollback', request, metadata);
|
|
60
|
+
this.ctx.txManager.rollback(transactionId);
|
|
61
|
+
return response.success || false;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Return active transactions for the current session.
|
|
65
|
+
*/
|
|
66
|
+
async listTransactions() {
|
|
67
|
+
const session = this.ctx.sessions.getSession();
|
|
68
|
+
const request = {
|
|
69
|
+
session_id: session?.id?.toString() || '0',
|
|
70
|
+
};
|
|
71
|
+
const metadata = this.ctx.getSessionMetadata();
|
|
72
|
+
const response = await (0, services_1.promisifyCall)(this.ctx.clients.transactionService, 'ListTransactions', request, metadata);
|
|
73
|
+
return (response.transactions || []).map((t) => ({
|
|
74
|
+
transactionId: parseInt(t.transaction_id || '0', 10),
|
|
75
|
+
sessionId: parseInt(t.session_id || '0', 10),
|
|
76
|
+
graphName: t.graph_name || '',
|
|
77
|
+
readOnly: t.read_only || false,
|
|
78
|
+
createdAt: parseInt(t.created_at || '0', 10),
|
|
79
|
+
durationMs: parseInt(t.duration_ms || '0', 10),
|
|
80
|
+
internalTxId: t.internal_tx_id || '',
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Execute a function within a transaction.
|
|
85
|
+
*/
|
|
86
|
+
async withTransaction(graphName, fn, readOnly = false) {
|
|
87
|
+
const tx = await this.beginTransaction(graphName, readOnly, this.ctx.config.timeout ?? 30000);
|
|
88
|
+
try {
|
|
89
|
+
const result = await fn(tx.id);
|
|
90
|
+
await this.commit(tx.id);
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
await this.rollback(tx.id);
|
|
95
|
+
throw e;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.TransactionService = TransactionService;
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy90cmFuc2FjdGlvbi1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBS0gsMENBQTRDO0FBRTVDOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7SUFDVDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLFNBQWlCLEVBQ2pCLFdBQW9CLEtBQUssRUFDekIsVUFBa0IsQ0FBQztRQUVuQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQyxNQUFNLE9BQU8sR0FBRztZQUNkLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUc7WUFDMUMsVUFBVSxFQUFFLFNBQVM7WUFDckIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLGlDQUFpQztTQUM3RyxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sUUFBUSxHQUFRLE1BQU0sSUFBQSx3QkFBYSxFQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDbkMsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLENBQ1QsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxJQUFJLEdBQUcsRUFBRSxFQUFF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QTRIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUcmFuc2FjdGlvbiBzZXJ2aWNlIGhhbmRsZXMgdHJhbnNhY3Rpb24gbGlmZWN5Y2xlIG1hbmFnZW1lbnQuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgU2VydmljZUNvbnRleHQgfSBmcm9tICcuL3NlcnZpY2UtY29udGV4dCc7XHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24nO1xyXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkluZm8gfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IHByb21pc2lmeUNhbGwgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG4vKipcclxuICogVHJhbnNhY3Rpb24gc2VydmljZSBmb3IgbWFuYWdpbmcgZGF0YWJhc2UgdHJhbnNhY3Rpb25zLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydCBhIG5ldyB0cmFuc2FjdGlvbi5cclxuICAgKi9cclxuICBhc3luYyBiZWdpblRyYW5zYWN0aW9uKFxyXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXHJcbiAgICByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgdGltZW91dDogbnVtYmVyID0gMFxyXG4gICk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcclxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN0eC5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xyXG4gICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uPy5pZD8udG9TdHJpbmcoKSB8fCAnMCcsXHJcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcclxuICAgICAgcmVhZF9vbmx5OiByZWFkT25seSxcclxuICAgICAgdGltZW91dDogTWF0aC5mbG9vcigodGltZW91dCB8fCB0aGlzLmN0eC5jb25maWcudGltZW91dCB8fCAzMDAwMCkgLyAxMDAwKSwgLy8gQ29udmVydCBtcyB0byBzZWNvbmRzIGZvciBnUlBDXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XHJcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcclxuICAgICAgdGhpcy5jdHguY2xpZW50cy50cmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICAgICdCZWdpbicsXHJcbiAgICAgIHJlcXVlc3QsXHJcbiAgICAgIG1ldGFkYXRhXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHR4SWQgPSBwYXJzZUludChyZXNwb25zZS50cmFuc2FjdGlvbl9pZCB8fCAnMCcsIDEwKTtcclxuICAgIGNvbnN0IHNlc3Npb25JZCA9IHNlc3Npb24/LmlkIHx8IDA7XHJcbiAgICBjb25zdCB0aW1lb3V0TXMgPSB0aW1lb3V0IHx8IHRoaXMuY3R4LmNvbmZpZy50aW1lb3V0IHx8IDMwMDAwO1xyXG4gICAgY29uc3QgdHggPSB0aGlzLmN0eC50eE1hbmFnZXIuYmVnaW4odHhJZCwgc2Vzc2lvbklkLCBncmFwaE5hbWUsIHJlYWRPbmx5LCB0aW1lb3V0TXMpO1xyXG4gICAgcmV0dXJuIHR4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tbWl0IGEgdHJhbnNhY3Rpb24uXHJcbiAgICovXHJcbiAgYXN5bmMgY29tbWl0KHRyYW5zYWN0aW9uSWQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XHJcbiAgICAgIHNlc3Npb25faWQ6IHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyxcclxuICAgICAgdHJhbnNhY3Rpb25faWQ6IHRyYW5zYWN0aW9uSWQudG9TdHJpbmcoKSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxyXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLnRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgICAgJ0NvbW1pdCcsXHJcbiAgICAgIHJlcXVlc3QsXHJcbiAgICAgIG1ldGFkYXRhXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY3R4LnR4TWFuYWdlci5jb21taXQodHJhbnNhY3Rpb25JZCk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJvbGxiYWNrIGEgdHJhbnNhY3Rpb24uXHJcbiAgICovXHJcbiAgYXN5bmMgcm9sbGJhY2sodHJhbnNhY3Rpb25JZDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcclxuICAgICAgc2Vzc2lvbl9pZDogc2Vzc2lvbj8uaWQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxyXG4gICAgICB0cmFuc2FjdGlvbl9pZDogdHJhbnNhY3Rpb25JZC50b1N0cmluZygpLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXHJcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMudHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAnUm9sbGJhY2snLFxyXG4gICAgICByZXF1ZXN0LFxyXG4gICAgICBtZXRhZGF0YVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmN0eC50eE1hbmFnZXIucm9sbGJhY2sodHJhbnNhY3Rpb25JZCk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBhY3RpdmUgdHJhbnNhY3Rpb25zIGZvciB0aGUgY3VycmVudCBzZXNzaW9uLlxyXG4gICAqL1xyXG4gIGFzeW5jIGxpc3RUcmFuc2FjdGlvbnMoKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9bXT4ge1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XHJcbiAgICAgIHNlc3Npb25faWQ6IHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxyXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLnRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgICAgJ0xpc3RUcmFuc2FjdGlvbnMnLFxyXG4gICAgICByZXF1ZXN0LFxyXG4gICAgICBtZXRhZGF0YVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKHJlc3BvbnNlLnRyYW5zYWN0aW9ucyB8fCBbXSkubWFwKCh0OiBhbnkpID0+ICh7XHJcbiAgICAgIHRyYW5zYWN0aW9uSWQ6IHBhcnNlSW50KHQudHJhbnNhY3Rpb25faWQgfHwgJzAnLCAxMCksXHJcbiAgICAgIHNlc3Npb25JZDogcGFyc2VJbnQodC5zZXNzaW9uX2lkIHx8ICcwJywgMTApLFxyXG4gICAgICBncmFwaE5hbWU6IHQuZ3JhcGhfbmFtZSB8fCAnJyxcclxuICAgICAgcmVhZE9ubHk6IHQucmVhZF9vbmx5IHx8IGZhbHNlLFxyXG4gICAgICBjcmVhdGVkQXQ6IHBhcnNlSW50KHQuY3JlYXRlZF9hdCB8fCAnMCcsIDEwKSxcclxuICAgICAgZHVyYXRpb25NczogcGFyc2VJbnQodC5kdXJhdGlvbl9tcyB8fCAnMCcsIDEwKSxcclxuICAgICAgaW50ZXJuYWxUeElkOiB0LmludGVybmFsX3R4X2lkIHx8ICcnLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBhIGZ1bmN0aW9uIHdpdGhpbiBhIHRyYW5zYWN0aW9uLlxyXG4gICAqL1xyXG4gIGFzeW5jIHdpdGhUcmFuc2FjdGlvbjxUPihcclxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxyXG4gICAgZm46ICh0eElkOiBudW1iZXIpID0+IFByb21pc2U8VD4sXHJcbiAgICByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogUHJvbWlzZTxUPiB7XHJcbiAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbihncmFwaE5hbWUsIHJlYWRPbmx5LCB0aGlzLmN0eC5jb25maWcudGltZW91dCA/PyAzMDAwMCk7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbih0eC5pZCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuY29tbWl0KHR4LmlkKTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFjayh0eC5pZCk7XHJcbiAgICAgIHRocm93IGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gRPC service clients for GQLDB Node.js driver.
|
|
3
|
+
* Uses @grpc/proto-loader for dynamic proto loading.
|
|
4
|
+
*/
|
|
5
|
+
import * as grpc from '@grpc/grpc-js';
|
|
6
|
+
/** Service client types */
|
|
7
|
+
export interface ServiceClients {
|
|
8
|
+
sessionService: grpc.Client;
|
|
9
|
+
queryService: grpc.Client;
|
|
10
|
+
graphService: grpc.Client;
|
|
11
|
+
transactionService: grpc.Client;
|
|
12
|
+
dataService: grpc.Client;
|
|
13
|
+
healthService: grpc.Client;
|
|
14
|
+
adminService: grpc.Client;
|
|
15
|
+
bulkImportService: grpc.Client;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create all gRPC service clients for a given host.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createServiceClients(host: string, credentials: grpc.ChannelCredentials, options?: grpc.ChannelOptions): ServiceClients;
|
|
21
|
+
/**
|
|
22
|
+
* Helper to promisify unary gRPC calls.
|
|
23
|
+
*/
|
|
24
|
+
export declare function promisifyCall<TRequest, TResponse>(client: any, method: string, request: TRequest, metadata?: grpc.Metadata): Promise<TResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Helper to promisify unary gRPC calls with deadline.
|
|
27
|
+
*/
|
|
28
|
+
export declare function promisifyCallWithDeadline<TRequest, TResponse>(client: any, method: string, request: TRequest, timeoutMs: number, metadata?: grpc.Metadata): Promise<TResponse>;
|
package/dist/services.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* gRPC service clients for GQLDB Node.js driver.
|
|
4
|
+
* Uses @grpc/proto-loader for dynamic proto loading.
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.createServiceClients = createServiceClients;
|
|
41
|
+
exports.promisifyCall = promisifyCall;
|
|
42
|
+
exports.promisifyCallWithDeadline = promisifyCallWithDeadline;
|
|
43
|
+
const grpc = __importStar(require("@grpc/grpc-js"));
|
|
44
|
+
const protoLoader = __importStar(require("@grpc/proto-loader"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
// Proto loading options
|
|
47
|
+
const PROTO_OPTIONS = {
|
|
48
|
+
keepCase: true,
|
|
49
|
+
longs: String,
|
|
50
|
+
enums: String,
|
|
51
|
+
defaults: true,
|
|
52
|
+
oneofs: true,
|
|
53
|
+
};
|
|
54
|
+
// Load proto definition (bundled with the package)
|
|
55
|
+
const PROTO_PATH = path.resolve(__dirname, './proto/gqldb.proto');
|
|
56
|
+
let packageDefinition;
|
|
57
|
+
let grpcObject;
|
|
58
|
+
let gqldbPackage;
|
|
59
|
+
/**
|
|
60
|
+
* Load the proto file and return the gqldb package.
|
|
61
|
+
* Caches the result for subsequent calls.
|
|
62
|
+
*/
|
|
63
|
+
function loadProto() {
|
|
64
|
+
if (!gqldbPackage) {
|
|
65
|
+
packageDefinition = protoLoader.loadSync(PROTO_PATH, PROTO_OPTIONS);
|
|
66
|
+
grpcObject = grpc.loadPackageDefinition(packageDefinition);
|
|
67
|
+
gqldbPackage = grpcObject.gqldb;
|
|
68
|
+
}
|
|
69
|
+
return gqldbPackage;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create all gRPC service clients for a given host.
|
|
73
|
+
*/
|
|
74
|
+
function createServiceClients(host, credentials, options) {
|
|
75
|
+
const proto = loadProto();
|
|
76
|
+
return {
|
|
77
|
+
sessionService: new proto.SessionService(host, credentials, options),
|
|
78
|
+
queryService: new proto.QueryService(host, credentials, options),
|
|
79
|
+
graphService: new proto.GraphService(host, credentials, options),
|
|
80
|
+
transactionService: new proto.TransactionService(host, credentials, options),
|
|
81
|
+
dataService: new proto.DataService(host, credentials, options),
|
|
82
|
+
healthService: new proto.Health(host, credentials, options),
|
|
83
|
+
adminService: new proto.AdminService(host, credentials, options),
|
|
84
|
+
bulkImportService: new proto.BulkImportService(host, credentials, options),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Helper to promisify unary gRPC calls.
|
|
89
|
+
*/
|
|
90
|
+
function promisifyCall(client, method, request, metadata) {
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
const fn = client[method].bind(client);
|
|
93
|
+
const meta = metadata || new grpc.Metadata();
|
|
94
|
+
fn(request, meta, (error, response) => {
|
|
95
|
+
if (error) {
|
|
96
|
+
reject(error);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
resolve(response);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Helper to promisify unary gRPC calls with deadline.
|
|
106
|
+
*/
|
|
107
|
+
function promisifyCallWithDeadline(client, method, request, timeoutMs, metadata) {
|
|
108
|
+
return new Promise((resolve, reject) => {
|
|
109
|
+
const fn = client[method].bind(client);
|
|
110
|
+
const meta = metadata || new grpc.Metadata();
|
|
111
|
+
const deadline = new Date(Date.now() + timeoutMs);
|
|
112
|
+
fn(request, meta, { deadline }, (error, response) => {
|
|
113
|
+
if (error) {
|
|
114
|
+
reject(error);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
resolve(response);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrREgsb0RBaUJDO0FBS0Qsc0NBa0JDO0FBS0QsOERBb0JDO0FBakhELG9EQUFzQztBQUN0QyxnRUFBa0Q7QUFDbEQsMkNBQTZCO0FBRTdCLHdCQUF3QjtBQUN4QixNQUFNLGFBQWEsR0FBd0I7SUFDekMsUUFBUSxFQUFFLElBQUk7SUFDZCxLQUFLLEVBQUUsTUFBTTtJQUNiLEtBQUssRUFBRSxNQUFNO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFFRixtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUVsRSxJQUFJLGlCQUFnRCxDQUFDO0FBQ3JELElBQUksVUFBMkIsQ0FBQztBQUNoQyxJQUFJLFlBQWlCLENBQUM7QUFFdEI7OztHQUdHO0FBQ0gsU0FBUyxTQUFTO0lBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixpQkFBaUIsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNwRSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0QsWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFjRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxJQUFZLEVBQ1osV0FBb0MsRUFDcEMsT0FBNkI7SUFFN0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFFMUIsT0FBTztRQUNMLGNBQWMsRUFBRSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7UUFDcEUsWUFBWSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztRQUNoRSxZQUFZLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO1FBQ2hFLGtCQUFrQixFQUFFLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO1FBQzVFLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7UUFDOUQsYUFBYSxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztRQUMzRCxZQUFZLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO1FBQ2hFLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO0tBQzNFLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQzNCLE1BQVcsRUFDWCxNQUFjLEVBQ2QsT0FBaUIsRUFDakIsUUFBd0I7SUFFeEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQStCLEVBQUUsUUFBbUIsRUFBRSxFQUFFO1lBQ3pFLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQix5QkFBeUIsQ0FDdkMsTUFBVyxFQUNYLE1BQWMsRUFDZCxPQUFpQixFQUNqQixTQUFpQixFQUNqQixRQUF3QjtJQUV4QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUVsRCxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsS0FBK0IsRUFBRSxRQUFtQixFQUFFLEVBQUU7WUFDdkYsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogZ1JQQyBzZXJ2aWNlIGNsaWVudHMgZm9yIEdRTERCIE5vZGUuanMgZHJpdmVyLlxyXG4gKiBVc2VzIEBncnBjL3Byb3RvLWxvYWRlciBmb3IgZHluYW1pYyBwcm90byBsb2FkaW5nLlxyXG4gKi9cclxuXHJcbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XHJcbmltcG9ydCAqIGFzIHByb3RvTG9hZGVyIGZyb20gJ0BncnBjL3Byb3RvLWxvYWRlcic7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG4vLyBQcm90byBsb2FkaW5nIG9wdGlvbnNcclxuY29uc3QgUFJPVE9fT1BUSU9OUzogcHJvdG9Mb2FkZXIuT3B0aW9ucyA9IHtcclxuICBrZWVwQ2FzZTogdHJ1ZSxcclxuICBsb25nczogU3RyaW5nLFxyXG4gIGVudW1zOiBTdHJpbmcsXHJcbiAgZGVmYXVsdHM6IHRydWUsXHJcbiAgb25lb2ZzOiB0cnVlLFxyXG59O1xyXG5cclxuLy8gTG9hZCBwcm90byBkZWZpbml0aW9uIChidW5kbGVkIHdpdGggdGhlIHBhY2thZ2UpXHJcbmNvbnN0IFBST1RPX1BBVEggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9wcm90by9ncWxkYi5wcm90bycpO1xyXG5cclxubGV0IHBhY2thZ2VEZWZpbml0aW9uOiBwcm90b0xvYWRlci5QYWNrYWdlRGVmaW5pdGlvbjtcclxubGV0IGdycGNPYmplY3Q6IGdycGMuR3JwY09iamVjdDtcclxubGV0IGdxbGRiUGFja2FnZTogYW55O1xyXG5cclxuLyoqXHJcbiAqIExvYWQgdGhlIHByb3RvIGZpbGUgYW5kIHJldHVybiB0aGUgZ3FsZGIgcGFja2FnZS5cclxuICogQ2FjaGVzIHRoZSByZXN1bHQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuXHJcbiAqL1xyXG5mdW5jdGlvbiBsb2FkUHJvdG8oKTogYW55IHtcclxuICBpZiAoIWdxbGRiUGFja2FnZSkge1xyXG4gICAgcGFja2FnZURlZmluaXRpb24gPSBwcm90b0xvYWRlci5sb2FkU3luYyhQUk9UT19QQVRILCBQUk9UT19PUFRJT05TKTtcclxuICAgIGdycGNPYmplY3QgPSBncnBjLmxvYWRQYWNrYWdlRGVmaW5pdGlvbihwYWNrYWdlRGVmaW5pdGlvbik7XHJcbiAgICBncWxkYlBhY2thZ2UgPSBncnBjT2JqZWN0LmdxbGRiO1xyXG4gIH1cclxuICByZXR1cm4gZ3FsZGJQYWNrYWdlO1xyXG59XHJcblxyXG4vKiogU2VydmljZSBjbGllbnQgdHlwZXMgKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlQ2xpZW50cyB7XHJcbiAgc2Vzc2lvblNlcnZpY2U6IGdycGMuQ2xpZW50O1xyXG4gIHF1ZXJ5U2VydmljZTogZ3JwYy5DbGllbnQ7XHJcbiAgZ3JhcGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcclxuICB0cmFuc2FjdGlvblNlcnZpY2U6IGdycGMuQ2xpZW50O1xyXG4gIGRhdGFTZXJ2aWNlOiBncnBjLkNsaWVudDtcclxuICBoZWFsdGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcclxuICBhZG1pblNlcnZpY2U6IGdycGMuQ2xpZW50O1xyXG4gIGJ1bGtJbXBvcnRTZXJ2aWNlOiBncnBjLkNsaWVudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBhbGwgZ1JQQyBzZXJ2aWNlIGNsaWVudHMgZm9yIGEgZ2l2ZW4gaG9zdC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXJ2aWNlQ2xpZW50cyhcclxuICBob3N0OiBzdHJpbmcsXHJcbiAgY3JlZGVudGlhbHM6IGdycGMuQ2hhbm5lbENyZWRlbnRpYWxzLFxyXG4gIG9wdGlvbnM/OiBncnBjLkNoYW5uZWxPcHRpb25zXHJcbik6IFNlcnZpY2VDbGllbnRzIHtcclxuICBjb25zdCBwcm90byA9IGxvYWRQcm90bygpO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgc2Vzc2lvblNlcnZpY2U6IG5ldyBwcm90by5TZXNzaW9uU2VydmljZShob3N0LCBjcmVkZW50aWFscywgb3B0aW9ucyksXHJcbiAgICBxdWVyeVNlcnZpY2U6IG5ldyBwcm90by5RdWVyeVNlcnZpY2UoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpLFxyXG4gICAgZ3JhcGhTZXJ2aWNlOiBuZXcgcHJvdG8uR3JhcGhTZXJ2aWNlKGhvc3QsIGNyZWRlbnRpYWxzLCBvcHRpb25zKSxcclxuICAgIHRyYW5zYWN0aW9uU2VydmljZTogbmV3IHByb3RvLlRyYW5zYWN0aW9uU2VydmljZShob3N0LCBjcmVkZW50aWFscywgb3B0aW9ucyksXHJcbiAgICBkYXRhU2VydmljZTogbmV3IHByb3RvLkRhdGFTZXJ2aWNlKGhvc3QsIGNyZWRlbnRpYWxzLCBvcHRpb25zKSxcclxuICAgIGhlYWx0aFNlcnZpY2U6IG5ldyBwcm90by5IZWFsdGgoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpLFxyXG4gICAgYWRtaW5TZXJ2aWNlOiBuZXcgcHJvdG8uQWRtaW5TZXJ2aWNlKGhvc3QsIGNyZWRlbnRpYWxzLCBvcHRpb25zKSxcclxuICAgIGJ1bGtJbXBvcnRTZXJ2aWNlOiBuZXcgcHJvdG8uQnVsa0ltcG9ydFNlcnZpY2UoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpLFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgdG8gcHJvbWlzaWZ5IHVuYXJ5IGdSUEMgY2FsbHMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5Q2FsbDxUUmVxdWVzdCwgVFJlc3BvbnNlPihcclxuICBjbGllbnQ6IGFueSxcclxuICBtZXRob2Q6IHN0cmluZyxcclxuICByZXF1ZXN0OiBUUmVxdWVzdCxcclxuICBtZXRhZGF0YT86IGdycGMuTWV0YWRhdGFcclxuKTogUHJvbWlzZTxUUmVzcG9uc2U+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgY29uc3QgZm4gPSBjbGllbnRbbWV0aG9kXS5iaW5kKGNsaWVudCk7XHJcbiAgICBjb25zdCBtZXRhID0gbWV0YWRhdGEgfHwgbmV3IGdycGMuTWV0YWRhdGEoKTtcclxuXHJcbiAgICBmbihyZXF1ZXN0LCBtZXRhLCAoZXJyb3I6IGdycGMuU2VydmljZUVycm9yIHwgbnVsbCwgcmVzcG9uc2U6IFRSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEhlbHBlciB0byBwcm9taXNpZnkgdW5hcnkgZ1JQQyBjYWxscyB3aXRoIGRlYWRsaW5lLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmU8VFJlcXVlc3QsIFRSZXNwb25zZT4oXHJcbiAgY2xpZW50OiBhbnksXHJcbiAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgcmVxdWVzdDogVFJlcXVlc3QsXHJcbiAgdGltZW91dE1zOiBudW1iZXIsXHJcbiAgbWV0YWRhdGE/OiBncnBjLk1ldGFkYXRhXHJcbik6IFByb21pc2U8VFJlc3BvbnNlPiB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIGNvbnN0IGZuID0gY2xpZW50W21ldGhvZF0uYmluZChjbGllbnQpO1xyXG4gICAgY29uc3QgbWV0YSA9IG1ldGFkYXRhIHx8IG5ldyBncnBjLk1ldGFkYXRhKCk7XHJcbiAgICBjb25zdCBkZWFkbGluZSA9IG5ldyBEYXRlKERhdGUubm93KCkgKyB0aW1lb3V0TXMpO1xyXG5cclxuICAgIGZuKHJlcXVlc3QsIG1ldGEsIHsgZGVhZGxpbmUgfSwgKGVycm9yOiBncnBjLlNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3BvbnNlOiBUUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session management for GQLDB Node.js driver.
|
|
3
|
+
*/
|
|
4
|
+
/** Represents an authenticated session */
|
|
5
|
+
export interface Session {
|
|
6
|
+
id: number;
|
|
7
|
+
serverVersion: string;
|
|
8
|
+
roles: string[];
|
|
9
|
+
defaultGraph: string;
|
|
10
|
+
createdAt: number;
|
|
11
|
+
lastActivity: number;
|
|
12
|
+
isCluster?: boolean;
|
|
13
|
+
clusterId?: string;
|
|
14
|
+
partitionCount?: number;
|
|
15
|
+
}
|
|
16
|
+
/** Manages sessions for the client */
|
|
17
|
+
export declare class SessionManager {
|
|
18
|
+
private session;
|
|
19
|
+
/** Create a new session */
|
|
20
|
+
login(sessionId: number, serverVersion: string, roles: string[], defaultGraph: string, clusterInfo?: {
|
|
21
|
+
isCluster?: boolean;
|
|
22
|
+
clusterId?: string;
|
|
23
|
+
partitionCount?: number;
|
|
24
|
+
}): Session;
|
|
25
|
+
/** Clear the current session */
|
|
26
|
+
logout(): void;
|
|
27
|
+
/** Get the current session */
|
|
28
|
+
getSession(): Session | null;
|
|
29
|
+
/** Get the current session ID */
|
|
30
|
+
getSessionId(): number;
|
|
31
|
+
/** Check if there is an active session */
|
|
32
|
+
isLoggedIn(): boolean;
|
|
33
|
+
/** Update the last activity time */
|
|
34
|
+
updateActivity(): void;
|
|
35
|
+
/** Set the default graph for the session */
|
|
36
|
+
setDefaultGraph(graph: string): void;
|
|
37
|
+
/** Get the default graph for the session */
|
|
38
|
+
getDefaultGraph(): string;
|
|
39
|
+
/** Check if the session has a specific role */
|
|
40
|
+
hasRole(role: string): boolean;
|
|
41
|
+
/** Get how long the session has been idle in milliseconds */
|
|
42
|
+
idleDuration(): number;
|
|
43
|
+
/** Get how long the session has been active in milliseconds */
|
|
44
|
+
age(): number;
|
|
45
|
+
}
|
package/dist/session.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session management for GQLDB Node.js driver.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SessionManager = void 0;
|
|
7
|
+
/** Manages sessions for the client */
|
|
8
|
+
class SessionManager {
|
|
9
|
+
session = null;
|
|
10
|
+
/** Create a new session */
|
|
11
|
+
login(sessionId, serverVersion, roles, defaultGraph, clusterInfo) {
|
|
12
|
+
this.session = {
|
|
13
|
+
id: sessionId,
|
|
14
|
+
serverVersion,
|
|
15
|
+
roles,
|
|
16
|
+
defaultGraph,
|
|
17
|
+
createdAt: Date.now(),
|
|
18
|
+
lastActivity: Date.now(),
|
|
19
|
+
isCluster: clusterInfo?.isCluster || false,
|
|
20
|
+
clusterId: clusterInfo?.clusterId || '',
|
|
21
|
+
partitionCount: clusterInfo?.partitionCount || 0,
|
|
22
|
+
};
|
|
23
|
+
return this.session;
|
|
24
|
+
}
|
|
25
|
+
/** Clear the current session */
|
|
26
|
+
logout() {
|
|
27
|
+
this.session = null;
|
|
28
|
+
}
|
|
29
|
+
/** Get the current session */
|
|
30
|
+
getSession() {
|
|
31
|
+
return this.session;
|
|
32
|
+
}
|
|
33
|
+
/** Get the current session ID */
|
|
34
|
+
getSessionId() {
|
|
35
|
+
return this.session?.id ?? 0;
|
|
36
|
+
}
|
|
37
|
+
/** Check if there is an active session */
|
|
38
|
+
isLoggedIn() {
|
|
39
|
+
return this.session !== null;
|
|
40
|
+
}
|
|
41
|
+
/** Update the last activity time */
|
|
42
|
+
updateActivity() {
|
|
43
|
+
if (this.session) {
|
|
44
|
+
this.session.lastActivity = Date.now();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Set the default graph for the session */
|
|
48
|
+
setDefaultGraph(graph) {
|
|
49
|
+
if (this.session) {
|
|
50
|
+
this.session.defaultGraph = graph;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Get the default graph for the session */
|
|
54
|
+
getDefaultGraph() {
|
|
55
|
+
return this.session?.defaultGraph ?? '';
|
|
56
|
+
}
|
|
57
|
+
/** Check if the session has a specific role */
|
|
58
|
+
hasRole(role) {
|
|
59
|
+
return this.session?.roles.includes(role) ?? false;
|
|
60
|
+
}
|
|
61
|
+
/** Get how long the session has been idle in milliseconds */
|
|
62
|
+
idleDuration() {
|
|
63
|
+
if (!this.session)
|
|
64
|
+
return 0;
|
|
65
|
+
return Date.now() - this.session.lastActivity;
|
|
66
|
+
}
|
|
67
|
+
/** Get how long the session has been active in milliseconds */
|
|
68
|
+
age() {
|
|
69
|
+
if (!this.session)
|
|
70
|
+
return 0;
|
|
71
|
+
return Date.now() - this.session.createdAt;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.SessionManager = SessionManager;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBZ0JILHNDQUFzQztBQUN0QyxNQUFhLGNBQWM7SUFDakIsT0FBTyxHQUFtQixJQUFJLENBQUM7SUFFdkMsMkJBQTJCO0lBQzNCLEtBQUssQ0FDSCxTQUFpQixFQUNqQixhQUFxQixFQUNyQixLQUFlLEVBQ2YsWUFBb0IsRUFDcEIsV0FBa0Y7UUFFbEYsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLEVBQUUsRUFBRSxTQUFTO1lBQ2IsYUFBYTtZQUNiLEtBQUs7WUFDTCxZQUFZO1lBQ1osU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDckIsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLElBQUksS0FBSztZQUMxQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQ3ZDLGNBQWMsRUFBRSxXQUFXLEVBQUUsY0FBYyxJQUFJLENBQUM7U0FDakQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNyRCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELEdBQUc7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFoRkQsd0NBZ0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNlc3Npb24gbWFuYWdlbWVudCBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXHJcbiAqL1xyXG5cclxuLyoqIFJlcHJlc2VudHMgYW4gYXV0aGVudGljYXRlZCBzZXNzaW9uICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbiB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBzZXJ2ZXJWZXJzaW9uOiBzdHJpbmc7XHJcbiAgcm9sZXM6IHN0cmluZ1tdO1xyXG4gIGRlZmF1bHRHcmFwaDogc3RyaW5nO1xyXG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xyXG4gIGxhc3RBY3Rpdml0eTogbnVtYmVyO1xyXG4gIC8vIENsdXN0ZXIgZXh0ZW5zaW9uc1xyXG4gIGlzQ2x1c3Rlcj86IGJvb2xlYW47XHJcbiAgY2x1c3RlcklkPzogc3RyaW5nO1xyXG4gIHBhcnRpdGlvbkNvdW50PzogbnVtYmVyO1xyXG59XHJcblxyXG4vKiogTWFuYWdlcyBzZXNzaW9ucyBmb3IgdGhlIGNsaWVudCAqL1xyXG5leHBvcnQgY2xhc3MgU2Vzc2lvbk1hbmFnZXIge1xyXG4gIHByaXZhdGUgc2Vzc2lvbjogU2Vzc2lvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogQ3JlYXRlIGEgbmV3IHNlc3Npb24gKi9cclxuICBsb2dpbihcclxuICAgIHNlc3Npb25JZDogbnVtYmVyLFxyXG4gICAgc2VydmVyVmVyc2lvbjogc3RyaW5nLFxyXG4gICAgcm9sZXM6IHN0cmluZ1tdLFxyXG4gICAgZGVmYXVsdEdyYXBoOiBzdHJpbmcsXHJcbiAgICBjbHVzdGVySW5mbz86IHsgaXNDbHVzdGVyPzogYm9vbGVhbjsgY2x1c3RlcklkPzogc3RyaW5nOyBwYXJ0aXRpb25Db3VudD86IG51bWJlciB9XHJcbiAgKTogU2Vzc2lvbiB7XHJcbiAgICB0aGlzLnNlc3Npb24gPSB7XHJcbiAgICAgIGlkOiBzZXNzaW9uSWQsXHJcbiAgICAgIHNlcnZlclZlcnNpb24sXHJcbiAgICAgIHJvbGVzLFxyXG4gICAgICBkZWZhdWx0R3JhcGgsXHJcbiAgICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgbGFzdEFjdGl2aXR5OiBEYXRlLm5vdygpLFxyXG4gICAgICBpc0NsdXN0ZXI6IGNsdXN0ZXJJbmZvPy5pc0NsdXN0ZXIgfHwgZmFsc2UsXHJcbiAgICAgIGNsdXN0ZXJJZDogY2x1c3RlckluZm8/LmNsdXN0ZXJJZCB8fCAnJyxcclxuICAgICAgcGFydGl0aW9uQ291bnQ6IGNsdXN0ZXJJbmZvPy5wYXJ0aXRpb25Db3VudCB8fCAwLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb247XHJcbiAgfVxyXG5cclxuICAvKiogQ2xlYXIgdGhlIGN1cnJlbnQgc2Vzc2lvbiAqL1xyXG4gIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Vzc2lvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKiogR2V0IHRoZSBjdXJyZW50IHNlc3Npb24gKi9cclxuICBnZXRTZXNzaW9uKCk6IFNlc3Npb24gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb247XHJcbiAgfVxyXG5cclxuICAvKiogR2V0IHRoZSBjdXJyZW50IHNlc3Npb24gSUQgKi9cclxuICBnZXRTZXNzaW9uSWQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb24/LmlkID8/IDA7XHJcbiAgfVxyXG5cclxuICAvKiogQ2hlY2sgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIHNlc3Npb24gKi9cclxuICBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbiAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKiBVcGRhdGUgdGhlIGxhc3QgYWN0aXZpdHkgdGltZSAqL1xyXG4gIHVwZGF0ZUFjdGl2aXR5KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvbikge1xyXG4gICAgICB0aGlzLnNlc3Npb24ubGFzdEFjdGl2aXR5ID0gRGF0ZS5ub3coKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBTZXQgdGhlIGRlZmF1bHQgZ3JhcGggZm9yIHRoZSBzZXNzaW9uICovXHJcbiAgc2V0RGVmYXVsdEdyYXBoKGdyYXBoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlc3Npb24pIHtcclxuICAgICAgdGhpcy5zZXNzaW9uLmRlZmF1bHRHcmFwaCA9IGdyYXBoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEdldCB0aGUgZGVmYXVsdCBncmFwaCBmb3IgdGhlIHNlc3Npb24gKi9cclxuICBnZXREZWZhdWx0R3JhcGgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb24/LmRlZmF1bHRHcmFwaCA/PyAnJztcclxuICB9XHJcblxyXG4gIC8qKiBDaGVjayBpZiB0aGUgc2Vzc2lvbiBoYXMgYSBzcGVjaWZpYyByb2xlICovXHJcbiAgaGFzUm9sZShyb2xlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb24/LnJvbGVzLmluY2x1ZGVzKHJvbGUpID8/IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldCBob3cgbG9uZyB0aGUgc2Vzc2lvbiBoYXMgYmVlbiBpZGxlIGluIG1pbGxpc2Vjb25kcyAqL1xyXG4gIGlkbGVEdXJhdGlvbigpOiBudW1iZXIge1xyXG4gICAgaWYgKCF0aGlzLnNlc3Npb24pIHJldHVybiAwO1xyXG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLnNlc3Npb24ubGFzdEFjdGl2aXR5O1xyXG4gIH1cclxuXHJcbiAgLyoqIEdldCBob3cgbG9uZyB0aGUgc2Vzc2lvbiBoYXMgYmVlbiBhY3RpdmUgaW4gbWlsbGlzZWNvbmRzICovXHJcbiAgYWdlKCk6IG51bWJlciB7XHJcbiAgICBpZiAoIXRoaXMuc2Vzc2lvbikgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuc2Vzc2lvbi5jcmVhdGVkQXQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transaction management for GQLDB Node.js driver.
|
|
3
|
+
*/
|
|
4
|
+
/** Represents an active database transaction */
|
|
5
|
+
export interface Transaction {
|
|
6
|
+
id: number;
|
|
7
|
+
sessionId: number;
|
|
8
|
+
graphName: string;
|
|
9
|
+
readOnly: boolean;
|
|
10
|
+
createdAt: number;
|
|
11
|
+
timeout: number;
|
|
12
|
+
committed: boolean;
|
|
13
|
+
rolledBack: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Manages transactions for the client */
|
|
16
|
+
export declare class TransactionManager {
|
|
17
|
+
private transactions;
|
|
18
|
+
/** Create a new transaction */
|
|
19
|
+
begin(txId: number, sessionId: number, graphName: string, readOnly: boolean, timeout: number): Transaction;
|
|
20
|
+
/** Mark a transaction as committed */
|
|
21
|
+
commit(txId: number): void;
|
|
22
|
+
/** Mark a transaction as rolled back */
|
|
23
|
+
rollback(txId: number): void;
|
|
24
|
+
/** Get a transaction by ID */
|
|
25
|
+
get(txId: number): Transaction | undefined;
|
|
26
|
+
/** Get all active transactions */
|
|
27
|
+
getActive(): Transaction[];
|
|
28
|
+
/** Get all active transactions for a session */
|
|
29
|
+
getActiveForSession(sessionId: number): Transaction[];
|
|
30
|
+
/** Check if there are any active transactions */
|
|
31
|
+
hasActive(): boolean;
|
|
32
|
+
/** Get the number of active transactions */
|
|
33
|
+
count(): number;
|
|
34
|
+
/** Clear all transactions */
|
|
35
|
+
clearAll(): void;
|
|
36
|
+
/** Check if a transaction is active */
|
|
37
|
+
isActive(txId: number): boolean;
|
|
38
|
+
/** Check if a transaction has expired */
|
|
39
|
+
isExpired(txId: number): boolean;
|
|
40
|
+
/** Get transaction age in milliseconds */
|
|
41
|
+
age(txId: number): number;
|
|
42
|
+
}
|