@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.
Files changed (303) hide show
  1. package/package.json +1 -1
  2. package/src/util/TripleUtil.ts +22 -2
  3. package/dist/JsExecutor/PermissionBuilder.d.ts +0 -14
  4. package/dist/JsExecutor/PermissionBuilder.d.ts.map +0 -1
  5. package/dist/JsExecutor/PermissionBuilder.js +0 -58
  6. package/dist/JsExecutor/PermissionBuilder.js.map +0 -1
  7. package/dist/JsExecutor/constants.d.ts +0 -27
  8. package/dist/JsExecutor/constants.d.ts.map +0 -1
  9. package/dist/JsExecutor/constants.js +0 -30
  10. package/dist/JsExecutor/constants.js.map +0 -1
  11. package/dist/JsExecutor/denoUtils.d.ts +0 -10
  12. package/dist/JsExecutor/denoUtils.d.ts.map +0 -1
  13. package/dist/JsExecutor/denoUtils.js +0 -24
  14. package/dist/JsExecutor/denoUtils.js.map +0 -1
  15. package/dist/JsExecutor/errors.d.ts +0 -40
  16. package/dist/JsExecutor/errors.d.ts.map +0 -1
  17. package/dist/JsExecutor/errors.js +0 -67
  18. package/dist/JsExecutor/errors.js.map +0 -1
  19. package/dist/JsExecutor/examples/basic/index.d.ts +0 -1
  20. package/dist/JsExecutor/examples/basic/index.d.ts.map +0 -1
  21. package/dist/JsExecutor/examples/basic/index.js +0 -46
  22. package/dist/JsExecutor/examples/basic/index.js.map +0 -1
  23. package/dist/JsExecutor/examples/basic/process.d.ts +0 -1
  24. package/dist/JsExecutor/examples/basic/process.d.ts.map +0 -1
  25. package/dist/JsExecutor/examples/basic/process.js +0 -34
  26. package/dist/JsExecutor/examples/basic/process.js.map +0 -1
  27. package/dist/JsExecutor/examples/jsExecutor/index.d.ts +0 -2
  28. package/dist/JsExecutor/examples/jsExecutor/index.d.ts.map +0 -1
  29. package/dist/JsExecutor/examples/jsExecutor/index.js +0 -47
  30. package/dist/JsExecutor/examples/jsExecutor/index.js.map +0 -1
  31. package/dist/JsExecutor/examples/jsExecutor/process.d.ts +0 -2
  32. package/dist/JsExecutor/examples/jsExecutor/process.d.ts.map +0 -1
  33. package/dist/JsExecutor/examples/jsExecutor/process.js +0 -58
  34. package/dist/JsExecutor/examples/jsExecutor/process.js.map +0 -1
  35. package/dist/JsExecutor/index.d.ts +0 -7
  36. package/dist/JsExecutor/index.d.ts.map +0 -1
  37. package/dist/JsExecutor/index.js +0 -36
  38. package/dist/JsExecutor/index.js.map +0 -1
  39. package/dist/JsExecutor/jsExecutor.d.ts +0 -68
  40. package/dist/JsExecutor/jsExecutor.d.ts.map +0 -1
  41. package/dist/JsExecutor/jsExecutor.js +0 -171
  42. package/dist/JsExecutor/jsExecutor.js.map +0 -1
  43. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts +0 -165
  44. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts.map +0 -1
  45. package/dist/JsExecutor/jsonRpc/JsonRpcClient.js +0 -335
  46. package/dist/JsExecutor/jsonRpc/JsonRpcClient.js.map +0 -1
  47. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts +0 -125
  48. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts.map +0 -1
  49. package/dist/JsExecutor/jsonRpc/JsonRpcServer.js +0 -391
  50. package/dist/JsExecutor/jsonRpc/JsonRpcServer.js.map +0 -1
  51. package/dist/JsExecutor/jsonRpc/index.d.ts +0 -4
  52. package/dist/JsExecutor/jsonRpc/index.d.ts.map +0 -1
  53. package/dist/JsExecutor/jsonRpc/index.js +0 -23
  54. package/dist/JsExecutor/jsonRpc/index.js.map +0 -1
  55. package/dist/JsExecutor/jsonRpc/types.d.ts +0 -193
  56. package/dist/JsExecutor/jsonRpc/types.d.ts.map +0 -1
  57. package/dist/JsExecutor/jsonRpc/types.js +0 -37
  58. package/dist/JsExecutor/jsonRpc/types.js.map +0 -1
  59. package/dist/JsExecutor/transport/Transport.d.ts +0 -74
  60. package/dist/JsExecutor/transport/Transport.d.ts.map +0 -1
  61. package/dist/JsExecutor/transport/Transport.js +0 -14
  62. package/dist/JsExecutor/transport/Transport.js.map +0 -1
  63. package/dist/JsExecutor/transport/base/BaseTransport.d.ts +0 -51
  64. package/dist/JsExecutor/transport/base/BaseTransport.d.ts.map +0 -1
  65. package/dist/JsExecutor/transport/base/BaseTransport.js +0 -68
  66. package/dist/JsExecutor/transport/base/BaseTransport.js.map +0 -1
  67. package/dist/JsExecutor/transport/index.d.ts +0 -13
  68. package/dist/JsExecutor/transport/index.d.ts.map +0 -1
  69. package/dist/JsExecutor/transport/index.js +0 -36
  70. package/dist/JsExecutor/transport/index.js.map +0 -1
  71. package/dist/JsExecutor/transport/process/ProcessManager.d.ts +0 -96
  72. package/dist/JsExecutor/transport/process/ProcessManager.d.ts.map +0 -1
  73. package/dist/JsExecutor/transport/process/ProcessManager.js +0 -219
  74. package/dist/JsExecutor/transport/process/ProcessManager.js.map +0 -1
  75. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts +0 -87
  76. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts.map +0 -1
  77. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js +0 -219
  78. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js.map +0 -1
  79. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts +0 -81
  80. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts.map +0 -1
  81. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js +0 -259
  82. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js.map +0 -1
  83. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts +0 -68
  84. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts.map +0 -1
  85. package/dist/JsExecutor/transport/utils/MessageUtils.js +0 -135
  86. package/dist/JsExecutor/transport/utils/MessageUtils.js.map +0 -1
  87. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts +0 -53
  88. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts.map +0 -1
  89. package/dist/JsExecutor/transport/utils/PollingUtils.js +0 -92
  90. package/dist/JsExecutor/transport/utils/PollingUtils.js.map +0 -1
  91. package/dist/JsExecutor/types.d.ts +0 -113
  92. package/dist/JsExecutor/types.d.ts.map +0 -1
  93. package/dist/JsExecutor/types.js +0 -3
  94. package/dist/JsExecutor/types.js.map +0 -1
  95. package/dist/SklEngine.d.ts +0 -132
  96. package/dist/SklEngine.d.ts.map +0 -1
  97. package/dist/SklEngine.js +0 -1508
  98. package/dist/SklEngine.js.map +0 -1
  99. package/dist/SklEngineOptions.d.ts +0 -58
  100. package/dist/SklEngineOptions.d.ts.map +0 -1
  101. package/dist/SklEngineOptions.js +0 -3
  102. package/dist/SklEngineOptions.js.map +0 -1
  103. package/dist/constants.d.ts +0 -96
  104. package/dist/constants.d.ts.map +0 -1
  105. package/dist/constants.js +0 -103
  106. package/dist/constants.js.map +0 -1
  107. package/dist/customCapabilities.d.ts +0 -22
  108. package/dist/customCapabilities.d.ts.map +0 -1
  109. package/dist/customCapabilities.js +0 -45
  110. package/dist/customCapabilities.js.map +0 -1
  111. package/dist/examples/customCapabilitiesExample.d.ts +0 -2
  112. package/dist/examples/customCapabilitiesExample.d.ts.map +0 -1
  113. package/dist/examples/customCapabilitiesExample.js +0 -59
  114. package/dist/examples/customCapabilitiesExample.js.map +0 -1
  115. package/dist/executor.js +0 -216
  116. package/dist/hooks/globalHooks.d.ts +0 -50
  117. package/dist/hooks/globalHooks.d.ts.map +0 -1
  118. package/dist/hooks/globalHooks.js +0 -164
  119. package/dist/hooks/globalHooks.js.map +0 -1
  120. package/dist/hooks/types.d.ts +0 -9
  121. package/dist/hooks/types.d.ts.map +0 -1
  122. package/dist/hooks/types.js +0 -3
  123. package/dist/hooks/types.js.map +0 -1
  124. package/dist/index.d.ts +0 -41
  125. package/dist/index.d.ts.map +0 -1
  126. package/dist/index.js +0 -68
  127. package/dist/index.js.map +0 -1
  128. package/dist/logger.d.ts +0 -35
  129. package/dist/logger.d.ts.map +0 -1
  130. package/dist/logger.js +0 -119
  131. package/dist/logger.js.map +0 -1
  132. package/dist/mapping/Mapper.d.ts +0 -13
  133. package/dist/mapping/Mapper.d.ts.map +0 -1
  134. package/dist/mapping/Mapper.js +0 -64
  135. package/dist/mapping/Mapper.js.map +0 -1
  136. package/dist/storage/FindOperator.d.ts +0 -19
  137. package/dist/storage/FindOperator.d.ts.map +0 -1
  138. package/dist/storage/FindOperator.js +0 -23
  139. package/dist/storage/FindOperator.js.map +0 -1
  140. package/dist/storage/FindOptionsTypes.d.ts +0 -79
  141. package/dist/storage/FindOptionsTypes.d.ts.map +0 -1
  142. package/dist/storage/FindOptionsTypes.js +0 -3
  143. package/dist/storage/FindOptionsTypes.js.map +0 -1
  144. package/dist/storage/GroupOptionTypes.d.ts +0 -29
  145. package/dist/storage/GroupOptionTypes.d.ts.map +0 -1
  146. package/dist/storage/GroupOptionTypes.js +0 -3
  147. package/dist/storage/GroupOptionTypes.js.map +0 -1
  148. package/dist/storage/operator/And.d.ts +0 -4
  149. package/dist/storage/operator/And.d.ts.map +0 -1
  150. package/dist/storage/operator/And.js +0 -13
  151. package/dist/storage/operator/And.js.map +0 -1
  152. package/dist/storage/operator/Contains.d.ts +0 -3
  153. package/dist/storage/operator/Contains.d.ts.map +0 -1
  154. package/dist/storage/operator/Contains.js +0 -13
  155. package/dist/storage/operator/Contains.js.map +0 -1
  156. package/dist/storage/operator/Equal.d.ts +0 -5
  157. package/dist/storage/operator/Equal.d.ts.map +0 -1
  158. package/dist/storage/operator/Equal.js +0 -13
  159. package/dist/storage/operator/Equal.js.map +0 -1
  160. package/dist/storage/operator/Exists.d.ts +0 -3
  161. package/dist/storage/operator/Exists.d.ts.map +0 -1
  162. package/dist/storage/operator/Exists.js +0 -10
  163. package/dist/storage/operator/Exists.js.map +0 -1
  164. package/dist/storage/operator/GreaterThan.d.ts +0 -4
  165. package/dist/storage/operator/GreaterThan.d.ts.map +0 -1
  166. package/dist/storage/operator/GreaterThan.js +0 -13
  167. package/dist/storage/operator/GreaterThan.js.map +0 -1
  168. package/dist/storage/operator/GreaterThanOrEqual.d.ts +0 -4
  169. package/dist/storage/operator/GreaterThanOrEqual.d.ts.map +0 -1
  170. package/dist/storage/operator/GreaterThanOrEqual.js +0 -13
  171. package/dist/storage/operator/GreaterThanOrEqual.js.map +0 -1
  172. package/dist/storage/operator/In.d.ts +0 -4
  173. package/dist/storage/operator/In.d.ts.map +0 -1
  174. package/dist/storage/operator/In.js +0 -13
  175. package/dist/storage/operator/In.js.map +0 -1
  176. package/dist/storage/operator/Inverse.d.ts +0 -3
  177. package/dist/storage/operator/Inverse.d.ts.map +0 -1
  178. package/dist/storage/operator/Inverse.js +0 -13
  179. package/dist/storage/operator/Inverse.js.map +0 -1
  180. package/dist/storage/operator/InversePath.d.ts +0 -7
  181. package/dist/storage/operator/InversePath.d.ts.map +0 -1
  182. package/dist/storage/operator/InversePath.js +0 -13
  183. package/dist/storage/operator/InversePath.js.map +0 -1
  184. package/dist/storage/operator/InverseRelation.d.ts +0 -9
  185. package/dist/storage/operator/InverseRelation.d.ts.map +0 -1
  186. package/dist/storage/operator/InverseRelation.js +0 -13
  187. package/dist/storage/operator/InverseRelation.js.map +0 -1
  188. package/dist/storage/operator/InverseRelationOrder.d.ts +0 -8
  189. package/dist/storage/operator/InverseRelationOrder.d.ts.map +0 -1
  190. package/dist/storage/operator/InverseRelationOrder.js +0 -13
  191. package/dist/storage/operator/InverseRelationOrder.js.map +0 -1
  192. package/dist/storage/operator/LessThan.d.ts +0 -4
  193. package/dist/storage/operator/LessThan.d.ts.map +0 -1
  194. package/dist/storage/operator/LessThan.js +0 -13
  195. package/dist/storage/operator/LessThan.js.map +0 -1
  196. package/dist/storage/operator/LessThanOrEqual.d.ts +0 -4
  197. package/dist/storage/operator/LessThanOrEqual.d.ts.map +0 -1
  198. package/dist/storage/operator/LessThanOrEqual.js +0 -13
  199. package/dist/storage/operator/LessThanOrEqual.js.map +0 -1
  200. package/dist/storage/operator/Not.d.ts +0 -3
  201. package/dist/storage/operator/Not.d.ts.map +0 -1
  202. package/dist/storage/operator/Not.js +0 -13
  203. package/dist/storage/operator/Not.js.map +0 -1
  204. package/dist/storage/operator/OneOrMorePath.d.ts +0 -7
  205. package/dist/storage/operator/OneOrMorePath.d.ts.map +0 -1
  206. package/dist/storage/operator/OneOrMorePath.js +0 -13
  207. package/dist/storage/operator/OneOrMorePath.js.map +0 -1
  208. package/dist/storage/operator/Or.d.ts +0 -4
  209. package/dist/storage/operator/Or.d.ts.map +0 -1
  210. package/dist/storage/operator/Or.js +0 -13
  211. package/dist/storage/operator/Or.js.map +0 -1
  212. package/dist/storage/operator/Sequence.d.ts +0 -3
  213. package/dist/storage/operator/Sequence.d.ts.map +0 -1
  214. package/dist/storage/operator/Sequence.js +0 -13
  215. package/dist/storage/operator/Sequence.js.map +0 -1
  216. package/dist/storage/operator/SequencePath.d.ts +0 -7
  217. package/dist/storage/operator/SequencePath.d.ts.map +0 -1
  218. package/dist/storage/operator/SequencePath.js +0 -13
  219. package/dist/storage/operator/SequencePath.js.map +0 -1
  220. package/dist/storage/operator/ZeroOrMorePath.d.ts +0 -7
  221. package/dist/storage/operator/ZeroOrMorePath.d.ts.map +0 -1
  222. package/dist/storage/operator/ZeroOrMorePath.js +0 -13
  223. package/dist/storage/operator/ZeroOrMorePath.js.map +0 -1
  224. package/dist/storage/query-adapter/QueryAdapter.d.ts +0 -99
  225. package/dist/storage/query-adapter/QueryAdapter.d.ts.map +0 -1
  226. package/dist/storage/query-adapter/QueryAdapter.js +0 -3
  227. package/dist/storage/query-adapter/QueryAdapter.js.map +0 -1
  228. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts +0 -40
  229. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +0 -1
  230. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +0 -315
  231. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +0 -1
  232. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts +0 -34
  233. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts.map +0 -1
  234. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js +0 -3
  235. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js.map +0 -1
  236. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +0 -104
  237. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +0 -1
  238. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +0 -1210
  239. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +0 -1
  240. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts +0 -41
  241. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts.map +0 -1
  242. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js +0 -305
  243. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js.map +0 -1
  244. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts +0 -5
  245. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts.map +0 -1
  246. package/dist/storage/query-adapter/sparql/VariableGenerator.js +0 -14
  247. package/dist/storage/query-adapter/sparql/VariableGenerator.js.map +0 -1
  248. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts +0 -19
  249. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts.map +0 -1
  250. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js +0 -90
  251. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js.map +0 -1
  252. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts +0 -27
  253. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts.map +0 -1
  254. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js +0 -116
  255. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js.map +0 -1
  256. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts +0 -34
  257. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts.map +0 -1
  258. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js +0 -3
  259. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js.map +0 -1
  260. package/dist/tools/explain-findall-sparql.d.ts +0 -2
  261. package/dist/tools/explain-findall-sparql.d.ts.map +0 -1
  262. package/dist/tools/explain-findall-sparql.js +0 -303
  263. package/dist/tools/explain-findall-sparql.js.map +0 -1
  264. package/dist/util/PerformanceLogger.d.ts +0 -28
  265. package/dist/util/PerformanceLogger.d.ts.map +0 -1
  266. package/dist/util/PerformanceLogger.js +0 -223
  267. package/dist/util/PerformanceLogger.js.map +0 -1
  268. package/dist/util/ReadCacheHelper.d.ts +0 -14
  269. package/dist/util/ReadCacheHelper.d.ts.map +0 -1
  270. package/dist/util/ReadCacheHelper.js +0 -61
  271. package/dist/util/ReadCacheHelper.js.map +0 -1
  272. package/dist/util/SparqlUtil.d.ts +0 -72
  273. package/dist/util/SparqlUtil.d.ts.map +0 -1
  274. package/dist/util/SparqlUtil.js +0 -456
  275. package/dist/util/SparqlUtil.js.map +0 -1
  276. package/dist/util/TripleUtil.d.ts +0 -10
  277. package/dist/util/TripleUtil.d.ts.map +0 -1
  278. package/dist/util/TripleUtil.js +0 -402
  279. package/dist/util/TripleUtil.js.map +0 -1
  280. package/dist/util/Types.d.ts +0 -271
  281. package/dist/util/Types.d.ts.map +0 -1
  282. package/dist/util/Types.js +0 -3
  283. package/dist/util/Types.js.map +0 -1
  284. package/dist/util/Util.d.ts +0 -26
  285. package/dist/util/Util.d.ts.map +0 -1
  286. package/dist/util/Util.js +0 -138
  287. package/dist/util/Util.js.map +0 -1
  288. package/dist/util/Vocabularies/Shared.d.ts +0 -13
  289. package/dist/util/Vocabularies/Shared.d.ts.map +0 -1
  290. package/dist/util/Vocabularies/Shared.js +0 -96
  291. package/dist/util/Vocabularies/Shared.js.map +0 -1
  292. package/dist/util/Vocabularies/helper.d.ts +0 -5
  293. package/dist/util/Vocabularies/helper.d.ts.map +0 -1
  294. package/dist/util/Vocabularies/helper.js +0 -10
  295. package/dist/util/Vocabularies/helper.js.map +0 -1
  296. package/dist/util/Vocabularies/index.d.ts +0 -8
  297. package/dist/util/Vocabularies/index.d.ts.map +0 -1
  298. package/dist/util/Vocabularies/index.js +0 -114
  299. package/dist/util/Vocabularies/index.js.map +0 -1
  300. package/dist/util/safeJsonStringify.d.ts +0 -1
  301. package/dist/util/safeJsonStringify.d.ts.map +0 -1
  302. package/dist/util/safeJsonStringify.js +0 -19
  303. 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"}