@comake/skl-js-engine 1.3.8 → 1.3.10

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 (297) hide show
  1. package/dist/JsExecutor/PermissionBuilder.d.ts +1 -0
  2. package/dist/JsExecutor/PermissionBuilder.d.ts.map +1 -0
  3. package/dist/JsExecutor/PermissionBuilder.js.map +1 -1
  4. package/dist/JsExecutor/constants.d.ts +1 -0
  5. package/dist/JsExecutor/constants.d.ts.map +1 -0
  6. package/dist/JsExecutor/constants.js.map +1 -1
  7. package/dist/JsExecutor/denoUtils.d.ts +1 -0
  8. package/dist/JsExecutor/denoUtils.d.ts.map +1 -0
  9. package/dist/JsExecutor/denoUtils.js.map +1 -1
  10. package/dist/JsExecutor/errors.d.ts +1 -0
  11. package/dist/JsExecutor/errors.d.ts.map +1 -0
  12. package/dist/JsExecutor/errors.js.map +1 -1
  13. package/dist/JsExecutor/examples/basic/index.d.ts +1 -0
  14. package/dist/JsExecutor/examples/basic/index.d.ts.map +1 -0
  15. package/dist/JsExecutor/examples/basic/index.js.map +1 -1
  16. package/dist/JsExecutor/examples/basic/process.d.ts +1 -0
  17. package/dist/JsExecutor/examples/basic/process.d.ts.map +1 -0
  18. package/dist/JsExecutor/examples/basic/process.js.map +1 -1
  19. package/dist/JsExecutor/examples/jsExecutor/index.d.ts +1 -0
  20. package/dist/JsExecutor/examples/jsExecutor/index.d.ts.map +1 -0
  21. package/dist/JsExecutor/examples/jsExecutor/index.js.map +1 -1
  22. package/dist/JsExecutor/examples/jsExecutor/process.d.ts +1 -0
  23. package/dist/JsExecutor/examples/jsExecutor/process.d.ts.map +1 -0
  24. package/dist/JsExecutor/examples/jsExecutor/process.js.map +1 -1
  25. package/dist/JsExecutor/index.d.ts +1 -0
  26. package/dist/JsExecutor/index.d.ts.map +1 -0
  27. package/dist/JsExecutor/index.js.map +1 -1
  28. package/dist/JsExecutor/jsExecutor.d.ts +1 -0
  29. package/dist/JsExecutor/jsExecutor.d.ts.map +1 -0
  30. package/dist/JsExecutor/jsExecutor.js.map +1 -1
  31. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts +1 -0
  32. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts.map +1 -0
  33. package/dist/JsExecutor/jsonRpc/JsonRpcClient.js.map +1 -1
  34. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts +1 -0
  35. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts.map +1 -0
  36. package/dist/JsExecutor/jsonRpc/JsonRpcServer.js.map +1 -1
  37. package/dist/JsExecutor/jsonRpc/index.d.ts +1 -0
  38. package/dist/JsExecutor/jsonRpc/index.d.ts.map +1 -0
  39. package/dist/JsExecutor/jsonRpc/index.js.map +1 -1
  40. package/dist/JsExecutor/jsonRpc/types.d.ts +1 -0
  41. package/dist/JsExecutor/jsonRpc/types.d.ts.map +1 -0
  42. package/dist/JsExecutor/jsonRpc/types.js.map +1 -1
  43. package/dist/JsExecutor/transport/Transport.d.ts +1 -0
  44. package/dist/JsExecutor/transport/Transport.d.ts.map +1 -0
  45. package/dist/JsExecutor/transport/Transport.js.map +1 -1
  46. package/dist/JsExecutor/transport/base/BaseTransport.d.ts +1 -0
  47. package/dist/JsExecutor/transport/base/BaseTransport.d.ts.map +1 -0
  48. package/dist/JsExecutor/transport/base/BaseTransport.js.map +1 -1
  49. package/dist/JsExecutor/transport/index.d.ts +1 -0
  50. package/dist/JsExecutor/transport/index.d.ts.map +1 -0
  51. package/dist/JsExecutor/transport/index.js.map +1 -1
  52. package/dist/JsExecutor/transport/process/ProcessManager.d.ts +1 -0
  53. package/dist/JsExecutor/transport/process/ProcessManager.d.ts.map +1 -0
  54. package/dist/JsExecutor/transport/process/ProcessManager.js.map +1 -1
  55. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts +1 -0
  56. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts.map +1 -0
  57. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js.map +1 -1
  58. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts +1 -0
  59. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts.map +1 -0
  60. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js.map +1 -1
  61. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts +1 -0
  62. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts.map +1 -0
  63. package/dist/JsExecutor/transport/utils/MessageUtils.js.map +1 -1
  64. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts +1 -0
  65. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts.map +1 -0
  66. package/dist/JsExecutor/transport/utils/PollingUtils.js.map +1 -1
  67. package/dist/JsExecutor/types.d.ts +1 -0
  68. package/dist/JsExecutor/types.d.ts.map +1 -0
  69. package/dist/JsExecutor/types.js.map +1 -1
  70. package/dist/SklEngine.d.ts +1 -0
  71. package/dist/SklEngine.d.ts.map +1 -0
  72. package/dist/SklEngine.js.map +1 -1
  73. package/dist/SklEngineOptions.d.ts +1 -0
  74. package/dist/SklEngineOptions.d.ts.map +1 -0
  75. package/dist/SklEngineOptions.js.map +1 -1
  76. package/dist/constants.d.ts +1 -0
  77. package/dist/constants.d.ts.map +1 -0
  78. package/dist/constants.js.map +1 -1
  79. package/dist/customCapabilities.d.ts +1 -0
  80. package/dist/customCapabilities.d.ts.map +1 -0
  81. package/dist/customCapabilities.js.map +1 -1
  82. package/dist/examples/customCapabilitiesExample.d.ts +1 -0
  83. package/dist/examples/customCapabilitiesExample.d.ts.map +1 -0
  84. package/dist/examples/customCapabilitiesExample.js.map +1 -1
  85. package/dist/hooks/globalHooks.d.ts +1 -0
  86. package/dist/hooks/globalHooks.d.ts.map +1 -0
  87. package/dist/hooks/globalHooks.js.map +1 -1
  88. package/dist/hooks/types.d.ts +1 -0
  89. package/dist/hooks/types.d.ts.map +1 -0
  90. package/dist/hooks/types.js.map +1 -1
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/logger.d.ts +1 -0
  95. package/dist/logger.d.ts.map +1 -0
  96. package/dist/logger.js.map +1 -1
  97. package/dist/mapping/Mapper.d.ts +1 -0
  98. package/dist/mapping/Mapper.d.ts.map +1 -0
  99. package/dist/mapping/Mapper.js.map +1 -1
  100. package/dist/storage/FindOperator.d.ts +1 -0
  101. package/dist/storage/FindOperator.d.ts.map +1 -0
  102. package/dist/storage/FindOperator.js.map +1 -1
  103. package/dist/storage/FindOptionsTypes.d.ts +1 -0
  104. package/dist/storage/FindOptionsTypes.d.ts.map +1 -0
  105. package/dist/storage/FindOptionsTypes.js.map +1 -1
  106. package/dist/storage/GroupOptionTypes.d.ts +1 -0
  107. package/dist/storage/GroupOptionTypes.d.ts.map +1 -0
  108. package/dist/storage/GroupOptionTypes.js.map +1 -1
  109. package/dist/storage/operator/And.d.ts +1 -0
  110. package/dist/storage/operator/And.d.ts.map +1 -0
  111. package/dist/storage/operator/And.js.map +1 -1
  112. package/dist/storage/operator/Contains.d.ts +1 -0
  113. package/dist/storage/operator/Contains.d.ts.map +1 -0
  114. package/dist/storage/operator/Contains.js.map +1 -1
  115. package/dist/storage/operator/Equal.d.ts +1 -0
  116. package/dist/storage/operator/Equal.d.ts.map +1 -0
  117. package/dist/storage/operator/Equal.js.map +1 -1
  118. package/dist/storage/operator/Exists.d.ts +1 -0
  119. package/dist/storage/operator/Exists.d.ts.map +1 -0
  120. package/dist/storage/operator/Exists.js.map +1 -1
  121. package/dist/storage/operator/GreaterThan.d.ts +1 -0
  122. package/dist/storage/operator/GreaterThan.d.ts.map +1 -0
  123. package/dist/storage/operator/GreaterThan.js.map +1 -1
  124. package/dist/storage/operator/GreaterThanOrEqual.d.ts +1 -0
  125. package/dist/storage/operator/GreaterThanOrEqual.d.ts.map +1 -0
  126. package/dist/storage/operator/GreaterThanOrEqual.js.map +1 -1
  127. package/dist/storage/operator/In.d.ts +1 -0
  128. package/dist/storage/operator/In.d.ts.map +1 -0
  129. package/dist/storage/operator/In.js.map +1 -1
  130. package/dist/storage/operator/Inverse.d.ts +1 -0
  131. package/dist/storage/operator/Inverse.d.ts.map +1 -0
  132. package/dist/storage/operator/Inverse.js.map +1 -1
  133. package/dist/storage/operator/InversePath.d.ts +1 -0
  134. package/dist/storage/operator/InversePath.d.ts.map +1 -0
  135. package/dist/storage/operator/InversePath.js.map +1 -1
  136. package/dist/storage/operator/InverseRelation.d.ts +1 -0
  137. package/dist/storage/operator/InverseRelation.d.ts.map +1 -0
  138. package/dist/storage/operator/InverseRelation.js.map +1 -1
  139. package/dist/storage/operator/InverseRelationOrder.d.ts +1 -0
  140. package/dist/storage/operator/InverseRelationOrder.d.ts.map +1 -0
  141. package/dist/storage/operator/InverseRelationOrder.js.map +1 -1
  142. package/dist/storage/operator/LessThan.d.ts +1 -0
  143. package/dist/storage/operator/LessThan.d.ts.map +1 -0
  144. package/dist/storage/operator/LessThan.js.map +1 -1
  145. package/dist/storage/operator/LessThanOrEqual.d.ts +1 -0
  146. package/dist/storage/operator/LessThanOrEqual.d.ts.map +1 -0
  147. package/dist/storage/operator/LessThanOrEqual.js.map +1 -1
  148. package/dist/storage/operator/Not.d.ts +1 -0
  149. package/dist/storage/operator/Not.d.ts.map +1 -0
  150. package/dist/storage/operator/Not.js.map +1 -1
  151. package/dist/storage/operator/OneOrMorePath.d.ts +1 -0
  152. package/dist/storage/operator/OneOrMorePath.d.ts.map +1 -0
  153. package/dist/storage/operator/OneOrMorePath.js.map +1 -1
  154. package/dist/storage/operator/Sequence.d.ts +1 -0
  155. package/dist/storage/operator/Sequence.d.ts.map +1 -0
  156. package/dist/storage/operator/Sequence.js.map +1 -1
  157. package/dist/storage/operator/SequencePath.d.ts +1 -0
  158. package/dist/storage/operator/SequencePath.d.ts.map +1 -0
  159. package/dist/storage/operator/SequencePath.js.map +1 -1
  160. package/dist/storage/operator/ZeroOrMorePath.d.ts +1 -0
  161. package/dist/storage/operator/ZeroOrMorePath.d.ts.map +1 -0
  162. package/dist/storage/operator/ZeroOrMorePath.js.map +1 -1
  163. package/dist/storage/query-adapter/QueryAdapter.d.ts +1 -0
  164. package/dist/storage/query-adapter/QueryAdapter.d.ts.map +1 -0
  165. package/dist/storage/query-adapter/QueryAdapter.js.map +1 -1
  166. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts +1 -0
  167. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +1 -0
  168. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +28 -4
  169. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +1 -1
  170. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts +1 -0
  171. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts.map +1 -0
  172. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js.map +1 -1
  173. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +1 -0
  174. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +1 -0
  175. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +7 -21
  176. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +1 -1
  177. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts +1 -0
  178. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts.map +1 -0
  179. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js.map +1 -1
  180. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts +1 -0
  181. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts.map +1 -0
  182. package/dist/storage/query-adapter/sparql/VariableGenerator.js.map +1 -1
  183. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts +1 -0
  184. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts.map +1 -0
  185. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js.map +1 -1
  186. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts +1 -0
  187. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts.map +1 -0
  188. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js.map +1 -1
  189. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts +1 -0
  190. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts.map +1 -0
  191. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js.map +1 -1
  192. package/dist/util/PerformanceLogger.d.ts +1 -0
  193. package/dist/util/PerformanceLogger.d.ts.map +1 -0
  194. package/dist/util/PerformanceLogger.js.map +1 -1
  195. package/dist/util/SparqlUtil.d.ts +1 -0
  196. package/dist/util/SparqlUtil.d.ts.map +1 -0
  197. package/dist/util/SparqlUtil.js.map +1 -1
  198. package/dist/util/TripleUtil.d.ts +1 -0
  199. package/dist/util/TripleUtil.d.ts.map +1 -0
  200. package/dist/util/TripleUtil.js +10 -0
  201. package/dist/util/TripleUtil.js.map +1 -1
  202. package/dist/util/Types.d.ts +1 -0
  203. package/dist/util/Types.d.ts.map +1 -0
  204. package/dist/util/Types.js.map +1 -1
  205. package/dist/util/Util.d.ts +1 -0
  206. package/dist/util/Util.d.ts.map +1 -0
  207. package/dist/util/Util.js.map +1 -1
  208. package/dist/util/Vocabularies/Shared.d.ts +1 -0
  209. package/dist/util/Vocabularies/Shared.d.ts.map +1 -0
  210. package/dist/util/Vocabularies/Shared.js.map +1 -1
  211. package/dist/util/Vocabularies/helper.d.ts +1 -0
  212. package/dist/util/Vocabularies/helper.d.ts.map +1 -0
  213. package/dist/util/Vocabularies/helper.js.map +1 -1
  214. package/dist/util/Vocabularies/index.d.ts +1 -0
  215. package/dist/util/Vocabularies/index.d.ts.map +1 -0
  216. package/dist/util/Vocabularies/index.js.map +1 -1
  217. package/dist/util/safeJsonStringify.d.ts +1 -0
  218. package/dist/util/safeJsonStringify.d.ts.map +1 -0
  219. package/dist/util/safeJsonStringify.js.map +1 -1
  220. package/package.json +6 -3
  221. package/src/JsExecutor/PermissionBuilder.ts +60 -0
  222. package/src/JsExecutor/constants.ts +27 -0
  223. package/src/JsExecutor/denoUtils.ts +20 -0
  224. package/src/JsExecutor/errors.ts +63 -0
  225. package/src/JsExecutor/examples/basic/index.ts +54 -0
  226. package/src/JsExecutor/examples/basic/process.ts +39 -0
  227. package/src/JsExecutor/examples/jsExecutor/README.md +3 -0
  228. package/src/JsExecutor/examples/jsExecutor/index.ts +50 -0
  229. package/src/JsExecutor/examples/jsExecutor/process.ts +79 -0
  230. package/src/JsExecutor/index.ts +19 -0
  231. package/src/JsExecutor/jsExecutor.ts +194 -0
  232. package/src/JsExecutor/jsonRpc/JsonRpcClient.ts +422 -0
  233. package/src/JsExecutor/jsonRpc/JsonRpcServer.ts +454 -0
  234. package/src/JsExecutor/jsonRpc/index.ts +4 -0
  235. package/src/JsExecutor/jsonRpc/types.ts +231 -0
  236. package/src/JsExecutor/transport/README.md +67 -0
  237. package/src/JsExecutor/transport/Transport.ts +106 -0
  238. package/src/JsExecutor/transport/base/BaseTransport.ts +83 -0
  239. package/src/JsExecutor/transport/index.ts +56 -0
  240. package/src/JsExecutor/transport/process/ProcessManager.ts +281 -0
  241. package/src/JsExecutor/transport/stdio/ChildStdioTransport.ts +251 -0
  242. package/src/JsExecutor/transport/stdio/ParentStdioTransport.ts +308 -0
  243. package/src/JsExecutor/transport/utils/MessageUtils.ts +139 -0
  244. package/src/JsExecutor/transport/utils/PollingUtils.ts +114 -0
  245. package/src/JsExecutor/types.ts +130 -0
  246. package/src/SklEngine.ts +1828 -0
  247. package/src/SklEngineOptions.ts +28 -0
  248. package/src/constants.ts +120 -0
  249. package/src/customCapabilities.ts +65 -0
  250. package/src/examples/customCapabilitiesExample.ts +77 -0
  251. package/src/hooks/globalHooks.ts +238 -0
  252. package/src/hooks/types.ts +7 -0
  253. package/src/index.ts +45 -0
  254. package/src/logger.ts +144 -0
  255. package/src/mapping/Mapper.ts +52 -0
  256. package/src/storage/FindOperator.ts +55 -0
  257. package/src/storage/FindOptionsTypes.ts +107 -0
  258. package/src/storage/GroupOptionTypes.ts +32 -0
  259. package/src/storage/operator/And.ts +10 -0
  260. package/src/storage/operator/Contains.ts +9 -0
  261. package/src/storage/operator/Equal.ts +13 -0
  262. package/src/storage/operator/Exists.ts +6 -0
  263. package/src/storage/operator/GreaterThan.ts +12 -0
  264. package/src/storage/operator/GreaterThanOrEqual.ts +12 -0
  265. package/src/storage/operator/In.ts +12 -0
  266. package/src/storage/operator/Inverse.ts +11 -0
  267. package/src/storage/operator/InversePath.ts +17 -0
  268. package/src/storage/operator/InverseRelation.ts +18 -0
  269. package/src/storage/operator/InverseRelationOrder.ts +17 -0
  270. package/src/storage/operator/LessThan.ts +12 -0
  271. package/src/storage/operator/LessThanOrEqual.ts +12 -0
  272. package/src/storage/operator/Not.ts +11 -0
  273. package/src/storage/operator/OneOrMorePath.ts +17 -0
  274. package/src/storage/operator/Sequence.ts +11 -0
  275. package/src/storage/operator/SequencePath.ts +17 -0
  276. package/src/storage/operator/ZeroOrMorePath.ts +17 -0
  277. package/src/storage/query-adapter/QueryAdapter.ts +110 -0
  278. package/src/storage/query-adapter/sparql/SparqlQueryAdapter.ts +400 -0
  279. package/src/storage/query-adapter/sparql/SparqlQueryAdapterOptions.ts +38 -0
  280. package/src/storage/query-adapter/sparql/SparqlQueryBuilder.ts +1524 -0
  281. package/src/storage/query-adapter/sparql/SparqlUpdateBuilder.ts +347 -0
  282. package/src/storage/query-adapter/sparql/VariableGenerator.ts +8 -0
  283. package/src/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.ts +135 -0
  284. package/src/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.ts +146 -0
  285. package/src/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.ts +51 -0
  286. package/src/util/PerformanceLogger.ts +286 -0
  287. package/src/util/SparqlUtil.ts +516 -0
  288. package/src/util/TripleUtil.ts +412 -0
  289. package/src/util/Types.ts +399 -0
  290. package/src/util/Util.ts +116 -0
  291. package/src/util/Vocabularies/Shared.ts +99 -0
  292. package/src/util/Vocabularies/helper.ts +14 -0
  293. package/src/util/Vocabularies/index.ts +108 -0
  294. package/src/util/safeJsonStringify.ts +19 -0
  295. package/dist/JsExecutor/transport/StdioTransport.d.ts +0 -0
  296. package/dist/JsExecutor/transport/StdioTransport.js +0 -641
  297. package/dist/JsExecutor/transport/StdioTransport.js.map +0 -1
