@ultipa-graph/ultipa-driver 5.1.5-s5.2 → 6.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/dist/client.d.ts +196 -0
- package/dist/client.js +394 -0
- package/dist/config.d.ts +65 -0
- package/dist/config.js +135 -0
- package/dist/connection.d.ts +30 -0
- package/dist/connection.js +190 -0
- package/dist/errors.d.ts +99 -0
- package/dist/errors.js +237 -0
- package/dist/index.d.ts +14 -5
- package/dist/index.js +88 -39
- package/dist/printers.d.ts +33 -0
- package/dist/printers.js +312 -0
- package/dist/proto/gqldb.proto +689 -0
- package/dist/response.d.ts +256 -0
- package/dist/response.js +723 -0
- package/dist/services/admin-service.d.ts +44 -0
- package/dist/services/admin-service.js +168 -0
- package/dist/services/bulk-import-service.d.ts +35 -0
- package/dist/services/bulk-import-service.js +105 -0
- package/dist/services/converters.d.ts +57 -0
- package/dist/services/converters.js +254 -0
- package/dist/services/data-service.d.ts +44 -0
- package/dist/services/data-service.js +206 -0
- package/dist/services/graph-service.d.ts +32 -0
- package/dist/services/graph-service.js +127 -0
- package/dist/services/health-service.d.ts +50 -0
- package/dist/services/health-service.js +78 -0
- package/dist/services/index.d.ts +13 -0
- package/dist/services/index.js +30 -0
- package/dist/services/query-service.d.ts +39 -0
- package/dist/services/query-service.js +112 -0
- package/dist/services/service-context.d.ts +39 -0
- package/dist/services/service-context.js +73 -0
- package/dist/services/session-service.d.ts +24 -0
- package/dist/services/session-service.js +66 -0
- package/dist/services/transaction-service.d.ts +33 -0
- package/dist/services/transaction-service.js +100 -0
- package/dist/services.d.ts +28 -0
- package/dist/services.js +122 -0
- package/dist/session.d.ts +45 -0
- package/dist/session.js +75 -0
- package/dist/transaction.d.ts +42 -0
- package/dist/transaction.js +89 -0
- package/dist/types/bulk_import.d.ts +53 -0
- package/dist/types/bulk_import.js +6 -0
- package/dist/types/data_types.d.ts +116 -0
- package/dist/types/data_types.js +122 -0
- package/dist/types/enums.d.ts +59 -0
- package/dist/types/enums.js +67 -0
- package/dist/types/graph_models.d.ts +54 -0
- package/dist/types/graph_models.js +6 -0
- package/dist/types/index.d.ts +11 -5
- package/dist/types/index.js +36 -37
- package/dist/types/metadata.d.ts +107 -0
- package/dist/types/metadata.js +6 -0
- package/dist/types/schema.d.ts +31 -0
- package/dist/types/schema.js +6 -0
- package/dist/types/typed_value.d.ts +25 -0
- package/dist/types/typed_value.js +1176 -0
- package/dist/types/wrappers.d.ts +23 -0
- package/dist/types/wrappers.js +39 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +24 -0
- package/package.json +50 -63
- package/dist/connection/connection.final.d.ts +0 -14
- package/dist/connection/connection.final.js +0 -94
- package/dist/connection/connection.final.js.map +0 -1
- package/dist/connection/connection.pool.d.ts +0 -21
- package/dist/connection/connection.pool.js +0 -103
- package/dist/connection/connection.pool.js.map +0 -1
- package/dist/connection/extra/algos/algo.extra.d.ts +0 -34
- package/dist/connection/extra/algos/algo.extra.js +0 -69
- package/dist/connection/extra/algos/algo.extra.js.map +0 -1
- package/dist/connection/extra/algos/algo.utils.d.ts +0 -3
- package/dist/connection/extra/algos/algo.utils.js +0 -54
- package/dist/connection/extra/algos/algo.utils.js.map +0 -1
- package/dist/connection/extra/algos/community.d.ts +0 -27
- package/dist/connection/extra/algos/community.js +0 -76
- package/dist/connection/extra/algos/community.js.map +0 -1
- package/dist/connection/extra/algos/degrees.d.ts +0 -10
- package/dist/connection/extra/algos/degrees.js +0 -24
- package/dist/connection/extra/algos/degrees.js.map +0 -1
- package/dist/connection/extra/algos/embedding.d.ts +0 -13
- package/dist/connection/extra/algos/embedding.js +0 -33
- package/dist/connection/extra/algos/embedding.js.map +0 -1
- package/dist/connection/extra/algos/index.d.ts +0 -5
- package/dist/connection/extra/algos/index.js +0 -14
- package/dist/connection/extra/algos/index.js.map +0 -1
- package/dist/connection/extra/base.extra.d.ts +0 -18
- package/dist/connection/extra/base.extra.js +0 -111
- package/dist/connection/extra/base.extra.js.map +0 -1
- package/dist/connection/extra/batch.insert.extra.d.ts +0 -58
- package/dist/connection/extra/batch.insert.extra.js +0 -354
- package/dist/connection/extra/batch.insert.extra.js.map +0 -1
- package/dist/connection/extra/connection.base.d.ts +0 -112
- package/dist/connection/extra/connection.base.js +0 -530
- package/dist/connection/extra/connection.base.js.map +0 -1
- package/dist/connection/extra/connection.d.ts +0 -17
- package/dist/connection/extra/connection.js +0 -44
- package/dist/connection/extra/connection.js.map +0 -1
- package/dist/connection/extra/graph.extra.d.ts +0 -54
- package/dist/connection/extra/graph.extra.js +0 -151
- package/dist/connection/extra/graph.extra.js.map +0 -1
- package/dist/connection/extra/hdc.extra.d.ts +0 -89
- package/dist/connection/extra/hdc.extra.js +0 -322
- package/dist/connection/extra/hdc.extra.js.map +0 -1
- package/dist/connection/extra/index.extra.d.ts +0 -102
- package/dist/connection/extra/index.extra.js +0 -210
- package/dist/connection/extra/index.extra.js.map +0 -1
- package/dist/connection/extra/job.extra.d.ts +0 -32
- package/dist/connection/extra/job.extra.js +0 -122
- package/dist/connection/extra/job.extra.js.map +0 -1
- package/dist/connection/extra/meta.extra.d.ts +0 -36
- package/dist/connection/extra/meta.extra.js +0 -123
- package/dist/connection/extra/meta.extra.js.map +0 -1
- package/dist/connection/extra/policy.extra.d.ts +0 -32
- package/dist/connection/extra/policy.extra.js +0 -114
- package/dist/connection/extra/policy.extra.js.map +0 -1
- package/dist/connection/extra/privilege.extra.d.ts +0 -8
- package/dist/connection/extra/privilege.extra.js +0 -20
- package/dist/connection/extra/privilege.extra.js.map +0 -1
- package/dist/connection/extra/property.extra.d.ts +0 -66
- package/dist/connection/extra/property.extra.js +0 -190
- package/dist/connection/extra/property.extra.js.map +0 -1
- package/dist/connection/extra/schema.extra.d.ts +0 -108
- package/dist/connection/extra/schema.extra.js +0 -253
- package/dist/connection/extra/schema.extra.js.map +0 -1
- package/dist/connection/extra/search.extra.d.ts +0 -12
- package/dist/connection/extra/search.extra.js +0 -117
- package/dist/connection/extra/search.extra.js.map +0 -1
- package/dist/connection/extra/task.extra.d.ts +0 -24
- package/dist/connection/extra/task.extra.js +0 -107
- package/dist/connection/extra/task.extra.js.map +0 -1
- package/dist/connection/extra/user.extra.d.ts +0 -28
- package/dist/connection/extra/user.extra.js +0 -91
- package/dist/connection/extra/user.extra.js.map +0 -1
- package/dist/connection/extra/user.privilege.extra.d.ts +0 -64
- package/dist/connection/extra/user.privilege.extra.js +0 -273
- package/dist/connection/extra/user.privilege.extra.js.map +0 -1
- package/dist/connection/index.d.ts +0 -5
- package/dist/connection/index.js +0 -13
- package/dist/connection/index.js.map +0 -1
- package/dist/connection/network.manager.d.ts +0 -28
- package/dist/connection/network.manager.js +0 -179
- package/dist/connection/network.manager.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/printers/alias.d.ts +0 -2
- package/dist/printers/alias.js +0 -39
- package/dist/printers/alias.js.map +0 -1
- package/dist/printers/any.d.ts +0 -2
- package/dist/printers/any.js +0 -63
- package/dist/printers/any.js.map +0 -1
- package/dist/printers/array.aio.d.ts +0 -3
- package/dist/printers/array.aio.js +0 -259
- package/dist/printers/array.aio.js.map +0 -1
- package/dist/printers/common.d.ts +0 -0
- package/dist/printers/common.js +0 -1
- package/dist/printers/common.js.map +0 -1
- package/dist/printers/edge.d.ts +0 -5
- package/dist/printers/edge.js +0 -78
- package/dist/printers/edge.js.map +0 -1
- package/dist/printers/explain.plan.d.ts +0 -2
- package/dist/printers/explain.plan.js +0 -46
- package/dist/printers/explain.plan.js.map +0 -1
- package/dist/printers/index.d.ts +0 -24
- package/dist/printers/index.js +0 -43
- package/dist/printers/index.js.map +0 -1
- package/dist/printers/node.d.ts +0 -5
- package/dist/printers/node.js +0 -77
- package/dist/printers/node.js.map +0 -1
- package/dist/printers/path.d.ts +0 -3
- package/dist/printers/path.js +0 -62
- package/dist/printers/path.js.map +0 -1
- package/dist/printers/status.d.ts +0 -3
- package/dist/printers/status.js +0 -68
- package/dist/printers/status.js.map +0 -1
- package/dist/printers/table.d.ts +0 -2
- package/dist/printers/table.js +0 -56
- package/dist/printers/table.js.map +0 -1
- package/dist/proto/tmp.js +0 -366
- package/dist/proto/ultipa_grpc_pb.d.ts +0 -258
- package/dist/proto/ultipa_grpc_pb.js +0 -366
- package/dist/proto/ultipa_grpc_pb.js.map +0 -1
- package/dist/proto/ultipa_pb.d.ts +0 -1
- package/dist/proto/ultipa_pb.js +0 -12119
- package/dist/proto/ultipa_pb.js.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/types.algos.params.d.ts +0 -545
- package/dist/types/types.algos.params.js +0 -16
- package/dist/types/types.algos.params.js.map +0 -1
- package/dist/types/types.d.ts +0 -1214
- package/dist/types/types.extra.d.ts +0 -146
- package/dist/types/types.extra.js +0 -27
- package/dist/types/types.extra.js.map +0 -1
- package/dist/types/types.js +0 -1606
- package/dist/types/types.js.map +0 -1
- package/dist/types/util.d.ts +0 -15
- package/dist/types/util.js +0 -136
- package/dist/types/util.js.map +0 -1
- package/dist/utils/common.d.ts +0 -3
- package/dist/utils/common.js +0 -22
- package/dist/utils/common.js.map +0 -1
- package/dist/utils/config.d.ts +0 -3
- package/dist/utils/config.js +0 -7
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/format.d.ts +0 -45
- package/dist/utils/format.js +0 -879
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/index.d.ts +0 -10
- package/dist/utils/index.js +0 -30
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/params.validate.d.ts +0 -4
- package/dist/utils/params.validate.js +0 -14
- package/dist/utils/params.validate.js.map +0 -1
- package/dist/utils/property.d.ts +0 -24
- package/dist/utils/property.js +0 -203
- package/dist/utils/property.js.map +0 -1
- package/dist/utils/raft.retry.d.ts +0 -0
- package/dist/utils/raft.retry.js +0 -1
- package/dist/utils/raft.retry.js.map +0 -1
- package/dist/utils/serialize/commont.d.ts +0 -12
- package/dist/utils/serialize/commont.js +0 -46
- package/dist/utils/serialize/commont.js.map +0 -1
- package/dist/utils/serialize/deserialize.d.ts +0 -10
- package/dist/utils/serialize/deserialize.js +0 -288
- package/dist/utils/serialize/deserialize.js.map +0 -1
- package/dist/utils/serialize/null.d.ts +0 -32
- package/dist/utils/serialize/null.js +0 -178
- package/dist/utils/serialize/null.js.map +0 -1
- package/dist/utils/serialize/serialize.d.ts +0 -10
- package/dist/utils/serialize/serialize.js +0 -146
- package/dist/utils/serialize/serialize.js.map +0 -1
- package/dist/utils/stream.helper.d.ts +0 -10
- package/dist/utils/stream.helper.js +0 -71
- package/dist/utils/stream.helper.js.map +0 -1
- package/dist/utils/time.record.d.ts +0 -15
- package/dist/utils/time.record.js +0 -52
- package/dist/utils/time.record.js.map +0 -1
- package/dist/utils/timezone.d.ts +0 -7
- package/dist/utils/timezone.js +0 -21
- package/dist/utils/timezone.js.map +0 -1
- package/dist/utils/ultipa.datetime.d.ts +0 -14
- package/dist/utils/ultipa.datetime.js +0 -160
- package/dist/utils/ultipa.datetime.js.map +0 -1
- package/dist/utils/uql-maker.d.ts +0 -165
- package/dist/utils/uql-maker.js +0 -402
- package/dist/utils/uql-maker.js.map +0 -1
- package/dist/utils/uql.parse.d.ts +0 -27
- package/dist/utils/uql.parse.js +0 -205
- package/dist/utils/uql.parse.js.map +0 -1
- package/readme.md +0 -65
- package/src/proto/build.sh +0 -41
- package/src/proto/build_windows.sh +0 -40
- package/src/proto/ultipa.proto +0 -531
- package/src/proto/ultipa_grpc_pb.d.ts +0 -92
- package/src/proto/ultipa_grpc_pb.js +0 -414
- package/src/proto/ultipa_pb.d.ts +0 -1983
- package/src/proto/ultipa_pb.js +0 -14852
|
@@ -0,0 +1,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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cyBncmFwaCBtYW5hZ2VtZW50IG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xuaW1wb3J0IHsgR3JhcGhJbmZvLCBHcmFwaFR5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZ3JhcGhUeXBlVG9Qcm90bywgY29udmVydEdyYXBoSW5mbyB9IGZyb20gJy4vY29udmVydGVycyc7XG5pbXBvcnQgeyBHcmFwaE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG4vKipcbiAqIEdyYXBoIHNlcnZpY2UgZm9yIG1hbmFnaW5nIGdyYXBocy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3R4OiBTZXJ2aWNlQ29udGV4dCkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlR3JhcGgoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGdyYXBoVHlwZTogR3JhcGhUeXBlID0gR3JhcGhUeXBlLk9QRU4sXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBuYW1lLFxuICAgICAgZ3JhcGhfdHlwZTogZ3JhcGhUeXBlVG9Qcm90byhncmFwaFR5cGUpLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgYXdhaXQgcHJvbWlzaWZ5Q2FsbCh0aGlzLmN0eC5jbGllbnRzLmdyYXBoU2VydmljZSwgJ0NyZWF0ZUdyYXBoJywgcmVxdWVzdCwgbWV0YWRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZHJvcEdyYXBoKG5hbWU6IHN0cmluZywgaWZFeGlzdHM6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBuYW1lLFxuICAgICAgaWZfZXhpc3RzOiBpZkV4aXN0cyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBhd2FpdCBwcm9taXNpZnlDYWxsKHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLCAnRHJvcEdyYXBoJywgcmVxdWVzdCwgbWV0YWRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCBncmFwaCBmb3IgdGhlIHNlc3Npb24uXG4gICAqL1xuICBhc3luYyB1c2VHcmFwaChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBuYW1lLFxuICAgICAgc2Vzc2lvbl9pZDogc2Vzc2lvbj8uaWQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGF3YWl0IHByb21pc2lmeUNhbGwodGhpcy5jdHguY2xpZW50cy5ncmFwaFNlcnZpY2UsICdVc2VHcmFwaCcsIHJlcXVlc3QsIG1ldGFkYXRhKTtcbiAgICB0aGlzLmN0eC5zZXNzaW9ucy5zZXREZWZhdWx0R3JhcGgobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCBhdmFpbGFibGUgZ3JhcGhzLlxuICAgKi9cbiAgYXN5bmMgbGlzdEdyYXBocygpOiBQcm9taXNlPEdyYXBoSW5mb1tdPiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLFxuICAgICAgJ0xpc3RHcmFwaHMnLFxuICAgICAge30sXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4gKHJlc3BvbnNlLmdyYXBocyB8fCBbXSkubWFwKChnOiBhbnkpID0+IGNvbnZlcnRHcmFwaEluZm8oZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZ2V0R3JhcGhJbmZvKG5hbWU6IHN0cmluZyk6IFByb21pc2U8R3JhcGhJbmZvPiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICAgIHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLFxuICAgICAgICAnR2V0R3JhcGhJbmZvJyxcbiAgICAgICAgeyBuYW1lIH0sXG4gICAgICAgIG1ldGFkYXRhXG4gICAgICApO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLmluZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoTm90Rm91bmRFcnJvcihuYW1lKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW5mbyA9IHJlc3BvbnNlLmluZm87XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBpbmZvLm5hbWUgfHwgbmFtZSxcbiAgICAgICAgZ3JhcGhUeXBlOiBpbmZvLmdyYXBoX3R5cGUsXG4gICAgICAgIG5vZGVDb3VudDogcGFyc2VJbnQoaW5mby5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgICBlZGdlQ291bnQ6IHBhcnNlSW50KGluZm8uZWRnZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGluZm8uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgR3JhcGhOb3RGb3VuZEVycm9yKSB0aHJvdyBlcnI7XG4gICAgICBpZiAoZXJyPy5jb2RlID09PSBncnBjLnN0YXR1cy5OT1RfRk9VTkQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoTm90Rm91bmRFcnJvcihuYW1lKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaGVhbHRoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxtQ0FBc0M7QUFHdEMsMENBQTRDO0FBQzVDLDZDQUFtRDtBQVduRDs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUNKO0lBQXBCLFlBQW9CLEdBQW1CO1FBQW5CLFFBQUcsR0FBSCxHQUFHLENBQWdCO0lBQUcsQ0FBQztJQUUzQzs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBa0IsRUFBRTtRQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDOUIsT0FBTyxFQUNQLEVBQUUsT0FBTyxFQUFFLEVBQ1gsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPLElBQUEsZ0NBQW1CLEVBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F1Qkc7SUFDSCxLQUFLLENBQUMsVUFBa0IsRUFBRTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFZLEVBQW1CLENBQUM7UUFFcEQsK0NBQStDO1FBQy9DLE1BQU0sT0FBTyxHQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUMvQixDQUFDO1FBRUYseUNBQXlDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1Qyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFtQixFQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILGdCQUFnQjtRQUNoQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUNBQXVDO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUE3RUQsc0NBNkVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIZWFsdGggc2VydmljZSBoYW5kbGVzIGhlYWx0aCBjaGVjayBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7IEhlYWx0aFN0YXR1cyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IHByb21pc2lmeUNhbGwgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBwcm90b1RvSGVhbHRoU3RhdHVzIH0gZnJvbSAnLi9jb252ZXJ0ZXJzJztcblxuLyoqXG4gKiBIZWFsdGggd2F0Y2hlciBpbnRlcmZhY2UgZm9yIHN0cmVhbWluZyBoZWFsdGggdXBkYXRlcy5cbiAqIEVtaXRzICdzdGF0dXMnIGV2ZW50cyB3aXRoIEhlYWx0aFN0YXR1cyBhbmQgJ2Vycm9yJyBldmVudHMgb24gZmFpbHVyZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWFsdGhXYXRjaGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLyoqIFN0b3Agd2F0Y2hpbmcgaGVhbHRoIHVwZGF0ZXMgKi9cbiAgc3RvcCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEhlYWx0aCBzZXJ2aWNlIGZvciBjaGVja2luZyBzZXJ2aWNlIGhlYWx0aC5cbiAqL1xuZXhwb3J0IGNsYXNzIEhlYWx0aFNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eDogU2VydmljZUNvbnRleHQpIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBoZWFsdGggb2YgYSBzZXJ2aWNlLlxuICAgKi9cbiAgYXN5bmMgaGVhbHRoQ2hlY2soc2VydmljZTogc3RyaW5nID0gJycpOiBQcm9taXNlPEhlYWx0aFN0YXR1cz4ge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmhlYWx0aFNlcnZpY2UsXG4gICAgICAnQ2hlY2snLFxuICAgICAgeyBzZXJ2aWNlIH0sXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4gcHJvdG9Ub0hlYWx0aFN0YXR1cyhyZXNwb25zZS5zdGF0dXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoIGhlYWx0aCBzdGF0dXMgY2hhbmdlcyB2aWEgc2VydmVyLXNpZGUgc3RyZWFtaW5nLlxuICAgKiBSZXR1cm5zIGEgSGVhbHRoV2F0Y2hlciB0aGF0IGVtaXRzICdzdGF0dXMnIGV2ZW50cyB3aXRoIEhlYWx0aFN0YXR1cyB2YWx1ZXMuXG4gICAqIENhbGwgc3RvcCgpIHRvIGNhbmNlbCB0aGUgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZSAtIE9wdGlvbmFsIHNlcnZpY2UgbmFtZSB0byB3YXRjaFxuICAgKiBAcmV0dXJucyBIZWFsdGhXYXRjaGVyIC0gRXZlbnRFbWl0dGVyIHdpdGggc3RvcCgpIG1ldGhvZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHdhdGNoZXIgPSBoZWFsdGhTZXJ2aWNlLndhdGNoKCk7XG4gICAqIHdhdGNoZXIub24oJ3N0YXR1cycsIChzdGF0dXM6IEhlYWx0aFN0YXR1cykgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKCdIZWFsdGggc3RhdHVzOicsIHN0YXR1cyk7XG4gICAqIH0pO1xuICAgKiB3YXRjaGVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICogICBjb25zb2xlLmVycm9yKCdXYXRjaCBlcnJvcjonLCBlcnIpO1xuICAgKiB9KTtcbiAgICogd2F0Y2hlci5vbignZW5kJywgKCkgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKCdXYXRjaCBzdHJlYW0gZW5kZWQnKTtcbiAgICogfSk7XG4gICAqIC8vIExhdGVyLCB0byBzdG9wIHdhdGNoaW5nOlxuICAgKiB3YXRjaGVyLnN0b3AoKTtcbiAgICogYGBgXG4gICAqL1xuICB3YXRjaChzZXJ2aWNlOiBzdHJpbmcgPSAnJyk6IEhlYWx0aFdhdGNoZXIge1xuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCkgYXMgSGVhbHRoV2F0Y2hlcjtcblxuICAgIC8vIEdldCB0aGUgV2F0Y2ggbWV0aG9kIGZyb20gdGhlIGhlYWx0aCBzZXJ2aWNlXG4gICAgY29uc3Qgd2F0Y2hGbiA9ICh0aGlzLmN0eC5jbGllbnRzLmhlYWx0aFNlcnZpY2UgYXMgYW55KS5XYXRjaC5iaW5kKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5oZWFsdGhTZXJ2aWNlXG4gICAgKTtcblxuICAgIC8vIFN0YXJ0IHRoZSBzdHJlYW1pbmcgY2FsbCB3aXRoIG1ldGFkYXRhXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCBjYWxsID0gd2F0Y2hGbih7IHNlcnZpY2UgfSwgbWV0YWRhdGEpO1xuXG4gICAgLy8gSGFuZGxlIGluY29taW5nIGRhdGFcbiAgICBjYWxsLm9uKCdkYXRhJywgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHByb3RvVG9IZWFsdGhTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgIGVtaXR0ZXIuZW1pdCgnc3RhdHVzJywgc3RhdHVzKTtcbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBlcnJvcnNcbiAgICBjYWxsLm9uKCdlcnJvcicsIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICBlbWl0dGVyLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICB9KTtcblxuICAgIC8vIEhhbmRsZSBzdHJlYW0gZW5kXG4gICAgY2FsbC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgZW1pdHRlci5lbWl0KCdlbmQnKTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBzdG9wIG1ldGhvZCB0byBjYW5jZWwgdGhlIHN0cmVhbVxuICAgIGVtaXR0ZXIuc3RvcCA9ICgpID0+IHtcbiAgICAgIGNhbGwuY2FuY2VsKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlbWl0dGVyO1xuICB9XG59XG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQWtDO0FBQ2xDLCtDQUE2QjtBQUM3QixvREFBa0M7QUFDbEMsa0RBQWdDO0FBQ2hDLGtEQUFnQztBQUNoQyx3REFBc0M7QUFDdEMsaURBQStCO0FBQy9CLG1EQUFpQztBQUNqQyxrREFBZ0M7QUFDaEMsd0RBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXJyZWwgZXhwb3J0IGZvciBhbGwgc2VydmljZSBjbGFzc2VzLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vY29udmVydGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24tc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5LXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmFwaC1zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24tc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2hlYWx0aC1zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYWRtaW4tc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1bGstaW1wb3J0LXNlcnZpY2UnO1xuIl19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBSUgsc0NBQThEO0FBQzlELDBDQUF3RDtBQUN4RCw2Q0FHc0I7QUFHdEI7O0dBRUc7QUFDSCxNQUFhLFlBQVk7SUFDSDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7Ozs7Ozs7O09BUUc7SUFDSyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUMzQyxnRUFBZ0U7UUFDaEUsSUFBSSxNQUFNLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3hCLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsd0VBQXdFO1FBQ3hFLHNDQUFzQztRQUV0QyxxREFBcUQ7UUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQW9CO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSx3QkFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLG9DQUF5QixFQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQzdCLEtBQUssRUFDTCxPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsQ0FDVCxDQUFDO1lBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUEsK0JBQWtCLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLHlCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksY0FBYyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQ2IsS0FBYSxFQUNiLE1BQW9CLEVBQ3BCLFFBQXVDO1FBRXZDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSx3QkFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBRWxELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBb0IsQ0FBQyxTQUFTLENBQzdELE9BQU8sRUFDUCxRQUFRLEVBQ1IsRUFBRSxRQUFRLEVBQUUsQ0FDYixDQUFDO1lBRUYsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixRQUFRLENBQUMsSUFBQSwrQkFBa0IsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSx5QkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsTUFBb0I7UUFDL0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLHdCQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBQSw0QkFBZSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsb0NBQXlCLEVBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDN0IsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBYSxFQUFFLE1BQW9CO1FBQy9DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSx3QkFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsNEJBQWUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLG9DQUF5QixFQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQzdCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsQ0FDVCxDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUF6SUQsb0NBeUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBRdWVyeSBzZXJ2aWNlIGhhbmRsZXMgR1FMIHF1ZXJ5IGV4ZWN1dGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuaW1wb3J0IHsgRW1wdHlRdWVyeUVycm9yLCBRdWVyeUZhaWxlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHByb21pc2lmeUNhbGxXaXRoRGVhZGxpbmUgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBidWlsZEdxbFJlcXVlc3QsXG4gIGNvbnZlcnRHcWxSZXNwb25zZSxcbn0gZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmltcG9ydCB7IFF1ZXJ5Q29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBRdWVyeSBzZXJ2aWNlIGZvciBleGVjdXRpbmcgR1FMIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eDogU2VydmljZUNvbnRleHQpIHt9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aW1lb3V0IHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbiAgICogMS4gUXVlcnlDb25maWcudGltZW91dCAoaGlnaGVzdCBwcmlvcml0eSkgLSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0XG4gICAqIDIuIENvbnRleHQgZGVhZGxpbmUgKG1lZGl1bSBwcmlvcml0eSkgLSByZW1haW5pbmcgdGltZSBmcm9tIGNvbnRleHQgZGVhZGxpbmVcbiAgICogMy4gY2xpZW50LmNvbmZpZy50aW1lb3V0IChkZWZhdWx0KSAtIGRlZmF1bHQgdGltZW91dCBmcm9tIGNsaWVudCBjb25maWdcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyBPcHRpb25hbCBxdWVyeSBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVRpbWVvdXQoY29uZmlnPzogUXVlcnlDb25maWcpOiBudW1iZXIge1xuICAgIC8vIFByaW9yaXR5IDE6IFVzZSBleHBsaWNpdGx5IHNwZWNpZmllZCB0aW1lb3V0IGZyb20gUXVlcnlDb25maWdcbiAgICBpZiAoY29uZmlnPy50aW1lb3V0ICYmIGNvbmZpZy50aW1lb3V0ID4gMCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy50aW1lb3V0O1xuICAgIH1cblxuICAgIC8vIFByaW9yaXR5IDI6IENvbnRleHQgZGVhZGxpbmUgc3VwcG9ydFxuICAgIC8vIE5vdGU6IE5vZGUuanMgU0RLIGRvZXNuJ3QgY3VycmVudGx5IGV4cG9zZSBjb250ZXh0IGRlYWRsaW5lIHBhcmFtZXRlclxuICAgIC8vIFRoaXMgaXMgbGVmdCBmb3IgZnV0dXJlIGVuaGFuY2VtZW50XG5cbiAgICAvLyBQcmlvcml0eSAzOiBVc2UgZGVmYXVsdCB0aW1lb3V0IGZyb20gY2xpZW50IGNvbmZpZ1xuICAgIHJldHVybiB0aGlzLmN0eC5jb25maWcudGltZW91dCB8fCAzMDAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgR1FMIHF1ZXJ5IGFuZCByZXR1cm4gdGhlIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGdxbChxdWVyeTogc3RyaW5nLCBjb25maWc/OiBRdWVyeUNvbmZpZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRW1wdHlRdWVyeUVycm9yKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYnVpbGRHcWxSZXF1ZXN0KHF1ZXJ5LCBzZXNzaW9uLCB0aGlzLmN0eC5jb25maWcsIGNvbmZpZyk7XG4gICAgY29uc3QgdGltZW91dE1zID0gdGhpcy5jYWxjdWxhdGVUaW1lb3V0KGNvbmZpZyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgICB0aGlzLmN0eC5jbGllbnRzLnF1ZXJ5U2VydmljZSxcbiAgICAgICAgJ0dxbCcsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHRpbWVvdXRNcyxcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XG4gICAgICByZXR1cm4gY29udmVydEdxbFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgUXVlcnlGYWlsZWRFcnJvcihlcnJvci5tZXNzYWdlIHx8ICdRdWVyeSBmYWlsZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIEdRTCBxdWVyeSBhbmQgc3RyZWFtIHRoZSByZXN1bHRzLlxuICAgKi9cbiAgYXN5bmMgZ3FsU3RyZWFtKFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgY29uZmlnPzogUXVlcnlDb25maWcsXG4gICAgY2FsbGJhY2s/OiAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IGRlYWRsaW5lID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIHRpbWVvdXRNcyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMucXVlcnlTZXJ2aWNlIGFzIGFueSkuR3FsU3RyZWFtKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgeyBkZWFkbGluZSB9XG4gICAgICApO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmN0eC51cGRhdGVBY3Rpdml0eSgpO1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayhjb252ZXJ0R3FsUmVzcG9uc2UocmVzcG9uc2UpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KG5ldyBRdWVyeUZhaWxlZEVycm9yKGVycm9yLm1lc3NhZ2UpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBleGVjdXRpb24gcGxhbiBmb3IgYSBxdWVyeS5cbiAgICovXG4gIGFzeW5jIGV4cGxhaW4ocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnRXhwbGFpbicsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnBsYW4gfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHF1ZXJ5IHdpdGggcHJvZmlsaW5nIGFuZCByZXR1cm4gc3RhdGlzdGljcy5cbiAgICovXG4gIGFzeW5jIHByb2ZpbGUocXVlcnk6IHN0cmluZywgY29uZmlnPzogUXVlcnlDb25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRocm93IG5ldyBFbXB0eVF1ZXJ5RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBidWlsZEdxbFJlcXVlc3QocXVlcnksIHNlc3Npb24sIHRoaXMuY3R4LmNvbmZpZywgY29uZmlnKTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuY2FsY3VsYXRlVGltZW91dChjb25maWcpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsV2l0aERlYWRsaW5lKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5xdWVyeVNlcnZpY2UsXG4gICAgICAnUHJvZmlsZScsXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGltZW91dE1zLFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLnByb2ZpbGUgfHwgJyc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBc0M7QUFtQnRDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRVA7SUFDQTtJQUNBO0lBQ0E7SUFKbEIsWUFDa0IsTUFBbUIsRUFDbkIsUUFBd0IsRUFDeEIsU0FBNkIsRUFDN0IsT0FBdUI7UUFIdkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtJQUN0QyxDQUFDO0lBRUo7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQXhCRCx3Q0F3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCBjb250ZXh0IGZvciBhbGwgc2VydmljZSBjbGFzc2VzLlxuICogQ29udGFpbnMgZ1JQQyBjbGllbnRzLCBtYW5hZ2VycywgYW5kIGNvbmZpZ3VyYXRpb24uXG4gKi9cblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7IEdxbGRiQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnLi4vc2Vzc2lvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi90cmFuc2FjdGlvbic7XG5cbi8qKlxuICogU2VydmljZSBjbGllbnQgdHlwZXMgZm9yIGdSUEMgY29tbXVuaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlQ2xpZW50cyB7XG4gIHNlc3Npb25TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgcXVlcnlTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgZ3JhcGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgdHJhbnNhY3Rpb25TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgZGF0YVNlcnZpY2U6IGdycGMuQ2xpZW50O1xuICBoZWFsdGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgYWRtaW5TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgYnVsa0ltcG9ydFNlcnZpY2U6IGdycGMuQ2xpZW50O1xufVxuXG4vKipcbiAqIFNlcnZpY2UgY29udGV4dCBob2xkcyBzaGFyZWQgZGVwZW5kZW5jaWVzIGZvciBhbGwgc2VydmljZSBjbGFzc2VzLlxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBHcWxkYkNvbmZpZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2Vzc2lvbnM6IFNlc3Npb25NYW5hZ2VyLFxuICAgIHB1YmxpYyByZWFkb25seSB0eE1hbmFnZXI6IFRyYW5zYWN0aW9uTWFuYWdlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpZW50czogU2VydmljZUNsaWVudHNcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBtZXRhZGF0YSBmb3IgYXV0aGVudGljYXRlZCByZXF1ZXN0cy5cbiAgICovXG4gIGdldFNlc3Npb25NZXRhZGF0YSgpOiBncnBjLk1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IG5ldyBncnBjLk1ldGFkYXRhKCk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIG1ldGFkYXRhLmFkZCgnc2Vzc2lvbi1pZCcsIHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzZXNzaW9uIGFjdGl2aXR5IHRpbWVzdGFtcC5cbiAgICovXG4gIHVwZGF0ZUFjdGl2aXR5KCk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvbnMudXBkYXRlQWN0aXZpdHkoKTtcbiAgfVxufVxuIl19
|
|
@@ -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
|
+
}
|