@ultipa-graph/ultipa-driver 5.1.5-s5.2 → 6.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/dist/client.d.ts +196 -0
- package/dist/client.js +394 -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 -5
- package/dist/index.js +88 -39
- package/dist/printers.d.ts +33 -0
- package/dist/printers.js +312 -0
- package/dist/proto/gqldb.proto +689 -0
- package/dist/response.d.ts +256 -0
- package/dist/response.js +723 -0
- package/dist/services/admin-service.d.ts +44 -0
- package/dist/services/admin-service.js +168 -0
- package/dist/services/bulk-import-service.d.ts +35 -0
- package/dist/services/bulk-import-service.js +105 -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 -5
- package/dist/types/index.js +36 -37
- package/dist/types/metadata.d.ts +107 -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 -63
- package/dist/connection/connection.final.d.ts +0 -14
- package/dist/connection/connection.final.js +0 -94
- package/dist/connection/connection.final.js.map +0 -1
- package/dist/connection/connection.pool.d.ts +0 -21
- package/dist/connection/connection.pool.js +0 -103
- package/dist/connection/connection.pool.js.map +0 -1
- package/dist/connection/extra/algos/algo.extra.d.ts +0 -34
- package/dist/connection/extra/algos/algo.extra.js +0 -69
- package/dist/connection/extra/algos/algo.extra.js.map +0 -1
- package/dist/connection/extra/algos/algo.utils.d.ts +0 -3
- package/dist/connection/extra/algos/algo.utils.js +0 -54
- package/dist/connection/extra/algos/algo.utils.js.map +0 -1
- package/dist/connection/extra/algos/community.d.ts +0 -27
- package/dist/connection/extra/algos/community.js +0 -76
- package/dist/connection/extra/algos/community.js.map +0 -1
- package/dist/connection/extra/algos/degrees.d.ts +0 -10
- package/dist/connection/extra/algos/degrees.js +0 -24
- package/dist/connection/extra/algos/degrees.js.map +0 -1
- package/dist/connection/extra/algos/embedding.d.ts +0 -13
- package/dist/connection/extra/algos/embedding.js +0 -33
- package/dist/connection/extra/algos/embedding.js.map +0 -1
- package/dist/connection/extra/algos/index.d.ts +0 -5
- package/dist/connection/extra/algos/index.js +0 -14
- package/dist/connection/extra/algos/index.js.map +0 -1
- package/dist/connection/extra/base.extra.d.ts +0 -18
- package/dist/connection/extra/base.extra.js +0 -111
- package/dist/connection/extra/base.extra.js.map +0 -1
- package/dist/connection/extra/batch.insert.extra.d.ts +0 -58
- package/dist/connection/extra/batch.insert.extra.js +0 -354
- package/dist/connection/extra/batch.insert.extra.js.map +0 -1
- package/dist/connection/extra/connection.base.d.ts +0 -112
- package/dist/connection/extra/connection.base.js +0 -530
- package/dist/connection/extra/connection.base.js.map +0 -1
- package/dist/connection/extra/connection.d.ts +0 -17
- package/dist/connection/extra/connection.js +0 -44
- package/dist/connection/extra/connection.js.map +0 -1
- package/dist/connection/extra/graph.extra.d.ts +0 -54
- package/dist/connection/extra/graph.extra.js +0 -151
- package/dist/connection/extra/graph.extra.js.map +0 -1
- package/dist/connection/extra/hdc.extra.d.ts +0 -89
- package/dist/connection/extra/hdc.extra.js +0 -322
- package/dist/connection/extra/hdc.extra.js.map +0 -1
- package/dist/connection/extra/index.extra.d.ts +0 -102
- package/dist/connection/extra/index.extra.js +0 -210
- package/dist/connection/extra/index.extra.js.map +0 -1
- package/dist/connection/extra/job.extra.d.ts +0 -32
- package/dist/connection/extra/job.extra.js +0 -122
- package/dist/connection/extra/job.extra.js.map +0 -1
- package/dist/connection/extra/meta.extra.d.ts +0 -36
- package/dist/connection/extra/meta.extra.js +0 -123
- package/dist/connection/extra/meta.extra.js.map +0 -1
- package/dist/connection/extra/policy.extra.d.ts +0 -32
- package/dist/connection/extra/policy.extra.js +0 -114
- package/dist/connection/extra/policy.extra.js.map +0 -1
- package/dist/connection/extra/privilege.extra.d.ts +0 -8
- package/dist/connection/extra/privilege.extra.js +0 -20
- package/dist/connection/extra/privilege.extra.js.map +0 -1
- package/dist/connection/extra/property.extra.d.ts +0 -66
- package/dist/connection/extra/property.extra.js +0 -190
- package/dist/connection/extra/property.extra.js.map +0 -1
- package/dist/connection/extra/schema.extra.d.ts +0 -108
- package/dist/connection/extra/schema.extra.js +0 -253
- package/dist/connection/extra/schema.extra.js.map +0 -1
- package/dist/connection/extra/search.extra.d.ts +0 -12
- package/dist/connection/extra/search.extra.js +0 -117
- package/dist/connection/extra/search.extra.js.map +0 -1
- package/dist/connection/extra/task.extra.d.ts +0 -24
- package/dist/connection/extra/task.extra.js +0 -107
- package/dist/connection/extra/task.extra.js.map +0 -1
- package/dist/connection/extra/user.extra.d.ts +0 -28
- package/dist/connection/extra/user.extra.js +0 -91
- package/dist/connection/extra/user.extra.js.map +0 -1
- package/dist/connection/extra/user.privilege.extra.d.ts +0 -64
- package/dist/connection/extra/user.privilege.extra.js +0 -273
- package/dist/connection/extra/user.privilege.extra.js.map +0 -1
- package/dist/connection/index.d.ts +0 -5
- package/dist/connection/index.js +0 -13
- package/dist/connection/index.js.map +0 -1
- package/dist/connection/network.manager.d.ts +0 -28
- package/dist/connection/network.manager.js +0 -179
- package/dist/connection/network.manager.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/printers/alias.d.ts +0 -2
- package/dist/printers/alias.js +0 -39
- package/dist/printers/alias.js.map +0 -1
- package/dist/printers/any.d.ts +0 -2
- package/dist/printers/any.js +0 -63
- package/dist/printers/any.js.map +0 -1
- package/dist/printers/array.aio.d.ts +0 -3
- package/dist/printers/array.aio.js +0 -259
- package/dist/printers/array.aio.js.map +0 -1
- package/dist/printers/common.d.ts +0 -0
- package/dist/printers/common.js +0 -1
- package/dist/printers/common.js.map +0 -1
- package/dist/printers/edge.d.ts +0 -5
- package/dist/printers/edge.js +0 -78
- package/dist/printers/edge.js.map +0 -1
- package/dist/printers/explain.plan.d.ts +0 -2
- package/dist/printers/explain.plan.js +0 -46
- package/dist/printers/explain.plan.js.map +0 -1
- package/dist/printers/index.d.ts +0 -24
- package/dist/printers/index.js +0 -43
- package/dist/printers/index.js.map +0 -1
- package/dist/printers/node.d.ts +0 -5
- package/dist/printers/node.js +0 -77
- package/dist/printers/node.js.map +0 -1
- package/dist/printers/path.d.ts +0 -3
- package/dist/printers/path.js +0 -62
- package/dist/printers/path.js.map +0 -1
- package/dist/printers/status.d.ts +0 -3
- package/dist/printers/status.js +0 -68
- package/dist/printers/status.js.map +0 -1
- package/dist/printers/table.d.ts +0 -2
- package/dist/printers/table.js +0 -56
- package/dist/printers/table.js.map +0 -1
- package/dist/proto/tmp.js +0 -366
- package/dist/proto/ultipa_grpc_pb.d.ts +0 -258
- package/dist/proto/ultipa_grpc_pb.js +0 -366
- package/dist/proto/ultipa_grpc_pb.js.map +0 -1
- package/dist/proto/ultipa_pb.d.ts +0 -1
- package/dist/proto/ultipa_pb.js +0 -12119
- package/dist/proto/ultipa_pb.js.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/types.algos.params.d.ts +0 -545
- package/dist/types/types.algos.params.js +0 -16
- package/dist/types/types.algos.params.js.map +0 -1
- package/dist/types/types.d.ts +0 -1214
- package/dist/types/types.extra.d.ts +0 -146
- package/dist/types/types.extra.js +0 -27
- package/dist/types/types.extra.js.map +0 -1
- package/dist/types/types.js +0 -1606
- package/dist/types/types.js.map +0 -1
- package/dist/types/util.d.ts +0 -15
- package/dist/types/util.js +0 -136
- package/dist/types/util.js.map +0 -1
- package/dist/utils/common.d.ts +0 -3
- package/dist/utils/common.js +0 -22
- package/dist/utils/common.js.map +0 -1
- package/dist/utils/config.d.ts +0 -3
- package/dist/utils/config.js +0 -7
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/format.d.ts +0 -45
- package/dist/utils/format.js +0 -879
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/index.d.ts +0 -10
- package/dist/utils/index.js +0 -30
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/params.validate.d.ts +0 -4
- package/dist/utils/params.validate.js +0 -14
- package/dist/utils/params.validate.js.map +0 -1
- package/dist/utils/property.d.ts +0 -24
- package/dist/utils/property.js +0 -203
- package/dist/utils/property.js.map +0 -1
- package/dist/utils/raft.retry.d.ts +0 -0
- package/dist/utils/raft.retry.js +0 -1
- package/dist/utils/raft.retry.js.map +0 -1
- package/dist/utils/serialize/commont.d.ts +0 -12
- package/dist/utils/serialize/commont.js +0 -46
- package/dist/utils/serialize/commont.js.map +0 -1
- package/dist/utils/serialize/deserialize.d.ts +0 -10
- package/dist/utils/serialize/deserialize.js +0 -288
- package/dist/utils/serialize/deserialize.js.map +0 -1
- package/dist/utils/serialize/null.d.ts +0 -32
- package/dist/utils/serialize/null.js +0 -178
- package/dist/utils/serialize/null.js.map +0 -1
- package/dist/utils/serialize/serialize.d.ts +0 -10
- package/dist/utils/serialize/serialize.js +0 -146
- package/dist/utils/serialize/serialize.js.map +0 -1
- package/dist/utils/stream.helper.d.ts +0 -10
- package/dist/utils/stream.helper.js +0 -71
- package/dist/utils/stream.helper.js.map +0 -1
- package/dist/utils/time.record.d.ts +0 -15
- package/dist/utils/time.record.js +0 -52
- package/dist/utils/time.record.js.map +0 -1
- package/dist/utils/timezone.d.ts +0 -7
- package/dist/utils/timezone.js +0 -21
- package/dist/utils/timezone.js.map +0 -1
- package/dist/utils/ultipa.datetime.d.ts +0 -14
- package/dist/utils/ultipa.datetime.js +0 -160
- package/dist/utils/ultipa.datetime.js.map +0 -1
- package/dist/utils/uql-maker.d.ts +0 -165
- package/dist/utils/uql-maker.js +0 -402
- package/dist/utils/uql-maker.js.map +0 -1
- package/dist/utils/uql.parse.d.ts +0 -27
- package/dist/utils/uql.parse.js +0 -205
- package/dist/utils/uql.parse.js.map +0 -1
- package/readme.md +0 -65
- package/src/proto/build.sh +0 -41
- package/src/proto/build_windows.sh +0 -40
- package/src/proto/ultipa.proto +0 -531
- package/src/proto/ultipa_grpc_pb.d.ts +0 -92
- package/src/proto/ultipa_grpc_pb.js +0 -414
- package/src/proto/ultipa_pb.d.ts +0 -1983
- package/src/proto/ultipa_pb.js +0 -14852
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3Nlc3Npb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUlILHNDQUE2QztBQUM3QywwQ0FBNEM7QUFFNUM7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDTDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxZQUFvQjtRQUNsRSxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVE7WUFDUixRQUFRO1lBQ1IsYUFBYSxFQUFFLFlBQVksSUFBSSxFQUFFO1NBQ2xDLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsd0JBQWEsRUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMvQixPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQ3JDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFDeEMsUUFBUSxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQzdCLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUNwQixZQUFZLElBQUksRUFBRSxFQUNsQjtnQkFDRSxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsSUFBSSxLQUFLO2dCQUN2QyxTQUFTLEVBQUUsUUFBUSxDQUFDLFVBQVUsSUFBSSxFQUFFO2dCQUNwQyxjQUFjLEVBQUUsUUFBUSxDQUFDLGVBQWUsSUFBSSxDQUFDO2FBQzlDLENBQ0YsQ0FBQztZQUVGLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSx5QkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPO1FBRTVDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUEsd0JBQWEsRUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMvQixRQUFRLEVBQ1IsRUFBRSxFQUNGLFFBQVEsQ0FDVCxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCx1QkFBdUI7UUFDekIsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRS9DLE1BQU0sUUFBUSxHQUFRLE1BQU0sSUFBQSx3QkFBYSxFQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQy9CLE1BQU0sRUFDTixFQUFFLEVBQ0YsUUFBUSxDQUNULENBQUM7UUFFRixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQTVFRCx3Q0E0RUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlc3Npb24gc2VydmljZSBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uIGFuZCBzZXNzaW9uIGxpZmVjeWNsZS5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICcuLi9zZXNzaW9uJztcbmltcG9ydCB7IExvZ2luRmFpbGVkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5Q2FsbCB9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuLyoqXG4gKiBTZXNzaW9uIHNlcnZpY2UgZm9yIGF1dGhlbnRpY2F0aW9uIGFuZCBzZXNzaW9uIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3R4OiBTZXJ2aWNlQ29udGV4dCkge31cblxuICAvKipcbiAgICogQXV0aGVudGljYXRlIHRoZSB1c2VyIGFuZCBjcmVhdGUgYSBzZXNzaW9uLlxuICAgKi9cbiAgYXN5bmMgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgZGVmYXVsdEdyYXBoOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb24+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgdXNlcm5hbWUsXG4gICAgICBwYXNzd29yZCxcbiAgICAgIGRlZmF1bHRfZ3JhcGg6IGRlZmF1bHRHcmFwaCB8fCAnJyxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgICB0aGlzLmN0eC5jbGllbnRzLnNlc3Npb25TZXJ2aWNlLFxuICAgICAgICAnTG9naW4nLFxuICAgICAgICByZXF1ZXN0XG4gICAgICApO1xuXG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMubG9naW4oXG4gICAgICAgIHBhcnNlSW50KHJlc3BvbnNlLnNlc3Npb25faWQgfHwgJzAnLCAxMCksXG4gICAgICAgIHJlc3BvbnNlLnNlcnZlcl92ZXJzaW9uIHx8ICcnLFxuICAgICAgICByZXNwb25zZS5yb2xlcyB8fCBbXSxcbiAgICAgICAgZGVmYXVsdEdyYXBoIHx8ICcnLFxuICAgICAgICB7XG4gICAgICAgICAgaXNDbHVzdGVyOiByZXNwb25zZS5pc19jbHVzdGVyIHx8IGZhbHNlLFxuICAgICAgICAgIGNsdXN0ZXJJZDogcmVzcG9uc2UuY2x1c3Rlcl9pZCB8fCAnJyxcbiAgICAgICAgICBwYXJ0aXRpb25Db3VudDogcmVzcG9uc2UucGFydGl0aW9uX2NvdW50IHx8IDAsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBzZXNzaW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBMb2dpbkZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UgfHwgJ0xvZ2luIGZhaWxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUZXJtaW5hdGUgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICovXG4gIGFzeW5jIGxvZ291dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY3R4LnNlc3Npb25zLmlzTG9nZ2VkSW4oKSkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgICBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgICB0aGlzLmN0eC5jbGllbnRzLnNlc3Npb25TZXJ2aWNlLFxuICAgICAgICAnTG9nb3V0JyxcbiAgICAgICAge30sXG4gICAgICAgIG1ldGFkYXRhXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIElnbm9yZSBsb2dvdXQgZXJyb3JzXG4gICAgfVxuXG4gICAgdGhpcy5jdHgudHhNYW5hZ2VyLmNsZWFyQWxsKCk7XG4gICAgdGhpcy5jdHguc2Vzc2lvbnMubG9nb3V0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIGNvbm5lY3Rpb24gYW5kIHJldHVybiB0aGUgbGF0ZW5jeSBpbiBuYW5vc2Vjb25kcy5cbiAgICovXG4gIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuXG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLnNlc3Npb25TZXJ2aWNlLFxuICAgICAgJ1BpbmcnLFxuICAgICAge30sXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICB0aGlzLmN0eC51cGRhdGVBY3Rpdml0eSgpO1xuICAgIHJldHVybiBwYXJzZUludChyZXNwb25zZS5sYXRlbmN5X25zIHx8ICcwJywgMTApO1xuICB9XG59XG4iXX0=
|
|
@@ -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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QTRIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb24gc2VydmljZSBoYW5kbGVzIHRyYW5zYWN0aW9uIGxpZmVjeWNsZSBtYW5hZ2VtZW50LlxuICovXG5cbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkluZm8gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uIHNlcnZpY2UgZm9yIG1hbmFnaW5nIGRhdGFiYXNlIHRyYW5zYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3R4OiBTZXJ2aWNlQ29udGV4dCkge31cblxuICAvKipcbiAgICogU3RhcnQgYSBuZXcgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBhc3luYyBiZWdpblRyYW5zYWN0aW9uKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2UsXG4gICAgdGltZW91dDogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgc2Vzc2lvbl9pZDogc2Vzc2lvbj8uaWQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgICAgZ3JhcGhfbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgcmVhZF9vbmx5OiByZWFkT25seSxcbiAgICAgIHRpbWVvdXQ6IE1hdGguZmxvb3IoKHRpbWVvdXQgfHwgdGhpcy5jdHguY29uZmlnLnRpbWVvdXQgfHwgMzAwMDApIC8gMTAwMCksIC8vIENvbnZlcnQgbXMgdG8gc2Vjb25kcyBmb3IgZ1JQQ1xuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy50cmFuc2FjdGlvblNlcnZpY2UsXG4gICAgICAnQmVnaW4nLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIGNvbnN0IHR4SWQgPSBwYXJzZUludChyZXNwb25zZS50cmFuc2FjdGlvbl9pZCB8fCAnMCcsIDEwKTtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSBzZXNzaW9uPy5pZCB8fCAwO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRpbWVvdXQgfHwgdGhpcy5jdHguY29uZmlnLnRpbWVvdXQgfHwgMzAwMDA7XG4gICAgY29uc3QgdHggPSB0aGlzLmN0eC50eE1hbmFnZXIuYmVnaW4odHhJZCwgc2Vzc2lvbklkLCBncmFwaE5hbWUsIHJlYWRPbmx5LCB0aW1lb3V0TXMpO1xuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21taXQgYSB0cmFuc2FjdGlvbi5cbiAgICovXG4gIGFzeW5jIGNvbW1pdCh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uPy5pZD8udG9TdHJpbmcoKSB8fCAnMCcsXG4gICAgICB0cmFuc2FjdGlvbl9pZDogdHJhbnNhY3Rpb25JZC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy50cmFuc2FjdGlvblNlcnZpY2UsXG4gICAgICAnQ29tbWl0JyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICB0aGlzLmN0eC50eE1hbmFnZXIuY29tbWl0KHRyYW5zYWN0aW9uSWQpO1xuICAgIHJldHVybiByZXNwb25zZS5zdWNjZXNzIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJvbGxiYWNrIGEgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBhc3luYyByb2xsYmFjayh0cmFuc2FjdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uPy5pZD8udG9TdHJpbmcoKSB8fCAnMCcsXG4gICAgICB0cmFuc2FjdGlvbl9pZDogdHJhbnNhY3Rpb25JZC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy50cmFuc2FjdGlvblNlcnZpY2UsXG4gICAgICAnUm9sbGJhY2snLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHRoaXMuY3R4LnR4TWFuYWdlci5yb2xsYmFjayh0cmFuc2FjdGlvbklkKTtcbiAgICByZXR1cm4gcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWN0aXZlIHRyYW5zYWN0aW9ucyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICovXG4gIGFzeW5jIGxpc3RUcmFuc2FjdGlvbnMoKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluZm9bXT4ge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN0eC5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIHNlc3Npb25faWQ6IHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMudHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgICAgJ0xpc3RUcmFuc2FjdGlvbnMnLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHJldHVybiAocmVzcG9uc2UudHJhbnNhY3Rpb25zIHx8IFtdKS5tYXAoKHQ6IGFueSkgPT4gKHtcbiAgICAgIHRyYW5zYWN0aW9uSWQ6IHBhcnNlSW50KHQudHJhbnNhY3Rpb25faWQgfHwgJzAnLCAxMCksXG4gICAgICBzZXNzaW9uSWQ6IHBhcnNlSW50KHQuc2Vzc2lvbl9pZCB8fCAnMCcsIDEwKSxcbiAgICAgIGdyYXBoTmFtZTogdC5ncmFwaF9uYW1lIHx8ICcnLFxuICAgICAgcmVhZE9ubHk6IHQucmVhZF9vbmx5IHx8IGZhbHNlLFxuICAgICAgY3JlYXRlZEF0OiBwYXJzZUludCh0LmNyZWF0ZWRfYXQgfHwgJzAnLCAxMCksXG4gICAgICBkdXJhdGlvbk1zOiBwYXJzZUludCh0LmR1cmF0aW9uX21zIHx8ICcwJywgMTApLFxuICAgICAgaW50ZXJuYWxUeElkOiB0LmludGVybmFsX3R4X2lkIHx8ICcnLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgZnVuY3Rpb24gd2l0aGluIGEgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBhc3luYyB3aXRoVHJhbnNhY3Rpb248VD4oXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgZm46ICh0eElkOiBudW1iZXIpID0+IFByb21pc2U8VD4sXG4gICAgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbihncmFwaE5hbWUsIHJlYWRPbmx5LCB0aGlzLmN0eC5jb25maWcudGltZW91dCA/PyAzMDAwMCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKHR4LmlkKTtcbiAgICAgIGF3YWl0IHRoaXMuY29tbWl0KHR4LmlkKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFjayh0eC5pZCk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrREgsb0RBaUJDO0FBS0Qsc0NBa0JDO0FBS0QsOERBb0JDO0FBakhELG9EQUFzQztBQUN0QyxnRUFBa0Q7QUFDbEQsMkNBQTZCO0FBRTdCLHdCQUF3QjtBQUN4QixNQUFNLGFBQWEsR0FBd0I7SUFDekMsUUFBUSxFQUFFLElBQUk7SUFDZCxLQUFLLEVBQUUsTUFBTTtJQUNiLEtBQUssRUFBRSxNQUFNO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUM7QUFFRixtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUVsRSxJQUFJLGlCQUFnRCxDQUFDO0FBQ3JELElBQUksVUFBMkIsQ0FBQztBQUNoQyxJQUFJLFlBQWlCLENBQUM7QUFFdEI7OztHQUdHO0FBQ0gsU0FBUyxTQUFTO0lBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixpQkFBaUIsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNwRSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0QsWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFjRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxJQUFZLEVBQ1osV0FBb0MsRUFDcEMsT0FBNkI7SUFFN0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFFMUIsT0FBTztRQUNMLGNBQWMsRUFBRSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7UUFDcEUsWUFBWSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztRQUNoRSxZQUFZLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO1FBQ2hFLGtCQUFrQixFQUFFLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO1FBQzVFLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7UUFDOUQsYUFBYSxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQztRQUMzRCxZQUFZLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO1FBQ2hFLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO0tBQzNFLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQzNCLE1BQVcsRUFDWCxNQUFjLEVBQ2QsT0FBaUIsRUFDakIsUUFBd0I7SUFFeEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQStCLEVBQUUsUUFBbUIsRUFBRSxFQUFFO1lBQ3pFLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQix5QkFBeUIsQ0FDdkMsTUFBVyxFQUNYLE1BQWMsRUFDZCxPQUFpQixFQUNqQixTQUFpQixFQUNqQixRQUF3QjtJQUV4QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUVsRCxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsS0FBK0IsRUFBRSxRQUFtQixFQUFFLEVBQUU7WUFDdkYsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGdSUEMgc2VydmljZSBjbGllbnRzIGZvciBHUUxEQiBOb2RlLmpzIGRyaXZlci5cbiAqIFVzZXMgQGdycGMvcHJvdG8tbG9hZGVyIGZvciBkeW5hbWljIHByb3RvIGxvYWRpbmcuXG4gKi9cblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCAqIGFzIHByb3RvTG9hZGVyIGZyb20gJ0BncnBjL3Byb3RvLWxvYWRlcic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG4vLyBQcm90byBsb2FkaW5nIG9wdGlvbnNcbmNvbnN0IFBST1RPX09QVElPTlM6IHByb3RvTG9hZGVyLk9wdGlvbnMgPSB7XG4gIGtlZXBDYXNlOiB0cnVlLFxuICBsb25nczogU3RyaW5nLFxuICBlbnVtczogU3RyaW5nLFxuICBkZWZhdWx0czogdHJ1ZSxcbiAgb25lb2ZzOiB0cnVlLFxufTtcblxuLy8gTG9hZCBwcm90byBkZWZpbml0aW9uIChidW5kbGVkIHdpdGggdGhlIHBhY2thZ2UpXG5jb25zdCBQUk9UT19QQVRIID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vcHJvdG8vZ3FsZGIucHJvdG8nKTtcblxubGV0IHBhY2thZ2VEZWZpbml0aW9uOiBwcm90b0xvYWRlci5QYWNrYWdlRGVmaW5pdGlvbjtcbmxldCBncnBjT2JqZWN0OiBncnBjLkdycGNPYmplY3Q7XG5sZXQgZ3FsZGJQYWNrYWdlOiBhbnk7XG5cbi8qKlxuICogTG9hZCB0aGUgcHJvdG8gZmlsZSBhbmQgcmV0dXJuIHRoZSBncWxkYiBwYWNrYWdlLlxuICogQ2FjaGVzIHRoZSByZXN1bHQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuXG4gKi9cbmZ1bmN0aW9uIGxvYWRQcm90bygpOiBhbnkge1xuICBpZiAoIWdxbGRiUGFja2FnZSkge1xuICAgIHBhY2thZ2VEZWZpbml0aW9uID0gcHJvdG9Mb2FkZXIubG9hZFN5bmMoUFJPVE9fUEFUSCwgUFJPVE9fT1BUSU9OUyk7XG4gICAgZ3JwY09iamVjdCA9IGdycGMubG9hZFBhY2thZ2VEZWZpbml0aW9uKHBhY2thZ2VEZWZpbml0aW9uKTtcbiAgICBncWxkYlBhY2thZ2UgPSBncnBjT2JqZWN0LmdxbGRiO1xuICB9XG4gIHJldHVybiBncWxkYlBhY2thZ2U7XG59XG5cbi8qKiBTZXJ2aWNlIGNsaWVudCB0eXBlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlQ2xpZW50cyB7XG4gIHNlc3Npb25TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgcXVlcnlTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgZ3JhcGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgdHJhbnNhY3Rpb25TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgZGF0YVNlcnZpY2U6IGdycGMuQ2xpZW50O1xuICBoZWFsdGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgYWRtaW5TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgYnVsa0ltcG9ydFNlcnZpY2U6IGdycGMuQ2xpZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbGwgZ1JQQyBzZXJ2aWNlIGNsaWVudHMgZm9yIGEgZ2l2ZW4gaG9zdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlcnZpY2VDbGllbnRzKFxuICBob3N0OiBzdHJpbmcsXG4gIGNyZWRlbnRpYWxzOiBncnBjLkNoYW5uZWxDcmVkZW50aWFscyxcbiAgb3B0aW9ucz86IGdycGMuQ2hhbm5lbE9wdGlvbnNcbik6IFNlcnZpY2VDbGllbnRzIHtcbiAgY29uc3QgcHJvdG8gPSBsb2FkUHJvdG8oKTtcblxuICByZXR1cm4ge1xuICAgIHNlc3Npb25TZXJ2aWNlOiBuZXcgcHJvdG8uU2Vzc2lvblNlcnZpY2UoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpLFxuICAgIHF1ZXJ5U2VydmljZTogbmV3IHByb3RvLlF1ZXJ5U2VydmljZShob3N0LCBjcmVkZW50aWFscywgb3B0aW9ucyksXG4gICAgZ3JhcGhTZXJ2aWNlOiBuZXcgcHJvdG8uR3JhcGhTZXJ2aWNlKGhvc3QsIGNyZWRlbnRpYWxzLCBvcHRpb25zKSxcbiAgICB0cmFuc2FjdGlvblNlcnZpY2U6IG5ldyBwcm90by5UcmFuc2FjdGlvblNlcnZpY2UoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpLFxuICAgIGRhdGFTZXJ2aWNlOiBuZXcgcHJvdG8uRGF0YVNlcnZpY2UoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpLFxuICAgIGhlYWx0aFNlcnZpY2U6IG5ldyBwcm90by5IZWFsdGgoaG9zdCwgY3JlZGVudGlhbHMsIG9wdGlvbnMpLFxuICAgIGFkbWluU2VydmljZTogbmV3IHByb3RvLkFkbWluU2VydmljZShob3N0LCBjcmVkZW50aWFscywgb3B0aW9ucyksXG4gICAgYnVsa0ltcG9ydFNlcnZpY2U6IG5ldyBwcm90by5CdWxrSW1wb3J0U2VydmljZShob3N0LCBjcmVkZW50aWFscywgb3B0aW9ucyksXG4gIH07XG59XG5cbi8qKlxuICogSGVscGVyIHRvIHByb21pc2lmeSB1bmFyeSBnUlBDIGNhbGxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5Q2FsbDxUUmVxdWVzdCwgVFJlc3BvbnNlPihcbiAgY2xpZW50OiBhbnksXG4gIG1ldGhvZDogc3RyaW5nLFxuICByZXF1ZXN0OiBUUmVxdWVzdCxcbiAgbWV0YWRhdGE/OiBncnBjLk1ldGFkYXRhXG4pOiBQcm9taXNlPFRSZXNwb25zZT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGZuID0gY2xpZW50W21ldGhvZF0uYmluZChjbGllbnQpO1xuICAgIGNvbnN0IG1ldGEgPSBtZXRhZGF0YSB8fCBuZXcgZ3JwYy5NZXRhZGF0YSgpO1xuXG4gICAgZm4ocmVxdWVzdCwgbWV0YSwgKGVycm9yOiBncnBjLlNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3BvbnNlOiBUUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEhlbHBlciB0byBwcm9taXNpZnkgdW5hcnkgZ1JQQyBjYWxscyB3aXRoIGRlYWRsaW5lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5Q2FsbFdpdGhEZWFkbGluZTxUUmVxdWVzdCwgVFJlc3BvbnNlPihcbiAgY2xpZW50OiBhbnksXG4gIG1ldGhvZDogc3RyaW5nLFxuICByZXF1ZXN0OiBUUmVxdWVzdCxcbiAgdGltZW91dE1zOiBudW1iZXIsXG4gIG1ldGFkYXRhPzogZ3JwYy5NZXRhZGF0YVxuKTogUHJvbWlzZTxUUmVzcG9uc2U+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBmbiA9IGNsaWVudFttZXRob2RdLmJpbmQoY2xpZW50KTtcbiAgICBjb25zdCBtZXRhID0gbWV0YWRhdGEgfHwgbmV3IGdycGMuTWV0YWRhdGEoKTtcbiAgICBjb25zdCBkZWFkbGluZSA9IG5ldyBEYXRlKERhdGUubm93KCkgKyB0aW1lb3V0TXMpO1xuXG4gICAgZm4ocmVxdWVzdCwgbWV0YSwgeyBkZWFkbGluZSB9LCAoZXJyb3I6IGdycGMuU2VydmljZUVycm9yIHwgbnVsbCwgcmVzcG9uc2U6IFRSZXNwb25zZSkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBZ0JILHNDQUFzQztBQUN0QyxNQUFhLGNBQWM7SUFDakIsT0FBTyxHQUFtQixJQUFJLENBQUM7SUFFdkMsMkJBQTJCO0lBQzNCLEtBQUssQ0FDSCxTQUFpQixFQUNqQixhQUFxQixFQUNyQixLQUFlLEVBQ2YsWUFBb0IsRUFDcEIsV0FBa0Y7UUFFbEYsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLEVBQUUsRUFBRSxTQUFTO1lBQ2IsYUFBYTtZQUNiLEtBQUs7WUFDTCxZQUFZO1lBQ1osU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDckIsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLElBQUksS0FBSztZQUMxQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQ3ZDLGNBQWMsRUFBRSxXQUFXLEVBQUUsY0FBYyxJQUFJLENBQUM7U0FDakQsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNyRCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELEdBQUc7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFoRkQsd0NBZ0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXNzaW9uIG1hbmFnZW1lbnQgZm9yIEdRTERCIE5vZGUuanMgZHJpdmVyLlxuICovXG5cbi8qKiBSZXByZXNlbnRzIGFuIGF1dGhlbnRpY2F0ZWQgc2Vzc2lvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgc2VydmVyVmVyc2lvbjogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIGRlZmF1bHRHcmFwaDogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgbGFzdEFjdGl2aXR5OiBudW1iZXI7XG4gIC8vIENsdXN0ZXIgZXh0ZW5zaW9uc1xuICBpc0NsdXN0ZXI/OiBib29sZWFuO1xuICBjbHVzdGVySWQ/OiBzdHJpbmc7XG4gIHBhcnRpdGlvbkNvdW50PzogbnVtYmVyO1xufVxuXG4vKiogTWFuYWdlcyBzZXNzaW9ucyBmb3IgdGhlIGNsaWVudCAqL1xuZXhwb3J0IGNsYXNzIFNlc3Npb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzZXNzaW9uOiBTZXNzaW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIENyZWF0ZSBhIG5ldyBzZXNzaW9uICovXG4gIGxvZ2luKFxuICAgIHNlc3Npb25JZDogbnVtYmVyLFxuICAgIHNlcnZlclZlcnNpb246IHN0cmluZyxcbiAgICByb2xlczogc3RyaW5nW10sXG4gICAgZGVmYXVsdEdyYXBoOiBzdHJpbmcsXG4gICAgY2x1c3RlckluZm8/OiB7IGlzQ2x1c3Rlcj86IGJvb2xlYW47IGNsdXN0ZXJJZD86IHN0cmluZzsgcGFydGl0aW9uQ291bnQ/OiBudW1iZXIgfVxuICApOiBTZXNzaW9uIHtcbiAgICB0aGlzLnNlc3Npb24gPSB7XG4gICAgICBpZDogc2Vzc2lvbklkLFxuICAgICAgc2VydmVyVmVyc2lvbixcbiAgICAgIHJvbGVzLFxuICAgICAgZGVmYXVsdEdyYXBoLFxuICAgICAgY3JlYXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgbGFzdEFjdGl2aXR5OiBEYXRlLm5vdygpLFxuICAgICAgaXNDbHVzdGVyOiBjbHVzdGVySW5mbz8uaXNDbHVzdGVyIHx8IGZhbHNlLFxuICAgICAgY2x1c3RlcklkOiBjbHVzdGVySW5mbz8uY2x1c3RlcklkIHx8ICcnLFxuICAgICAgcGFydGl0aW9uQ291bnQ6IGNsdXN0ZXJJbmZvPy5wYXJ0aXRpb25Db3VudCB8fCAwLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbjtcbiAgfVxuXG4gIC8qKiBDbGVhciB0aGUgY3VycmVudCBzZXNzaW9uICovXG4gIGxvZ291dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb24gPSBudWxsO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgY3VycmVudCBzZXNzaW9uICovXG4gIGdldFNlc3Npb24oKTogU2Vzc2lvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb247XG4gIH1cblxuICAvKiogR2V0IHRoZSBjdXJyZW50IHNlc3Npb24gSUQgKi9cbiAgZ2V0U2Vzc2lvbklkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbj8uaWQgPz8gMDtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiB0aGVyZSBpcyBhbiBhY3RpdmUgc2Vzc2lvbiAqL1xuICBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24gIT09IG51bGw7XG4gIH1cblxuICAvKiogVXBkYXRlIHRoZSBsYXN0IGFjdGl2aXR5IHRpbWUgKi9cbiAgdXBkYXRlQWN0aXZpdHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2Vzc2lvbikge1xuICAgICAgdGhpcy5zZXNzaW9uLmxhc3RBY3Rpdml0eSA9IERhdGUubm93KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldCB0aGUgZGVmYXVsdCBncmFwaCBmb3IgdGhlIHNlc3Npb24gKi9cbiAgc2V0RGVmYXVsdEdyYXBoKGdyYXBoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZXNzaW9uKSB7XG4gICAgICB0aGlzLnNlc3Npb24uZGVmYXVsdEdyYXBoID0gZ3JhcGg7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldCB0aGUgZGVmYXVsdCBncmFwaCBmb3IgdGhlIHNlc3Npb24gKi9cbiAgZ2V0RGVmYXVsdEdyYXBoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbj8uZGVmYXVsdEdyYXBoID8/ICcnO1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIHRoZSBzZXNzaW9uIGhhcyBhIHNwZWNpZmljIHJvbGUgKi9cbiAgaGFzUm9sZShyb2xlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uPy5yb2xlcy5pbmNsdWRlcyhyb2xlKSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKiBHZXQgaG93IGxvbmcgdGhlIHNlc3Npb24gaGFzIGJlZW4gaWRsZSBpbiBtaWxsaXNlY29uZHMgKi9cbiAgaWRsZUR1cmF0aW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnNlc3Npb24pIHJldHVybiAwO1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5zZXNzaW9uLmxhc3RBY3Rpdml0eTtcbiAgfVxuXG4gIC8qKiBHZXQgaG93IGxvbmcgdGhlIHNlc3Npb24gaGFzIGJlZW4gYWN0aXZlIGluIG1pbGxpc2Vjb25kcyAqL1xuICBhZ2UoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuc2Vzc2lvbikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLnNlc3Npb24uY3JlYXRlZEF0O1xuICB9XG59XG4iXX0=
|
|
@@ -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
|
+
}
|