@ultipa-graph/ultipa-driver 5.1.5-s5.2 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/client.d.ts +194 -0
  4. package/dist/client.js +390 -0
  5. package/dist/config.d.ts +65 -0
  6. package/dist/config.js +135 -0
  7. package/dist/connection.d.ts +30 -0
  8. package/dist/connection.js +190 -0
  9. package/dist/errors.d.ts +99 -0
  10. package/dist/errors.js +237 -0
  11. package/dist/index.d.ts +14 -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 +632 -0
  16. package/dist/response.d.ts +256 -0
  17. package/dist/response.js +723 -0
  18. package/dist/services/admin-service.d.ts +40 -0
  19. package/dist/services/admin-service.js +115 -0
  20. package/dist/services/bulk-import-service.d.ts +35 -0
  21. package/dist/services/bulk-import-service.js +108 -0
  22. package/dist/services/converters.d.ts +57 -0
  23. package/dist/services/converters.js +254 -0
  24. package/dist/services/data-service.d.ts +44 -0
  25. package/dist/services/data-service.js +206 -0
  26. package/dist/services/graph-service.d.ts +32 -0
  27. package/dist/services/graph-service.js +127 -0
  28. package/dist/services/health-service.d.ts +50 -0
  29. package/dist/services/health-service.js +78 -0
  30. package/dist/services/index.d.ts +13 -0
  31. package/dist/services/index.js +30 -0
  32. package/dist/services/query-service.d.ts +39 -0
  33. package/dist/services/query-service.js +112 -0
  34. package/dist/services/service-context.d.ts +39 -0
  35. package/dist/services/service-context.js +73 -0
  36. package/dist/services/session-service.d.ts +24 -0
  37. package/dist/services/session-service.js +66 -0
  38. package/dist/services/transaction-service.d.ts +33 -0
  39. package/dist/services/transaction-service.js +100 -0
  40. package/dist/services.d.ts +28 -0
  41. package/dist/services.js +122 -0
  42. package/dist/session.d.ts +45 -0
  43. package/dist/session.js +75 -0
  44. package/dist/transaction.d.ts +42 -0
  45. package/dist/transaction.js +89 -0
  46. package/dist/types/bulk_import.d.ts +53 -0
  47. package/dist/types/bulk_import.js +6 -0
  48. package/dist/types/data_types.d.ts +116 -0
  49. package/dist/types/data_types.js +122 -0
  50. package/dist/types/enums.d.ts +59 -0
  51. package/dist/types/enums.js +67 -0
  52. package/dist/types/graph_models.d.ts +54 -0
  53. package/dist/types/graph_models.js +6 -0
  54. package/dist/types/index.d.ts +11 -5
  55. package/dist/types/index.js +36 -37
  56. package/dist/types/metadata.d.ts +60 -0
  57. package/dist/types/metadata.js +6 -0
  58. package/dist/types/schema.d.ts +31 -0
  59. package/dist/types/schema.js +6 -0
  60. package/dist/types/typed_value.d.ts +25 -0
  61. package/dist/types/typed_value.js +1176 -0
  62. package/dist/types/wrappers.d.ts +23 -0
  63. package/dist/types/wrappers.js +39 -0
  64. package/dist/types.d.ts +7 -0
  65. package/dist/types.js +24 -0
  66. package/package.json +49 -62
  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,127 @@
