@comake/skl-js-engine 1.5.4 → 1.5.5

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/dist/JsExecutor/PermissionBuilder.d.ts +14 -0
  2. package/dist/JsExecutor/PermissionBuilder.d.ts.map +1 -0
  3. package/dist/JsExecutor/PermissionBuilder.js +58 -0
  4. package/dist/JsExecutor/PermissionBuilder.js.map +1 -0
  5. package/dist/JsExecutor/constants.d.ts +27 -0
  6. package/dist/JsExecutor/constants.d.ts.map +1 -0
  7. package/dist/JsExecutor/constants.js +30 -0
  8. package/dist/JsExecutor/constants.js.map +1 -0
  9. package/dist/JsExecutor/denoUtils.d.ts +10 -0
  10. package/dist/JsExecutor/denoUtils.d.ts.map +1 -0
  11. package/dist/JsExecutor/denoUtils.js +24 -0
  12. package/dist/JsExecutor/denoUtils.js.map +1 -0
  13. package/dist/JsExecutor/errors.d.ts +40 -0
  14. package/dist/JsExecutor/errors.d.ts.map +1 -0
  15. package/dist/JsExecutor/errors.js +67 -0
  16. package/dist/JsExecutor/errors.js.map +1 -0
  17. package/dist/JsExecutor/examples/basic/index.d.ts +1 -0
  18. package/dist/JsExecutor/examples/basic/index.d.ts.map +1 -0
  19. package/dist/JsExecutor/examples/basic/index.js +46 -0
  20. package/dist/JsExecutor/examples/basic/index.js.map +1 -0
  21. package/dist/JsExecutor/examples/basic/process.d.ts +1 -0
  22. package/dist/JsExecutor/examples/basic/process.d.ts.map +1 -0
  23. package/dist/JsExecutor/examples/basic/process.js +34 -0
  24. package/dist/JsExecutor/examples/basic/process.js.map +1 -0
  25. package/dist/JsExecutor/examples/jsExecutor/index.d.ts +2 -0
  26. package/dist/JsExecutor/examples/jsExecutor/index.d.ts.map +1 -0
  27. package/dist/JsExecutor/examples/jsExecutor/index.js +47 -0
  28. package/dist/JsExecutor/examples/jsExecutor/index.js.map +1 -0
  29. package/dist/JsExecutor/examples/jsExecutor/process.d.ts +2 -0
  30. package/dist/JsExecutor/examples/jsExecutor/process.d.ts.map +1 -0
  31. package/dist/JsExecutor/examples/jsExecutor/process.js +58 -0
  32. package/dist/JsExecutor/examples/jsExecutor/process.js.map +1 -0
  33. package/dist/JsExecutor/index.d.ts +7 -0
  34. package/dist/JsExecutor/index.d.ts.map +1 -0
  35. package/dist/JsExecutor/index.js +36 -0
  36. package/dist/JsExecutor/index.js.map +1 -0
  37. package/dist/JsExecutor/jsExecutor.d.ts +68 -0
  38. package/dist/JsExecutor/jsExecutor.d.ts.map +1 -0
  39. package/dist/JsExecutor/jsExecutor.js +171 -0
  40. package/dist/JsExecutor/jsExecutor.js.map +1 -0
  41. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts +165 -0
  42. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts.map +1 -0
  43. package/dist/JsExecutor/jsonRpc/JsonRpcClient.js +335 -0
  44. package/dist/JsExecutor/jsonRpc/JsonRpcClient.js.map +1 -0
  45. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts +125 -0
  46. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts.map +1 -0
  47. package/dist/JsExecutor/jsonRpc/JsonRpcServer.js +391 -0
  48. package/dist/JsExecutor/jsonRpc/JsonRpcServer.js.map +1 -0
  49. package/dist/JsExecutor/jsonRpc/index.d.ts +4 -0
  50. package/dist/JsExecutor/jsonRpc/index.d.ts.map +1 -0
  51. package/dist/JsExecutor/jsonRpc/index.js +23 -0
  52. package/dist/JsExecutor/jsonRpc/index.js.map +1 -0
  53. package/dist/JsExecutor/jsonRpc/types.d.ts +193 -0
  54. package/dist/JsExecutor/jsonRpc/types.d.ts.map +1 -0
  55. package/dist/JsExecutor/jsonRpc/types.js +37 -0
  56. package/dist/JsExecutor/jsonRpc/types.js.map +1 -0
  57. package/dist/JsExecutor/transport/Transport.d.ts +74 -0
  58. package/dist/JsExecutor/transport/Transport.d.ts.map +1 -0
  59. package/dist/JsExecutor/transport/Transport.js +14 -0
  60. package/dist/JsExecutor/transport/Transport.js.map +1 -0
  61. package/dist/JsExecutor/transport/base/BaseTransport.d.ts +51 -0
  62. package/dist/JsExecutor/transport/base/BaseTransport.d.ts.map +1 -0
  63. package/dist/JsExecutor/transport/base/BaseTransport.js +68 -0
  64. package/dist/JsExecutor/transport/base/BaseTransport.js.map +1 -0
  65. package/dist/JsExecutor/transport/index.d.ts +13 -0
  66. package/dist/JsExecutor/transport/index.d.ts.map +1 -0
  67. package/dist/JsExecutor/transport/index.js +36 -0
  68. package/dist/JsExecutor/transport/index.js.map +1 -0
  69. package/dist/JsExecutor/transport/process/ProcessManager.d.ts +96 -0
  70. package/dist/JsExecutor/transport/process/ProcessManager.d.ts.map +1 -0
  71. package/dist/JsExecutor/transport/process/ProcessManager.js +219 -0
  72. package/dist/JsExecutor/transport/process/ProcessManager.js.map +1 -0
  73. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts +87 -0
  74. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts.map +1 -0
  75. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js +219 -0
  76. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js.map +1 -0
  77. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts +81 -0
  78. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts.map +1 -0
  79. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js +259 -0
  80. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js.map +1 -0
  81. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts +68 -0
  82. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts.map +1 -0
  83. package/dist/JsExecutor/transport/utils/MessageUtils.js +135 -0
  84. package/dist/JsExecutor/transport/utils/MessageUtils.js.map +1 -0
  85. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts +53 -0
  86. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts.map +1 -0
  87. package/dist/JsExecutor/transport/utils/PollingUtils.js +92 -0
  88. package/dist/JsExecutor/transport/utils/PollingUtils.js.map +1 -0
  89. package/dist/JsExecutor/types.d.ts +113 -0
  90. package/dist/JsExecutor/types.d.ts.map +1 -0
  91. package/dist/JsExecutor/types.js +3 -0
  92. package/dist/JsExecutor/types.js.map +1 -0
  93. package/dist/SklEngine.d.ts +132 -0
  94. package/dist/SklEngine.d.ts.map +1 -0
  95. package/dist/SklEngine.js +1508 -0
  96. package/dist/SklEngine.js.map +1 -0
  97. package/dist/SklEngineOptions.d.ts +58 -0
  98. package/dist/SklEngineOptions.d.ts.map +1 -0
  99. package/dist/SklEngineOptions.js +3 -0
  100. package/dist/SklEngineOptions.js.map +1 -0
  101. package/dist/constants.d.ts +96 -0
  102. package/dist/constants.d.ts.map +1 -0
  103. package/dist/constants.js +103 -0
  104. package/dist/constants.js.map +1 -0
  105. package/dist/customCapabilities.d.ts +22 -0
  106. package/dist/customCapabilities.d.ts.map +1 -0
  107. package/dist/customCapabilities.js +45 -0
  108. package/dist/customCapabilities.js.map +1 -0
  109. package/dist/examples/customCapabilitiesExample.d.ts +2 -0
  110. package/dist/examples/customCapabilitiesExample.d.ts.map +1 -0
  111. package/dist/examples/customCapabilitiesExample.js +59 -0
  112. package/dist/examples/customCapabilitiesExample.js.map +1 -0
  113. package/dist/executor.js +216 -0
  114. package/dist/hooks/globalHooks.d.ts +50 -0
  115. package/dist/hooks/globalHooks.d.ts.map +1 -0
  116. package/dist/hooks/globalHooks.js +164 -0
  117. package/dist/hooks/globalHooks.js.map +1 -0
  118. package/dist/hooks/types.d.ts +9 -0
  119. package/dist/hooks/types.d.ts.map +1 -0
  120. package/dist/hooks/types.js +3 -0
  121. package/dist/hooks/types.js.map +1 -0
  122. package/dist/index.d.ts +41 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +68 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/logger.d.ts +35 -0
  127. package/dist/logger.d.ts.map +1 -0
  128. package/dist/logger.js +119 -0
  129. package/dist/logger.js.map +1 -0
  130. package/dist/mapping/Mapper.d.ts +13 -0
  131. package/dist/mapping/Mapper.d.ts.map +1 -0
  132. package/dist/mapping/Mapper.js +64 -0
  133. package/dist/mapping/Mapper.js.map +1 -0
  134. package/dist/storage/FindOperator.d.ts +19 -0
  135. package/dist/storage/FindOperator.d.ts.map +1 -0
  136. package/dist/storage/FindOperator.js +23 -0
  137. package/dist/storage/FindOperator.js.map +1 -0
  138. package/dist/storage/FindOptionsTypes.d.ts +79 -0
  139. package/dist/storage/FindOptionsTypes.d.ts.map +1 -0
  140. package/dist/storage/FindOptionsTypes.js +3 -0
  141. package/dist/storage/FindOptionsTypes.js.map +1 -0
  142. package/dist/storage/GroupOptionTypes.d.ts +29 -0
  143. package/dist/storage/GroupOptionTypes.d.ts.map +1 -0
  144. package/dist/storage/GroupOptionTypes.js +3 -0
  145. package/dist/storage/GroupOptionTypes.js.map +1 -0
  146. package/dist/storage/operator/And.d.ts +4 -0
  147. package/dist/storage/operator/And.d.ts.map +1 -0
  148. package/dist/storage/operator/And.js +13 -0
  149. package/dist/storage/operator/And.js.map +1 -0
  150. package/dist/storage/operator/Contains.d.ts +3 -0
  151. package/dist/storage/operator/Contains.d.ts.map +1 -0
  152. package/dist/storage/operator/Contains.js +13 -0
  153. package/dist/storage/operator/Contains.js.map +1 -0
  154. package/dist/storage/operator/Equal.d.ts +5 -0
  155. package/dist/storage/operator/Equal.d.ts.map +1 -0
  156. package/dist/storage/operator/Equal.js +13 -0
  157. package/dist/storage/operator/Equal.js.map +1 -0
  158. package/dist/storage/operator/Exists.d.ts +3 -0
  159. package/dist/storage/operator/Exists.d.ts.map +1 -0
  160. package/dist/storage/operator/Exists.js +10 -0
  161. package/dist/storage/operator/Exists.js.map +1 -0
  162. package/dist/storage/operator/GreaterThan.d.ts +4 -0
  163. package/dist/storage/operator/GreaterThan.d.ts.map +1 -0
  164. package/dist/storage/operator/GreaterThan.js +13 -0
  165. package/dist/storage/operator/GreaterThan.js.map +1 -0
  166. package/dist/storage/operator/GreaterThanOrEqual.d.ts +4 -0
  167. package/dist/storage/operator/GreaterThanOrEqual.d.ts.map +1 -0
  168. package/dist/storage/operator/GreaterThanOrEqual.js +13 -0
  169. package/dist/storage/operator/GreaterThanOrEqual.js.map +1 -0
  170. package/dist/storage/operator/In.d.ts +4 -0
  171. package/dist/storage/operator/In.d.ts.map +1 -0
  172. package/dist/storage/operator/In.js +13 -0
  173. package/dist/storage/operator/In.js.map +1 -0
  174. package/dist/storage/operator/Inverse.d.ts +3 -0
  175. package/dist/storage/operator/Inverse.d.ts.map +1 -0
  176. package/dist/storage/operator/Inverse.js +13 -0
  177. package/dist/storage/operator/Inverse.js.map +1 -0
  178. package/dist/storage/operator/InversePath.d.ts +7 -0
  179. package/dist/storage/operator/InversePath.d.ts.map +1 -0
  180. package/dist/storage/operator/InversePath.js +13 -0
  181. package/dist/storage/operator/InversePath.js.map +1 -0
  182. package/dist/storage/operator/InverseRelation.d.ts +9 -0
  183. package/dist/storage/operator/InverseRelation.d.ts.map +1 -0
  184. package/dist/storage/operator/InverseRelation.js +13 -0
  185. package/dist/storage/operator/InverseRelation.js.map +1 -0
  186. package/dist/storage/operator/InverseRelationOrder.d.ts +8 -0
  187. package/dist/storage/operator/InverseRelationOrder.d.ts.map +1 -0
  188. package/dist/storage/operator/InverseRelationOrder.js +13 -0
  189. package/dist/storage/operator/InverseRelationOrder.js.map +1 -0
  190. package/dist/storage/operator/LessThan.d.ts +4 -0
  191. package/dist/storage/operator/LessThan.d.ts.map +1 -0
  192. package/dist/storage/operator/LessThan.js +13 -0
  193. package/dist/storage/operator/LessThan.js.map +1 -0
  194. package/dist/storage/operator/LessThanOrEqual.d.ts +4 -0
  195. package/dist/storage/operator/LessThanOrEqual.d.ts.map +1 -0
  196. package/dist/storage/operator/LessThanOrEqual.js +13 -0
  197. package/dist/storage/operator/LessThanOrEqual.js.map +1 -0
  198. package/dist/storage/operator/Not.d.ts +3 -0
  199. package/dist/storage/operator/Not.d.ts.map +1 -0
  200. package/dist/storage/operator/Not.js +13 -0
  201. package/dist/storage/operator/Not.js.map +1 -0
  202. package/dist/storage/operator/OneOrMorePath.d.ts +7 -0
  203. package/dist/storage/operator/OneOrMorePath.d.ts.map +1 -0
  204. package/dist/storage/operator/OneOrMorePath.js +13 -0
  205. package/dist/storage/operator/OneOrMorePath.js.map +1 -0
  206. package/dist/storage/operator/Or.d.ts +4 -0
  207. package/dist/storage/operator/Or.d.ts.map +1 -0
  208. package/dist/storage/operator/Or.js +13 -0
  209. package/dist/storage/operator/Or.js.map +1 -0
  210. package/dist/storage/operator/Sequence.d.ts +3 -0
  211. package/dist/storage/operator/Sequence.d.ts.map +1 -0
  212. package/dist/storage/operator/Sequence.js +13 -0
  213. package/dist/storage/operator/Sequence.js.map +1 -0
  214. package/dist/storage/operator/SequencePath.d.ts +7 -0
  215. package/dist/storage/operator/SequencePath.d.ts.map +1 -0
  216. package/dist/storage/operator/SequencePath.js +13 -0
  217. package/dist/storage/operator/SequencePath.js.map +1 -0
  218. package/dist/storage/operator/ZeroOrMorePath.d.ts +7 -0
  219. package/dist/storage/operator/ZeroOrMorePath.d.ts.map +1 -0
  220. package/dist/storage/operator/ZeroOrMorePath.js +13 -0
  221. package/dist/storage/operator/ZeroOrMorePath.js.map +1 -0
  222. package/dist/storage/query-adapter/QueryAdapter.d.ts +99 -0
  223. package/dist/storage/query-adapter/QueryAdapter.d.ts.map +1 -0
  224. package/dist/storage/query-adapter/QueryAdapter.js +3 -0
  225. package/dist/storage/query-adapter/QueryAdapter.js.map +1 -0
  226. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts +40 -0
  227. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +1 -0
  228. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +315 -0
  229. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +1 -0
  230. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts +34 -0
  231. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts.map +1 -0
  232. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js +3 -0
  233. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js.map +1 -0
  234. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +104 -0
  235. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +1 -0
  236. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +1210 -0
  237. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +1 -0
  238. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts +44 -0
  239. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts.map +1 -0
  240. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js +397 -0
  241. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js.map +1 -0
  242. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts +5 -0
  243. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts.map +1 -0
  244. package/dist/storage/query-adapter/sparql/VariableGenerator.js +14 -0
  245. package/dist/storage/query-adapter/sparql/VariableGenerator.js.map +1 -0
  246. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts +19 -0
  247. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts.map +1 -0
  248. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js +90 -0
  249. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js.map +1 -0
  250. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts +27 -0
  251. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts.map +1 -0
  252. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js +116 -0
  253. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js.map +1 -0
  254. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts +34 -0
  255. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts.map +1 -0
  256. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js +3 -0
  257. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js.map +1 -0
  258. package/dist/tools/explain-findall-sparql.d.ts +2 -0
  259. package/dist/tools/explain-findall-sparql.d.ts.map +1 -0
  260. package/dist/tools/explain-findall-sparql.js +303 -0
  261. package/dist/tools/explain-findall-sparql.js.map +1 -0
  262. package/dist/util/PerformanceLogger.d.ts +28 -0
  263. package/dist/util/PerformanceLogger.d.ts.map +1 -0
  264. package/dist/util/PerformanceLogger.js +223 -0
  265. package/dist/util/PerformanceLogger.js.map +1 -0
  266. package/dist/util/ReadCacheHelper.d.ts +14 -0
  267. package/dist/util/ReadCacheHelper.d.ts.map +1 -0
  268. package/dist/util/ReadCacheHelper.js +61 -0
  269. package/dist/util/ReadCacheHelper.js.map +1 -0
  270. package/dist/util/SparqlUtil.d.ts +72 -0
  271. package/dist/util/SparqlUtil.d.ts.map +1 -0
  272. package/dist/util/SparqlUtil.js +456 -0
  273. package/dist/util/SparqlUtil.js.map +1 -0
  274. package/dist/util/TripleUtil.d.ts +10 -0
  275. package/dist/util/TripleUtil.d.ts.map +1 -0
  276. package/dist/util/TripleUtil.js +414 -0
  277. package/dist/util/TripleUtil.js.map +1 -0
  278. package/dist/util/Types.d.ts +271 -0
  279. package/dist/util/Types.d.ts.map +1 -0
  280. package/dist/util/Types.js +3 -0
  281. package/dist/util/Types.js.map +1 -0
  282. package/dist/util/Util.d.ts +26 -0
  283. package/dist/util/Util.d.ts.map +1 -0
  284. package/dist/util/Util.js +138 -0
  285. package/dist/util/Util.js.map +1 -0
  286. package/dist/util/Vocabularies/Shared.d.ts +13 -0
  287. package/dist/util/Vocabularies/Shared.d.ts.map +1 -0
  288. package/dist/util/Vocabularies/Shared.js +96 -0
  289. package/dist/util/Vocabularies/Shared.js.map +1 -0
  290. package/dist/util/Vocabularies/helper.d.ts +5 -0
  291. package/dist/util/Vocabularies/helper.d.ts.map +1 -0
  292. package/dist/util/Vocabularies/helper.js +10 -0
  293. package/dist/util/Vocabularies/helper.js.map +1 -0
  294. package/dist/util/Vocabularies/index.d.ts +8 -0
  295. package/dist/util/Vocabularies/index.d.ts.map +1 -0
  296. package/dist/util/Vocabularies/index.js +114 -0
  297. package/dist/util/Vocabularies/index.js.map +1 -0
  298. package/dist/util/safeJsonStringify.d.ts +1 -0
  299. package/dist/util/safeJsonStringify.d.ts.map +1 -0
  300. package/dist/util/safeJsonStringify.js +19 -0
  301. package/dist/util/safeJsonStringify.js.map +1 -0
  302. package/package.json +1 -1
  303. package/src/storage/query-adapter/sparql/SparqlUpdateBuilder.ts +106 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/JsExecutor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,sBAAsB;AACtB,YAAY;AACZ,yCAA6E;AAApE,sHAAA,yBAAyB,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AACvD,gBAAgB;AAChB,mCAA4G;AAAnG,4GAAA,kBAAkB,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AACzF,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,yCAAyC;AACzC,yDAAqF;AAA5E,yHAAA,oBAAoB,OAAA;AAAE,6HAAA,wBAAwB,OAAA;AACvD,8CAA4B","sourcesContent":["// Main executor class\n// Constants\nexport { DEFAULT_EXECUTION_OPTIONS, EXECUTION_CONSTANTS } from './constants';\n// Error classes\nexport { CodeExecutionError, ExecutionTimeoutError, OutputParsingError, ProcessSpawnError } from './errors';\nexport { JSExecutor } from './jsExecutor';\n// Utility functions (for advanced usage)\nexport { buildDenoPermissions, validatePermissionConfig } from './PermissionBuilder';\nexport * from './transport';\n// Types and interfaces\nexport type {\n ExecutionOptions,\n ExecutionResult,\n ExecutorInput,\n ExecutorOutput,\n PermissionConfig,\n ProcessCommunicationData\n} from './types';\n\n"]}