@@ -1,641 +0,0 @@
1
- "use strict";
2
- // /* eslint-disable indent */
3
- // /* eslint-disable no-void */
4
- // /* eslint-disable @typescript-eslint/no-use-before-define */
5
- // /* eslint-disable no-inline-comments */
6
- // /* eslint-disable line-comment-position */
7
- // /* eslint-disable @typescript-eslint/explicit-function-return-type */
8
- // import type { ChildProcess } from 'child_process';
9
- // import { EventEmitter } from 'node:events';
10
- // import type { Readable, Writable } from 'stream';
11
- // import { Logger } from '../../logger';
12
- // import { DEFAULT_EXECUTION_OPTIONS, EXECUTION_CONSTANTS } from '../constants';
13
- // import { spawnDenoProcess } from '../denoUtils';
14
- // import { ProcessSpawnError } from '../errors';
15
- // import type { ClientTransport } from '../jsonRpc/JsonRpcClient';
16
- // import { JsonRpcClient } from '../jsonRpc/JsonRpcClient';
17
- // import { JsonRpcServer } from '../jsonRpc/JsonRpcServer';
18
- // import type {
19
- // LogNotification,
20
- // StatusRequest,
21
- // StatusResponse
22
- // } from '../jsonRpc/types';
23
- // import {
24
- // STANDARD_METHODS
25
- // } from '../jsonRpc/types';
26
- // import { buildDenoPermissions, validatePermissionConfig } from '../PermissionBuilder';
27
- // import type { ExecutionOptions, PermissionConfig } from '../types';
28
- // import { BaseTransport } from './base/BaseTransport';
29
- // import type { Transport, TransportConfig } from './Transport';
30
- // import { TransportStatus } from './Transport';
31
- // /**
32
- // * StdioTransport implementation using stdin/stdout for JSON-RPC communication
33
- // * This is the parent-side transport that manages a child process
34
- // */
35
- // export class StdioTransport extends BaseTransport {
36
- // private childProcess?: ChildProcess;
37
- // private readonly server: JsonRpcServer;
38
- // private readonly client: JsonRpcClient;
39
- // private readonly clientTransport: StdioClientTransport;
40
- // private readonly executorScriptPath: string;
41
- // public constructor(executorScriptPath: string, server: JsonRpcServer) {
42
- // super();
43
- // this.executorScriptPath = executorScriptPath;
44
- // this.server = server;
45
- // this.client = new JsonRpcClient();
46
- // this.clientTransport = new StdioClientTransport();
47
- // this.setupServerMethods();
48
- // this.setupEventHandlers();
49
- // }
50
- // /**
51
- // * Initialize the transport connection
52
- // */
53
- // public async initialize(config?: TransportConfig, executionOptions?: ExecutionOptions): Promise<void> {
54
- // if (this.status !== TransportStatus.disconnected) {
55
- // throw new Error(`Cannot initialize transport in ${this.status} state`);
56
- // }
57
- // try {
58
- // this.setStatus(TransportStatus.connecting);
59
- // const normalizedOptions = this.normalizeOptions(executionOptions);
60
- // const permissionConfig = this.extractPermissionConfig(normalizedOptions);
61
- // // Validate permissions before proceeding
62
- // validatePermissionConfig(permissionConfig);
63
- // const permissions = buildDenoPermissions(permissionConfig);
64
- // const mergedPermissions: string[] = [ ...EXECUTION_CONSTANTS.denoFlags ];
65
- // permissions.forEach(permission => {
66
- // if (!mergedPermissions.includes(permission)) {
67
- // mergedPermissions.push(permission);
68
- // }
69
- // });
70
- // // Build command arguments (will be updated when we have permission support)
71
- // const commandArgs = [ ...mergedPermissions, this.executorScriptPath ];
72
- // // Spawn the Deno process
73
- // this.childProcess = spawnDenoProcess(commandArgs);
74
- // // Set up client transport
75
- // this.clientTransport.setProcess(this.childProcess.stdout!, this.childProcess.stdin!);
76
- // this.client.setTransport(this.clientTransport);
77
- // // Set up process communication
78
- // this.setupProcessCommunication();
79
- // // Wait for process to be ready
80
- // await this.waitForReady(config?.timeout ?? 5000);
81
- // this.setStatus(TransportStatus.connected);
82
- // } catch (error: unknown) {
83
- // this.setStatus(TransportStatus.error);
84
- // throw error;
85
- // }
86
- // }
87
- // /**
88
- // * Normalizes execution options with defaults
89
- // * @param options - Raw execution options
90
- // * @returns Normalized options with all required fields
91
- // */
92
- // private normalizeOptions(options?: ExecutionOptions): Required<ExecutionOptions> {
93
- // return {
94
- // timeout: options?.timeout ?? DEFAULT_EXECUTION_OPTIONS.timeout,
95
- // functionName: options?.functionName ?? DEFAULT_EXECUTION_OPTIONS.functionName,
96
- // allowNetwork: options?.allowNetwork ?? DEFAULT_EXECUTION_OPTIONS.allowNetwork,
97
- // allowedDomains: options?.allowedDomains ?? [ ...DEFAULT_EXECUTION_OPTIONS.allowedDomains ],
98
- // allowEnv: options?.allowEnv ?? DEFAULT_EXECUTION_OPTIONS.allowEnv,
99
- // allowRead: options?.allowRead ?? DEFAULT_EXECUTION_OPTIONS.allowRead,
100
- // debugMode: options?.debugMode ?? DEFAULT_EXECUTION_OPTIONS.debugMode,
101
- // retries: options?.retries ?? DEFAULT_EXECUTION_OPTIONS.retries
102
- // };
103
- // }
104
- // /**
105
- // * Extracts permission configuration from execution options
106
- // * @param options - Normalized execution options
107
- // * @returns Permission configuration object
108
- // */
109
- // private extractPermissionConfig(options: Required<ExecutionOptions>): PermissionConfig {
110
- // return {
111
- // allowNetwork: options.allowNetwork,
112
- // allowedDomains: options.allowedDomains,
113
- // allowEnv: options.allowEnv,
114
- // allowRead: options.allowRead
115
- // };
116
- // }
117
- // /**
118
- // * Send a message through the transport
119
- // */
120
- // public async send<TRequest, TResponse>(message: TRequest): Promise<TResponse> {
121
- // if (!this.isReady()) {
122
- // throw new Error('Transport is not ready');
123
- // }
124
- // // Expect message to have method and params for direct RPC calls
125
- // const rpcMessage = message as any;
126
- // if (rpcMessage.method) {
127
- // return this.client.request(rpcMessage.method, rpcMessage.params);
128
- // }
129
- // throw new Error('Message must have a method property for RPC calls');
130
- // }
131
- // /**
132
- // * Make a direct RPC request to the child process
133
- // */
134
- // public async request<TParams = any, TResult = any>(
135
- // method: string,
136
- // params?: TParams,
137
- // options?: { timeout?: number; retries?: number }
138
- // ): Promise<TResult> {
139
- // if (!this.isReady()) {
140
- // throw new Error('Transport is not ready');
141
- // }
142
- // return this.client.request<TParams, TResult>(method, params, options);
143
- // }
144
- // /**
145
- // * Send a notification to the child process (no response expected)
146
- // */
147
- // public async notify<TParams = any>(method: string, params?: TParams): Promise<void> {
148
- // if (!this.isReady()) {
149
- // throw new Error('Transport is not ready');
150
- // }
151
- // return this.client.notify(method, params);
152
- // }
153
- // /**
154
- // * Close the transport connection
155
- // */
156
- // public async close(): Promise<void> {
157
- // if (this.status === TransportStatus.disconnected) {
158
- // return;
159
- // }
160
- // this.setStatus(TransportStatus.disconnected);
161
- // // Close JSON-RPC client
162
- // await this.client.close();
163
- // // Close child process
164
- // if (this.childProcess && !this.childProcess.killed) {
165
- // this.childProcess.kill(EXECUTION_CONSTANTS.processSignals.term);
166
- // // Wait for process to exit gracefully
167
- // await new Promise<void>(resolve => {
168
- // const timeout = setTimeout(() => {
169
- // if (this.childProcess && !this.childProcess.killed) {
170
- // this.childProcess.kill('SIGKILL');
171
- // }
172
- // resolve();
173
- // }, 3000);
174
- // this.childProcess!.on('exit', () => {
175
- // clearTimeout(timeout);
176
- // resolve();
177
- // });
178
- // });
179
- // }
180
- // this.childProcess = undefined;
181
- // }
182
- // /**
183
- // * Check if the transport is ready for communication
184
- // */
185
- // public isReady(): boolean {
186
- // return this.status === TransportStatus.connected && this.childProcess !== undefined && !this.childProcess.killed;
187
- // }
188
- // /**
189
- // * Set up server methods for handling incoming requests from Deno process
190
- // */
191
- // private setupServerMethods(): void {
192
- // // Handle status requests
193
- // this.server.registerMethod<StatusRequest, StatusResponse>(STANDARD_METHODS.getStatus, async() => ({
194
- // status: 'ready',
195
- // uptime: process.uptime() * 1000,
196
- // memoryUsage: {
197
- // used: process.memoryUsage().heapUsed,
198
- // total: process.memoryUsage().heapTotal
199
- // }
200
- // }));
201
- // // Handle ping requests
202
- // this.server.registerMethod(STANDARD_METHODS.ping, async() => 'pong');
203
- // // Handle log notifications
204
- // this.server.registerMethod<LogNotification, void>(STANDARD_METHODS.log, async params => {
205
- // if (this.messageHandler) {
206
- // await this.messageHandler(params);
207
- // }
208
- // });
209
- // }
210
- // /**
211
- // * Set up event handlers
212
- // */
213
- // private setupEventHandlers(): void {
214
- // this.server.on('error', error => {
215
- // this.handleError(error, 'Server error');
216
- // });
217
- // this.client.on('error', error => {
218
- // this.handleError(error, 'Client error');
219
- // });
220
- // // Add fallback error handler to prevent process crashes
221
- // this.on('error', (error: Error) => {
222
- // // If no one else handles the error, at least log it instead of crashing
223
- // if (this.listenerCount('error') === 1) {
224
- // this.logger.error('Unhandled transport error', error);
225
- // }
226
- // });
227
- // }
228
- // /**
229
- // * Set up process communication handlers
230
- // */
231
- // private setupProcessCommunication(): void {
232
- // if (!this.childProcess) {
233
- // throw new Error('Child process not available');
234
- // }
235
- // let buffer = '';
236
- // // Handle stdout data (responses from Deno process)
237
- // this.childProcess.stdout?.on('data', (data: Buffer) => {
238
- // buffer += data.toString();
239
- // // Process complete JSON messages
240
- // const lines = buffer.split('\n');
241
- // buffer = lines.pop() ?? ''; // Keep incomplete line in buffer
242
- // for (const line of lines) {
243
- // if (line.trim()) {
244
- // this.logger.log('Received message', line.trim());
245
- // this.handleIncomingMessage(line.trim()).catch(error => {
246
- // this.emit('error', error);
247
- // });
248
- // }
249
- // }
250
- // });
251
- // // Handle stderr data (log messages and errors from Deno process)
252
- // this.childProcess.stderr?.on('data', (data: Buffer) => {
253
- // const stderrOutput = data.toString().trim();
254
- // // Only treat messages starting with "ERROR:" as actual errors
255
- // if (stderrOutput.startsWith('ERROR:')) {
256
- // this.emit('error', new Error(`Deno process error: ${stderrOutput}`));
257
- // } else {
258
- // // Log normal stderr output as debug information
259
- // this.logger.log('Child process log', stderrOutput);
260
- // }
261
- // });
262
- // // Handle process exit
263
- // this.childProcess.on('exit', (code, signal) => {
264
- // if (this.status === TransportStatus.connected) {
265
- // const error = new Error(`Process exited unexpectedly (code: ${code}, signal: ${signal})`);
266
- // this.setStatus(TransportStatus.error);
267
- // this.emit('error', error);
268
- // }
269
- // });
270
- // // Handle process errors
271
- // this.childProcess.on('error', error => {
272
- // this.setStatus(TransportStatus.error);
273
- // this.emit('error', new ProcessSpawnError(error));
274
- // });
275
- // }
276
- // /**
277
- // * Handle incoming message from Deno process with bidirectional routing
278
- // */
279
- // private async handleIncomingMessage(messageData: string): Promise<void> {
280
- // try {
281
- // const message = this.safeParse(messageData);
282
- // if (!message) {
283
- // return;
284
- // }
285
- // // Check if this is a response to our request (has 'result' or 'error' and 'id')
286
- // if (this.isResponse(message)) {
287
- // // This is a response to a request we made - route to client
288
- // this.logger.log('Routing response to parent client', { id: message.id });
289
- // await this.client.handleIncomingMessage(messageData);
290
- // } else {
291
- // // This is a request or notification for us - route to server
292
- // this.logger.log('Routing request to parent server', { method: message.method, id: message.id });
293
- // const response = await this.server.processMessage(messageData);
294
- // this.logger.log('Sending response to parent process', response);
295
- // // Only send response if there is one (requests get responses, notifications don't)
296
- // if (response && this.childProcess?.stdin) {
297
- // const responseData = `${JSON.stringify(response)}\n`;
298
- // this.childProcess.stdin.write(responseData);
299
- // }
300
- // }
301
- // } catch (error: unknown) {
302
- // this.emit('error', new Error(`Failed to handle incoming message: ${(error as Error).message}`));
303
- // }
304
- // }
305
- // private safeParse(message: string): any {
306
- // try {
307
- // return JSON.parse(message);
308
- // } catch {
309
- // return undefined;
310
- // }
311
- // }
312
- // /**
313
- // * Check if a message is a JSON-RPC response
314
- // */
315
- // private isResponse(message: any): boolean {
316
- // return message &&
317
- // typeof message === 'object' &&
318
- // ('result' in message || 'error' in message) &&
319
- // 'id' in message &&
320
- // !('method' in message);
321
- // }
322
- // /**
323
- // * Wait for the process to be ready
324
- // */
325
- // private async waitForReady(timeout: number): Promise<void> {
326
- // return new Promise((resolve, reject) => {
327
- // const timeoutId = setTimeout(() => {
328
- // reject(new Error(`Transport initialization timed out after ${timeout}ms`));
329
- // }, timeout);
330
- // // Try to ping the process to check if it's ready
331
- // const checkReady = async(): Promise<void> => {
332
- // try {
333
- // await this.client.request(STANDARD_METHODS.ping, undefined, { timeout: 1000 });
334
- // clearTimeout(timeoutId);
335
- // resolve();
336
- // } catch {
337
- // // Process not ready yet, try again
338
- // setTimeout(checkReady, 100);
339
- // }
340
- // };
341
- // // Start checking after a short delay to let process start
342
- // setTimeout(checkReady, 100);
343
- // });
344
- // }
345
- // }
346
- // /**
347
- // * Client transport implementation for stdio communication
348
- // */
349
- // export class StdioClientTransport implements ClientTransport {
350
- // private stdout?: Readable;
351
- // private stdin?: Writable;
352
- // private messageHandler?: (message: string) => void;
353
- // private name?: string;
354
- // private readonly logger = Logger.getInstance();
355
- // public setProcess(stdout: Readable, stdin: Writable): void {
356
- // this.stdout = stdout;
357
- // this.stdin = stdin;
358
- // }
359
- // public setName(name: string): void {
360
- // this.name = name;
361
- // this.logger.setMetadata({ name, transport: 'StdioClientTransport' });
362
- // }
363
- // public async send(message: string): Promise<void> {
364
- // if (!this.stdin) {
365
- // throw new Error('Process stdin not available');
366
- // }
367
- // this.logger.log('Sending message', message);
368
- // this.stdin.write(`${message}\n`);
369
- // }
370
- // public onMessage(handler: (message: string) => void): void {
371
- // this.messageHandler = handler;
372
- // // Note: Message handling is done in the main StdioTransport class
373
- // // This is here for interface compliance
374
- // }
375
- // public async close(): Promise<void> {
376
- // this.stdout = undefined;
377
- // this.stdin = undefined;
378
- // this.messageHandler = undefined;
379
- // }
380
- // }
381
- // /**
382
- // * Bidirectional StdioTransport for child processes
383
- // * This class handles both server (receiving requests) and client (sending requests) functionality
384
- // * over a single stdio channel with proper message routing.
385
- // *
386
- // * Usage in child process:
387
- // * ```typescript
388
- // * const transport = new BidirectionalStdioTransport();
389
- // *
390
- // * // Register methods that parent can call
391
- // * transport.registerMethod('ping', async () => 'pong');
392
- // *
393
- // * // Make requests to parent
394
- // * const result = await transport.request('getTime');
395
- // * ```
396
- // */
397
- // export class BidirectionalStdioTransport extends EventEmitter {
398
- // private readonly server: JsonRpcServer;
399
- // private readonly client: JsonRpcClient;
400
- // private readonly logger = Logger.getInstance();
401
- // private buffer = '';
402
- // private name?: string;
403
- // private initialized = false;
404
- // public constructor() {
405
- // super();
406
- // this.server = new JsonRpcServer();
407
- // this.client = new JsonRpcClient();
408
- // // Set up the client transport that routes through our stdio
409
- // const clientTransport: ClientTransport = {
410
- // send: async(message: string): Promise<void> => {
411
- // this.sendMessage(message);
412
- // },
413
- // onMessage(): void {
414
- // // The message routing will handle client responses automatically
415
- // },
416
- // async close(): Promise<void> {
417
- // // Nothing to close for stdio
418
- // }
419
- // };
420
- // this.client.setTransport(clientTransport);
421
- // this.setupEventHandlers();
422
- // }
423
- // /**
424
- // * Set a name for this transport (used in logging)
425
- // */
426
- // public setName(name: string): void {
427
- // this.name = name;
428
- // this.logger.setMetadata({ name, transport: 'BidirectionalStdioTransport' });
429
- // }
430
- // /**
431
- // * Initialize the bidirectional transport
432
- // * This should be called once after setting up all methods
433
- // */
434
- // public async initialize(): Promise<void> {
435
- // if (this.initialized) {
436
- // throw new Error('Transport already initialized');
437
- // }
438
- // this.initialized = true;
439
- // this.setupStdioCommunication();
440
- // // Log to stderr to avoid contaminating stdout
441
- // this.logger.log('Transport initialized');
442
- // }
443
- // /**
444
- // * Register a method that the parent can call
445
- // * @param method - Method name
446
- // * @param handler - Method handler function
447
- // */
448
- // public registerMethod<TParams = any, TResult = any>(
449
- // method: string,
450
- // handler: (params: TParams) => Promise<TResult> | TResult
451
- // ): void {
452
- // this.server.registerMethod(method, handler);
453
- // }
454
- // /**
455
- // * Send a request to the parent process
456
- // * @param method - Method name
457
- // * @param params - Method parameters
458
- // * @param options - Request options
459
- // * @returns Promise resolving to the response
460
- // */
461
- // public async request<TParams = any, TResult = any>(
462
- // method: string,
463
- // params?: TParams,
464
- // options?: { timeout?: number }
465
- // ): Promise<TResult> {
466
- // if (!this.initialized) {
467
- // throw new Error('Transport not initialized. Call initialize() first.');
468
- // }
469
- // return this.client.request<TParams, TResult>(method, params, options);
470
- // }
471
- // /**
472
- // * Send a notification to the parent process (no response expected)
473
- // * @param method - Method name
474
- // * @param params - Method parameters
475
- // */
476
- // public async notify<TParams = any>(method: string, params?: TParams): Promise<void> {
477
- // if (!this.initialized) {
478
- // throw new Error('Transport not initialized. Call initialize() first.');
479
- // }
480
- // return this.client.notify(method, params);
481
- // }
482
- // /**
483
- // * Get transport statistics
484
- // */
485
- // public getStats(): {
486
- // serverMethods: number;
487
- // pendingRequests: number;
488
- // initialized: boolean;
489
- // } {
490
- // return {
491
- // serverMethods: 0, // Server methods count not accessible due to private property
492
- // pendingRequests: this.client.getStats().pendingRequests,
493
- // initialized: this.initialized
494
- // };
495
- // }
496
- // /**
497
- // * Close the transport and cleanup resources
498
- // */
499
- // public async close(): Promise<void> {
500
- // await this.client.close();
501
- // this.initialized = false;
502
- // this.removeAllListeners();
503
- // }
504
- // /**
505
- // * Set up stdio communication handlers
506
- // */
507
- // private setupStdioCommunication(): void {
508
- // // Handle incoming data from parent
509
- // process.stdin.on('data', async(data: Buffer) => {
510
- // this.buffer += data.toString();
511
- // // Process complete JSON messages
512
- // const lines = this.buffer.split('\n');
513
- // this.buffer = lines.pop() ?? ''; // Keep incomplete line in buffer
514
- // for (const line of lines) {
515
- // if (line.trim()) {
516
- // await this.handleIncomingMessage(line.trim());
517
- // }
518
- // }
519
- // });
520
- // // Handle process termination gracefully
521
- // process.on('SIGTERM', () => {
522
- // this.close().finally(() => process.exit(0));
523
- // });
524
- // process.on('SIGINT', () => {
525
- // this.close().finally(() => process.exit(0));
526
- // });
527
- // }
528
- // /**
529
- // * Handle incoming message and route to appropriate handler
530
- // */
531
- // private async handleIncomingMessage(messageData: string): Promise<void> {
532
- // try {
533
- // const message = this.safeParse(messageData);
534
- // if (!message) {
535
- // return;
536
- // }
537
- // // Check if this is a response to our request (has 'result' or 'error' and 'id')
538
- // if (this.isResponse(message)) {
539
- // // This is a response to a request we made - route to client
540
- // this.logger.log(`Routing response to client: ${message.id}`);
541
- // // Manually trigger client's handleIncomingMessage
542
- // await this.client.handleIncomingMessage(messageData);
543
- // } else {
544
- // // This is a request or notification for us - route to server
545
- // this.logger.log(`Routing request to server: ${message.method}`);
546
- // const response = await this.server.processMessage(messageData);
547
- // this.logger.log('Sending response to parent process', response);
548
- // // Only send response if there is one (requests get responses, notifications don't)
549
- // if (response) {
550
- // this.sendMessage(JSON.stringify(response));
551
- // }
552
- // }
553
- // } catch (error: unknown) {
554
- // process.stderr.write(`Error processing message: ${(error as Error).message}\n`);
555
- // this.emit('error', error);
556
- // }
557
- // }
558
- // private safeParse(message: string): any {
559
- // try {
560
- // return JSON.parse(message);
561
- // } catch {
562
- // return undefined;
563
- // }
564
- // }
565
- // /**
566
- // * Check if a message is a JSON-RPC response
567
- // */
568
- // private isResponse(message: any): boolean {
569
- // return message &&
570
- // typeof message === 'object' &&
571
- // ('result' in message || 'error' in message) &&
572
- // 'id' in message &&
573
- // !('method' in message);
574
- // }
575
- // /**
576
- // * Send a message to the parent process
577
- // */
578
- // private sendMessage(message: string): void {
579
- // // Log to stderr to avoid contaminating stdout JSON-RPC channel
580
- // this.logger.log(`Sending: ${message}`);
581
- // process.stdout.write(`${message}\n`);
582
- // }
583
- // /**
584
- // * Set up event handlers
585
- // */
586
- // private setupEventHandlers(): void {
587
- // this.server.on('error', (error: Error) => {
588
- // this.logger.error('Server error', error);
589
- // this.emit('error', error);
590
- // });
591
- // this.client.on('error', (error: Error) => {
592
- // this.logger.error('Client error', error);
593
- // this.emit('error', error);
594
- // });
595
- // }
596
- // }
597
- // export class StdioServerTransport implements Transport {
598
- // private readonly server: JsonRpcServer;
599
- // private name?: string;
600
- // private readonly logger = Logger.getInstance();
601
- // public constructor(private readonly stdio: Readable, private readonly stdout: Writable, server: JsonRpcServer) {
602
- // this.server = server;
603
- // }
604
- // public setName(name: string): void {
605
- // this.name = name;
606
- // this.logger.setMetadata({ name });
607
- // }
608
- // public get status(): TransportStatus {
609
- // return TransportStatus.connected;
610
- // }
611
- // public isReady(): boolean {
612
- // return true;
613
- // }
614
- // public async initialize(): Promise<void> {
615
- // this.logger.log('Initializing transport');
616
- // this.stdio.on('data', async(data: Buffer) => {
617
- // this.logger.log('Received message', data.toString());
618
- // const response = await this.server.processMessage(data.toString());
619
- // await this.send(JSON.stringify(response));
620
- // });
621
- // }
622
- // public async send<TRequest, TResponse>(message: TRequest): Promise<TResponse> {
623
- // this.logger.log('Sending message', message);
624
- // return new Promise<any>(resolve => {
625
- // const json = JSON.stringify(message);
626
- // if (this.stdout.write(json)) {
627
- // resolve(undefined as unknown as TResponse);
628
- // } else {
629
- // this.stdout.once('drain', resolve);
630
- // }
631
- // });
632
- // }
633
- // public onMessage<T>(): void {
634
- // return void 0;
635
- // }
636
- // public async close(): Promise<void> {
637
- // this.logger.log('Closing transport');
638
- // this.stdio.destroy();
639
- // }
640
- // }
641
- //# sourceMappingURL=StdioTransport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StdioTransport.js","sourceRoot":"","sources":["../../../src/JsExecutor/transport/StdioTransport.ts"],"names":[],"mappings":"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"}