ultipa 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/dist/client.d.ts +194 -0
- package/dist/client.js +390 -0
- package/dist/config.d.ts +65 -0
- package/dist/config.js +135 -0
- package/dist/connection.d.ts +30 -0
- package/dist/connection.js +190 -0
- package/dist/errors.d.ts +99 -0
- package/dist/errors.js +237 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +88 -0
- package/dist/printers.d.ts +33 -0
- package/dist/printers.js +312 -0
- package/dist/proto/gqldb.proto +632 -0
- package/dist/response.d.ts +256 -0
- package/dist/response.js +723 -0
- package/dist/services/admin-service.d.ts +40 -0
- package/dist/services/admin-service.js +115 -0
- package/dist/services/bulk-import-service.d.ts +35 -0
- package/dist/services/bulk-import-service.js +108 -0
- package/dist/services/converters.d.ts +57 -0
- package/dist/services/converters.js +254 -0
- package/dist/services/data-service.d.ts +44 -0
- package/dist/services/data-service.js +206 -0
- package/dist/services/graph-service.d.ts +32 -0
- package/dist/services/graph-service.js +127 -0
- package/dist/services/health-service.d.ts +50 -0
- package/dist/services/health-service.js +78 -0
- package/dist/services/index.d.ts +13 -0
- package/dist/services/index.js +30 -0
- package/dist/services/query-service.d.ts +39 -0
- package/dist/services/query-service.js +112 -0
- package/dist/services/service-context.d.ts +39 -0
- package/dist/services/service-context.js +73 -0
- package/dist/services/session-service.d.ts +24 -0
- package/dist/services/session-service.js +66 -0
- package/dist/services/transaction-service.d.ts +33 -0
- package/dist/services/transaction-service.js +100 -0
- package/dist/services.d.ts +28 -0
- package/dist/services.js +122 -0
- package/dist/session.d.ts +45 -0
- package/dist/session.js +75 -0
- package/dist/transaction.d.ts +42 -0
- package/dist/transaction.js +89 -0
- package/dist/types/bulk_import.d.ts +53 -0
- package/dist/types/bulk_import.js +6 -0
- package/dist/types/data_types.d.ts +116 -0
- package/dist/types/data_types.js +122 -0
- package/dist/types/enums.d.ts +59 -0
- package/dist/types/enums.js +67 -0
- package/dist/types/graph_models.d.ts +54 -0
- package/dist/types/graph_models.js +6 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +36 -0
- package/dist/types/metadata.d.ts +60 -0
- package/dist/types/metadata.js +6 -0
- package/dist/types/schema.d.ts +31 -0
- package/dist/types/schema.js +6 -0
- package/dist/types/typed_value.d.ts +25 -0
- package/dist/types/typed_value.js +1176 -0
- package/dist/types/wrappers.d.ts +23 -0
- package/dist/types/wrappers.js +39 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +24 -0
- package/package.json +50 -0
|
@@ -0,0 +1,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
|
+
}
|