1
+ "use strict";
2
+ /**
3
+ * Graph service handles graph management operations.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.GraphService = void 0;
40
+ const grpc = __importStar(require("@grpc/grpc-js"));
41
+ const types_1 = require("../types");
42
+ const services_1 = require("../services");
43
+ const converters_1 = require("./converters");
44
+ const errors_1 = require("../errors");
45
+ /**
46
+ * Graph service for managing graphs.
47
+ */
48
+ class GraphService {
49
+ ctx;
50
+ constructor(ctx) {
51
+ this.ctx = ctx;
52
+ }
53
+ /**
54
+ * Create a new graph.
55
+ */
56
+ async createGraph(name, graphType = types_1.GraphType.OPEN, description = '') {
57
+ const request = {
58
+ name,
59
+ graph_type: (0, converters_1.graphTypeToProto)(graphType),
60
+ description,
61
+ };
62
+ const metadata = this.ctx.getSessionMetadata();
63
+ await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'CreateGraph', request, metadata);
64
+ }
65
+ /**
66
+ * Delete a graph.
67
+ */
68
+ async dropGraph(name, ifExists = false) {
69
+ const request = {
70
+ name,
71
+ if_exists: ifExists,
72
+ };
73
+ const metadata = this.ctx.getSessionMetadata();
74
+ await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'DropGraph', request, metadata);
75
+ }
76
+ /**
77
+ * Set the current graph for the session.
78
+ */
79
+ async useGraph(name) {
80
+ const session = this.ctx.sessions.getSession();
81
+ const request = {
82
+ name,
83
+ session_id: session?.id?.toString() || '0',
84
+ };
85
+ const metadata = this.ctx.getSessionMetadata();
86
+ await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'UseGraph', request, metadata);
87
+ this.ctx.sessions.setDefaultGraph(name);
88
+ }
89
+ /**
90
+ * Return all available graphs.
91
+ */
92
+ async listGraphs() {
93
+ const metadata = this.ctx.getSessionMetadata();
94
+ const response = await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'ListGraphs', {}, metadata);
95
+ return (response.graphs || []).map((g) => (0, converters_1.convertGraphInfo)(g));
96
+ }
97
+ /**
98
+ * Return information about a specific graph.
99
+ */
100
+ async getGraphInfo(name) {
101
+ const metadata = this.ctx.getSessionMetadata();
102
+ try {
103
+ const response = await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'GetGraphInfo', { name }, metadata);
104
+ if (!response.info) {
105
+ throw new errors_1.GraphNotFoundError(name);
106
+ }
107
+ const info = response.info;
108
+ return {
109
+ name: info.name || name,
110
+ graphType: info.graph_type,
111
+ nodeCount: parseInt(info.node_count || '0', 10),
112
+ edgeCount: parseInt(info.edge_count || '0', 10),
113
+ description: info.description || '',
114
+ };
115
+ }
116
+ catch (err) {
117
+ if (err instanceof errors_1.GraphNotFoundError)
118
+ throw err;
119
+ if (err?.code === grpc.status.NOT_FOUND) {
120
+ throw new errors_1.GraphNotFoundError(name);
121
+ }
122
+ throw err;
123
+ }
124
+ }
125
+ }
126
+ exports.GraphService = GraphService;
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9ncmFwaC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLG9DQUFnRDtBQUNoRCwwQ0FBNEM7QUFDNUMsNkNBQWtFO0FBQ2xFLHNDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNIO0lBQXBCLFlBQW9CLEdBQW1CO1FBQW5CLFFBQUcsR0FBSCxHQUFHLENBQWdCO0lBQUcsQ0FBQztJQUUzQzs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQ2YsSUFBWSxFQUNaLFlBQXVCLGlCQUFTLENBQUMsSUFBSSxFQUNyQyxjQUFzQixFQUFFO1FBRXhCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLFVBQVUsRUFBRSxJQUFBLDZCQUFnQixFQUFDLFNBQVMsQ0FBQztZQUN2QyxXQUFXO1NBQ1osQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVksRUFBRSxXQUFvQixLQUFLO1FBQ3JELE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLFNBQVMsRUFBRSxRQUFRO1NBQ3BCLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFBLHdCQUFhLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxP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bGVzIGdyYXBoIG1hbmFnZW1lbnQgb3BlcmF0aW9ucy5cclxuICovXHJcblxyXG5pbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcclxuaW1wb3J0IHsgR3JhcGhJbmZvLCBHcmFwaFR5cGUgfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IHByb21pc2lmeUNhbGwgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IGdyYXBoVHlwZVRvUHJvdG8sIGNvbnZlcnRHcmFwaEluZm8gfSBmcm9tICcuL2NvbnZlcnRlcnMnO1xyXG5pbXBvcnQgeyBHcmFwaE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xyXG5cclxuLyoqXHJcbiAqIEdyYXBoIHNlcnZpY2UgZm9yIG1hbmFnaW5nIGdyYXBocy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcmFwaFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3R4OiBTZXJ2aWNlQ29udGV4dCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbmV3IGdyYXBoLlxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZUdyYXBoKFxyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgZ3JhcGhUeXBlOiBHcmFwaFR5cGUgPSBHcmFwaFR5cGUuT1BFTixcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJ1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcclxuICAgICAgbmFtZSxcclxuICAgICAgZ3JhcGhfdHlwZTogZ3JhcGhUeXBlVG9Qcm90byhncmFwaFR5cGUpLFxyXG4gICAgICBkZXNjcmlwdGlvbixcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcclxuICAgIGF3YWl0IHByb21pc2lmeUNhbGwodGhpcy5jdHguY2xpZW50cy5ncmFwaFNlcnZpY2UsICdDcmVhdGVHcmFwaCcsIHJlcXVlc3QsIG1ldGFkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSBhIGdyYXBoLlxyXG4gICAqL1xyXG4gIGFzeW5jIGRyb3BHcmFwaChuYW1lOiBzdHJpbmcsIGlmRXhpc3RzOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGlmX2V4aXN0czogaWZFeGlzdHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XHJcbiAgICBhd2FpdCBwcm9taXNpZnlDYWxsKHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLCAnRHJvcEdyYXBoJywgcmVxdWVzdCwgbWV0YWRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBjdXJyZW50IGdyYXBoIGZvciB0aGUgc2Vzc2lvbi5cclxuICAgKi9cclxuICBhc3luYyB1c2VHcmFwaChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN0eC5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xyXG4gICAgICBuYW1lLFxyXG4gICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uPy5pZD8udG9TdHJpbmcoKSB8fCAnMCcsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XHJcbiAgICBhd2FpdCBwcm9taXNpZnlDYWxsKHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLCAnVXNlR3JhcGgnLCByZXF1ZXN0LCBtZXRhZGF0YSk7XHJcbiAgICB0aGlzLmN0eC5zZXNzaW9ucy5zZXREZWZhdWx0R3JhcGgobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gYWxsIGF2YWlsYWJsZSBncmFwaHMuXHJcbiAgICovXHJcbiAgYXN5bmMgbGlzdEdyYXBocygpOiBQcm9taXNlPEdyYXBoSW5mb1tdPiB7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXHJcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLFxyXG4gICAgICAnTGlzdEdyYXBocycsXHJcbiAgICAgIHt9LFxyXG4gICAgICBtZXRhZGF0YVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKHJlc3BvbnNlLmdyYXBocyB8fCBbXSkubWFwKChnOiBhbnkpID0+IGNvbnZlcnRHcmFwaEluZm8oZykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgZ3JhcGguXHJcbiAgICovXHJcbiAgYXN5bmMgZ2V0R3JhcGhJbmZvKG5hbWU6IHN0cmluZyk6IFByb21pc2U8R3JhcGhJbmZvPiB7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXHJcbiAgICAgICAgdGhpcy5jdHguY2xpZW50cy5ncmFwaFNlcnZpY2UsXHJcbiAgICAgICAgJ0dldEdyYXBoSW5mbycsXHJcbiAgICAgICAgeyBuYW1lIH0sXHJcbiAgICAgICAgbWV0YWRhdGFcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghcmVzcG9uc2UuaW5mbykge1xyXG4gICAgICAgIHRocm93IG5ldyBHcmFwaE5vdEZvdW5kRXJyb3IobmFtZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGluZm8gPSByZXNwb25zZS5pbmZvO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IGluZm8ubmFtZSB8fCBuYW1lLFxyXG4gICAgICAgIGdyYXBoVHlwZTogaW5mby5ncmFwaF90eXBlLFxyXG4gICAgICAgIG5vZGVDb3VudDogcGFyc2VJbnQoaW5mby5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxyXG4gICAgICAgIGVkZ2VDb3VudDogcGFyc2VJbnQoaW5mby5lZGdlX2NvdW50IHx8ICcwJywgMTApLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBpbmZvLmRlc2NyaXB0aW9uIHx8ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcclxuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEdyYXBoTm90Rm91bmRFcnJvcikgdGhyb3cgZXJyO1xyXG4gICAgICBpZiAoZXJyPy5jb2RlID09PSBncnBjLnN0YXR1cy5OT1RfRk9VTkQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgR3JhcGhOb3RGb3VuZEVycm9yKG5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IGVycjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Health service handles health check operations.
3
+ */
4
+ import { EventEmitter } from 'events';
5
+ import { ServiceContext } from './service-context';
6
+ import { HealthStatus } from '../types';
7
+ /**
8
+ * Health watcher interface for streaming health updates.
9
+ * Emits 'status' events with HealthStatus and 'error' events on failure.
10
+ */
11
+ export interface HealthWatcher extends EventEmitter {
12
+ /** Stop watching health updates */
13
+ stop(): void;
14
+ }
15
+ /**
16
+ * Health service for checking service health.
17
+ */
18
+ export declare class HealthService {
19
+ private ctx;
20
+ constructor(ctx: ServiceContext);
21
+ /**
22
+ * Check the health of a service.
23
+ */
24
+ healthCheck(service?: string): Promise<HealthStatus>;
25
+ /**
26
+ * Watch health status changes via server-side streaming.
27
+ * Returns a HealthWatcher that emits 'status' events with HealthStatus values.
28
+ * Call stop() to cancel the stream.
29
+ *
30
+ * @param service - Optional service name to watch
31
+ * @returns HealthWatcher - EventEmitter with stop() method
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const watcher = healthService.watch();
36
+ * watcher.on('status', (status: HealthStatus) => {
37
+ * console.log('Health status:', status);
38
+ * });
39
+ * watcher.on('error', (err) => {
40
+ * console.error('Watch error:', err);
41
+ * });
42
+ * watcher.on('end', () => {
43
+ * console.log('Watch stream ended');
44
+ * });
45
+ * // Later, to stop watching:
46
+ * watcher.stop();
47
+ * ```
48
+ */
49
+ watch(service?: string): HealthWatcher;
50
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /**
3
+ * Health service handles health check operations.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HealthService = void 0;
7
+ const events_1 = require("events");
8
+ const services_1 = require("../services");
9
+ const converters_1 = require("./converters");
10
+ /**
11
+ * Health service for checking service health.
12
+ */
13
+ class HealthService {
14
+ ctx;
15
+ constructor(ctx) {
16
+ this.ctx = ctx;
17
+ }
18
+ /**
19
+ * Check the health of a service.
20
+ */
21
+ async healthCheck(service = '') {
22
+ const metadata = this.ctx.getSessionMetadata();
23
+ const response = await (0, services_1.promisifyCall)(this.ctx.clients.healthService, 'Check', { service }, metadata);
24
+ return (0, converters_1.protoToHealthStatus)(response.status);
25
+ }
26
+ /**
27
+ * Watch health status changes via server-side streaming.
28
+ * Returns a HealthWatcher that emits 'status' events with HealthStatus values.
29
+ * Call stop() to cancel the stream.
30
+ *
31
+ * @param service - Optional service name to watch
32
+ * @returns HealthWatcher - EventEmitter with stop() method
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const watcher = healthService.watch();
37
+ * watcher.on('status', (status: HealthStatus) => {
38
+ * console.log('Health status:', status);
39
+ * });
40
+ * watcher.on('error', (err) => {
41
+ * console.error('Watch error:', err);
42
+ * });
43
+ * watcher.on('end', () => {
44
+ * console.log('Watch stream ended');
45
+ * });
46
+ * // Later, to stop watching:
47
+ * watcher.stop();
48
+ * ```
49
+ */
50
+ watch(service = '') {
51
+ const emitter = new events_1.EventEmitter();
52
+ // Get the Watch method from the health service
53
+ const watchFn = this.ctx.clients.healthService.Watch.bind(this.ctx.clients.healthService);
54
+ // Start the streaming call with metadata
55
+ const metadata = this.ctx.getSessionMetadata();
56
+ const call = watchFn({ service }, metadata);
57
+ // Handle incoming data
58
+ call.on('data', (response) => {
59
+ const status = (0, converters_1.protoToHealthStatus)(response.status);
60
+ emitter.emit('status', status);
61
+ });
62
+ // Handle errors
63
+ call.on('error', (err) => {
64
+ emitter.emit('error', err);
65
+ });
66
+ // Handle stream end
67
+ call.on('end', () => {
68
+ emitter.emit('end');
69
+ });
70
+ // Add stop method to cancel the stream
71
+ emitter.stop = () => {
72
+ call.cancel();
73
+ };
74
+ return emitter;
75
+ }
76
+ }
77
+ exports.HealthService = HealthService;
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaGVhbHRoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxtQ0FBc0M7QUFHdEMsMENBQTRDO0FBQzVDLDZDQUFtRDtBQVduRDs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUNKO0lBQXBCLFlBQW9CLEdBQW1CO1FBQW5CLFFBQUcsR0FBSCxHQUFHLENBQWdCO0lBQUcsQ0FBQztJQUUzQzs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBa0IsRUFBRTtRQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDOUIsT0FBTyxFQUNQLEVBQUUsT0FBTyxFQUFFLEVBQ1gsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPLElBQUEsZ0NBQW1CLEVBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxLQUFLLENBQUMsVUFBa0IsRUFBRTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFZLEVBQW1CLENBQUM7UUFFcEQsK0NBQStDO1FBQy9DLE1BQU0sT0FBTyxHQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUMvQixDQUFDO1FBRUYseUNBQXlDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1Qyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFtQixFQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILGdCQUFnQjtRQUNoQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUNBQXVDO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUE3RUQsc0NBNkVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEhlYWx0aCBzZXJ2aWNlIGhhbmRsZXMgaGVhbHRoIGNoZWNrIG9wZXJhdGlvbnMuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcclxuaW1wb3J0IHsgU2VydmljZUNvbnRleHQgfSBmcm9tICcuL3NlcnZpY2UtY29udGV4dCc7XHJcbmltcG9ydCB7IEhlYWx0aFN0YXR1cyB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgcHJvbWlzaWZ5Q2FsbCB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgcHJvdG9Ub0hlYWx0aFN0YXR1cyB9IGZyb20gJy4vY29udmVydGVycyc7XHJcblxyXG4vKipcclxuICogSGVhbHRoIHdhdGNoZXIgaW50ZXJmYWNlIGZvciBzdHJlYW1pbmcgaGVhbHRoIHVwZGF0ZXMuXHJcbiAqIEVtaXRzICdzdGF0dXMnIGV2ZW50cyB3aXRoIEhlYWx0aFN0YXR1cyBhbmQgJ2Vycm9yJyBldmVudHMgb24gZmFpbHVyZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSGVhbHRoV2F0Y2hlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgLyoqIFN0b3Agd2F0Y2hpbmcgaGVhbHRoIHVwZGF0ZXMgKi9cclxuICBzdG9wKCk6IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIZWFsdGggc2VydmljZSBmb3IgY2hlY2tpbmcgc2VydmljZSBoZWFsdGguXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgSGVhbHRoU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayB0aGUgaGVhbHRoIG9mIGEgc2VydmljZS5cclxuICAgKi9cclxuICBhc3luYyBoZWFsdGhDaGVjayhzZXJ2aWNlOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8SGVhbHRoU3RhdHVzPiB7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXHJcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuaGVhbHRoU2VydmljZSxcclxuICAgICAgJ0NoZWNrJyxcclxuICAgICAgeyBzZXJ2aWNlIH0sXHJcbiAgICAgIG1ldGFkYXRhXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBwcm90b1RvSGVhbHRoU3RhdHVzKHJlc3BvbnNlLnN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXYXRjaCBoZWFsdGggc3RhdHVzIGNoYW5nZXMgdmlhIHNlcnZlci1zaWRlIHN0cmVhbWluZy5cclxuICAgKiBSZXR1cm5zIGEgSGVhbHRoV2F0Y2hlciB0aGF0IGVtaXRzICdzdGF0dXMnIGV2ZW50cyB3aXRoIEhlYWx0aFN0YXR1cyB2YWx1ZXMuXHJcbiAgICogQ2FsbCBzdG9wKCkgdG8gY2FuY2VsIHRoZSBzdHJlYW0uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2VydmljZSAtIE9wdGlvbmFsIHNlcnZpY2UgbmFtZSB0byB3YXRjaFxyXG4gICAqIEByZXR1cm5zIEhlYWx0aFdhdGNoZXIgLSBFdmVudEVtaXR0ZXIgd2l0aCBzdG9wKCkgbWV0aG9kXHJcbiAgICpcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBjb25zdCB3YXRjaGVyID0gaGVhbHRoU2VydmljZS53YXRjaCgpO1xyXG4gICAqIHdhdGNoZXIub24oJ3N0YXR1cycsIChzdGF0dXM6IEhlYWx0aFN0YXR1cykgPT4ge1xyXG4gICAqICAgY29uc29sZS5sb2coJ0hlYWx0aCBzdGF0dXM6Jywgc3RhdHVzKTtcclxuICAgKiB9KTtcclxuICAgKiB3YXRjaGVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcclxuICAgKiAgIGNvbnNvbGUuZXJyb3IoJ1dhdGNoIGVycm9yOicsIGVycik7XHJcbiAgICogfSk7XHJcbiAgICogd2F0Y2hlci5vbignZW5kJywgKCkgPT4ge1xyXG4gICAqICAgY29uc29sZS5sb2coJ1dhdGNoIHN0cmVhbSBlbmRlZCcpO1xyXG4gICAqIH0pO1xyXG4gICAqIC8vIExhdGVyLCB0byBzdG9wIHdhdGNoaW5nOlxyXG4gICAqIHdhdGNoZXIuc3RvcCgpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHdhdGNoKHNlcnZpY2U6IHN0cmluZyA9ICcnKTogSGVhbHRoV2F0Y2hlciB7XHJcbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpIGFzIEhlYWx0aFdhdGNoZXI7XHJcblxyXG4gICAgLy8gR2V0IHRoZSBXYXRjaCBtZXRob2QgZnJvbSB0aGUgaGVhbHRoIHNlcnZpY2VcclxuICAgIGNvbnN0IHdhdGNoRm4gPSAodGhpcy5jdHguY2xpZW50cy5oZWFsdGhTZXJ2aWNlIGFzIGFueSkuV2F0Y2guYmluZChcclxuICAgICAgdGhpcy5jdHguY2xpZW50cy5oZWFsdGhTZXJ2aWNlXHJcbiAgICApO1xyXG5cclxuICAgIC8vIFN0YXJ0IHRoZSBzdHJlYW1pbmcgY2FsbCB3aXRoIG1ldGFkYXRhXHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgY2FsbCA9IHdhdGNoRm4oeyBzZXJ2aWNlIH0sIG1ldGFkYXRhKTtcclxuXHJcbiAgICAvLyBIYW5kbGUgaW5jb21pbmcgZGF0YVxyXG4gICAgY2FsbC5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHByb3RvVG9IZWFsdGhTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKTtcclxuICAgICAgZW1pdHRlci5lbWl0KCdzdGF0dXMnLCBzdGF0dXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gSGFuZGxlIGVycm9yc1xyXG4gICAgY2FsbC5vbignZXJyb3InLCAoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICBlbWl0dGVyLmVtaXQoJ2Vycm9yJywgZXJyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEhhbmRsZSBzdHJlYW0gZW5kXHJcbiAgICBjYWxsLm9uKCdlbmQnLCAoKSA9PiB7XHJcbiAgICAgIGVtaXR0ZXIuZW1pdCgnZW5kJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBBZGQgc3RvcCBtZXRob2QgdG8gY2FuY2VsIHRoZSBzdHJlYW1cclxuICAgIGVtaXR0ZXIuc3RvcCA9ICgpID0+IHtcclxuICAgICAgY2FsbC5jYW5jZWwoKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGVtaXR0ZXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Barrel export for all service classes.
3
+ */
4
+ export * from './service-context';
5
+ export * from './converters';
6
+ export * from './session-service';
7
+ export * from './query-service';
8
+ export * from './graph-service';
9
+ export * from './transaction-service';
10
+ export * from './data-service';
11
+ export * from './health-service';
12
+ export * from './admin-service';
13
+ export * from './bulk-import-service';
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Barrel export for all service classes.
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./service-context"), exports);
21
+ __exportStar(require("./converters"), exports);
22
+ __exportStar(require("./session-service"), exports);
23
+ __exportStar(require("./query-service"), exports);
24
+ __exportStar(require("./graph-service"), exports);
25
+ __exportStar(require("./transaction-service"), exports);
26
+ __exportStar(require("./data-service"), exports);
27
+ __exportStar(require("./health-service"), exports);
28
+ __exportStar(require("./admin-service"), exports);
29
+ __exportStar(require("./bulk-import-service"), exports);
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQWtDO0FBQ2xDLCtDQUE2QjtBQUM3QixvREFBa0M7QUFDbEMsa0RBQWdDO0FBQ2hDLGtEQUFnQztBQUNoQyx3REFBc0M7QUFDdEMsaURBQStCO0FBQy9CLG1EQUFpQztBQUNqQyxrREFBZ0M7QUFDaEMsd0RBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEJhcnJlbCBleHBvcnQgZm9yIGFsbCBzZXJ2aWNlIGNsYXNzZXMuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRlcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24tc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcXVlcnktc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JhcGgtc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24tc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9oZWFsdGgtc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWRtaW4tc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnVsay1pbXBvcnQtc2VydmljZSc7XHJcbiJdfQ==
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Query service handles GQL query execution.
3
+ */
4
+ import { ServiceContext } from './service-context';
5
+ import { Response } from '../response';
6
+ import { QueryConfig } from '../client';
7
+ /**
8
+ * Query service for executing GQL queries.
9
+ */
10
+ export declare class QueryService {
11
+ private ctx;
12
+ constructor(ctx: ServiceContext);
13
+ /**
14
+ * Calculate timeout with the following priority:
15
+ * 1. QueryConfig.timeout (highest priority) - explicitly specified timeout
16
+ * 2. Context deadline (medium priority) - remaining time from context deadline
17
+ * 3. client.config.timeout (default) - default timeout from client config
18
+ *
19
+ * @param config Optional query configuration
20
+ * @returns Timeout in milliseconds
21
+ */
22
+ private calculateTimeout;
23
+ /**
24
+ * Execute a GQL query and return the result.
25
+ */
26
+ gql(query: string, config?: QueryConfig): Promise<Response>;
27
+ /**
28
+ * Execute a GQL query and stream the results.
29
+ */
30
+ gqlStream(query: string, config?: QueryConfig, callback?: (response: Response) => void): Promise<void>;
31
+ /**
32
+ * Return the execution plan for a query.
33
+ */
34
+ explain(query: string, config?: QueryConfig): Promise<string>;
35
+ /**
36
+ * Execute a query with profiling and return statistics.
37
+ */
38
+ profile(query: string, config?: QueryConfig): Promise<string>;
39
+ }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * Query service handles GQL query execution.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.QueryService = void 0;
7
+ const errors_1 = require("../errors");
8
+ const services_1 = require("../services");
9
+ const converters_1 = require("./converters");
10
+ /**
11
+ * Query service for executing GQL queries.
12
+ */
13
+ class QueryService {
14
+ ctx;
15
+ constructor(ctx) {
16
+ this.ctx = ctx;
17
+ }
18
+ /**
19
+ * Calculate timeout with the following priority:
20
+ * 1. QueryConfig.timeout (highest priority) - explicitly specified timeout
21
+ * 2. Context deadline (medium priority) - remaining time from context deadline
22
+ * 3. client.config.timeout (default) - default timeout from client config
23
+ *
24
+ * @param config Optional query configuration
25
+ * @returns Timeout in milliseconds
26
+ */
27
+ calculateTimeout(config) {
28
+ // Priority 1: Use explicitly specified timeout from QueryConfig
29
+ if (config?.timeout && config.timeout > 0) {
30
+ return config.timeout;
31
+ }
32
+ // Priority 2: Context deadline support
33
+ // Note: Node.js SDK doesn't currently expose context deadline parameter
34
+ // This is left for future enhancement
35
+ // Priority 3: Use default timeout from client config
36
+ return this.ctx.config.timeout || 30000;
37
+ }
38
+ /**
39
+ * Execute a GQL query and return the result.
40
+ */
41
+ async gql(query, config) {
42
+ if (!query) {
43
+ throw new errors_1.EmptyQueryError();
44
+ }
45
+ const session = this.ctx.sessions.getSession();
46
+ const request = (0, converters_1.buildGqlRequest)(query, session, this.ctx.config, config);
47
+ const timeoutMs = this.calculateTimeout(config);
48
+ try {
49
+ const metadata = this.ctx.getSessionMetadata();
50
+ const response = await (0, services_1.promisifyCallWithDeadline)(this.ctx.clients.queryService, 'Gql', request, timeoutMs, metadata);
51
+ this.ctx.updateActivity();
52
+ return (0, converters_1.convertGqlResponse)(response);
53
+ }
54
+ catch (error) {
55
+ throw new errors_1.QueryFailedError(error.message || 'Query failed');
56
+ }
57
+ }
58
+ /**
59
+ * Execute a GQL query and stream the results.
60
+ */
61
+ async gqlStream(query, config, callback) {
62
+ if (!query) {
63
+ throw new errors_1.EmptyQueryError();
64
+ }
65
+ const session = this.ctx.sessions.getSession();
66
+ const request = (0, converters_1.buildGqlRequest)(query, session, this.ctx.config, config);
67
+ const metadata = this.ctx.getSessionMetadata();
68
+ const timeoutMs = this.calculateTimeout(config);
69
+ const deadline = new Date(Date.now() + timeoutMs);
70
+ return new Promise((resolve, reject) => {
71
+ const stream = this.ctx.clients.queryService.GqlStream(request, metadata, { deadline });
72
+ stream.on('data', (response) => {
73
+ this.ctx.updateActivity();
74
+ if (callback) {
75
+ callback((0, converters_1.convertGqlResponse)(response));
76
+ }
77
+ });
78
+ stream.on('end', () => resolve());
79
+ stream.on('error', (error) => reject(new errors_1.QueryFailedError(error.message)));
80
+ });
81
+ }
82
+ /**
83
+ * Return the execution plan for a query.
84
+ */
85
+ async explain(query, config) {
86
+ if (!query) {
87
+ throw new errors_1.EmptyQueryError();
88
+ }
89
+ const session = this.ctx.sessions.getSession();
90
+ const request = (0, converters_1.buildGqlRequest)(query, session, this.ctx.config, config);
91
+ const metadata = this.ctx.getSessionMetadata();
92
+ const timeoutMs = this.calculateTimeout(config);
93
+ const response = await (0, services_1.promisifyCallWithDeadline)(this.ctx.clients.queryService, 'Explain', request, timeoutMs, metadata);
94
+ return response.plan || '';
95
+ }
96
+ /**
97
+ * Execute a query with profiling and return statistics.
98
+ */
99
+ async profile(query, config) {
100
+ if (!query) {
101
+ throw new errors_1.EmptyQueryError();
102
+ }
103
+ const session = this.ctx.sessions.getSession();
104
+ const request = (0, converters_1.buildGqlRequest)(query, session, this.ctx.config, config);
105
+ const metadata = this.ctx.getSessionMetadata();
106
+ const timeoutMs = this.calculateTimeout(config);
107
+ const response = await (0, services_1.promisifyCallWithDeadline)(this.ctx.clients.queryService, 'Profile', request, timeoutMs, metadata);
108
+ return response.profile || '';
109
+ }
110
+ }
111
+ exports.QueryService = QueryService;
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBSUgsc0NBQThEO0FBQzlELDBDQUF3RDtBQUN4RCw2Q0FHc0I7QUFHdEI7O0dBRUc7QUFDSCxNQUFhLFlBQVk7SUFDSDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7Ozs7Ozs7O09BUUc7SUFDSyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUMzQyxnRUFBZ0U7UUFDaEUsSUFBSSxNQUFNLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsd0VBQXdFO1FBQ3hFLHNDQUFzQztRQUV0QyxxREFBcUQ7UUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQW9CO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSx3QkFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FB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b0NBeUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFF1ZXJ5IHNlcnZpY2UgaGFuZGxlcyBHUUwgcXVlcnkgZXhlY3V0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJy4uL3Jlc3BvbnNlJztcclxuaW1wb3J0IHsgRW1wdHlRdWVyeUVycm9yLCBRdWVyeUZhaWxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcclxuaW1wb3J0IHsgcHJvbWlzaWZ5Q2FsbFdpdGhEZWFkbGluZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHtcclxuICBidWlsZEdxbFJlcXVlc3QsXHJcbiAgY29udmVydEdxbFJlc3BvbnNlLFxyXG59IGZyb20gJy4vY29udmVydGVycyc7XHJcbmltcG9ydCB7IFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcclxuXHJcbi8qKlxyXG4gKiBRdWVyeSBzZXJ2aWNlIGZvciBleGVjdXRpbmcgR1FMIHF1ZXJpZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUXVlcnlTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eDogU2VydmljZUNvbnRleHQpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZSB0aW1lb3V0IHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcclxuICAgKiAxLiBRdWVyeUNvbmZpZy50aW1lb3V0IChoaWdoZXN0IHByaW9yaXR5KSAtIGV4cGxpY2l0bHkgc3BlY2lmaWVkIHRpbWVvdXRcclxuICAgKiAyLiBDb250ZXh0IGRlYWRsaW5lIChtZWRpdW0gcHJpb3JpdHkpIC0gcmVtYWluaW5nIHRpbWUgZnJvbSBjb250ZXh0IGRlYWRsaW5lXHJcbiAgICogMy4gY2xpZW50LmNvbmZpZy50aW1lb3V0IChkZWZhdWx0KSAtIGRlZmF1bHQgdGltZW91dCBmcm9tIGNsaWVudCBjb25maWdcclxuICAgKlxyXG4gICAqIEBwYXJhbSBjb25maWcgT3B0aW9uYWwgcXVlcnkgY29uZmlndXJhdGlvblxyXG4gICAqIEByZXR1cm5zIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVUaW1lb3V0KGNvbmZpZz86IFF1ZXJ5Q29uZmlnKTogbnVtYmVyIHtcclxuICAgIC8vIFByaW9yaXR5IDE6IFVzZSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0IGZyb20gUXVlcnlDb25maWdcclxuICAgIGlmIChjb25maWc/LnRpbWVvdXQgJiYgY29uZmlnLnRpbWVvdXQgPiAwKSB7XHJcbiAgICAgIHJldHVybiBjb25maWcudGltZW91dDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQcmlvcml0eSAyOiBDb250ZXh0IGRlYWRsaW5lIHN1cHBvcnRcclxuICAgIC8vIE5vdGU6IE5vZGUuanMgU0RLIGRvZXNuJ3QgY3VycmVudGx5IGV4cG9zZSBjb250ZXh0IGRlYWRsaW5lIHBhcmFtZXRlclxyXG4gICAgLy8gVGhpcyBpcyBsZWZ0IGZvciBmdXR1cmUgZW5oYW5jZW1lbnRcclxuXHJcbiAgICAvLyBQcmlvcml0eSAzOiBVc2UgZGVmYXVsdCB0aW1lb3V0IGZyb20gY2xpZW50IGNvbmZpZ1xyXG4gICAgcmV0dXJuIHRoaXMuY3R4LmNvbmZpZy50aW1lb3V0IHx8IDMwMDAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBhIEdRTCBxdWVyeSBhbmQgcmV0dXJuIHRoZSByZXN1bHQuXHJcbiAgICovXHJcbiAgYXN5bmMgZ3FsKHF1ZXJ5OiBzdHJpbmcsIGNvbmZpZz86IFF1ZXJ5Q29uZmlnKTogUHJvbWlzZTxSZXNwb25zZT4ge1xyXG4gICAgaWYgKCFxdWVyeSkge1xyXG4gICAgICB0aHJvdyBuZXcgRW1wdHlRdWVyeUVycm9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcclxuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxyXG4gICAgICAgIHRoaXMuY3R4LmNsaWVudHMucXVlcnlTZXJ2aWNlLFxyXG4gICAgICAgICdHcWwnLFxyXG4gICAgICAgIHJlcXVlc3QsXHJcbiAgICAgICAgdGltZW91dE1zLFxyXG4gICAgICAgIG1ldGFkYXRhXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmN0eC51cGRhdGVBY3Rpdml0eSgpO1xyXG4gICAgICByZXR1cm4gY29udmVydEdxbFJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RmFpbGVkRXJyb3IoZXJyb3IubWVzc2FnZSB8fCAnUXVlcnkgZmFpbGVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIGEgR1FMIHF1ZXJ5IGFuZCBzdHJlYW0gdGhlIHJlc3VsdHMuXHJcbiAgICovXHJcbiAgYXN5bmMgZ3FsU3RyZWFtKFxyXG4gICAgcXVlcnk6IHN0cmluZyxcclxuICAgIGNvbmZpZz86IFF1ZXJ5Q29uZmlnLFxyXG4gICAgY2FsbGJhY2s/OiAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB2b2lkXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXF1ZXJ5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IGJ1aWxkR3FsUmVxdWVzdChxdWVyeSwgc2Vzc2lvbiwgdGhpcy5jdHguY29uZmlnLCBjb25maWcpO1xyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xyXG4gICAgY29uc3QgZGVhZGxpbmUgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgdGltZW91dE1zKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UgYXMgYW55KS5HcWxTdHJlYW0oXHJcbiAgICAgICAgcmVxdWVzdCxcclxuICAgICAgICBtZXRhZGF0YSxcclxuICAgICAgICB7IGRlYWRsaW5lIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdHgudXBkYXRlQWN0aXZpdHkoKTtcclxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgIGNhbGxiYWNrKGNvbnZlcnRHcWxSZXNwb25zZShyZXNwb25zZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XHJcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KG5ldyBRdWVyeUZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UpKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgZXhlY3V0aW9uIHBsYW4gZm9yIGEgcXVlcnkuXHJcbiAgICovXHJcbiAgYXN5bmMgZXhwbGFpbihxdWVyeTogc3RyaW5nLCBjb25maWc/OiBRdWVyeUNvbmZpZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBpZiAoIXF1ZXJ5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IGJ1aWxkR3FsUmVxdWVzdChxdWVyeSwgc2Vzc2lvbiwgdGhpcy5jdHguY29uZmlnLCBjb25maWcpO1xyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xyXG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUoXHJcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMucXVlcnlTZXJ2aWNlLFxyXG4gICAgICAnRXhwbGFpbicsXHJcbiAgICAgIHJlcXVlc3QsXHJcbiAgICAgIHRpbWVvdXRNcyxcclxuICAgICAgbWV0YWRhdGFcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlLnBsYW4gfHwgJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIGEgcXVlcnkgd2l0aCBwcm9maWxpbmcgYW5kIHJldHVybiBzdGF0aXN0aWNzLlxyXG4gICAqL1xyXG4gIGFzeW5jIHByb2ZpbGUocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgaWYgKCFxdWVyeSkge1xyXG4gICAgICB0aHJvdyBuZXcgRW1wdHlRdWVyeUVycm9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcclxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XHJcbiAgICBjb25zdCB0aW1lb3V0TXMgPSB0aGlzLmNhbGN1bGF0ZVRpbWVvdXQoY29uZmlnKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxyXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLnF1ZXJ5U2VydmljZSxcclxuICAgICAgJ1Byb2ZpbGUnLFxyXG4gICAgICByZXF1ZXN0LFxyXG4gICAgICB0aW1lb3V0TXMsXHJcbiAgICAgIG1ldGFkYXRhXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZS5wcm9maWxlIHx8ICcnO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared context for all service classes.
3
+ * Contains gRPC clients, managers, and configuration.
4
+ */
5
+ import * as grpc from '@grpc/grpc-js';
6
+ import { GqldbConfig } from '../config';
7
+ import { SessionManager } from '../session';
8
+ import { TransactionManager } from '../transaction';
9
+ /**
10
+ * Service client types for gRPC communication.
11
+ */
12
+ export interface ServiceClients {
13
+ sessionService: grpc.Client;
14
+ queryService: grpc.Client;
15
+ graphService: grpc.Client;
16
+ transactionService: grpc.Client;
17
+ dataService: grpc.Client;
18
+ healthService: grpc.Client;
19
+ adminService: grpc.Client;
20
+ bulkImportService: grpc.Client;
21
+ }
22
+ /**
23
+ * Service context holds shared dependencies for all service classes.
24
+ */
25
+ export declare class ServiceContext {
26
+ readonly config: GqldbConfig;
27
+ readonly sessions: SessionManager;
28
+ readonly txManager: TransactionManager;
29
+ readonly clients: ServiceClients;
30
+ constructor(config: GqldbConfig, sessions: SessionManager, txManager: TransactionManager, clients: ServiceClients);
31
+ /**
32
+ * Get session metadata for authenticated requests.
33
+ */
34
+ getSessionMetadata(): grpc.Metadata;
35
+ /**
36
+ * Update session activity timestamp.
37
+ */
38
+ updateActivity(): void;
39
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * Shared context for all service classes.
4
+ * Contains gRPC clients, managers, and configuration.
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.ServiceContext = void 0;
41
+ const grpc = __importStar(require("@grpc/grpc-js"));
42
+ /**
43
+ * Service context holds shared dependencies for all service classes.
44
+ */
45
+ class ServiceContext {
46
+ config;
47
+ sessions;
48
+ txManager;
49
+ clients;
50
+ constructor(config, sessions, txManager, clients) {
51
+ this.config = config;
52
+ this.sessions = sessions;
53
+ this.txManager = txManager;
54
+ this.clients = clients;
55
+ }
56
+ /**
57
+ * Get session metadata for authenticated requests.
58
+ */
59
+ getSessionMetadata() {
60
+ const metadata = new grpc.Metadata();
61
+ const session = this.sessions.getSession();
62
+ metadata.add('session-id', session?.id?.toString() || '0');
63
+ return metadata;
64
+ }
65
+ /**
66
+ * Update session activity timestamp.
67
+ */
68
+ updateActivity() {
69
+ this.sessions.updateActivity();
70
+ }
71
+ }
72
+ exports.ServiceContext = ServiceContext;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBc0M7QUFtQnRDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRVA7SUFDQTtJQUNBO0lBQ0E7SUFKbEIsWUFDa0IsTUFBbUIsRUFDbkIsUUFBd0IsRUFDeEIsU0FBNkIsRUFDN0IsT0FBdUI7UUFIdkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtJQUN0QyxDQUFDO0lBRUo7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQXhCRCx3Q0F3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogU2hhcmVkIGNvbnRleHQgZm9yIGFsbCBzZXJ2aWNlIGNsYXNzZXMuXHJcbiAqIENvbnRhaW5zIGdSUEMgY2xpZW50cywgbWFuYWdlcnMsIGFuZCBjb25maWd1cmF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XHJcbmltcG9ydCB7IEdxbGRiQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcclxuaW1wb3J0IHsgU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICcuLi9zZXNzaW9uJztcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24nO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2xpZW50IHR5cGVzIGZvciBnUlBDIGNvbW11bmljYXRpb24uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VDbGllbnRzIHtcclxuICBzZXNzaW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XHJcbiAgcXVlcnlTZXJ2aWNlOiBncnBjLkNsaWVudDtcclxuICBncmFwaFNlcnZpY2U6IGdycGMuQ2xpZW50O1xyXG4gIHRyYW5zYWN0aW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XHJcbiAgZGF0YVNlcnZpY2U6IGdycGMuQ2xpZW50O1xyXG4gIGhlYWx0aFNlcnZpY2U6IGdycGMuQ2xpZW50O1xyXG4gIGFkbWluU2VydmljZTogZ3JwYy5DbGllbnQ7XHJcbiAgYnVsa0ltcG9ydFNlcnZpY2U6IGdycGMuQ2xpZW50O1xyXG59XHJcblxyXG4vKipcclxuICogU2VydmljZSBjb250ZXh0IGhvbGRzIHNoYXJlZCBkZXBlbmRlbmNpZXMgZm9yIGFsbCBzZXJ2aWNlIGNsYXNzZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2VydmljZUNvbnRleHQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogR3FsZGJDb25maWcsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2Vzc2lvbnM6IFNlc3Npb25NYW5hZ2VyLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHR4TWFuYWdlcjogVHJhbnNhY3Rpb25NYW5hZ2VyLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWVudHM6IFNlcnZpY2VDbGllbnRzXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgc2Vzc2lvbiBtZXRhZGF0YSBmb3IgYXV0aGVudGljYXRlZCByZXF1ZXN0cy5cclxuICAgKi9cclxuICBnZXRTZXNzaW9uTWV0YWRhdGEoKTogZ3JwYy5NZXRhZGF0YSB7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IG5ldyBncnBjLk1ldGFkYXRhKCk7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXRTZXNzaW9uKCk7XHJcbiAgICBtZXRhZGF0YS5hZGQoJ3Nlc3Npb24taWQnLCBzZXNzaW9uPy5pZD8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHNlc3Npb24gYWN0aXZpdHkgdGltZXN0YW1wLlxyXG4gICAqL1xyXG4gIHVwZGF0ZUFjdGl2aXR5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXNzaW9ucy51cGRhdGVBY3Rpdml0eSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Session service handles authentication and session lifecycle.
3
+ */
4
+ import { ServiceContext } from './service-context';
5
+ import { Session } from '../session';
6
+ /**
7
+ * Session service for authentication and session management.
8
+ */
9
+ export declare class SessionService {
10
+ private ctx;
11
+ constructor(ctx: ServiceContext);
12
+ /**
13
+ * Authenticate the user and create a session.
14
+ */
15
+ login(username: string, password: string, defaultGraph: string): Promise<Session>;
16
+ /**
17
+ * Terminate the current session.
18
+ */
19
+ logout(): Promise<void>;
20
+ /**
21
+ * Check the connection and return the latency in nanoseconds.
22
+ */
23
+ ping(): Promise<number>;
24
+ }