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.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/client.d.ts +194 -0
  4. package/dist/client.js +390 -0
  5. package/dist/config.d.ts +65 -0
  6. package/dist/config.js +135 -0
  7. package/dist/connection.d.ts +30 -0
  8. package/dist/connection.js +190 -0
  9. package/dist/errors.d.ts +99 -0
  10. package/dist/errors.js +237 -0
  11. package/dist/index.d.ts +14 -0
  12. package/dist/index.js +88 -0
  13. package/dist/printers.d.ts +33 -0
  14. package/dist/printers.js +312 -0
  15. package/dist/proto/gqldb.proto +632 -0
  16. package/dist/response.d.ts +256 -0
  17. package/dist/response.js +723 -0
  18. package/dist/services/admin-service.d.ts +40 -0
  19. package/dist/services/admin-service.js +115 -0
  20. package/dist/services/bulk-import-service.d.ts +35 -0
  21. package/dist/services/bulk-import-service.js +108 -0
  22. package/dist/services/converters.d.ts +57 -0
  23. package/dist/services/converters.js +254 -0
  24. package/dist/services/data-service.d.ts +44 -0
  25. package/dist/services/data-service.js +206 -0
  26. package/dist/services/graph-service.d.ts +32 -0
  27. package/dist/services/graph-service.js +127 -0
  28. package/dist/services/health-service.d.ts +50 -0
  29. package/dist/services/health-service.js +78 -0
  30. package/dist/services/index.d.ts +13 -0
  31. package/dist/services/index.js +30 -0
  32. package/dist/services/query-service.d.ts +39 -0
  33. package/dist/services/query-service.js +112 -0
  34. package/dist/services/service-context.d.ts +39 -0
  35. package/dist/services/service-context.js +73 -0
  36. package/dist/services/session-service.d.ts +24 -0
  37. package/dist/services/session-service.js +66 -0
  38. package/dist/services/transaction-service.d.ts +33 -0
  39. package/dist/services/transaction-service.js +100 -0
  40. package/dist/services.d.ts +28 -0
  41. package/dist/services.js +122 -0
  42. package/dist/session.d.ts +45 -0
  43. package/dist/session.js +75 -0
  44. package/dist/transaction.d.ts +42 -0
  45. package/dist/transaction.js +89 -0
  46. package/dist/types/bulk_import.d.ts +53 -0
  47. package/dist/types/bulk_import.js +6 -0
  48. package/dist/types/data_types.d.ts +116 -0
  49. package/dist/types/data_types.js +122 -0
  50. package/dist/types/enums.d.ts +59 -0
  51. package/dist/types/enums.js +67 -0
  52. package/dist/types/graph_models.d.ts +54 -0
  53. package/dist/types/graph_models.js +6 -0
  54. package/dist/types/index.d.ts +11 -0
  55. package/dist/types/index.js +36 -0
  56. package/dist/types/metadata.d.ts +60 -0
  57. package/dist/types/metadata.js +6 -0
  58. package/dist/types/schema.d.ts +31 -0
  59. package/dist/types/schema.js +6 -0
  60. package/dist/types/typed_value.d.ts +25 -0
  61. package/dist/types/typed_value.js +1176 -0
  62. package/dist/types/wrappers.d.ts +23 -0
  63. package/dist/types/wrappers.js +39 -0
  64. package/dist/types.d.ts +7 -0
  65. package/dist/types.js +24 -0
  66. 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>;
@@ -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
+ }
@@ -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
+ }