@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.
Files changed (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/client.d.ts +196 -0
  4. package/dist/client.js +394 -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 -5
  12. package/dist/index.js +88 -39
  13. package/dist/printers.d.ts +33 -0
  14. package/dist/printers.js +312 -0
  15. package/dist/proto/gqldb.proto +689 -0
  16. package/dist/response.d.ts +256 -0
  17. package/dist/response.js +723 -0
  18. package/dist/services/admin-service.d.ts +44 -0
  19. package/dist/services/admin-service.js +168 -0
  20. package/dist/services/bulk-import-service.d.ts +35 -0
  21. package/dist/services/bulk-import-service.js +105 -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 -5
  55. package/dist/types/index.js +36 -37
  56. package/dist/types/metadata.d.ts +107 -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 -63
  67. package/dist/connection/connection.final.d.ts +0 -14
  68. package/dist/connection/connection.final.js +0 -94
  69. package/dist/connection/connection.final.js.map +0 -1
  70. package/dist/connection/connection.pool.d.ts +0 -21
  71. package/dist/connection/connection.pool.js +0 -103
  72. package/dist/connection/connection.pool.js.map +0 -1
  73. package/dist/connection/extra/algos/algo.extra.d.ts +0 -34
  74. package/dist/connection/extra/algos/algo.extra.js +0 -69
  75. package/dist/connection/extra/algos/algo.extra.js.map +0 -1
  76. package/dist/connection/extra/algos/algo.utils.d.ts +0 -3
  77. package/dist/connection/extra/algos/algo.utils.js +0 -54
  78. package/dist/connection/extra/algos/algo.utils.js.map +0 -1
  79. package/dist/connection/extra/algos/community.d.ts +0 -27
  80. package/dist/connection/extra/algos/community.js +0 -76
  81. package/dist/connection/extra/algos/community.js.map +0 -1
  82. package/dist/connection/extra/algos/degrees.d.ts +0 -10
  83. package/dist/connection/extra/algos/degrees.js +0 -24
  84. package/dist/connection/extra/algos/degrees.js.map +0 -1
  85. package/dist/connection/extra/algos/embedding.d.ts +0 -13
  86. package/dist/connection/extra/algos/embedding.js +0 -33
  87. package/dist/connection/extra/algos/embedding.js.map +0 -1
  88. package/dist/connection/extra/algos/index.d.ts +0 -5
  89. package/dist/connection/extra/algos/index.js +0 -14
  90. package/dist/connection/extra/algos/index.js.map +0 -1
  91. package/dist/connection/extra/base.extra.d.ts +0 -18
  92. package/dist/connection/extra/base.extra.js +0 -111
  93. package/dist/connection/extra/base.extra.js.map +0 -1
  94. package/dist/connection/extra/batch.insert.extra.d.ts +0 -58
  95. package/dist/connection/extra/batch.insert.extra.js +0 -354
  96. package/dist/connection/extra/batch.insert.extra.js.map +0 -1
  97. package/dist/connection/extra/connection.base.d.ts +0 -112
  98. package/dist/connection/extra/connection.base.js +0 -530
  99. package/dist/connection/extra/connection.base.js.map +0 -1
  100. package/dist/connection/extra/connection.d.ts +0 -17
  101. package/dist/connection/extra/connection.js +0 -44
  102. package/dist/connection/extra/connection.js.map +0 -1
  103. package/dist/connection/extra/graph.extra.d.ts +0 -54
  104. package/dist/connection/extra/graph.extra.js +0 -151
  105. package/dist/connection/extra/graph.extra.js.map +0 -1
  106. package/dist/connection/extra/hdc.extra.d.ts +0 -89
  107. package/dist/connection/extra/hdc.extra.js +0 -322
  108. package/dist/connection/extra/hdc.extra.js.map +0 -1
  109. package/dist/connection/extra/index.extra.d.ts +0 -102
  110. package/dist/connection/extra/index.extra.js +0 -210
  111. package/dist/connection/extra/index.extra.js.map +0 -1
  112. package/dist/connection/extra/job.extra.d.ts +0 -32
  113. package/dist/connection/extra/job.extra.js +0 -122
  114. package/dist/connection/extra/job.extra.js.map +0 -1
  115. package/dist/connection/extra/meta.extra.d.ts +0 -36
  116. package/dist/connection/extra/meta.extra.js +0 -123
  117. package/dist/connection/extra/meta.extra.js.map +0 -1
  118. package/dist/connection/extra/policy.extra.d.ts +0 -32
  119. package/dist/connection/extra/policy.extra.js +0 -114
  120. package/dist/connection/extra/policy.extra.js.map +0 -1
  121. package/dist/connection/extra/privilege.extra.d.ts +0 -8
  122. package/dist/connection/extra/privilege.extra.js +0 -20
  123. package/dist/connection/extra/privilege.extra.js.map +0 -1
  124. package/dist/connection/extra/property.extra.d.ts +0 -66
  125. package/dist/connection/extra/property.extra.js +0 -190
  126. package/dist/connection/extra/property.extra.js.map +0 -1
  127. package/dist/connection/extra/schema.extra.d.ts +0 -108
  128. package/dist/connection/extra/schema.extra.js +0 -253
  129. package/dist/connection/extra/schema.extra.js.map +0 -1
  130. package/dist/connection/extra/search.extra.d.ts +0 -12
  131. package/dist/connection/extra/search.extra.js +0 -117
  132. package/dist/connection/extra/search.extra.js.map +0 -1
  133. package/dist/connection/extra/task.extra.d.ts +0 -24
  134. package/dist/connection/extra/task.extra.js +0 -107
  135. package/dist/connection/extra/task.extra.js.map +0 -1
  136. package/dist/connection/extra/user.extra.d.ts +0 -28
  137. package/dist/connection/extra/user.extra.js +0 -91
  138. package/dist/connection/extra/user.extra.js.map +0 -1
  139. package/dist/connection/extra/user.privilege.extra.d.ts +0 -64
  140. package/dist/connection/extra/user.privilege.extra.js +0 -273
  141. package/dist/connection/extra/user.privilege.extra.js.map +0 -1
  142. package/dist/connection/index.d.ts +0 -5
  143. package/dist/connection/index.js +0 -13
  144. package/dist/connection/index.js.map +0 -1
  145. package/dist/connection/network.manager.d.ts +0 -28
  146. package/dist/connection/network.manager.js +0 -179
  147. package/dist/connection/network.manager.js.map +0 -1
  148. package/dist/index.js.map +0 -1
  149. package/dist/printers/alias.d.ts +0 -2
  150. package/dist/printers/alias.js +0 -39
  151. package/dist/printers/alias.js.map +0 -1
  152. package/dist/printers/any.d.ts +0 -2
  153. package/dist/printers/any.js +0 -63
  154. package/dist/printers/any.js.map +0 -1
  155. package/dist/printers/array.aio.d.ts +0 -3
  156. package/dist/printers/array.aio.js +0 -259
  157. package/dist/printers/array.aio.js.map +0 -1
  158. package/dist/printers/common.d.ts +0 -0
  159. package/dist/printers/common.js +0 -1
  160. package/dist/printers/common.js.map +0 -1
  161. package/dist/printers/edge.d.ts +0 -5
  162. package/dist/printers/edge.js +0 -78
  163. package/dist/printers/edge.js.map +0 -1
  164. package/dist/printers/explain.plan.d.ts +0 -2
  165. package/dist/printers/explain.plan.js +0 -46
  166. package/dist/printers/explain.plan.js.map +0 -1
  167. package/dist/printers/index.d.ts +0 -24
  168. package/dist/printers/index.js +0 -43
  169. package/dist/printers/index.js.map +0 -1
  170. package/dist/printers/node.d.ts +0 -5
  171. package/dist/printers/node.js +0 -77
  172. package/dist/printers/node.js.map +0 -1
  173. package/dist/printers/path.d.ts +0 -3
  174. package/dist/printers/path.js +0 -62
  175. package/dist/printers/path.js.map +0 -1
  176. package/dist/printers/status.d.ts +0 -3
  177. package/dist/printers/status.js +0 -68
  178. package/dist/printers/status.js.map +0 -1
  179. package/dist/printers/table.d.ts +0 -2
  180. package/dist/printers/table.js +0 -56
  181. package/dist/printers/table.js.map +0 -1
  182. package/dist/proto/tmp.js +0 -366
  183. package/dist/proto/ultipa_grpc_pb.d.ts +0 -258
  184. package/dist/proto/ultipa_grpc_pb.js +0 -366
  185. package/dist/proto/ultipa_grpc_pb.js.map +0 -1
  186. package/dist/proto/ultipa_pb.d.ts +0 -1
  187. package/dist/proto/ultipa_pb.js +0 -12119
  188. package/dist/proto/ultipa_pb.js.map +0 -1
  189. package/dist/types/index.js.map +0 -1
  190. package/dist/types/types.algos.params.d.ts +0 -545
  191. package/dist/types/types.algos.params.js +0 -16
  192. package/dist/types/types.algos.params.js.map +0 -1
  193. package/dist/types/types.d.ts +0 -1214
  194. package/dist/types/types.extra.d.ts +0 -146
  195. package/dist/types/types.extra.js +0 -27
  196. package/dist/types/types.extra.js.map +0 -1
  197. package/dist/types/types.js +0 -1606
  198. package/dist/types/types.js.map +0 -1
  199. package/dist/types/util.d.ts +0 -15
  200. package/dist/types/util.js +0 -136
  201. package/dist/types/util.js.map +0 -1
  202. package/dist/utils/common.d.ts +0 -3
  203. package/dist/utils/common.js +0 -22
  204. package/dist/utils/common.js.map +0 -1
  205. package/dist/utils/config.d.ts +0 -3
  206. package/dist/utils/config.js +0 -7
  207. package/dist/utils/config.js.map +0 -1
  208. package/dist/utils/format.d.ts +0 -45
  209. package/dist/utils/format.js +0 -879
  210. package/dist/utils/format.js.map +0 -1
  211. package/dist/utils/index.d.ts +0 -10
  212. package/dist/utils/index.js +0 -30
  213. package/dist/utils/index.js.map +0 -1
  214. package/dist/utils/params.validate.d.ts +0 -4
  215. package/dist/utils/params.validate.js +0 -14
  216. package/dist/utils/params.validate.js.map +0 -1
  217. package/dist/utils/property.d.ts +0 -24
  218. package/dist/utils/property.js +0 -203
  219. package/dist/utils/property.js.map +0 -1
  220. package/dist/utils/raft.retry.d.ts +0 -0
  221. package/dist/utils/raft.retry.js +0 -1
  222. package/dist/utils/raft.retry.js.map +0 -1
  223. package/dist/utils/serialize/commont.d.ts +0 -12
  224. package/dist/utils/serialize/commont.js +0 -46
  225. package/dist/utils/serialize/commont.js.map +0 -1
  226. package/dist/utils/serialize/deserialize.d.ts +0 -10
  227. package/dist/utils/serialize/deserialize.js +0 -288
  228. package/dist/utils/serialize/deserialize.js.map +0 -1
  229. package/dist/utils/serialize/null.d.ts +0 -32
  230. package/dist/utils/serialize/null.js +0 -178
  231. package/dist/utils/serialize/null.js.map +0 -1
  232. package/dist/utils/serialize/serialize.d.ts +0 -10
  233. package/dist/utils/serialize/serialize.js +0 -146
  234. package/dist/utils/serialize/serialize.js.map +0 -1
  235. package/dist/utils/stream.helper.d.ts +0 -10
  236. package/dist/utils/stream.helper.js +0 -71
  237. package/dist/utils/stream.helper.js.map +0 -1
  238. package/dist/utils/time.record.d.ts +0 -15
  239. package/dist/utils/time.record.js +0 -52
  240. package/dist/utils/time.record.js.map +0 -1
  241. package/dist/utils/timezone.d.ts +0 -7
  242. package/dist/utils/timezone.js +0 -21
  243. package/dist/utils/timezone.js.map +0 -1
  244. package/dist/utils/ultipa.datetime.d.ts +0 -14
  245. package/dist/utils/ultipa.datetime.js +0 -160
  246. package/dist/utils/ultipa.datetime.js.map +0 -1
  247. package/dist/utils/uql-maker.d.ts +0 -165
  248. package/dist/utils/uql-maker.js +0 -402
  249. package/dist/utils/uql-maker.js.map +0 -1
  250. package/dist/utils/uql.parse.d.ts +0 -27
  251. package/dist/utils/uql.parse.js +0 -205
  252. package/dist/utils/uql.parse.js.map +0 -1
  253. package/readme.md +0 -65
  254. package/src/proto/build.sh +0 -41
  255. package/src/proto/build_windows.sh +0 -40
  256. package/src/proto/ultipa.proto +0 -531
  257. package/src/proto/ultipa_grpc_pb.d.ts +0 -92
  258. package/src/proto/ultipa_grpc_pb.js +0 -414
  259. package/src/proto/ultipa_pb.d.ts +0 -1983
  260. 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>;
@@ -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
+ }
@@ -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
+ }