@@ -0,0 +1,68 @@
1
+ import type { TransportConfig } from './transport';
2
+ import type { ExecutionOptions, IShutdownOptions } from './types';
3
+ export declare type IJSCallbacks = Record<string, (...args: any[]) => any>;
4
+ /**
5
+ * JSExecutor V2 with enhanced abort control for immediate shutdown
6
+ *
7
+ * @example Writing abort-aware callbacks:
8
+ * ```typescript
9
+ * const jsExecutor = new JSExecutorV2(scriptPath, {
10
+ * async myCallback(): Promise<string> {
11
+ * return new Promise((resolve, reject) => {
12
+ * const timeoutId = setTimeout(() => resolve('done'), 5000);
13
+ *
14
+ * // Listen to the global abort signal to clean up resources
15
+ * const abortSignal = JSExecutorV2.getGlobalAbortSignal();
16
+ * const onAbort = () => {
17
+ * clearTimeout(timeoutId);
18
+ * reject(new Error('Operation aborted'));
19
+ * };
20
+ *
21
+ * if (abortSignal.aborted) {
22
+ * onAbort();
23
+ * return;
24
+ * }
25
+ *
26
+ * abortSignal.addEventListener('abort', onAbort);
27
+ * });
28
+ * }
29
+ * });
30
+ * ```
31
+ */
32
+ export declare class JSExecutor {
33
+ private readonly executorScriptPath;
34
+ private readonly callbacks;
35
+ private isInitialized;
36
+ private server?;
37
+ private transport?;
38
+ private readonly abortController;
39
+ private static readonly globalAbortController;
40
+ private shutdownTimeout?;
41
+ constructor(executorScriptPath: string, callbacks: Record<string, (...args: any[]) => any>);
42
+ /**
43
+ * Static method to check if any JSExecutor instance is being shut down
44
+ * Callbacks can use this to check if they should abort their operations
45
+ */
46
+ static isShuttingDown(): boolean;
47
+ /**
48
+ * Get the global abort signal that callbacks can listen to
49
+ * This allows callbacks to immediately abort when any JSExecutor shuts down
50
+ */
51
+ static getGlobalAbortSignal(): AbortSignal;
52
+ initialize(config?: TransportConfig, executionOptions?: ExecutionOptions): Promise<void>;
53
+ shutdown(options?: IShutdownOptions): Promise<void>;
54
+ private shutdownCore;
55
+ private rpcComplaintCallback;
56
+ /**
57
+ * Wrap a callback with abort functionality
58
+ * The callback will be automatically aborted if JSExecutor is shut down
59
+ */
60
+ private wrapCallbackWithAbort;
61
+ execute(code: string, args: Record<string, any>, executionOptions: ExecutionOptions): Promise<any>;
62
+ /**
63
+ * Legacy method for backward compatibility
64
+ * @deprecated Use execute() instead
65
+ */
66
+ call(methodName: string, ...args: any[]): Promise<any>;
67
+ }
68
+ //# sourceMappingURL=jsExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsExecutor.d.ts","sourceRoot":"","sources":["../../src/JsExecutor/jsExecutor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAElE,oBAAY,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,UAAU;IASnB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAT5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAyB;IACtE,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAGtB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAGrE;;;OAGG;WACW,cAAc,IAAI,OAAO;IAIvC;;;OAGG;WACW,oBAAoB,IAAI,WAAW;IAIpC,UAAU,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBxF,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAgBlD,YAAY;YAgBZ,oBAAoB;IAMlC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAqChB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwB/G;;;OAGG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CAMpE"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
3
+ /* eslint-disable callback-return */
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.JSExecutor = void 0;
6
+ const errors_1 = require("./errors");
7
+ const transport_1 = require("./transport");
8
+ /**
9
+ * JSExecutor V2 with enhanced abort control for immediate shutdown
10
+ *
11
+ * @example Writing abort-aware callbacks:
12
+ * ```typescript
13
+ * const jsExecutor = new JSExecutorV2(scriptPath, {
14
+ * async myCallback(): Promise<string> {
15
+ * return new Promise((resolve, reject) => {
16
+ * const timeoutId = setTimeout(() => resolve('done'), 5000);
17
+ *
18
+ * // Listen to the global abort signal to clean up resources
19
+ * const abortSignal = JSExecutorV2.getGlobalAbortSignal();
20
+ * const onAbort = () => {
21
+ * clearTimeout(timeoutId);
22
+ * reject(new Error('Operation aborted'));
23
+ * };
24
+ *
25
+ * if (abortSignal.aborted) {
26
+ * onAbort();
27
+ * return;
28
+ * }
29
+ *
30
+ * abortSignal.addEventListener('abort', onAbort);
31
+ * });
32
+ * }
33
+ * });
34
+ * ```
35
+ */
36
+ class JSExecutor {
37
+ constructor(executorScriptPath, callbacks) {
38
+ this.executorScriptPath = executorScriptPath;
39
+ this.callbacks = callbacks;
40
+ this.isInitialized = false;
41
+ this.abortController = new AbortController();
42
+ }
43
+ /**
44
+ * Static method to check if any JSExecutor instance is being shut down
45
+ * Callbacks can use this to check if they should abort their operations
46
+ */
47
+ static isShuttingDown() {
48
+ return JSExecutor.globalAbortController.signal.aborted;
49
+ }
50
+ /**
51
+ * Get the global abort signal that callbacks can listen to
52
+ * This allows callbacks to immediately abort when any JSExecutor shuts down
53
+ */
54
+ static getGlobalAbortSignal() {
55
+ return JSExecutor.globalAbortController.signal;
56
+ }
57
+ async initialize(config, executionOptions) {
58
+ if (this.isInitialized) {
59
+ return;
60
+ }
61
+ this.server = new transport_1.JsonRpcServer({
62
+ // 1 hour
63
+ requestTimeout: 60 * 60 * 1000
64
+ });
65
+ // Register callbacks with the server
66
+ Object.entries(this.callbacks).forEach(([methodName, callback]) => {
67
+ this.server.registerMethod(methodName, this.wrapCallbackWithAbort(callback));
68
+ });
69
+ // Create and initialize the transport once
70
+ this.transport = new transport_1.ParentStdioTransport(this.executorScriptPath, this.server);
71
+ await this.transport.initialize(config, executionOptions);
72
+ this.isInitialized = true;
73
+ }
74
+ async shutdown(options) {
75
+ // Clear any existing shutdown timeout
76
+ if (this.shutdownTimeout) {
77
+ clearTimeout(this.shutdownTimeout);
78
+ this.shutdownTimeout = undefined;
79
+ }
80
+ if (options?.afterTimeout) {
81
+ this.shutdownTimeout = setTimeout(async () => {
82
+ await this.shutdownCore();
83
+ }, options.afterTimeout);
84
+ }
85
+ else {
86
+ await this.shutdownCore();
87
+ }
88
+ }
89
+ async shutdownCore() {
90
+ // // Signal global abort first
91
+ // JSExecutor.globalAbortController.abort();
92
+ // Then signal this instance's abort
93
+ this.abortController.abort();
94
+ if (this.transport) {
95
+ await this.transport.close();
96
+ this.transport = undefined;
97
+ }
98
+ this.isInitialized = false;
99
+ this.server = undefined;
100
+ }
101
+ async rpcComplaintCallback(callback, args) {
102
+ const result = await callback(...args);
103
+ // RPC expects a result object
104
+ return result ?? {};
105
+ }
106
+ /**
107
+ * Wrap a callback with abort functionality
108
+ * The callback will be automatically aborted if JSExecutor is shut down
109
+ */
110
+ wrapCallbackWithAbort(callback) {
111
+ return ((...args) => {
112
+ // Check if we're shutting down before executing
113
+ if (this.abortController.signal.aborted || JSExecutor.globalAbortController.signal.aborted) {
114
+ return Promise.reject(new Error('JSExecutor is shutting down'));
115
+ }
116
+ const callbackPromise = Promise.resolve(this.rpcComplaintCallback(callback, args));
117
+ const instanceAbortSignal = this.abortController.signal;
118
+ const globalAbortSignal = JSExecutor.globalAbortController.signal;
119
+ let onAbort;
120
+ // Create an abort promise
121
+ const abortPromise = new Promise((_, reject) => {
122
+ onAbort = () => {
123
+ reject(new Error('JSExecutor is shutting down'));
124
+ };
125
+ // Listen to both instance and global abort signals
126
+ // NOTE: `{ once: true }` removes listeners only if abort fires. In normal request flow,
127
+ // abort rarely happens, so these listeners would otherwise accumulate per-call.
128
+ instanceAbortSignal.addEventListener('abort', onAbort, { once: true });
129
+ globalAbortSignal.addEventListener('abort', onAbort, { once: true });
130
+ });
131
+ // Race the callback against the abort signal
132
+ return Promise.race([callbackPromise, abortPromise]).finally(() => {
133
+ // If the callback completes, remove abort listeners to prevent a listener leak.
134
+ if (onAbort) {
135
+ instanceAbortSignal.removeEventListener('abort', onAbort);
136
+ globalAbortSignal.removeEventListener('abort', onAbort);
137
+ }
138
+ });
139
+ });
140
+ }
141
+ async execute(code, args, executionOptions) {
142
+ if (!this.isInitialized) {
143
+ throw new errors_1.NotInitializedError('JSExecutor is not initialized, please call initialize() first');
144
+ }
145
+ if (!this.transport || !this.transport.isReady()) {
146
+ throw new Error('Transport is not ready');
147
+ }
148
+ const response = await this.transport.request(transport_1.STANDARD_METHODS.executeCode, {
149
+ code,
150
+ args,
151
+ functionName: executionOptions.functionName
152
+ }, {
153
+ timeout: executionOptions.timeout,
154
+ retries: executionOptions.retries ?? 0
155
+ });
156
+ return response;
157
+ }
158
+ /**
159
+ * Legacy method for backward compatibility
160
+ * @deprecated Use execute() instead
161
+ */
162
+ async call(methodName, ...args) {
163
+ if (!this.transport || !this.transport.isReady()) {
164
+ throw new Error('Transport is not ready');
165
+ }
166
+ return this.transport.request(methodName, args);
167
+ }
168
+ }
169
+ exports.JSExecutor = JSExecutor;
170
+ JSExecutor.globalAbortController = new AbortController();
171
+ //# sourceMappingURL=jsExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsExecutor.js","sourceRoot":"","sources":["../../src/JsExecutor/jsExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable callback-return */\n\n \n\nimport { NotInitializedError } from './errors';\nimport type { TransportConfig } from './transport';\nimport { JsonRpcServer, ParentStdioTransport, STANDARD_METHODS } from './transport';\nimport type { ExecutionOptions, IShutdownOptions } from './types';\n\nexport type IJSCallbacks = Record<string, (...args: any[]) => any>;\n\n/**\n * JSExecutor V2 with enhanced abort control for immediate shutdown\n *\n * @example Writing abort-aware callbacks:\n * ```typescript\n * const jsExecutor = new JSExecutorV2(scriptPath, {\n * async myCallback(): Promise<string> {\n * return new Promise((resolve, reject) => {\n * const timeoutId = setTimeout(() => resolve('done'), 5000);\n *\n * // Listen to the global abort signal to clean up resources\n * const abortSignal = JSExecutorV2.getGlobalAbortSignal();\n * const onAbort = () => {\n * clearTimeout(timeoutId);\n * reject(new Error('Operation aborted'));\n * };\n *\n * if (abortSignal.aborted) {\n * onAbort();\n * return;\n * }\n *\n * abortSignal.addEventListener('abort', onAbort);\n * });\n * }\n * });\n * ```\n */\nexport class JSExecutor {\n private isInitialized = false;\n private server?: JsonRpcServer;\n private transport?: ParentStdioTransport;\n private readonly abortController = new AbortController();\n private static readonly globalAbortController = new AbortController();\n private shutdownTimeout?: NodeJS.Timeout;\n\n public constructor(\n private readonly executorScriptPath: string,\n private readonly callbacks: Record<string, (...args: any[]) => any>\n ) {}\n\n /**\n * Static method to check if any JSExecutor instance is being shut down\n * Callbacks can use this to check if they should abort their operations\n */\n public static isShuttingDown(): boolean {\n return JSExecutor.globalAbortController.signal.aborted;\n }\n\n /**\n * Get the global abort signal that callbacks can listen to\n * This allows callbacks to immediately abort when any JSExecutor shuts down\n */\n public static getGlobalAbortSignal(): AbortSignal {\n return JSExecutor.globalAbortController.signal;\n }\n\n public async initialize(config?: TransportConfig, executionOptions?: ExecutionOptions): Promise<void> {\n if (this.isInitialized) {\n return;\n }\n\n this.server = new JsonRpcServer({\n // 1 hour\n requestTimeout: 60 * 60 * 1000\n });\n\n // Register callbacks with the server\n Object.entries(this.callbacks).forEach(([ methodName, callback ]) => {\n this.server!.registerMethod(methodName, this.wrapCallbackWithAbort(callback));\n });\n\n // Create and initialize the transport once\n this.transport = new ParentStdioTransport(this.executorScriptPath, this.server);\n\n await this.transport.initialize(config, executionOptions);\n\n this.isInitialized = true;\n }\n\n public async shutdown(options?: IShutdownOptions): Promise<void> {\n // Clear any existing shutdown timeout\n if (this.shutdownTimeout) {\n clearTimeout(this.shutdownTimeout);\n this.shutdownTimeout = undefined;\n }\n\n if (options?.afterTimeout) {\n this.shutdownTimeout = setTimeout(async() => {\n await this.shutdownCore();\n }, options.afterTimeout);\n } else {\n await this.shutdownCore();\n }\n }\n\n private async shutdownCore(): Promise<void> {\n // // Signal global abort first\n // JSExecutor.globalAbortController.abort();\n\n // Then signal this instance's abort\n this.abortController.abort();\n\n if (this.transport) {\n await this.transport.close();\n this.transport = undefined;\n }\n\n this.isInitialized = false;\n this.server = undefined;\n }\n\n private async rpcComplaintCallback(callback: (...args: any[]) => any, args: any[]): Promise<any> {\n const result = await callback(...args);\n // RPC expects a result object\n return result ?? {};\n }\n\n /**\n * Wrap a callback with abort functionality\n * The callback will be automatically aborted if JSExecutor is shut down\n */\n private wrapCallbackWithAbort<T extends (...args: any[]) => any>(callback: T): T {\n return ((...args: any[]) => {\n // Check if we're shutting down before executing\n if (this.abortController.signal.aborted || JSExecutor.globalAbortController.signal.aborted) {\n return Promise.reject(new Error('JSExecutor is shutting down'));\n }\n\n const callbackPromise = Promise.resolve(this.rpcComplaintCallback(callback, args));\n\n const instanceAbortSignal = this.abortController.signal;\n const globalAbortSignal = JSExecutor.globalAbortController.signal;\n let onAbort: (() => void) | undefined;\n\n // Create an abort promise\n const abortPromise = new Promise((_, reject) => {\n onAbort = (): void => {\n reject(new Error('JSExecutor is shutting down'));\n };\n\n // Listen to both instance and global abort signals\n // NOTE: `{ once: true }` removes listeners only if abort fires. In normal request flow,\n // abort rarely happens, so these listeners would otherwise accumulate per-call.\n instanceAbortSignal.addEventListener('abort', onAbort, { once: true });\n globalAbortSignal.addEventListener('abort', onAbort, { once: true });\n });\n\n // Race the callback against the abort signal\n return Promise.race([ callbackPromise, abortPromise ]).finally(() => {\n // If the callback completes, remove abort listeners to prevent a listener leak.\n if (onAbort) {\n instanceAbortSignal.removeEventListener('abort', onAbort);\n globalAbortSignal.removeEventListener('abort', onAbort);\n }\n });\n }) as T;\n }\n\n public async execute(code: string, args: Record<string, any>, executionOptions: ExecutionOptions): Promise<any> {\n if (!this.isInitialized) {\n throw new NotInitializedError('JSExecutor is not initialized, please call initialize() first');\n }\n\n if (!this.transport || !this.transport.isReady()) {\n throw new Error('Transport is not ready');\n }\n\n const response = await this.transport.request(\n STANDARD_METHODS.executeCode,\n {\n code,\n args,\n functionName: executionOptions.functionName\n },\n {\n timeout: executionOptions.timeout,\n retries: executionOptions.retries ?? 0\n }\n );\n return response;\n }\n\n /**\n * Legacy method for backward compatibility\n * @deprecated Use execute() instead\n */\n public async call(methodName: string, ...args: any[]): Promise<any> {\n if (!this.transport || !this.transport.isReady()) {\n throw new Error('Transport is not ready');\n }\n return this.transport.request(methodName, args);\n }\n}\n"]}
@@ -0,0 +1,165 @@
1
+ import type { JsonRpcClientConfig, JsonRpcId, JsonRpcParams, JsonRpcRequest, JsonRpcResponse } from './types';
2
+ /**
3
+ * Event emitter interface for JSON-RPC client events
4
+ */
5
+ export interface JsonRpcClientEvents {
6
+ request: (request: JsonRpcRequest) => void;
7
+ response: (response: JsonRpcResponse) => void;
8
+ error: (error: Error) => void;
9
+ timeout: (request: JsonRpcRequest) => void;
10
+ }
11
+ /**
12
+ * Transport interface for sending messages
13
+ */
14
+ export interface ClientTransport {
15
+ send: (message: string) => Promise<void>;
16
+ onMessage: (handler: (message: string) => void) => void;
17
+ close: () => Promise<void>;
18
+ }
19
+ /**
20
+ * JSON-RPC 2.0 Client implementation
21
+ */
22
+ export declare class JsonRpcClient {
23
+ private readonly config;
24
+ private readonly pendingRequests;
25
+ private readonly listeners;
26
+ private requestIdCounter;
27
+ private transport?;
28
+ constructor(config?: JsonRpcClientConfig);
29
+ /**
30
+ * Set the transport for sending messages
31
+ * @param transport - Transport implementation
32
+ */
33
+ setTransport(transport: ClientTransport): void;
34
+ /**
35
+ * Send a JSON-RPC request and wait for response
36
+ * @param method - Method name
37
+ * @param params - Method parameters
38
+ * @param options - Request options
39
+ * @returns Promise resolving to the response result
40
+ */
41
+ request<TParams = JsonRpcParams, TResult = any>(method: string, params?: TParams, options?: {
42
+ timeout?: number;
43
+ retries?: number;
44
+ }): Promise<TResult>;
45
+ /**
46
+ * Send a JSON-RPC notification (no response expected)
47
+ * @param method - Method name
48
+ * @param params - Method parameters
49
+ */
50
+ notify<TParams = JsonRpcParams>(method: string, params?: TParams): Promise<void>;
51
+ /**
52
+ * Send a batch of requests
53
+ * @param requests - Array of request specifications
54
+ * @returns Promise resolving to array of results
55
+ */
56
+ batch(requests: {
57
+ method: string;
58
+ params?: any;
59
+ id?: JsonRpcId;
60
+ }[]): Promise<any[]>;
61
+ /**
62
+ * Handle incoming message from transport
63
+ * @param messageData - Raw message data
64
+ */
65
+ handleIncomingMessage(messageData: string): Promise<void>;
66
+ /**
67
+ * Handle a single response message
68
+ * @param response - JSON-RPC response
69
+ */
70
+ private handleResponse;
71
+ /**
72
+ * Send a request with timeout handling
73
+ * @param request - JSON-RPC request
74
+ * @param timeout - Timeout in milliseconds
75
+ * @returns Promise resolving to the result
76
+ */
77
+ private sendRequestWithTimeout;
78
+ /**
79
+ * Create a pending request promise with timeout
80
+ * @param request - JSON-RPC request
81
+ * @param timeout - Timeout in milliseconds
82
+ * @returns Promise resolving to the result
83
+ */
84
+ private createPendingRequest;
85
+ /**
86
+ * Create a JSON-RPC request
87
+ * @param method - Method name
88
+ * @param params - Method parameters
89
+ * @param id - Optional request ID
90
+ * @returns JSON-RPC request object
91
+ */
92
+ private createRequest;
93
+ /**
94
+ * Create a JSON-RPC notification
95
+ * @param method - Method name
96
+ * @param params - Method parameters
97
+ * @returns JSON-RPC notification object
98
+ */
99
+ private createNotification;
100
+ /**
101
+ * Generate a unique request ID
102
+ * @returns Unique request ID
103
+ */
104
+ private generateId;
105
+ /**
106
+ * Check if response is a success response
107
+ * @param response - JSON-RPC response
108
+ * @returns True if success response
109
+ */
110
+ private isSuccessResponse;
111
+ /**
112
+ * Check if an error should not be retried
113
+ * @param error - Error to check
114
+ * @returns True if error should not be retried
115
+ */
116
+ private shouldNotRetry;
117
+ /**
118
+ * Delay execution for specified milliseconds
119
+ * @param ms - Delay in milliseconds
120
+ * @returns Promise that resolves after delay
121
+ */
122
+ private delay;
123
+ /**
124
+ * Register event listener
125
+ * @param event - Event name
126
+ * @param listener - Event listener
127
+ */
128
+ on<TKey extends keyof JsonRpcClientEvents>(event: TKey, listener: JsonRpcClientEvents[TKey]): void;
129
+ /**
130
+ * Remove event listener
131
+ * @param event - Event name
132
+ * @param listener - Event listener
133
+ */
134
+ off<TKey extends keyof JsonRpcClientEvents>(event: TKey, listener: JsonRpcClientEvents[TKey]): void;
135
+ /**
136
+ * Emit event
137
+ * @param event - Event name
138
+ * @param args - Event arguments
139
+ */
140
+ private emit;
141
+ /**
142
+ * Get client statistics
143
+ * @returns Client statistics
144
+ */
145
+ getStats(): {
146
+ pendingRequests: number;
147
+ totalRequests: number;
148
+ config: Required<JsonRpcClientConfig>;
149
+ };
150
+ /**
151
+ * Cancel all pending requests
152
+ */
153
+ cancelAllRequests(): void;
154
+ /**
155
+ * Cancel a specific request
156
+ * @param id - Request ID to cancel
157
+ * @returns True if request was cancelled
158
+ */
159
+ cancelRequest(id: JsonRpcId): boolean;
160
+ /**
161
+ * Close the client and cleanup resources
162
+ */
163
+ close(): Promise<void>;
164
+ }
165
+ //# sourceMappingURL=JsonRpcClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonRpcClient.d.ts","sourceRoot":"","sources":["../../../src/JsExecutor/jsonRpc/JsonRpcClient.ts"],"names":[],"mappings":"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"}