@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,391 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JsonRpcServer = void 0;
|
|
4
|
-
const types_1 = require("./types");
|
|
5
|
-
/**
|
|
6
|
-
* JSON-RPC 2.0 Server implementation
|
|
7
|
-
*/
|
|
8
|
-
class JsonRpcServer {
|
|
9
|
-
constructor(config = {}) {
|
|
10
|
-
this.methods = {};
|
|
11
|
-
this.pendingRequests = new Map();
|
|
12
|
-
this.listeners = {};
|
|
13
|
-
this.config = {
|
|
14
|
-
maxConcurrentRequests: config.maxConcurrentRequests ?? 100,
|
|
15
|
-
requestTimeout: config.requestTimeout ?? 30000,
|
|
16
|
-
strictValidation: config.strictValidation ?? true,
|
|
17
|
-
errorHandler: config.errorHandler ?? this.defaultErrorHandler.bind(this)
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Register a method handler
|
|
22
|
-
* @param method - Method name
|
|
23
|
-
* @param handler - Method handler function
|
|
24
|
-
*/
|
|
25
|
-
registerMethod(method, handler) {
|
|
26
|
-
if (typeof method !== 'string' || method.length === 0) {
|
|
27
|
-
throw new Error('Method name must be a non-empty string');
|
|
28
|
-
}
|
|
29
|
-
if (typeof handler !== 'function') {
|
|
30
|
-
throw new Error('Handler must be a function');
|
|
31
|
-
}
|
|
32
|
-
this.methods[method] = handler;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Unregister a method handler
|
|
36
|
-
* @param method - Method name
|
|
37
|
-
*/
|
|
38
|
-
unregisterMethod(method) {
|
|
39
|
-
Reflect.deleteProperty(this.methods, method);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Get all registered methods
|
|
43
|
-
* @returns Array of method names
|
|
44
|
-
*/
|
|
45
|
-
getRegisteredMethods() {
|
|
46
|
-
return Object.keys(this.methods);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Process an incoming JSON-RPC message
|
|
50
|
-
* @param messageData - Raw message data (string or object)
|
|
51
|
-
* @returns Promise resolving to response (if request) or undefined (if notification)
|
|
52
|
-
*/
|
|
53
|
-
async processMessage(messageData) {
|
|
54
|
-
let message;
|
|
55
|
-
try {
|
|
56
|
-
// Parse message if it's a string
|
|
57
|
-
if (typeof messageData === 'string') {
|
|
58
|
-
try {
|
|
59
|
-
message = JSON.parse(messageData);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
return this.createErrorResponse(null, {
|
|
63
|
-
code: types_1.JsonRpcErrorCode.parseError,
|
|
64
|
-
message: 'Parse error',
|
|
65
|
-
data: 'Invalid JSON'
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
message = messageData;
|
|
71
|
-
}
|
|
72
|
-
// Validate message format
|
|
73
|
-
const validation = this.validateMessage(message);
|
|
74
|
-
if (!validation.valid) {
|
|
75
|
-
return this.createErrorResponse(this.extractId(message), validation.error);
|
|
76
|
-
}
|
|
77
|
-
// Handle request or notification
|
|
78
|
-
if (this.isRequest(message)) {
|
|
79
|
-
this.emit('request', message);
|
|
80
|
-
return await this.handleRequest(message);
|
|
81
|
-
}
|
|
82
|
-
if (this.isNotification(message)) {
|
|
83
|
-
this.emit('notification', message);
|
|
84
|
-
await this.handleNotification(message);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
// This shouldn't happen after validation, but just in case
|
|
88
|
-
return this.createErrorResponse(this.extractId(message), {
|
|
89
|
-
code: types_1.JsonRpcErrorCode.invalidRequest,
|
|
90
|
-
message: 'Invalid request',
|
|
91
|
-
data: 'Message is neither request nor notification'
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
const jsonRpcError = this.config.errorHandler(error, this.isRequest(message) ? message : undefined);
|
|
96
|
-
return this.createErrorResponse(this.extractId(message), jsonRpcError);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Handle a JSON-RPC request
|
|
101
|
-
* @param request - JSON-RPC request object
|
|
102
|
-
* @returns Promise resolving to response
|
|
103
|
-
*/
|
|
104
|
-
async handleRequest(request) {
|
|
105
|
-
// Check concurrent request limit
|
|
106
|
-
if (this.pendingRequests.size >= this.config.maxConcurrentRequests) {
|
|
107
|
-
return this.createErrorResponse(request.id, {
|
|
108
|
-
code: types_1.JsonRpcErrorCode.internalError,
|
|
109
|
-
message: 'Server overloaded',
|
|
110
|
-
data: `Maximum concurrent requests (${this.config.maxConcurrentRequests}) exceeded`
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
// Check if method exists
|
|
114
|
-
const handler = this.methods[request.method];
|
|
115
|
-
if (!handler) {
|
|
116
|
-
return this.createErrorResponse(request.id, {
|
|
117
|
-
code: types_1.JsonRpcErrorCode.methodNotFound,
|
|
118
|
-
message: 'Method not found',
|
|
119
|
-
data: `Method '${request.method}' is not registered`
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
// Execute method with timeout
|
|
123
|
-
const requestPromise = this.executeMethodWithTimeout(handler, request);
|
|
124
|
-
try {
|
|
125
|
-
const result = await requestPromise;
|
|
126
|
-
return this.createSuccessResponse(request.id, result);
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
const jsonRpcError = this.config.errorHandler(error, request);
|
|
130
|
-
return this.createErrorResponse(request.id, jsonRpcError);
|
|
131
|
-
}
|
|
132
|
-
finally {
|
|
133
|
-
this.pendingRequests.delete(request.id);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Handle a JSON-RPC notification
|
|
138
|
-
* @param notification - JSON-RPC notification object
|
|
139
|
-
*/
|
|
140
|
-
async handleNotification(notification) {
|
|
141
|
-
const handler = this.methods[notification.method];
|
|
142
|
-
if (!handler) {
|
|
143
|
-
// For notifications, we silently ignore unknown methods
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
try {
|
|
147
|
-
// Handle both sync and async functions by wrapping in Promise.resolve
|
|
148
|
-
const result = handler(notification.params);
|
|
149
|
-
await Promise.resolve(result);
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
// For notifications, we emit error but don't send response
|
|
153
|
-
this.emit('error', error);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Execute method with timeout
|
|
158
|
-
* @param handler - Method handler
|
|
159
|
-
* @param request - JSON-RPC request
|
|
160
|
-
* @returns Promise resolving to result
|
|
161
|
-
*/
|
|
162
|
-
async executeMethodWithTimeout(handler, request) {
|
|
163
|
-
return new Promise((resolve, reject) => {
|
|
164
|
-
const timeoutId = setTimeout(() => {
|
|
165
|
-
reject(new Error(`Method '${request.method}' timed out after ${this.config.requestTimeout}ms`));
|
|
166
|
-
}, this.config.requestTimeout);
|
|
167
|
-
try {
|
|
168
|
-
const pendingRequest = {
|
|
169
|
-
id: request.id,
|
|
170
|
-
method: request.method,
|
|
171
|
-
timestamp: Date.now(),
|
|
172
|
-
timeout: this.config.requestTimeout,
|
|
173
|
-
resolve(value) {
|
|
174
|
-
clearTimeout(timeoutId);
|
|
175
|
-
resolve(value);
|
|
176
|
-
},
|
|
177
|
-
reject(error) {
|
|
178
|
-
clearTimeout(timeoutId);
|
|
179
|
-
reject(error);
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
// Handle both sync and async functions by wrapping in Promise.resolve
|
|
183
|
-
const result = handler(request.params, request.id);
|
|
184
|
-
Promise.resolve(result)
|
|
185
|
-
.then((finalResult) => {
|
|
186
|
-
clearTimeout(timeoutId);
|
|
187
|
-
pendingRequest.resolve(finalResult);
|
|
188
|
-
})
|
|
189
|
-
.catch((error) => {
|
|
190
|
-
clearTimeout(timeoutId);
|
|
191
|
-
pendingRequest.reject(error);
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
// Handle synchronous errors (like sync functions that throw)
|
|
196
|
-
clearTimeout(timeoutId);
|
|
197
|
-
reject(error);
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Create a pending request promise with timeout
|
|
203
|
-
* @param request - JSON-RPC request
|
|
204
|
-
* @param timeout - Timeout in milliseconds
|
|
205
|
-
* @returns Promise resolving to the result
|
|
206
|
-
*/
|
|
207
|
-
async createPendingRequest(request, timeout) {
|
|
208
|
-
return new Promise((resolve, reject) => {
|
|
209
|
-
const timeoutId = setTimeout(() => {
|
|
210
|
-
this.pendingRequests.delete(request.id);
|
|
211
|
-
this.emit('timeout', request);
|
|
212
|
-
reject(new Error(`Request ${request.id} timed out after ${timeout}ms`));
|
|
213
|
-
}, timeout);
|
|
214
|
-
const pendingRequest = {
|
|
215
|
-
id: request.id,
|
|
216
|
-
method: request.method,
|
|
217
|
-
timestamp: Date.now(),
|
|
218
|
-
timeout,
|
|
219
|
-
resolve(value) {
|
|
220
|
-
clearTimeout(timeoutId);
|
|
221
|
-
resolve(value);
|
|
222
|
-
},
|
|
223
|
-
reject(error) {
|
|
224
|
-
clearTimeout(timeoutId);
|
|
225
|
-
reject(error);
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
this.pendingRequests.set(request.id, pendingRequest);
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Validate JSON-RPC message format
|
|
233
|
-
* @param message - Message to validate
|
|
234
|
-
* @returns Validation result
|
|
235
|
-
*/
|
|
236
|
-
validateMessage(message) {
|
|
237
|
-
if (!message || typeof message !== 'object') {
|
|
238
|
-
return {
|
|
239
|
-
valid: false,
|
|
240
|
-
error: {
|
|
241
|
-
code: types_1.JsonRpcErrorCode.invalidRequest,
|
|
242
|
-
message: 'Invalid request',
|
|
243
|
-
data: 'Message must be an object'
|
|
244
|
-
}
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
if (message.jsonrpc !== types_1.JSONRPC_VERSION) {
|
|
248
|
-
return {
|
|
249
|
-
valid: false,
|
|
250
|
-
error: {
|
|
251
|
-
code: types_1.JsonRpcErrorCode.invalidRequest,
|
|
252
|
-
message: 'Invalid request',
|
|
253
|
-
data: `Invalid jsonrpc version. Expected '${types_1.JSONRPC_VERSION}'`
|
|
254
|
-
}
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
if (typeof message.method !== 'string' || message.method.length === 0) {
|
|
258
|
-
return {
|
|
259
|
-
valid: false,
|
|
260
|
-
error: {
|
|
261
|
-
code: types_1.JsonRpcErrorCode.invalidRequest,
|
|
262
|
-
message: 'Invalid request',
|
|
263
|
-
data: 'Method must be a non-empty string'
|
|
264
|
-
}
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
// Check if it's a request (has id) or notification (no id)
|
|
268
|
-
const hasId = 'id' in message;
|
|
269
|
-
if (hasId && typeof message.id !== 'string' && typeof message.id !== 'number' && message.id !== null) {
|
|
270
|
-
return {
|
|
271
|
-
valid: false,
|
|
272
|
-
error: {
|
|
273
|
-
code: types_1.JsonRpcErrorCode.invalidRequest,
|
|
274
|
-
message: 'Invalid request',
|
|
275
|
-
data: 'ID must be a string, number, or null'
|
|
276
|
-
}
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
return { valid: true };
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Check if message is a request (has id)
|
|
283
|
-
*/
|
|
284
|
-
isRequest(message) {
|
|
285
|
-
return message && typeof message === 'object' && 'id' in message;
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Check if message is a notification (no id)
|
|
289
|
-
*/
|
|
290
|
-
isNotification(message) {
|
|
291
|
-
return message && typeof message === 'object' && !('id' in message);
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Extract ID from message safely
|
|
295
|
-
*/
|
|
296
|
-
extractId(message) {
|
|
297
|
-
if (message && typeof message === 'object' && 'id' in message) {
|
|
298
|
-
return message.id;
|
|
299
|
-
}
|
|
300
|
-
return null;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Create success response
|
|
304
|
-
*/
|
|
305
|
-
createSuccessResponse(id, result) {
|
|
306
|
-
return {
|
|
307
|
-
jsonrpc: types_1.JSONRPC_VERSION,
|
|
308
|
-
result,
|
|
309
|
-
id
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Create error response
|
|
314
|
-
*/
|
|
315
|
-
createErrorResponse(id, error) {
|
|
316
|
-
return {
|
|
317
|
-
jsonrpc: types_1.JSONRPC_VERSION,
|
|
318
|
-
error,
|
|
319
|
-
id
|
|
320
|
-
};
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Default error handler
|
|
324
|
-
*/
|
|
325
|
-
defaultErrorHandler(error, request) {
|
|
326
|
-
// Handle parameter validation errors
|
|
327
|
-
if (error.message.includes('invalid param')) {
|
|
328
|
-
return {
|
|
329
|
-
code: types_1.JsonRpcErrorCode.invalidParams,
|
|
330
|
-
message: 'Invalid params',
|
|
331
|
-
data: error.message
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
// Default to internal error
|
|
335
|
-
return {
|
|
336
|
-
code: types_1.JsonRpcErrorCode.internalError,
|
|
337
|
-
message: error.message || 'Internal error',
|
|
338
|
-
data: error.stack
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Register event listener
|
|
343
|
-
*/
|
|
344
|
-
on(event, listener) {
|
|
345
|
-
this.listeners[event] = listener;
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Remove event listener
|
|
349
|
-
*/
|
|
350
|
-
off(event, listener) {
|
|
351
|
-
if (this.listeners[event] === listener) {
|
|
352
|
-
Reflect.deleteProperty(this.listeners, event);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Emit event
|
|
357
|
-
*/
|
|
358
|
-
emit(event, ...args) {
|
|
359
|
-
const listener = this.listeners[event];
|
|
360
|
-
if (listener) {
|
|
361
|
-
listener(...args);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Get server statistics
|
|
366
|
-
*/
|
|
367
|
-
getStats() {
|
|
368
|
-
return {
|
|
369
|
-
registeredMethods: Object.keys(this.methods).length,
|
|
370
|
-
pendingRequests: this.pendingRequests.size,
|
|
371
|
-
maxConcurrentRequests: this.config.maxConcurrentRequests
|
|
372
|
-
};
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Shutdown server (reject all pending requests)
|
|
376
|
-
*/
|
|
377
|
-
async shutdown() {
|
|
378
|
-
// Reject all pending requests
|
|
379
|
-
for (const [id, pendingRequest] of this.pendingRequests) {
|
|
380
|
-
try {
|
|
381
|
-
pendingRequest.reject(new Error('Server shutdown'));
|
|
382
|
-
}
|
|
383
|
-
catch {
|
|
384
|
-
// Ignore errors during shutdown
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
this.pendingRequests.clear();
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
exports.JsonRpcServer = JsonRpcServer;
|
|
391
|
-
//# sourceMappingURL=JsonRpcServer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonRpcServer.js","sourceRoot":"","sources":["../../../src/JsExecutor/jsonRpc/JsonRpcServer.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n JsonRpcError,\n JsonRpcId,\n JsonRpcMessage,\n JsonRpcMethodHandler,\n JsonRpcMethodRegistry,\n JsonRpcNotification,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcServerConfig,\n PendingRequest,\n ValidationResult\n} from './types';\nimport { JsonRpcErrorCode, JSONRPC_VERSION } from './types';\n\ntype TGetStatsResponse = {\n registeredMethods: number;\n pendingRequests: number;\n maxConcurrentRequests: number;\n};\n\n/**\n * Event emitter interface for JSON-RPC server events\n */\nexport interface JsonRpcServerEvents {\n request: (request: JsonRpcRequest) => void;\n notification: (notification: JsonRpcNotification) => void;\n response: (response: JsonRpcResponse) => void;\n error: (error: Error, request?: JsonRpcRequest) => void;\n timeout: (request: JsonRpcRequest) => void;\n}\n\n/**\n * JSON-RPC 2.0 Server implementation\n */\nexport class JsonRpcServer {\n private readonly methods: JsonRpcMethodRegistry = {};\n private readonly config: Required<JsonRpcServerConfig>;\n private readonly pendingRequests = new Map<JsonRpcId, PendingRequest>();\n private readonly listeners: Partial<JsonRpcServerEvents> = {};\n\n public constructor(config: JsonRpcServerConfig = {}) {\n this.config = {\n maxConcurrentRequests: config.maxConcurrentRequests ?? 100,\n requestTimeout: config.requestTimeout ?? 30000,\n strictValidation: config.strictValidation ?? true,\n errorHandler: config.errorHandler ?? this.defaultErrorHandler.bind(this)\n };\n }\n\n /**\n * Register a method handler\n * @param method - Method name\n * @param handler - Method handler function\n */\n public registerMethod<TParams, TResult>(method: string, handler: JsonRpcMethodHandler<TParams, TResult>): void {\n if (typeof method !== 'string' || method.length === 0) {\n throw new Error('Method name must be a non-empty string');\n }\n if (typeof handler !== 'function') {\n throw new Error('Handler must be a function');\n }\n this.methods[method] = handler as JsonRpcMethodHandler;\n }\n\n /**\n * Unregister a method handler\n * @param method - Method name\n */\n public unregisterMethod(method: string): void {\n Reflect.deleteProperty(this.methods, method);\n }\n\n /**\n * Get all registered methods\n * @returns Array of method names\n */\n public getRegisteredMethods(): string[] {\n return Object.keys(this.methods);\n }\n\n /**\n * Process an incoming JSON-RPC message\n * @param messageData - Raw message data (string or object)\n * @returns Promise resolving to response (if request) or undefined (if notification)\n */\n public async processMessage(messageData: string | object): Promise<JsonRpcResponse | undefined> {\n let message: JsonRpcMessage;\n\n try {\n // Parse message if it's a string\n if (typeof messageData === 'string') {\n try {\n message = JSON.parse(messageData);\n } catch {\n return this.createErrorResponse(null, {\n code: JsonRpcErrorCode.parseError,\n message: 'Parse error',\n data: 'Invalid JSON'\n });\n }\n } else {\n message = messageData as JsonRpcMessage;\n }\n\n // Validate message format\n const validation = this.validateMessage(message);\n if (!validation.valid) {\n return this.createErrorResponse(this.extractId(message), validation.error!);\n }\n\n // Handle request or notification\n if (this.isRequest(message)) {\n this.emit('request', message);\n return await this.handleRequest(message);\n }\n if (this.isNotification(message)) {\n this.emit('notification', message);\n await this.handleNotification(message);\n return;\n }\n // This shouldn't happen after validation, but just in case\n return this.createErrorResponse(this.extractId(message), {\n code: JsonRpcErrorCode.invalidRequest,\n message: 'Invalid request',\n data: 'Message is neither request nor notification'\n });\n } catch (error: unknown) {\n const jsonRpcError = this.config.errorHandler(error as Error, this.isRequest(message!) ? message : undefined);\n return this.createErrorResponse(this.extractId(message!), jsonRpcError);\n }\n }\n\n /**\n * Handle a JSON-RPC request\n * @param request - JSON-RPC request object\n * @returns Promise resolving to response\n */\n private async handleRequest(request: JsonRpcRequest): Promise<JsonRpcResponse> {\n // Check concurrent request limit\n if (this.pendingRequests.size >= this.config.maxConcurrentRequests) {\n return this.createErrorResponse(request.id, {\n code: JsonRpcErrorCode.internalError,\n message: 'Server overloaded',\n data: `Maximum concurrent requests (${this.config.maxConcurrentRequests}) exceeded`\n });\n }\n\n // Check if method exists\n const handler = this.methods[request.method];\n if (!handler) {\n return this.createErrorResponse(request.id, {\n code: JsonRpcErrorCode.methodNotFound,\n message: 'Method not found',\n data: `Method '${request.method}' is not registered`\n });\n }\n\n // Execute method with timeout\n const requestPromise = this.executeMethodWithTimeout(handler, request);\n\n try {\n const result = await requestPromise;\n return this.createSuccessResponse(request.id, result);\n } catch (error: unknown) {\n const jsonRpcError = this.config.errorHandler(error as Error, request);\n return this.createErrorResponse(request.id, jsonRpcError);\n } finally {\n this.pendingRequests.delete(request.id);\n }\n }\n\n /**\n * Handle a JSON-RPC notification\n * @param notification - JSON-RPC notification object\n */\n private async handleNotification(notification: JsonRpcNotification): Promise<void> {\n const handler = this.methods[notification.method];\n if (!handler) {\n // For notifications, we silently ignore unknown methods\n return;\n }\n\n try {\n // Handle both sync and async functions by wrapping in Promise.resolve\n const result = handler(notification.params);\n await Promise.resolve(result);\n } catch (error: unknown) {\n // For notifications, we emit error but don't send response\n this.emit('error', error as Error);\n }\n }\n\n /**\n * Execute method with timeout\n * @param handler - Method handler\n * @param request - JSON-RPC request\n * @returns Promise resolving to result\n */\n private async executeMethodWithTimeout<TResult>(\n handler: JsonRpcMethodHandler,\n request: JsonRpcRequest\n ): Promise<TResult> {\n return new Promise((resolve, reject): void => {\n const timeoutId = setTimeout((): void => {\n reject(new Error(`Method '${request.method}' timed out after ${this.config.requestTimeout}ms`));\n }, this.config.requestTimeout);\n\n try {\n const pendingRequest: PendingRequest<TResult> = {\n id: request.id,\n method: request.method,\n timestamp: Date.now(),\n timeout: this.config.requestTimeout,\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 // Handle both sync and async functions by wrapping in Promise.resolve\n const result = handler(request.params, request.id);\n Promise.resolve(result)\n .then((finalResult: any): void => {\n clearTimeout(timeoutId);\n pendingRequest.resolve(finalResult);\n })\n .catch((error: unknown): void => {\n clearTimeout(timeoutId);\n pendingRequest.reject(error as Error);\n });\n } catch (error: unknown) {\n // Handle synchronous errors (like sync functions that throw)\n clearTimeout(timeoutId);\n reject(error);\n }\n });\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 * Validate JSON-RPC message format\n * @param message - Message to validate\n * @returns Validation result\n */\n private validateMessage(message: any): ValidationResult {\n if (!message || typeof message !== 'object') {\n return {\n valid: false,\n error: {\n code: JsonRpcErrorCode.invalidRequest,\n message: 'Invalid request',\n data: 'Message must be an object'\n }\n };\n }\n\n if (message.jsonrpc !== JSONRPC_VERSION) {\n return {\n valid: false,\n error: {\n code: JsonRpcErrorCode.invalidRequest,\n message: 'Invalid request',\n data: `Invalid jsonrpc version. Expected '${JSONRPC_VERSION}'`\n }\n };\n }\n\n if (typeof message.method !== 'string' || message.method.length === 0) {\n return {\n valid: false,\n error: {\n code: JsonRpcErrorCode.invalidRequest,\n message: 'Invalid request',\n data: 'Method must be a non-empty string'\n }\n };\n }\n\n // Check if it's a request (has id) or notification (no id)\n const hasId = 'id' in message;\n if (hasId && typeof message.id !== 'string' && typeof message.id !== 'number' && message.id !== null) {\n return {\n valid: false,\n error: {\n code: JsonRpcErrorCode.invalidRequest,\n message: 'Invalid request',\n data: 'ID must be a string, number, or null'\n }\n };\n }\n\n return { valid: true };\n }\n\n /**\n * Check if message is a request (has id)\n */\n private isRequest(message: any): message is JsonRpcRequest {\n return message && typeof message === 'object' && 'id' in message;\n }\n\n /**\n * Check if message is a notification (no id)\n */\n private isNotification(message: any): message is JsonRpcNotification {\n return message && typeof message === 'object' && !('id' in message);\n }\n\n /**\n * Extract ID from message safely\n */\n private extractId(message: any): JsonRpcId {\n if (message && typeof message === 'object' && 'id' in message) {\n return message.id;\n }\n return null;\n }\n\n /**\n * Create success response\n */\n private createSuccessResponse(id: JsonRpcId, result: any): JsonRpcResponse {\n return {\n jsonrpc: JSONRPC_VERSION,\n result,\n id\n };\n }\n\n /**\n * Create error response\n */\n private createErrorResponse(id: JsonRpcId, error: JsonRpcError): JsonRpcResponse {\n return {\n jsonrpc: JSONRPC_VERSION,\n error,\n id\n };\n }\n\n /**\n * Default error handler\n */\n private defaultErrorHandler(error: Error, request?: JsonRpcRequest): JsonRpcError {\n // Handle parameter validation errors\n if (error.message.includes('invalid param')) {\n return {\n code: JsonRpcErrorCode.invalidParams,\n message: 'Invalid params',\n data: error.message\n };\n }\n\n // Default to internal error\n return {\n code: JsonRpcErrorCode.internalError,\n message: error.message || 'Internal error',\n data: error.stack\n };\n }\n\n /**\n * Register event listener\n */\n public on<TKey extends keyof JsonRpcServerEvents>(event: TKey, listener: JsonRpcServerEvents[TKey]): void {\n this.listeners[event] = listener;\n }\n\n /**\n * Remove event listener\n */\n public off<TKey extends keyof JsonRpcServerEvents>(event: TKey, listener: JsonRpcServerEvents[TKey]): void {\n if (this.listeners[event] === listener) {\n Reflect.deleteProperty(this.listeners, event);\n }\n }\n\n /**\n * Emit event\n */\n private emit<TKey extends keyof JsonRpcServerEvents>(\n event: TKey,\n ...args: Parameters<JsonRpcServerEvents[TKey]>\n ): void {\n const listener = this.listeners[event];\n if (listener) {\n (listener as any)(...args);\n }\n }\n\n /**\n * Get server statistics\n */\n public getStats(): TGetStatsResponse {\n return {\n registeredMethods: Object.keys(this.methods).length,\n pendingRequests: this.pendingRequests.size,\n maxConcurrentRequests: this.config.maxConcurrentRequests\n };\n }\n\n /**\n * Shutdown server (reject all pending requests)\n */\n public async shutdown(): Promise<void> {\n // Reject all pending requests\n for (const [ id, pendingRequest ] of this.pendingRequests) {\n try {\n pendingRequest.reject(new Error('Server shutdown'));\n } catch {\n // Ignore errors during shutdown\n }\n }\n\n this.pendingRequests.clear();\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/JsExecutor/jsonRpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,cAAc,SAAS,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.JsonRpcServer = exports.JsonRpcClient = void 0;
|
|
18
|
-
var JsonRpcClient_1 = require("./JsonRpcClient");
|
|
19
|
-
Object.defineProperty(exports, "JsonRpcClient", { enumerable: true, get: function () { return JsonRpcClient_1.JsonRpcClient; } });
|
|
20
|
-
var JsonRpcServer_1 = require("./JsonRpcServer");
|
|
21
|
-
Object.defineProperty(exports, "JsonRpcServer", { enumerable: true, get: function () { return JsonRpcServer_1.JsonRpcServer; } });
|
|
22
|
-
__exportStar(require("./types"), exports);
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/JsExecutor/jsonRpc/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,0CAAwB","sourcesContent":["export { JsonRpcClient } from './JsonRpcClient';\nexport { JsonRpcServer } from './JsonRpcServer';\nexport * from './types';\n\n"]}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JSON-RPC 2.0 Protocol Types
|
|
3
|
-
* Based on: https://www.jsonrpc.org/specification
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* JSON-RPC 2.0 version identifier
|
|
7
|
-
*/
|
|
8
|
-
export declare const JSONRPC_VERSION: "2.0";
|
|
9
|
-
/**
|
|
10
|
-
* JSON-RPC request/response identifier
|
|
11
|
-
*/
|
|
12
|
-
export declare type JsonRpcId = string | number | null;
|
|
13
|
-
/**
|
|
14
|
-
* JSON-RPC parameters (can be object or array)
|
|
15
|
-
*/
|
|
16
|
-
export declare type JsonRpcParams = Record<string, any> | any[] | undefined;
|
|
17
|
-
/**
|
|
18
|
-
* JSON-RPC Error codes (standard codes from spec)
|
|
19
|
-
*/
|
|
20
|
-
export declare enum JsonRpcErrorCode {
|
|
21
|
-
parseError = -32700,
|
|
22
|
-
invalidRequest = -32600,
|
|
23
|
-
methodNotFound = -32601,
|
|
24
|
-
invalidParams = -32602,
|
|
25
|
-
internalError = -32603,
|
|
26
|
-
serverErrorStart = -32099,
|
|
27
|
-
serverErrorEnd = -32000
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* JSON-RPC Error object
|
|
31
|
-
*/
|
|
32
|
-
export interface JsonRpcError {
|
|
33
|
-
code: JsonRpcErrorCode | number;
|
|
34
|
-
message: string;
|
|
35
|
-
data?: any;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* JSON-RPC Request object
|
|
39
|
-
*/
|
|
40
|
-
export interface JsonRpcRequest<TParams = JsonRpcParams> {
|
|
41
|
-
jsonrpc: typeof JSONRPC_VERSION;
|
|
42
|
-
method: string;
|
|
43
|
-
params?: TParams;
|
|
44
|
-
id: JsonRpcId;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* JSON-RPC Notification object (request without id)
|
|
48
|
-
*/
|
|
49
|
-
export interface JsonRpcNotification<TParams = JsonRpcParams> {
|
|
50
|
-
jsonrpc: typeof JSONRPC_VERSION;
|
|
51
|
-
method: string;
|
|
52
|
-
params?: TParams;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* JSON-RPC Success Response object
|
|
56
|
-
*/
|
|
57
|
-
export interface JsonRpcSuccessResponse<TResult = any> {
|
|
58
|
-
jsonrpc: typeof JSONRPC_VERSION;
|
|
59
|
-
result: TResult;
|
|
60
|
-
id: JsonRpcId;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* JSON-RPC Error Response object
|
|
64
|
-
*/
|
|
65
|
-
export interface JsonRpcErrorResponse {
|
|
66
|
-
jsonrpc: typeof JSONRPC_VERSION;
|
|
67
|
-
error: JsonRpcError;
|
|
68
|
-
id: JsonRpcId;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* JSON-RPC Response object (success or error)
|
|
72
|
-
*/
|
|
73
|
-
export declare type JsonRpcResponse<TResult = any> = JsonRpcSuccessResponse<TResult> | JsonRpcErrorResponse;
|
|
74
|
-
/**
|
|
75
|
-
* JSON-RPC Message (request, notification, or response)
|
|
76
|
-
*/
|
|
77
|
-
export declare type JsonRpcMessage<TParams = JsonRpcParams, TResult = any> = JsonRpcRequest<TParams> | JsonRpcNotification<TParams> | JsonRpcResponse<TResult>;
|
|
78
|
-
/**
|
|
79
|
-
* Method handler function signature
|
|
80
|
-
*/
|
|
81
|
-
export declare type JsonRpcMethodHandler<TParams = JsonRpcParams, TResult = any> = (params: TParams, id?: JsonRpcId) => Promise<TResult> | TResult;
|
|
82
|
-
/**
|
|
83
|
-
* Method registry for JSON-RPC handlers
|
|
84
|
-
*/
|
|
85
|
-
export declare type JsonRpcMethodRegistry = Record<string, JsonRpcMethodHandler>;
|
|
86
|
-
/**
|
|
87
|
-
* JSON-RPC server configuration
|
|
88
|
-
*/
|
|
89
|
-
export interface JsonRpcServerConfig {
|
|
90
|
-
/**
|
|
91
|
-
* Maximum number of concurrent requests
|
|
92
|
-
*/
|
|
93
|
-
maxConcurrentRequests?: number;
|
|
94
|
-
/**
|
|
95
|
-
* Request timeout in milliseconds
|
|
96
|
-
*/
|
|
97
|
-
requestTimeout?: number;
|
|
98
|
-
/**
|
|
99
|
-
* Whether to validate JSON-RPC format strictly
|
|
100
|
-
*/
|
|
101
|
-
strictValidation?: boolean;
|
|
102
|
-
/**
|
|
103
|
-
* Custom error handler
|
|
104
|
-
*/
|
|
105
|
-
errorHandler?: (error: Error, request?: JsonRpcRequest) => JsonRpcError;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* JSON-RPC client configuration
|
|
109
|
-
*/
|
|
110
|
-
export interface JsonRpcClientConfig {
|
|
111
|
-
/**
|
|
112
|
-
* Default timeout for requests in milliseconds
|
|
113
|
-
*/
|
|
114
|
-
defaultTimeout?: number;
|
|
115
|
-
/**
|
|
116
|
-
* Maximum number of retry attempts
|
|
117
|
-
*/
|
|
118
|
-
maxRetries?: number;
|
|
119
|
-
/**
|
|
120
|
-
* Retry delay in milliseconds
|
|
121
|
-
*/
|
|
122
|
-
retryDelay?: number;
|
|
123
|
-
/**
|
|
124
|
-
* Whether to generate sequential request IDs
|
|
125
|
-
*/
|
|
126
|
-
sequentialIds?: boolean;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Pending request tracking
|
|
130
|
-
*/
|
|
131
|
-
export interface PendingRequest<TResult = any> {
|
|
132
|
-
id: JsonRpcId;
|
|
133
|
-
method: string;
|
|
134
|
-
timestamp: number;
|
|
135
|
-
timeout?: number;
|
|
136
|
-
resolve: (value: TResult) => void;
|
|
137
|
-
reject: (error: Error) => void;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* JSON-RPC validation result
|
|
141
|
-
*/
|
|
142
|
-
export interface ValidationResult {
|
|
143
|
-
valid: boolean;
|
|
144
|
-
error?: JsonRpcError;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Standard JSON-RPC method names for JSExecutor
|
|
148
|
-
*/
|
|
149
|
-
export declare const STANDARD_METHODS: {
|
|
150
|
-
readonly executeCode: "executeCode";
|
|
151
|
-
readonly getStatus: "getStatus";
|
|
152
|
-
readonly ping: "ping";
|
|
153
|
-
readonly shutdown: "shutdown";
|
|
154
|
-
readonly log: "log";
|
|
155
|
-
readonly error: "error";
|
|
156
|
-
};
|
|
157
|
-
/**
|
|
158
|
-
* JSExecutor specific request/response types
|
|
159
|
-
*/
|
|
160
|
-
export interface ExecuteCodeRequest {
|
|
161
|
-
code: string;
|
|
162
|
-
args: Record<string, any>;
|
|
163
|
-
functionName: string;
|
|
164
|
-
skdsEndpointUrl: string;
|
|
165
|
-
}
|
|
166
|
-
export interface ExecuteCodeResponse {
|
|
167
|
-
success: boolean;
|
|
168
|
-
result?: any;
|
|
169
|
-
error?: {
|
|
170
|
-
message: string;
|
|
171
|
-
name?: string;
|
|
172
|
-
stack?: string;
|
|
173
|
-
};
|
|
174
|
-
logs: string[];
|
|
175
|
-
executionTime: number;
|
|
176
|
-
}
|
|
177
|
-
export interface StatusRequest {
|
|
178
|
-
}
|
|
179
|
-
export interface StatusResponse {
|
|
180
|
-
status: 'ready' | 'busy' | 'error';
|
|
181
|
-
uptime: number;
|
|
182
|
-
memoryUsage?: {
|
|
183
|
-
used: number;
|
|
184
|
-
total: number;
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
export interface LogNotification {
|
|
188
|
-
level: 'info' | 'warn' | 'error' | 'debug';
|
|
189
|
-
message: string;
|
|
190
|
-
timestamp: number;
|
|
191
|
-
data?: any;
|
|
192
|
-
}
|
|
193
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/JsExecutor/jsonRpc/types.ts"],"names":[],"mappings":"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"}
|