@comake/skl-js-engine 1.5.3 → 1.5.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/package.json +1 -1
- package/src/util/TripleUtil.ts +22 -2
- package/dist/JsExecutor/PermissionBuilder.d.ts +0 -14
- package/dist/JsExecutor/PermissionBuilder.d.ts.map +0 -1
- package/dist/JsExecutor/PermissionBuilder.js +0 -58
- package/dist/JsExecutor/PermissionBuilder.js.map +0 -1
- package/dist/JsExecutor/constants.d.ts +0 -27
- package/dist/JsExecutor/constants.d.ts.map +0 -1
- package/dist/JsExecutor/constants.js +0 -30
- package/dist/JsExecutor/constants.js.map +0 -1
- package/dist/JsExecutor/denoUtils.d.ts +0 -10
- package/dist/JsExecutor/denoUtils.d.ts.map +0 -1
- package/dist/JsExecutor/denoUtils.js +0 -24
- package/dist/JsExecutor/denoUtils.js.map +0 -1
- package/dist/JsExecutor/errors.d.ts +0 -40
- package/dist/JsExecutor/errors.d.ts.map +0 -1
- package/dist/JsExecutor/errors.js +0 -67
- package/dist/JsExecutor/errors.js.map +0 -1
- package/dist/JsExecutor/examples/basic/index.d.ts +0 -1
- package/dist/JsExecutor/examples/basic/index.d.ts.map +0 -1
- package/dist/JsExecutor/examples/basic/index.js +0 -46
- package/dist/JsExecutor/examples/basic/index.js.map +0 -1
- package/dist/JsExecutor/examples/basic/process.d.ts +0 -1
- package/dist/JsExecutor/examples/basic/process.d.ts.map +0 -1
- package/dist/JsExecutor/examples/basic/process.js +0 -34
- package/dist/JsExecutor/examples/basic/process.js.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/index.d.ts +0 -2
- package/dist/JsExecutor/examples/jsExecutor/index.d.ts.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/index.js +0 -47
- package/dist/JsExecutor/examples/jsExecutor/index.js.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/process.d.ts +0 -2
- package/dist/JsExecutor/examples/jsExecutor/process.d.ts.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/process.js +0 -58
- package/dist/JsExecutor/examples/jsExecutor/process.js.map +0 -1
- package/dist/JsExecutor/index.d.ts +0 -7
- package/dist/JsExecutor/index.d.ts.map +0 -1
- package/dist/JsExecutor/index.js +0 -36
- package/dist/JsExecutor/index.js.map +0 -1
- package/dist/JsExecutor/jsExecutor.d.ts +0 -68
- package/dist/JsExecutor/jsExecutor.d.ts.map +0 -1
- package/dist/JsExecutor/jsExecutor.js +0 -171
- package/dist/JsExecutor/jsExecutor.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts +0 -165
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.js +0 -335
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts +0 -125
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.js +0 -391
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/index.d.ts +0 -4
- package/dist/JsExecutor/jsonRpc/index.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/index.js +0 -23
- package/dist/JsExecutor/jsonRpc/index.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/types.d.ts +0 -193
- package/dist/JsExecutor/jsonRpc/types.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/types.js +0 -37
- package/dist/JsExecutor/jsonRpc/types.js.map +0 -1
- package/dist/JsExecutor/transport/Transport.d.ts +0 -74
- package/dist/JsExecutor/transport/Transport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/Transport.js +0 -14
- package/dist/JsExecutor/transport/Transport.js.map +0 -1
- package/dist/JsExecutor/transport/base/BaseTransport.d.ts +0 -51
- package/dist/JsExecutor/transport/base/BaseTransport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/base/BaseTransport.js +0 -68
- package/dist/JsExecutor/transport/base/BaseTransport.js.map +0 -1
- package/dist/JsExecutor/transport/index.d.ts +0 -13
- package/dist/JsExecutor/transport/index.d.ts.map +0 -1
- package/dist/JsExecutor/transport/index.js +0 -36
- package/dist/JsExecutor/transport/index.js.map +0 -1
- package/dist/JsExecutor/transport/process/ProcessManager.d.ts +0 -96
- package/dist/JsExecutor/transport/process/ProcessManager.d.ts.map +0 -1
- package/dist/JsExecutor/transport/process/ProcessManager.js +0 -219
- package/dist/JsExecutor/transport/process/ProcessManager.js.map +0 -1
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts +0 -87
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js +0 -219
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js.map +0 -1
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts +0 -81
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js +0 -259
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js.map +0 -1
- package/dist/JsExecutor/transport/utils/MessageUtils.d.ts +0 -68
- package/dist/JsExecutor/transport/utils/MessageUtils.d.ts.map +0 -1
- package/dist/JsExecutor/transport/utils/MessageUtils.js +0 -135
- package/dist/JsExecutor/transport/utils/MessageUtils.js.map +0 -1
- package/dist/JsExecutor/transport/utils/PollingUtils.d.ts +0 -53
- package/dist/JsExecutor/transport/utils/PollingUtils.d.ts.map +0 -1
- package/dist/JsExecutor/transport/utils/PollingUtils.js +0 -92
- package/dist/JsExecutor/transport/utils/PollingUtils.js.map +0 -1
- package/dist/JsExecutor/types.d.ts +0 -113
- package/dist/JsExecutor/types.d.ts.map +0 -1
- package/dist/JsExecutor/types.js +0 -3
- package/dist/JsExecutor/types.js.map +0 -1
- package/dist/SklEngine.d.ts +0 -132
- package/dist/SklEngine.d.ts.map +0 -1
- package/dist/SklEngine.js +0 -1508
- package/dist/SklEngine.js.map +0 -1
- package/dist/SklEngineOptions.d.ts +0 -58
- package/dist/SklEngineOptions.d.ts.map +0 -1
- package/dist/SklEngineOptions.js +0 -3
- package/dist/SklEngineOptions.js.map +0 -1
- package/dist/constants.d.ts +0 -96
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -103
- package/dist/constants.js.map +0 -1
- package/dist/customCapabilities.d.ts +0 -22
- package/dist/customCapabilities.d.ts.map +0 -1
- package/dist/customCapabilities.js +0 -45
- package/dist/customCapabilities.js.map +0 -1
- package/dist/examples/customCapabilitiesExample.d.ts +0 -2
- package/dist/examples/customCapabilitiesExample.d.ts.map +0 -1
- package/dist/examples/customCapabilitiesExample.js +0 -59
- package/dist/examples/customCapabilitiesExample.js.map +0 -1
- package/dist/executor.js +0 -216
- package/dist/hooks/globalHooks.d.ts +0 -50
- package/dist/hooks/globalHooks.d.ts.map +0 -1
- package/dist/hooks/globalHooks.js +0 -164
- package/dist/hooks/globalHooks.js.map +0 -1
- package/dist/hooks/types.d.ts +0 -9
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js +0 -3
- package/dist/hooks/types.js.map +0 -1
- package/dist/index.d.ts +0 -41
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -68
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts +0 -35
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -119
- package/dist/logger.js.map +0 -1
- package/dist/mapping/Mapper.d.ts +0 -13
- package/dist/mapping/Mapper.d.ts.map +0 -1
- package/dist/mapping/Mapper.js +0 -64
- package/dist/mapping/Mapper.js.map +0 -1
- package/dist/storage/FindOperator.d.ts +0 -19
- package/dist/storage/FindOperator.d.ts.map +0 -1
- package/dist/storage/FindOperator.js +0 -23
- package/dist/storage/FindOperator.js.map +0 -1
- package/dist/storage/FindOptionsTypes.d.ts +0 -79
- package/dist/storage/FindOptionsTypes.d.ts.map +0 -1
- package/dist/storage/FindOptionsTypes.js +0 -3
- package/dist/storage/FindOptionsTypes.js.map +0 -1
- package/dist/storage/GroupOptionTypes.d.ts +0 -29
- package/dist/storage/GroupOptionTypes.d.ts.map +0 -1
- package/dist/storage/GroupOptionTypes.js +0 -3
- package/dist/storage/GroupOptionTypes.js.map +0 -1
- package/dist/storage/operator/And.d.ts +0 -4
- package/dist/storage/operator/And.d.ts.map +0 -1
- package/dist/storage/operator/And.js +0 -13
- package/dist/storage/operator/And.js.map +0 -1
- package/dist/storage/operator/Contains.d.ts +0 -3
- package/dist/storage/operator/Contains.d.ts.map +0 -1
- package/dist/storage/operator/Contains.js +0 -13
- package/dist/storage/operator/Contains.js.map +0 -1
- package/dist/storage/operator/Equal.d.ts +0 -5
- package/dist/storage/operator/Equal.d.ts.map +0 -1
- package/dist/storage/operator/Equal.js +0 -13
- package/dist/storage/operator/Equal.js.map +0 -1
- package/dist/storage/operator/Exists.d.ts +0 -3
- package/dist/storage/operator/Exists.d.ts.map +0 -1
- package/dist/storage/operator/Exists.js +0 -10
- package/dist/storage/operator/Exists.js.map +0 -1
- package/dist/storage/operator/GreaterThan.d.ts +0 -4
- package/dist/storage/operator/GreaterThan.d.ts.map +0 -1
- package/dist/storage/operator/GreaterThan.js +0 -13
- package/dist/storage/operator/GreaterThan.js.map +0 -1
- package/dist/storage/operator/GreaterThanOrEqual.d.ts +0 -4
- package/dist/storage/operator/GreaterThanOrEqual.d.ts.map +0 -1
- package/dist/storage/operator/GreaterThanOrEqual.js +0 -13
- package/dist/storage/operator/GreaterThanOrEqual.js.map +0 -1
- package/dist/storage/operator/In.d.ts +0 -4
- package/dist/storage/operator/In.d.ts.map +0 -1
- package/dist/storage/operator/In.js +0 -13
- package/dist/storage/operator/In.js.map +0 -1
- package/dist/storage/operator/Inverse.d.ts +0 -3
- package/dist/storage/operator/Inverse.d.ts.map +0 -1
- package/dist/storage/operator/Inverse.js +0 -13
- package/dist/storage/operator/Inverse.js.map +0 -1
- package/dist/storage/operator/InversePath.d.ts +0 -7
- package/dist/storage/operator/InversePath.d.ts.map +0 -1
- package/dist/storage/operator/InversePath.js +0 -13
- package/dist/storage/operator/InversePath.js.map +0 -1
- package/dist/storage/operator/InverseRelation.d.ts +0 -9
- package/dist/storage/operator/InverseRelation.d.ts.map +0 -1
- package/dist/storage/operator/InverseRelation.js +0 -13
- package/dist/storage/operator/InverseRelation.js.map +0 -1
- package/dist/storage/operator/InverseRelationOrder.d.ts +0 -8
- package/dist/storage/operator/InverseRelationOrder.d.ts.map +0 -1
- package/dist/storage/operator/InverseRelationOrder.js +0 -13
- package/dist/storage/operator/InverseRelationOrder.js.map +0 -1
- package/dist/storage/operator/LessThan.d.ts +0 -4
- package/dist/storage/operator/LessThan.d.ts.map +0 -1
- package/dist/storage/operator/LessThan.js +0 -13
- package/dist/storage/operator/LessThan.js.map +0 -1
- package/dist/storage/operator/LessThanOrEqual.d.ts +0 -4
- package/dist/storage/operator/LessThanOrEqual.d.ts.map +0 -1
- package/dist/storage/operator/LessThanOrEqual.js +0 -13
- package/dist/storage/operator/LessThanOrEqual.js.map +0 -1
- package/dist/storage/operator/Not.d.ts +0 -3
- package/dist/storage/operator/Not.d.ts.map +0 -1
- package/dist/storage/operator/Not.js +0 -13
- package/dist/storage/operator/Not.js.map +0 -1
- package/dist/storage/operator/OneOrMorePath.d.ts +0 -7
- package/dist/storage/operator/OneOrMorePath.d.ts.map +0 -1
- package/dist/storage/operator/OneOrMorePath.js +0 -13
- package/dist/storage/operator/OneOrMorePath.js.map +0 -1
- package/dist/storage/operator/Or.d.ts +0 -4
- package/dist/storage/operator/Or.d.ts.map +0 -1
- package/dist/storage/operator/Or.js +0 -13
- package/dist/storage/operator/Or.js.map +0 -1
- package/dist/storage/operator/Sequence.d.ts +0 -3
- package/dist/storage/operator/Sequence.d.ts.map +0 -1
- package/dist/storage/operator/Sequence.js +0 -13
- package/dist/storage/operator/Sequence.js.map +0 -1
- package/dist/storage/operator/SequencePath.d.ts +0 -7
- package/dist/storage/operator/SequencePath.d.ts.map +0 -1
- package/dist/storage/operator/SequencePath.js +0 -13
- package/dist/storage/operator/SequencePath.js.map +0 -1
- package/dist/storage/operator/ZeroOrMorePath.d.ts +0 -7
- package/dist/storage/operator/ZeroOrMorePath.d.ts.map +0 -1
- package/dist/storage/operator/ZeroOrMorePath.js +0 -13
- package/dist/storage/operator/ZeroOrMorePath.js.map +0 -1
- package/dist/storage/query-adapter/QueryAdapter.d.ts +0 -99
- package/dist/storage/query-adapter/QueryAdapter.d.ts.map +0 -1
- package/dist/storage/query-adapter/QueryAdapter.js +0 -3
- package/dist/storage/query-adapter/QueryAdapter.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts +0 -40
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +0 -315
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts +0 -34
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js +0 -3
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +0 -104
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +0 -1210
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts +0 -41
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js +0 -305
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js.map +0 -1
- package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts +0 -5
- package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/VariableGenerator.js +0 -14
- package/dist/storage/query-adapter/sparql/VariableGenerator.js.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts +0 -19
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js +0 -90
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts +0 -27
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js +0 -116
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts +0 -34
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js +0 -3
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js.map +0 -1
- package/dist/tools/explain-findall-sparql.d.ts +0 -2
- package/dist/tools/explain-findall-sparql.d.ts.map +0 -1
- package/dist/tools/explain-findall-sparql.js +0 -303
- package/dist/tools/explain-findall-sparql.js.map +0 -1
- package/dist/util/PerformanceLogger.d.ts +0 -28
- package/dist/util/PerformanceLogger.d.ts.map +0 -1
- package/dist/util/PerformanceLogger.js +0 -223
- package/dist/util/PerformanceLogger.js.map +0 -1
- package/dist/util/ReadCacheHelper.d.ts +0 -14
- package/dist/util/ReadCacheHelper.d.ts.map +0 -1
- package/dist/util/ReadCacheHelper.js +0 -61
- package/dist/util/ReadCacheHelper.js.map +0 -1
- package/dist/util/SparqlUtil.d.ts +0 -72
- package/dist/util/SparqlUtil.d.ts.map +0 -1
- package/dist/util/SparqlUtil.js +0 -456
- package/dist/util/SparqlUtil.js.map +0 -1
- package/dist/util/TripleUtil.d.ts +0 -10
- package/dist/util/TripleUtil.d.ts.map +0 -1
- package/dist/util/TripleUtil.js +0 -402
- package/dist/util/TripleUtil.js.map +0 -1
- package/dist/util/Types.d.ts +0 -271
- package/dist/util/Types.d.ts.map +0 -1
- package/dist/util/Types.js +0 -3
- package/dist/util/Types.js.map +0 -1
- package/dist/util/Util.d.ts +0 -26
- package/dist/util/Util.d.ts.map +0 -1
- package/dist/util/Util.js +0 -138
- package/dist/util/Util.js.map +0 -1
- package/dist/util/Vocabularies/Shared.d.ts +0 -13
- package/dist/util/Vocabularies/Shared.d.ts.map +0 -1
- package/dist/util/Vocabularies/Shared.js +0 -96
- package/dist/util/Vocabularies/Shared.js.map +0 -1
- package/dist/util/Vocabularies/helper.d.ts +0 -5
- package/dist/util/Vocabularies/helper.d.ts.map +0 -1
- package/dist/util/Vocabularies/helper.js +0 -10
- package/dist/util/Vocabularies/helper.js.map +0 -1
- package/dist/util/Vocabularies/index.d.ts +0 -8
- package/dist/util/Vocabularies/index.d.ts.map +0 -1
- package/dist/util/Vocabularies/index.js +0 -114
- package/dist/util/Vocabularies/index.js.map +0 -1
- package/dist/util/safeJsonStringify.d.ts +0 -1
- package/dist/util/safeJsonStringify.d.ts.map +0 -1
- package/dist/util/safeJsonStringify.js +0 -19
- package/dist/util/safeJsonStringify.js.map +0 -1
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* eslint-disable indent */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.JsonRpcClient = void 0;
|
|
5
|
-
const types_1 = require("./types");
|
|
6
|
-
/**
|
|
7
|
-
* JSON-RPC 2.0 Client implementation
|
|
8
|
-
*/
|
|
9
|
-
class JsonRpcClient {
|
|
10
|
-
constructor(config = {}) {
|
|
11
|
-
this.pendingRequests = new Map();
|
|
12
|
-
this.listeners = {};
|
|
13
|
-
this.requestIdCounter = 0;
|
|
14
|
-
this.config = {
|
|
15
|
-
defaultTimeout: config.defaultTimeout ?? 30000,
|
|
16
|
-
maxRetries: config.maxRetries ?? 3,
|
|
17
|
-
retryDelay: config.retryDelay ?? 1000,
|
|
18
|
-
sequentialIds: config.sequentialIds ?? true
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Set the transport for sending messages
|
|
23
|
-
* @param transport - Transport implementation
|
|
24
|
-
*/
|
|
25
|
-
setTransport(transport) {
|
|
26
|
-
this.transport = transport;
|
|
27
|
-
this.transport.onMessage((message) => {
|
|
28
|
-
this.handleIncomingMessage(message).catch((error) => {
|
|
29
|
-
this.emit('error', error);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Send a JSON-RPC request and wait for response
|
|
35
|
-
* @param method - Method name
|
|
36
|
-
* @param params - Method parameters
|
|
37
|
-
* @param options - Request options
|
|
38
|
-
* @returns Promise resolving to the response result
|
|
39
|
-
*/
|
|
40
|
-
async request(method, params, options = {}) {
|
|
41
|
-
if (!this.transport) {
|
|
42
|
-
throw new Error('Transport not set. Call setTransport() first.');
|
|
43
|
-
}
|
|
44
|
-
const timeout = options.timeout ?? this.config.defaultTimeout;
|
|
45
|
-
const maxRetries = options.retries ?? this.config.maxRetries;
|
|
46
|
-
let lastError;
|
|
47
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
48
|
-
try {
|
|
49
|
-
const request = this.createRequest(method, params);
|
|
50
|
-
const result = await this.sendRequestWithTimeout(request, timeout);
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
lastError = error;
|
|
55
|
-
// Don't retry on certain errors
|
|
56
|
-
if (this.shouldNotRetry(error) || attempt === maxRetries) {
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
// Wait before retrying
|
|
60
|
-
if (attempt < maxRetries) {
|
|
61
|
-
await this.delay(this.config.retryDelay * (attempt + 1));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
throw lastError ?? new Error('Request failed after all retry attempts');
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Send a JSON-RPC notification (no response expected)
|
|
69
|
-
* @param method - Method name
|
|
70
|
-
* @param params - Method parameters
|
|
71
|
-
*/
|
|
72
|
-
async notify(method, params) {
|
|
73
|
-
if (!this.transport) {
|
|
74
|
-
throw new Error('Transport not set. Call setTransport() first.');
|
|
75
|
-
}
|
|
76
|
-
const notification = this.createNotification(method, params);
|
|
77
|
-
await this.transport.send(JSON.stringify(notification));
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Send a batch of requests
|
|
81
|
-
* @param requests - Array of request specifications
|
|
82
|
-
* @returns Promise resolving to array of results
|
|
83
|
-
*/
|
|
84
|
-
async batch(requests) {
|
|
85
|
-
if (!this.transport) {
|
|
86
|
-
throw new Error('Transport not set. Call setTransport() first.');
|
|
87
|
-
}
|
|
88
|
-
const batchRequests = requests.map((req) => {
|
|
89
|
-
const id = req.id ?? this.generateId();
|
|
90
|
-
return this.createRequest(req.method, req.params, id);
|
|
91
|
-
});
|
|
92
|
-
const batchMessage = JSON.stringify(batchRequests);
|
|
93
|
-
// Create pending promises for all requests
|
|
94
|
-
const promises = batchRequests.map((request) => this.createPendingRequest(request, this.config.defaultTimeout));
|
|
95
|
-
// Send the batch
|
|
96
|
-
await this.transport.send(batchMessage);
|
|
97
|
-
// Wait for all responses
|
|
98
|
-
return Promise.all(promises);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Handle incoming message from transport
|
|
102
|
-
* @param messageData - Raw message data
|
|
103
|
-
*/
|
|
104
|
-
async handleIncomingMessage(messageData) {
|
|
105
|
-
try {
|
|
106
|
-
const message = JSON.parse(messageData);
|
|
107
|
-
// Handle batch response
|
|
108
|
-
if (Array.isArray(message)) {
|
|
109
|
-
for (const response of message) {
|
|
110
|
-
this.handleResponse(response);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
this.handleResponse(message);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
this.emit('error', new Error(`Failed to parse incoming message: ${error.message}`));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Handle a single response message
|
|
123
|
-
* @param response - JSON-RPC response
|
|
124
|
-
*/
|
|
125
|
-
handleResponse(response) {
|
|
126
|
-
this.emit('response', response);
|
|
127
|
-
const pendingRequest = this.pendingRequests.get(response.id);
|
|
128
|
-
if (!pendingRequest) {
|
|
129
|
-
// Orphaned response - might be from a timed-out request
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
this.pendingRequests.delete(response.id);
|
|
133
|
-
if (this.isSuccessResponse(response)) {
|
|
134
|
-
pendingRequest.resolve(response.result);
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
const error = new Error(response.error.message);
|
|
138
|
-
error.code = response.error.code;
|
|
139
|
-
error.data = response.error.data;
|
|
140
|
-
pendingRequest.reject(error);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Send a request with timeout handling
|
|
145
|
-
* @param request - JSON-RPC request
|
|
146
|
-
* @param timeout - Timeout in milliseconds
|
|
147
|
-
* @returns Promise resolving to the result
|
|
148
|
-
*/
|
|
149
|
-
async sendRequestWithTimeout(request, timeout) {
|
|
150
|
-
const promise = this.createPendingRequest(request, timeout);
|
|
151
|
-
this.emit('request', request);
|
|
152
|
-
await this.transport.send(JSON.stringify(request));
|
|
153
|
-
return promise;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Create a pending request promise with timeout
|
|
157
|
-
* @param request - JSON-RPC request
|
|
158
|
-
* @param timeout - Timeout in milliseconds
|
|
159
|
-
* @returns Promise resolving to the result
|
|
160
|
-
*/
|
|
161
|
-
async createPendingRequest(request, timeout) {
|
|
162
|
-
return new Promise((resolve, reject) => {
|
|
163
|
-
const timeoutId = setTimeout(() => {
|
|
164
|
-
this.pendingRequests.delete(request.id);
|
|
165
|
-
this.emit('timeout', request);
|
|
166
|
-
reject(new Error(`Request ${request.id} timed out after ${timeout}ms`));
|
|
167
|
-
}, timeout);
|
|
168
|
-
const pendingRequest = {
|
|
169
|
-
id: request.id,
|
|
170
|
-
method: request.method,
|
|
171
|
-
timestamp: Date.now(),
|
|
172
|
-
timeout,
|
|
173
|
-
resolve(value) {
|
|
174
|
-
clearTimeout(timeoutId);
|
|
175
|
-
resolve(value);
|
|
176
|
-
},
|
|
177
|
-
reject(error) {
|
|
178
|
-
clearTimeout(timeoutId);
|
|
179
|
-
reject(error);
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
this.pendingRequests.set(request.id, pendingRequest);
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Create a JSON-RPC request
|
|
187
|
-
* @param method - Method name
|
|
188
|
-
* @param params - Method parameters
|
|
189
|
-
* @param id - Optional request ID
|
|
190
|
-
* @returns JSON-RPC request object
|
|
191
|
-
*/
|
|
192
|
-
createRequest(method, params, id) {
|
|
193
|
-
const request = {
|
|
194
|
-
jsonrpc: types_1.JSONRPC_VERSION,
|
|
195
|
-
method,
|
|
196
|
-
id: id ?? this.generateId()
|
|
197
|
-
};
|
|
198
|
-
if (params !== undefined) {
|
|
199
|
-
request.params = params;
|
|
200
|
-
}
|
|
201
|
-
return request;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Create a JSON-RPC notification
|
|
205
|
-
* @param method - Method name
|
|
206
|
-
* @param params - Method parameters
|
|
207
|
-
* @returns JSON-RPC notification object
|
|
208
|
-
*/
|
|
209
|
-
createNotification(method, params) {
|
|
210
|
-
const notification = {
|
|
211
|
-
jsonrpc: types_1.JSONRPC_VERSION,
|
|
212
|
-
method
|
|
213
|
-
};
|
|
214
|
-
if (params !== undefined) {
|
|
215
|
-
notification.params = params;
|
|
216
|
-
}
|
|
217
|
-
return notification;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Generate a unique request ID
|
|
221
|
-
* @returns Unique request ID
|
|
222
|
-
*/
|
|
223
|
-
generateId() {
|
|
224
|
-
if (this.config.sequentialIds) {
|
|
225
|
-
this.requestIdCounter += 1;
|
|
226
|
-
return this.requestIdCounter;
|
|
227
|
-
}
|
|
228
|
-
return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Check if response is a success response
|
|
232
|
-
* @param response - JSON-RPC response
|
|
233
|
-
* @returns True if success response
|
|
234
|
-
*/
|
|
235
|
-
isSuccessResponse(response) {
|
|
236
|
-
return 'result' in response;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Check if an error should not be retried
|
|
240
|
-
* @param error - Error to check
|
|
241
|
-
* @returns True if error should not be retried
|
|
242
|
-
*/
|
|
243
|
-
shouldNotRetry(error) {
|
|
244
|
-
// Don't retry on method not found, invalid params, or parse errors
|
|
245
|
-
const errorCode = error.code;
|
|
246
|
-
return (errorCode === types_1.JsonRpcErrorCode.methodNotFound ||
|
|
247
|
-
errorCode === types_1.JsonRpcErrorCode.invalidParams ||
|
|
248
|
-
errorCode === types_1.JsonRpcErrorCode.parseError ||
|
|
249
|
-
errorCode === types_1.JsonRpcErrorCode.invalidRequest ||
|
|
250
|
-
errorCode === types_1.JsonRpcErrorCode.internalError);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Delay execution for specified milliseconds
|
|
254
|
-
* @param ms - Delay in milliseconds
|
|
255
|
-
* @returns Promise that resolves after delay
|
|
256
|
-
*/
|
|
257
|
-
async delay(ms) {
|
|
258
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Register event listener
|
|
262
|
-
* @param event - Event name
|
|
263
|
-
* @param listener - Event listener
|
|
264
|
-
*/
|
|
265
|
-
on(event, listener) {
|
|
266
|
-
this.listeners[event] = listener;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Remove event listener
|
|
270
|
-
* @param event - Event name
|
|
271
|
-
* @param listener - Event listener
|
|
272
|
-
*/
|
|
273
|
-
off(event, listener) {
|
|
274
|
-
if (this.listeners[event] === listener) {
|
|
275
|
-
Reflect.deleteProperty(this.listeners, event);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Emit event
|
|
280
|
-
* @param event - Event name
|
|
281
|
-
* @param args - Event arguments
|
|
282
|
-
*/
|
|
283
|
-
emit(event, ...args) {
|
|
284
|
-
const listener = this.listeners[event];
|
|
285
|
-
if (listener) {
|
|
286
|
-
listener(...args);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Get client statistics
|
|
291
|
-
* @returns Client statistics
|
|
292
|
-
*/
|
|
293
|
-
getStats() {
|
|
294
|
-
return {
|
|
295
|
-
pendingRequests: this.pendingRequests.size,
|
|
296
|
-
totalRequests: this.requestIdCounter,
|
|
297
|
-
config: { ...this.config }
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Cancel all pending requests
|
|
302
|
-
*/
|
|
303
|
-
cancelAllRequests() {
|
|
304
|
-
const error = new Error('Request cancelled');
|
|
305
|
-
for (const [id, pendingRequest] of this.pendingRequests) {
|
|
306
|
-
pendingRequest.reject(error);
|
|
307
|
-
}
|
|
308
|
-
this.pendingRequests.clear();
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Cancel a specific request
|
|
312
|
-
* @param id - Request ID to cancel
|
|
313
|
-
* @returns True if request was cancelled
|
|
314
|
-
*/
|
|
315
|
-
cancelRequest(id) {
|
|
316
|
-
const pendingRequest = this.pendingRequests.get(id);
|
|
317
|
-
if (pendingRequest) {
|
|
318
|
-
pendingRequest.reject(new Error('Request cancelled'));
|
|
319
|
-
this.pendingRequests.delete(id);
|
|
320
|
-
return true;
|
|
321
|
-
}
|
|
322
|
-
return false;
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Close the client and cleanup resources
|
|
326
|
-
*/
|
|
327
|
-
async close() {
|
|
328
|
-
this.cancelAllRequests();
|
|
329
|
-
if (this.transport) {
|
|
330
|
-
await this.transport.close();
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
exports.JsonRpcClient = JsonRpcClient;
|
|
335
|
-
//# sourceMappingURL=JsonRpcClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonRpcClient.js","sourceRoot":"","sources":["../../../src/JsExecutor/jsonRpc/JsonRpcClient.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable indent */\n\nimport type {\n JsonRpcClientConfig,\n JsonRpcId,\n JsonRpcNotification,\n JsonRpcParams,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcSuccessResponse,\n PendingRequest\n} from './types';\nimport { JsonRpcErrorCode, JSONRPC_VERSION } from './types';\n\n/**\n * Event emitter interface for JSON-RPC client events\n */\nexport interface JsonRpcClientEvents {\n request: (request: JsonRpcRequest) => void;\n response: (response: JsonRpcResponse) => void;\n error: (error: Error) => void;\n timeout: (request: JsonRpcRequest) => void;\n}\n\n/**\n * Transport interface for sending messages\n */\nexport interface ClientTransport {\n send: (message: string) => Promise<void>;\n onMessage: (handler: (message: string) => void) => void;\n close: () => Promise<void>;\n}\n\n/**\n * JSON-RPC 2.0 Client implementation\n */\nexport class JsonRpcClient {\n private readonly config: Required<JsonRpcClientConfig>;\n private readonly pendingRequests = new Map<JsonRpcId, PendingRequest>();\n private readonly listeners: Partial<JsonRpcClientEvents> = {};\n private requestIdCounter = 0;\n private transport?: ClientTransport;\n\n public constructor(config: JsonRpcClientConfig = {}) {\n this.config = {\n defaultTimeout: config.defaultTimeout ?? 30000,\n maxRetries: config.maxRetries ?? 3,\n retryDelay: config.retryDelay ?? 1000,\n sequentialIds: config.sequentialIds ?? true\n };\n }\n\n /**\n * Set the transport for sending messages\n * @param transport - Transport implementation\n */\n public setTransport(transport: ClientTransport): void {\n this.transport = transport;\n this.transport.onMessage((message: string): void => {\n this.handleIncomingMessage(message).catch((error): void => {\n this.emit('error', error);\n });\n });\n }\n\n /**\n * Send a JSON-RPC request and wait for response\n * @param method - Method name\n * @param params - Method parameters\n * @param options - Request options\n * @returns Promise resolving to the response result\n */\n public async request<TParams = JsonRpcParams, TResult = any>(\n method: string,\n params?: TParams,\n options: { timeout?: number; retries?: number } = {}\n ): Promise<TResult> {\n if (!this.transport) {\n throw new Error('Transport not set. Call setTransport() first.');\n }\n\n const timeout = options.timeout ?? this.config.defaultTimeout;\n const maxRetries = options.retries ?? this.config.maxRetries;\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n const request = this.createRequest(method, params);\n const result = await this.sendRequestWithTimeout<TResult>(request, timeout);\n return result;\n } catch (error: unknown) {\n lastError = error as Error;\n // Don't retry on certain errors\n if (this.shouldNotRetry(error as Error) || attempt === maxRetries) {\n break;\n }\n\n // Wait before retrying\n if (attempt < maxRetries) {\n await this.delay(this.config.retryDelay * (attempt + 1));\n }\n }\n }\n\n throw lastError ?? new Error('Request failed after all retry attempts');\n }\n\n /**\n * Send a JSON-RPC notification (no response expected)\n * @param method - Method name\n * @param params - Method parameters\n */\n public async notify<TParams = JsonRpcParams>(method: string, params?: TParams): Promise<void> {\n if (!this.transport) {\n throw new Error('Transport not set. Call setTransport() first.');\n }\n\n const notification = this.createNotification(method, params);\n await this.transport.send(JSON.stringify(notification));\n }\n\n /**\n * Send a batch of requests\n * @param requests - Array of request specifications\n * @returns Promise resolving to array of results\n */\n public async batch(requests: { method: string; params?: any; id?: JsonRpcId }[]): Promise<any[]> {\n if (!this.transport) {\n throw new Error('Transport not set. Call setTransport() first.');\n }\n\n const batchRequests = requests.map((req): JsonRpcRequest => {\n const id = req.id ?? this.generateId();\n return this.createRequest(req.method, req.params, id);\n });\n\n const batchMessage = JSON.stringify(batchRequests);\n\n // Create pending promises for all requests\n const promises = batchRequests.map(\n (request): Promise<any> => this.createPendingRequest<any>(request, this.config.defaultTimeout)\n );\n\n // Send the batch\n await this.transport.send(batchMessage);\n\n // Wait for all responses\n return Promise.all(promises);\n }\n\n /**\n * Handle incoming message from transport\n * @param messageData - Raw message data\n */\n public async handleIncomingMessage(messageData: string): Promise<void> {\n try {\n const message = JSON.parse(messageData);\n // Handle batch response\n if (Array.isArray(message)) {\n for (const response of message) {\n this.handleResponse(response);\n }\n } else {\n this.handleResponse(message);\n }\n } catch (error: unknown) {\n this.emit('error', new Error(`Failed to parse incoming message: ${(error as Error).message}`));\n }\n }\n\n /**\n * Handle a single response message\n * @param response - JSON-RPC response\n */\n private handleResponse(response: JsonRpcResponse): void {\n this.emit('response', response);\n\n const pendingRequest = this.pendingRequests.get(response.id);\n if (!pendingRequest) {\n // Orphaned response - might be from a timed-out request\n return;\n }\n\n this.pendingRequests.delete(response.id);\n\n if (this.isSuccessResponse(response)) {\n pendingRequest.resolve(response.result);\n } else {\n const error = new Error(response.error.message);\n (error as any).code = response.error.code;\n (error as any).data = response.error.data;\n pendingRequest.reject(error);\n }\n }\n\n /**\n * Send a request with timeout handling\n * @param request - JSON-RPC request\n * @param timeout - Timeout in milliseconds\n * @returns Promise resolving to the result\n */\n private async sendRequestWithTimeout<TResult>(request: JsonRpcRequest, timeout: number): Promise<TResult> {\n const promise = this.createPendingRequest<TResult>(request, timeout);\n\n this.emit('request', request);\n await this.transport!.send(JSON.stringify(request));\n\n return promise;\n }\n\n /**\n * Create a pending request promise with timeout\n * @param request - JSON-RPC request\n * @param timeout - Timeout in milliseconds\n * @returns Promise resolving to the result\n */\n private async createPendingRequest<TResult>(request: JsonRpcRequest, timeout: number): Promise<TResult> {\n return new Promise<TResult>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n this.pendingRequests.delete(request.id);\n this.emit('timeout', request);\n reject(new Error(`Request ${request.id} timed out after ${timeout}ms`));\n }, timeout);\n\n const pendingRequest: PendingRequest<TResult> = {\n id: request.id,\n method: request.method,\n timestamp: Date.now(),\n timeout,\n resolve(value: TResult) {\n clearTimeout(timeoutId);\n resolve(value);\n },\n reject(error: Error) {\n clearTimeout(timeoutId);\n reject(error);\n }\n };\n\n this.pendingRequests.set(request.id, pendingRequest);\n });\n }\n\n /**\n * Create a JSON-RPC request\n * @param method - Method name\n * @param params - Method parameters\n * @param id - Optional request ID\n * @returns JSON-RPC request object\n */\n private createRequest<TParams = JsonRpcParams>(\n method: string,\n params?: TParams,\n id?: JsonRpcId\n ): JsonRpcRequest<TParams> {\n const request: JsonRpcRequest<TParams> = {\n jsonrpc: JSONRPC_VERSION,\n method,\n id: id ?? this.generateId()\n };\n\n if (params !== undefined) {\n request.params = params;\n }\n\n return request;\n }\n\n /**\n * Create a JSON-RPC notification\n * @param method - Method name\n * @param params - Method parameters\n * @returns JSON-RPC notification object\n */\n private createNotification<TParams = JsonRpcParams>(method: string, params?: TParams): JsonRpcNotification<TParams> {\n const notification: JsonRpcNotification<TParams> = {\n jsonrpc: JSONRPC_VERSION,\n method\n };\n\n if (params !== undefined) {\n notification.params = params;\n }\n\n return notification;\n }\n\n /**\n * Generate a unique request ID\n * @returns Unique request ID\n */\n private generateId(): JsonRpcId {\n if (this.config.sequentialIds) {\n this.requestIdCounter += 1;\n return this.requestIdCounter;\n }\n return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\n }\n\n /**\n * Check if response is a success response\n * @param response - JSON-RPC response\n * @returns True if success response\n */\n private isSuccessResponse(response: JsonRpcResponse): response is JsonRpcSuccessResponse {\n return 'result' in response;\n }\n\n /**\n * Check if an error should not be retried\n * @param error - Error to check\n * @returns True if error should not be retried\n */\n private shouldNotRetry(error: Error): boolean {\n // Don't retry on method not found, invalid params, or parse errors\n const errorCode = (error as any).code;\n return (\n errorCode === JsonRpcErrorCode.methodNotFound ||\n errorCode === JsonRpcErrorCode.invalidParams ||\n errorCode === JsonRpcErrorCode.parseError ||\n errorCode === JsonRpcErrorCode.invalidRequest ||\n errorCode === JsonRpcErrorCode.internalError\n );\n }\n\n /**\n * Delay execution for specified milliseconds\n * @param ms - Delay in milliseconds\n * @returns Promise that resolves after delay\n */\n private async delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n /**\n * Register event listener\n * @param event - Event name\n * @param listener - Event listener\n */\n public on<TKey extends keyof JsonRpcClientEvents>(event: TKey, listener: JsonRpcClientEvents[TKey]): void {\n this.listeners[event] = listener;\n }\n\n /**\n * Remove event listener\n * @param event - Event name\n * @param listener - Event listener\n */\n public off<TKey extends keyof JsonRpcClientEvents>(event: TKey, listener: JsonRpcClientEvents[TKey]): void {\n if (this.listeners[event] === listener) {\n Reflect.deleteProperty(this.listeners, event);\n }\n }\n\n /**\n * Emit event\n * @param event - Event name\n * @param args - Event arguments\n */\n private emit<TKey extends keyof JsonRpcClientEvents>(\n event: TKey,\n ...args: Parameters<JsonRpcClientEvents[TKey]>\n ): void {\n const listener = this.listeners[event];\n if (listener) {\n (listener as any)(...args);\n }\n }\n\n /**\n * Get client statistics\n * @returns Client statistics\n */\n public getStats(): {\n pendingRequests: number;\n totalRequests: number;\n config: Required<JsonRpcClientConfig>;\n } {\n return {\n pendingRequests: this.pendingRequests.size,\n totalRequests: this.requestIdCounter,\n config: { ...this.config }\n };\n }\n\n /**\n * Cancel all pending requests\n */\n public cancelAllRequests(): void {\n const error = new Error('Request cancelled');\n for (const [ id, pendingRequest ] of this.pendingRequests) {\n pendingRequest.reject(error);\n }\n this.pendingRequests.clear();\n }\n\n /**\n * Cancel a specific request\n * @param id - Request ID to cancel\n * @returns True if request was cancelled\n */\n public cancelRequest(id: JsonRpcId): boolean {\n const pendingRequest = this.pendingRequests.get(id);\n if (pendingRequest) {\n pendingRequest.reject(new Error('Request cancelled'));\n this.pendingRequests.delete(id);\n return true;\n }\n return false;\n }\n\n /**\n * Close the client and cleanup resources\n */\n public async close(): Promise<void> {\n this.cancelAllRequests();\n if (this.transport) {\n await this.transport.close();\n }\n }\n}\n"]}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import type { JsonRpcMethodHandler, JsonRpcNotification, JsonRpcRequest, JsonRpcResponse, JsonRpcServerConfig } from './types';
|
|
2
|
-
declare type TGetStatsResponse = {
|
|
3
|
-
registeredMethods: number;
|
|
4
|
-
pendingRequests: number;
|
|
5
|
-
maxConcurrentRequests: number;
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* Event emitter interface for JSON-RPC server events
|
|
9
|
-
*/
|
|
10
|
-
export interface JsonRpcServerEvents {
|
|
11
|
-
request: (request: JsonRpcRequest) => void;
|
|
12
|
-
notification: (notification: JsonRpcNotification) => void;
|
|
13
|
-
response: (response: JsonRpcResponse) => void;
|
|
14
|
-
error: (error: Error, request?: JsonRpcRequest) => void;
|
|
15
|
-
timeout: (request: JsonRpcRequest) => void;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* JSON-RPC 2.0 Server implementation
|
|
19
|
-
*/
|
|
20
|
-
export declare class JsonRpcServer {
|
|
21
|
-
private readonly methods;
|
|
22
|
-
private readonly config;
|
|
23
|
-
private readonly pendingRequests;
|
|
24
|
-
private readonly listeners;
|
|
25
|
-
constructor(config?: JsonRpcServerConfig);
|
|
26
|
-
/**
|
|
27
|
-
* Register a method handler
|
|
28
|
-
* @param method - Method name
|
|
29
|
-
* @param handler - Method handler function
|
|
30
|
-
*/
|
|
31
|
-
registerMethod<TParams, TResult>(method: string, handler: JsonRpcMethodHandler<TParams, TResult>): void;
|
|
32
|
-
/**
|
|
33
|
-
* Unregister a method handler
|
|
34
|
-
* @param method - Method name
|
|
35
|
-
*/
|
|
36
|
-
unregisterMethod(method: string): void;
|
|
37
|
-
/**
|
|
38
|
-
* Get all registered methods
|
|
39
|
-
* @returns Array of method names
|
|
40
|
-
*/
|
|
41
|
-
getRegisteredMethods(): string[];
|
|
42
|
-
/**
|
|
43
|
-
* Process an incoming JSON-RPC message
|
|
44
|
-
* @param messageData - Raw message data (string or object)
|
|
45
|
-
* @returns Promise resolving to response (if request) or undefined (if notification)
|
|
46
|
-
*/
|
|
47
|
-
processMessage(messageData: string | object): Promise<JsonRpcResponse | undefined>;
|
|
48
|
-
/**
|
|
49
|
-
* Handle a JSON-RPC request
|
|
50
|
-
* @param request - JSON-RPC request object
|
|
51
|
-
* @returns Promise resolving to response
|
|
52
|
-
*/
|
|
53
|
-
private handleRequest;
|
|
54
|
-
/**
|
|
55
|
-
* Handle a JSON-RPC notification
|
|
56
|
-
* @param notification - JSON-RPC notification object
|
|
57
|
-
*/
|
|
58
|
-
private handleNotification;
|
|
59
|
-
/**
|
|
60
|
-
* Execute method with timeout
|
|
61
|
-
* @param handler - Method handler
|
|
62
|
-
* @param request - JSON-RPC request
|
|
63
|
-
* @returns Promise resolving to result
|
|
64
|
-
*/
|
|
65
|
-
private executeMethodWithTimeout;
|
|
66
|
-
/**
|
|
67
|
-
* Create a pending request promise with timeout
|
|
68
|
-
* @param request - JSON-RPC request
|
|
69
|
-
* @param timeout - Timeout in milliseconds
|
|
70
|
-
* @returns Promise resolving to the result
|
|
71
|
-
*/
|
|
72
|
-
private createPendingRequest;
|
|
73
|
-
/**
|
|
74
|
-
* Validate JSON-RPC message format
|
|
75
|
-
* @param message - Message to validate
|
|
76
|
-
* @returns Validation result
|
|
77
|
-
*/
|
|
78
|
-
private validateMessage;
|
|
79
|
-
/**
|
|
80
|
-
* Check if message is a request (has id)
|
|
81
|
-
*/
|
|
82
|
-
private isRequest;
|
|
83
|
-
/**
|
|
84
|
-
* Check if message is a notification (no id)
|
|
85
|
-
*/
|
|
86
|
-
private isNotification;
|
|
87
|
-
/**
|
|
88
|
-
* Extract ID from message safely
|
|
89
|
-
*/
|
|
90
|
-
private extractId;
|
|
91
|
-
/**
|
|
92
|
-
* Create success response
|
|
93
|
-
*/
|
|
94
|
-
private createSuccessResponse;
|
|
95
|
-
/**
|
|
96
|
-
* Create error response
|
|
97
|
-
*/
|
|
98
|
-
private createErrorResponse;
|
|
99
|
-
/**
|
|
100
|
-
* Default error handler
|
|
101
|
-
*/
|
|
102
|
-
private defaultErrorHandler;
|
|
103
|
-
/**
|
|
104
|
-
* Register event listener
|
|
105
|
-
*/
|
|
106
|
-
on<TKey extends keyof JsonRpcServerEvents>(event: TKey, listener: JsonRpcServerEvents[TKey]): void;
|
|
107
|
-
/**
|
|
108
|
-
* Remove event listener
|
|
109
|
-
*/
|
|
110
|
-
off<TKey extends keyof JsonRpcServerEvents>(event: TKey, listener: JsonRpcServerEvents[TKey]): void;
|
|
111
|
-
/**
|
|
112
|
-
* Emit event
|
|
113
|
-
*/
|
|
114
|
-
private emit;
|
|
115
|
-
/**
|
|
116
|
-
* Get server statistics
|
|
117
|
-
*/
|
|
118
|
-
getStats(): TGetStatsResponse;
|
|
119
|
-
/**
|
|
120
|
-
* Shutdown server (reject all pending requests)
|
|
121
|
-
*/
|
|
122
|
-
shutdown(): Promise<void>;
|
|
123
|
-
}
|
|
124
|
-
export {};
|
|
125
|
-
//# sourceMappingURL=JsonRpcServer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonRpcServer.d.ts","sourceRoot":"","sources":["../../../src/JsExecutor/jsonRpc/JsonRpcServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,oBAAoB,EAEpB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EAGpB,MAAM,SAAS,CAAC;AAGjB,aAAK,iBAAiB,GAAG;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,YAAY,EAAE,CAAC,YAAY,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IACxD,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwC;IACxE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;gBAE3C,MAAM,GAAE,mBAAwB;IASnD;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI;IAU9G;;;OAGG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACI,oBAAoB,IAAI,MAAM,EAAE;IAIvC;;;;OAIG;IACU,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IA+C/F;;;;OAIG;YACW,aAAa;IAkC3B;;;OAGG;YACW,kBAAkB;IAiBhC;;;;;OAKG;YACW,wBAAwB;IA4CtC;;;;;OAKG;YACW,oBAAoB;IA2BlC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAkDvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACI,EAAE,CAAC,IAAI,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI;IAIzG;;OAEG;IACI,GAAG,CAAC,IAAI,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI;IAM1G;;OAEG;IACH,OAAO,CAAC,IAAI;IAUZ;;OAEG;IACI,QAAQ,IAAI,iBAAiB;IAQpC;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAYvC"}
|