@things-factory/integration-base 9.0.0-beta.27 → 9.0.0-beta.29

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 (407) hide show
  1. package/dist-server/controllers/index.d.ts +2 -0
  2. package/dist-server/controllers/index.js +6 -0
  3. package/dist-server/controllers/index.js.map +1 -0
  4. package/dist-server/controllers/publish-data.d.ts +6 -0
  5. package/dist-server/controllers/publish-data.js +22 -0
  6. package/dist-server/controllers/publish-data.js.map +1 -0
  7. package/dist-server/controllers/scenario-controller.d.ts +6 -0
  8. package/dist-server/controllers/scenario-controller.js +99 -0
  9. package/dist-server/controllers/scenario-controller.js.map +1 -0
  10. package/dist-server/engine/analyzer/analyze-integration.d.ts +5 -0
  11. package/dist-server/engine/analyzer/analyze-integration.js +96 -0
  12. package/dist-server/engine/analyzer/analyze-integration.js.map +1 -0
  13. package/dist-server/engine/connection-manager.d.ts +35 -0
  14. package/dist-server/engine/connection-manager.js +192 -0
  15. package/dist-server/engine/connection-manager.js.map +1 -0
  16. package/dist-server/engine/connector/echo-back-connector.d.ts +9 -0
  17. package/dist-server/engine/connector/echo-back-connector.js +39 -0
  18. package/dist-server/engine/connector/echo-back-connector.js.map +1 -0
  19. package/dist-server/engine/connector/echo-back-server.d.ts +8 -0
  20. package/dist-server/engine/connector/echo-back-server.js +58 -0
  21. package/dist-server/engine/connector/echo-back-server.js.map +1 -0
  22. package/dist-server/engine/connector/graphql-connector.d.ts +19 -0
  23. package/dist-server/engine/connector/graphql-connector.js +94 -0
  24. package/dist-server/engine/connector/graphql-connector.js.map +1 -0
  25. package/dist-server/engine/connector/headless-connector.d.ts +23 -0
  26. package/dist-server/engine/connector/headless-connector.js +357 -0
  27. package/dist-server/engine/connector/headless-connector.js.map +1 -0
  28. package/dist-server/engine/connector/http-connector.d.ts +25 -0
  29. package/dist-server/engine/connector/http-connector.js +52 -0
  30. package/dist-server/engine/connector/http-connector.js.map +1 -0
  31. package/dist-server/engine/connector/index.d.ts +13 -0
  32. package/dist-server/engine/connector/index.js +16 -0
  33. package/dist-server/engine/connector/index.js.map +1 -0
  34. package/dist-server/engine/connector/mqtt-connector.d.ts +14 -0
  35. package/dist-server/engine/connector/mqtt-connector.js +62 -0
  36. package/dist-server/engine/connector/mqtt-connector.js.map +1 -0
  37. package/dist-server/engine/connector/mssql-connector.d.ts +40 -0
  38. package/dist-server/engine/connector/mssql-connector.js +137 -0
  39. package/dist-server/engine/connector/mssql-connector.js.map +1 -0
  40. package/dist-server/engine/connector/mysql-connector.d.ts +13 -0
  41. package/dist-server/engine/connector/mysql-connector.js +80 -0
  42. package/dist-server/engine/connector/mysql-connector.js.map +1 -0
  43. package/dist-server/engine/connector/operato-connector.d.ts +27 -0
  44. package/dist-server/engine/connector/operato-connector.js +205 -0
  45. package/dist-server/engine/connector/operato-connector.js.map +1 -0
  46. package/dist-server/engine/connector/oracle-connector.d.ts +29 -0
  47. package/dist-server/engine/connector/oracle-connector.js +187 -0
  48. package/dist-server/engine/connector/oracle-connector.js.map +1 -0
  49. package/dist-server/engine/connector/postgresql-connector.d.ts +20 -0
  50. package/dist-server/engine/connector/postgresql-connector.js +136 -0
  51. package/dist-server/engine/connector/postgresql-connector.js.map +1 -0
  52. package/dist-server/engine/connector/proxy-connector.d.ts +15 -0
  53. package/dist-server/engine/connector/proxy-connector.js +44 -0
  54. package/dist-server/engine/connector/proxy-connector.js.map +1 -0
  55. package/dist-server/engine/connector/socket-server.d.ts +9 -0
  56. package/dist-server/engine/connector/socket-server.js +76 -0
  57. package/dist-server/engine/connector/socket-server.js.map +1 -0
  58. package/dist-server/engine/connector/sqlite-connector.d.ts +10 -0
  59. package/dist-server/engine/connector/sqlite-connector.js +58 -0
  60. package/dist-server/engine/connector/sqlite-connector.js.map +1 -0
  61. package/dist-server/engine/edge-client.d.ts +18 -0
  62. package/dist-server/engine/edge-client.js +37 -0
  63. package/dist-server/engine/edge-client.js.map +1 -0
  64. package/dist-server/engine/index.d.ts +9 -0
  65. package/dist-server/engine/index.js +12 -0
  66. package/dist-server/engine/index.js.map +1 -0
  67. package/dist-server/engine/pending-queue.d.ts +24 -0
  68. package/dist-server/engine/pending-queue.js +75 -0
  69. package/dist-server/engine/pending-queue.js.map +1 -0
  70. package/dist-server/engine/resource-pool/headless-pool.d.ts +1 -0
  71. package/dist-server/engine/resource-pool/headless-pool.js +62 -0
  72. package/dist-server/engine/resource-pool/headless-pool.js.map +1 -0
  73. package/dist-server/engine/resource-pool/index.d.ts +1 -0
  74. package/dist-server/engine/resource-pool/index.js +5 -0
  75. package/dist-server/engine/resource-pool/index.js.map +1 -0
  76. package/dist-server/engine/scenario-engine.d.ts +11 -0
  77. package/dist-server/engine/scenario-engine.js +79 -0
  78. package/dist-server/engine/scenario-engine.js.map +1 -0
  79. package/dist-server/engine/task/book-up-scenario.d.ts +1 -0
  80. package/dist-server/engine/task/book-up-scenario.js +63 -0
  81. package/dist-server/engine/task/book-up-scenario.js.map +1 -0
  82. package/dist-server/engine/task/csv-readline.d.ts +1 -0
  83. package/dist-server/engine/task/csv-readline.js +103 -0
  84. package/dist-server/engine/task/csv-readline.js.map +1 -0
  85. package/dist-server/engine/task/data-accessor.d.ts +1 -0
  86. package/dist-server/engine/task/data-accessor.js +28 -0
  87. package/dist-server/engine/task/data-accessor.js.map +1 -0
  88. package/dist-server/engine/task/data-mapper.d.ts +1 -0
  89. package/dist-server/engine/task/data-mapper.js +37 -0
  90. package/dist-server/engine/task/data-mapper.js.map +1 -0
  91. package/dist-server/engine/task/database-query.d.ts +1 -0
  92. package/dist-server/engine/task/database-query.js +46 -0
  93. package/dist-server/engine/task/database-query.js.map +1 -0
  94. package/dist-server/engine/task/echo-receive.d.ts +1 -0
  95. package/dist-server/engine/task/echo-receive.js +15 -0
  96. package/dist-server/engine/task/echo-receive.js.map +1 -0
  97. package/dist-server/engine/task/echo-send.d.ts +1 -0
  98. package/dist-server/engine/task/echo-send.js +24 -0
  99. package/dist-server/engine/task/echo-send.js.map +1 -0
  100. package/dist-server/engine/task/empty-check.d.ts +1 -0
  101. package/dist-server/engine/task/empty-check.js +30 -0
  102. package/dist-server/engine/task/empty-check.js.map +1 -0
  103. package/dist-server/engine/task/end.d.ts +1 -0
  104. package/dist-server/engine/task/end.js +14 -0
  105. package/dist-server/engine/task/end.js.map +1 -0
  106. package/dist-server/engine/task/floating-point.d.ts +1 -0
  107. package/dist-server/engine/task/floating-point.js +62 -0
  108. package/dist-server/engine/task/floating-point.js.map +1 -0
  109. package/dist-server/engine/task/goto.d.ts +1 -0
  110. package/dist-server/engine/task/goto.js +20 -0
  111. package/dist-server/engine/task/goto.js.map +1 -0
  112. package/dist-server/engine/task/graphql-mutate.d.ts +1 -0
  113. package/dist-server/engine/task/graphql-mutate.js +70 -0
  114. package/dist-server/engine/task/graphql-mutate.js.map +1 -0
  115. package/dist-server/engine/task/graphql-query.d.ts +1 -0
  116. package/dist-server/engine/task/graphql-query.js +70 -0
  117. package/dist-server/engine/task/graphql-query.js.map +1 -0
  118. package/dist-server/engine/task/headless-post.d.ts +1 -0
  119. package/dist-server/engine/task/headless-post.js +110 -0
  120. package/dist-server/engine/task/headless-post.js.map +1 -0
  121. package/dist-server/engine/task/headless-scrap.d.ts +1 -0
  122. package/dist-server/engine/task/headless-scrap.js +71 -0
  123. package/dist-server/engine/task/headless-scrap.js.map +1 -0
  124. package/dist-server/engine/task/http-get.d.ts +1 -0
  125. package/dist-server/engine/task/http-get.js +101 -0
  126. package/dist-server/engine/task/http-get.js.map +1 -0
  127. package/dist-server/engine/task/http-post.d.ts +1 -0
  128. package/dist-server/engine/task/http-post.js +130 -0
  129. package/dist-server/engine/task/http-post.js.map +1 -0
  130. package/dist-server/engine/task/index.d.ts +45 -0
  131. package/dist-server/engine/task/index.js +48 -0
  132. package/dist-server/engine/task/index.js.map +1 -0
  133. package/dist-server/engine/task/jsonata.d.ts +1 -0
  134. package/dist-server/engine/task/jsonata.js +37 -0
  135. package/dist-server/engine/task/jsonata.js.map +1 -0
  136. package/dist-server/engine/task/local-graphql-mutate.d.ts +1 -0
  137. package/dist-server/engine/task/local-graphql-mutate.js +89 -0
  138. package/dist-server/engine/task/local-graphql-mutate.js.map +1 -0
  139. package/dist-server/engine/task/local-graphql-query.d.ts +1 -0
  140. package/dist-server/engine/task/local-graphql-query.js +89 -0
  141. package/dist-server/engine/task/local-graphql-query.js.map +1 -0
  142. package/dist-server/engine/task/log.d.ts +1 -0
  143. package/dist-server/engine/task/log.js +68 -0
  144. package/dist-server/engine/task/log.js.map +1 -0
  145. package/dist-server/engine/task/mqtt-publish.d.ts +1 -0
  146. package/dist-server/engine/task/mqtt-publish.js +35 -0
  147. package/dist-server/engine/task/mqtt-publish.js.map +1 -0
  148. package/dist-server/engine/task/mqtt-subscribe.d.ts +1 -0
  149. package/dist-server/engine/task/mqtt-subscribe.js +113 -0
  150. package/dist-server/engine/task/mqtt-subscribe.js.map +1 -0
  151. package/dist-server/engine/task/mssql-procedure.d.ts +1 -0
  152. package/dist-server/engine/task/mssql-procedure.js +94 -0
  153. package/dist-server/engine/task/mssql-procedure.js.map +1 -0
  154. package/dist-server/engine/task/oracle-procedure.d.ts +1 -0
  155. package/dist-server/engine/task/oracle-procedure.js +91 -0
  156. package/dist-server/engine/task/oracle-procedure.js.map +1 -0
  157. package/dist-server/engine/task/pick-pending-scenario.d.ts +1 -0
  158. package/dist-server/engine/task/pick-pending-scenario.js +61 -0
  159. package/dist-server/engine/task/pick-pending-scenario.js.map +1 -0
  160. package/dist-server/engine/task/publish.d.ts +1 -0
  161. package/dist-server/engine/task/publish.js +31 -0
  162. package/dist-server/engine/task/publish.js.map +1 -0
  163. package/dist-server/engine/task/random.d.ts +1 -0
  164. package/dist-server/engine/task/random.js +45 -0
  165. package/dist-server/engine/task/random.js.map +1 -0
  166. package/dist-server/engine/task/reset-pending-queue.d.ts +1 -0
  167. package/dist-server/engine/task/reset-pending-queue.js +13 -0
  168. package/dist-server/engine/task/reset-pending-queue.js.map +1 -0
  169. package/dist-server/engine/task/script.d.ts +1 -0
  170. package/dist-server/engine/task/script.js +55 -0
  171. package/dist-server/engine/task/script.js.map +1 -0
  172. package/dist-server/engine/task/set-domain.d.ts +1 -0
  173. package/dist-server/engine/task/set-domain.js +27 -0
  174. package/dist-server/engine/task/set-domain.js.map +1 -0
  175. package/dist-server/engine/task/sleep.d.ts +1 -0
  176. package/dist-server/engine/task/sleep.js +26 -0
  177. package/dist-server/engine/task/sleep.js.map +1 -0
  178. package/dist-server/engine/task/socket-listener.d.ts +1 -0
  179. package/dist-server/engine/task/socket-listener.js +86 -0
  180. package/dist-server/engine/task/socket-listener.js.map +1 -0
  181. package/dist-server/engine/task/state-group-read.d.ts +1 -0
  182. package/dist-server/engine/task/state-group-read.js +62 -0
  183. package/dist-server/engine/task/state-group-read.js.map +1 -0
  184. package/dist-server/engine/task/state-read.d.ts +1 -0
  185. package/dist-server/engine/task/state-read.js +49 -0
  186. package/dist-server/engine/task/state-read.js.map +1 -0
  187. package/dist-server/engine/task/state-write.d.ts +1 -0
  188. package/dist-server/engine/task/state-write.js +57 -0
  189. package/dist-server/engine/task/state-write.js.map +1 -0
  190. package/dist-server/engine/task/stop-scenario.d.ts +1 -0
  191. package/dist-server/engine/task/stop-scenario.js +35 -0
  192. package/dist-server/engine/task/stop-scenario.js.map +1 -0
  193. package/dist-server/engine/task/sub-scenario.d.ts +1 -0
  194. package/dist-server/engine/task/sub-scenario.js +45 -0
  195. package/dist-server/engine/task/sub-scenario.js.map +1 -0
  196. package/dist-server/engine/task/switch-goto.d.ts +1 -0
  197. package/dist-server/engine/task/switch-goto.js +32 -0
  198. package/dist-server/engine/task/switch-goto.js.map +1 -0
  199. package/dist-server/engine/task/switch-range-goto.d.ts +1 -0
  200. package/dist-server/engine/task/switch-range-goto.js +39 -0
  201. package/dist-server/engine/task/switch-range-goto.js.map +1 -0
  202. package/dist-server/engine/task/switch-range-scenario.d.ts +1 -0
  203. package/dist-server/engine/task/switch-range-scenario.js +60 -0
  204. package/dist-server/engine/task/switch-range-scenario.js.map +1 -0
  205. package/dist-server/engine/task/switch-range-set.d.ts +1 -0
  206. package/dist-server/engine/task/switch-range-set.js +35 -0
  207. package/dist-server/engine/task/switch-range-set.js.map +1 -0
  208. package/dist-server/engine/task/switch-scenario.d.ts +1 -0
  209. package/dist-server/engine/task/switch-scenario.js +53 -0
  210. package/dist-server/engine/task/switch-scenario.js.map +1 -0
  211. package/dist-server/engine/task/switch-set.d.ts +1 -0
  212. package/dist-server/engine/task/switch-set.js +28 -0
  213. package/dist-server/engine/task/switch-set.js.map +1 -0
  214. package/dist-server/engine/task/throw.d.ts +1 -0
  215. package/dist-server/engine/task/throw.js +19 -0
  216. package/dist-server/engine/task/throw.js.map +1 -0
  217. package/dist-server/engine/task/utils/headless-pool-for-scenario.d.ts +1 -0
  218. package/dist-server/engine/task/utils/headless-pool-for-scenario.js +64 -0
  219. package/dist-server/engine/task/utils/headless-pool-for-scenario.js.map +1 -0
  220. package/dist-server/engine/task/utils/substitute.d.ts +1 -0
  221. package/dist-server/engine/task/utils/substitute.js +45 -0
  222. package/dist-server/engine/task/utils/substitute.js.map +1 -0
  223. package/dist-server/engine/task/variables.d.ts +1 -0
  224. package/dist-server/engine/task/variables.js +13 -0
  225. package/dist-server/engine/task/variables.js.map +1 -0
  226. package/dist-server/engine/task-registry.d.ts +12 -0
  227. package/dist-server/engine/task-registry.js +20 -0
  228. package/dist-server/engine/task-registry.js.map +1 -0
  229. package/dist-server/engine/types.d.ts +94 -0
  230. package/dist-server/engine/types.js +3 -0
  231. package/dist-server/engine/types.js.map +1 -0
  232. package/dist-server/index.d.ts +6 -0
  233. package/dist-server/index.js +21 -0
  234. package/dist-server/index.js.map +1 -0
  235. package/dist-server/migrations/index.d.ts +1 -0
  236. package/dist-server/migrations/index.js +12 -0
  237. package/dist-server/migrations/index.js.map +1 -0
  238. package/dist-server/restful/index.d.ts +1 -0
  239. package/dist-server/restful/index.js +4 -0
  240. package/dist-server/restful/index.js.map +1 -0
  241. package/dist-server/restful/unstable/index.d.ts +7 -0
  242. package/dist-server/restful/unstable/index.js +10 -0
  243. package/dist-server/restful/unstable/index.js.map +1 -0
  244. package/dist-server/restful/unstable/run-scenario.d.ts +1 -0
  245. package/dist-server/restful/unstable/run-scenario.js +45 -0
  246. package/dist-server/restful/unstable/run-scenario.js.map +1 -0
  247. package/dist-server/restful/unstable/scenario-instance.d.ts +1 -0
  248. package/dist-server/restful/unstable/scenario-instance.js +52 -0
  249. package/dist-server/restful/unstable/scenario-instance.js.map +1 -0
  250. package/dist-server/restful/unstable/scenario-instances.d.ts +1 -0
  251. package/dist-server/restful/unstable/scenario-instances.js +74 -0
  252. package/dist-server/restful/unstable/scenario-instances.js.map +1 -0
  253. package/dist-server/restful/unstable/scenario.d.ts +1 -0
  254. package/dist-server/restful/unstable/scenario.js +41 -0
  255. package/dist-server/restful/unstable/scenario.js.map +1 -0
  256. package/dist-server/restful/unstable/scenarios.d.ts +1 -0
  257. package/dist-server/restful/unstable/scenarios.js +63 -0
  258. package/dist-server/restful/unstable/scenarios.js.map +1 -0
  259. package/dist-server/restful/unstable/start-scenario.d.ts +1 -0
  260. package/dist-server/restful/unstable/start-scenario.js +33 -0
  261. package/dist-server/restful/unstable/start-scenario.js.map +1 -0
  262. package/dist-server/restful/unstable/stop-scenario.d.ts +1 -0
  263. package/dist-server/restful/unstable/stop-scenario.js +30 -0
  264. package/dist-server/restful/unstable/stop-scenario.js.map +1 -0
  265. package/dist-server/routers/scenario-schedule-callback-router.d.ts +1 -0
  266. package/dist-server/routers/scenario-schedule-callback-router.js +55 -0
  267. package/dist-server/routers/scenario-schedule-callback-router.js.map +1 -0
  268. package/dist-server/routers/scenario-view-router.d.ts +1 -0
  269. package/dist-server/routers/scenario-view-router.js +41 -0
  270. package/dist-server/routers/scenario-view-router.js.map +1 -0
  271. package/dist-server/routes.d.ts +1 -0
  272. package/dist-server/routes.js +23 -0
  273. package/dist-server/routes.js.map +1 -0
  274. package/dist-server/service/analysis/analysis-query.d.ts +3 -0
  275. package/dist-server/service/analysis/analysis-query.js +25 -0
  276. package/dist-server/service/analysis/analysis-query.js.map +1 -0
  277. package/dist-server/service/analysis/index.d.ts +2 -0
  278. package/dist-server/service/analysis/index.js +6 -0
  279. package/dist-server/service/analysis/index.js.map +1 -0
  280. package/dist-server/service/connection/connection-mutation.d.ts +30 -0
  281. package/dist-server/service/connection/connection-mutation.js +182 -0
  282. package/dist-server/service/connection/connection-mutation.js.map +1 -0
  283. package/dist-server/service/connection/connection-query.d.ts +12 -0
  284. package/dist-server/service/connection/connection-query.js +112 -0
  285. package/dist-server/service/connection/connection-query.js.map +1 -0
  286. package/dist-server/service/connection/connection-subscription.d.ts +10 -0
  287. package/dist-server/service/connection/connection-subscription.js +98 -0
  288. package/dist-server/service/connection/connection-subscription.js.map +1 -0
  289. package/dist-server/service/connection/connection-type.d.ts +133 -0
  290. package/dist-server/service/connection/connection-type.js +294 -0
  291. package/dist-server/service/connection/connection-type.js.map +1 -0
  292. package/dist-server/service/connection/index.d.ts +6 -0
  293. package/dist-server/service/connection/index.js +10 -0
  294. package/dist-server/service/connection/index.js.map +1 -0
  295. package/dist-server/service/connector/connector-query.d.ts +6 -0
  296. package/dist-server/service/connector/connector-query.js +77 -0
  297. package/dist-server/service/connector/connector-query.js.map +1 -0
  298. package/dist-server/service/connector/connector-type.d.ts +12 -0
  299. package/dist-server/service/connector/connector-type.js +47 -0
  300. package/dist-server/service/connector/connector-type.js.map +1 -0
  301. package/dist-server/service/connector/index.d.ts +3 -0
  302. package/dist-server/service/connector/index.js +7 -0
  303. package/dist-server/service/connector/index.js.map +1 -0
  304. package/dist-server/service/index.d.ts +17 -0
  305. package/dist-server/service/index.js +55 -0
  306. package/dist-server/service/index.js.map +1 -0
  307. package/dist-server/service/payload-log/index.d.ts +5 -0
  308. package/dist-server/service/payload-log/index.js +9 -0
  309. package/dist-server/service/payload-log/index.js.map +1 -0
  310. package/dist-server/service/payload-log/payload-log-mutation.d.ts +10 -0
  311. package/dist-server/service/payload-log/payload-log-mutation.js +134 -0
  312. package/dist-server/service/payload-log/payload-log-mutation.js.map +1 -0
  313. package/dist-server/service/payload-log/payload-log-query.d.ts +11 -0
  314. package/dist-server/service/payload-log/payload-log-query.js +76 -0
  315. package/dist-server/service/payload-log/payload-log-query.js.map +1 -0
  316. package/dist-server/service/payload-log/payload-log-type.d.ts +15 -0
  317. package/dist-server/service/payload-log/payload-log-type.js +57 -0
  318. package/dist-server/service/payload-log/payload-log-type.js.map +1 -0
  319. package/dist-server/service/payload-log/payload-log.d.ts +23 -0
  320. package/dist-server/service/payload-log/payload-log.js +110 -0
  321. package/dist-server/service/payload-log/payload-log.js.map +1 -0
  322. package/dist-server/service/property-spec.d.ts +12 -0
  323. package/dist-server/service/property-spec.js +37 -0
  324. package/dist-server/service/property-spec.js.map +1 -0
  325. package/dist-server/service/scenario/index.d.ts +5 -0
  326. package/dist-server/service/scenario/index.js +9 -0
  327. package/dist-server/service/scenario/index.js.map +1 -0
  328. package/dist-server/service/scenario/scenario-mutation.d.ts +13 -0
  329. package/dist-server/service/scenario/scenario-mutation.js +327 -0
  330. package/dist-server/service/scenario/scenario-mutation.js.map +1 -0
  331. package/dist-server/service/scenario/scenario-query.d.ts +19 -0
  332. package/dist-server/service/scenario/scenario-query.js +167 -0
  333. package/dist-server/service/scenario/scenario-query.js.map +1 -0
  334. package/dist-server/service/scenario/scenario-type.d.ts +30 -0
  335. package/dist-server/service/scenario/scenario-type.js +111 -0
  336. package/dist-server/service/scenario/scenario-type.js.map +1 -0
  337. package/dist-server/service/scenario/scenario.d.ts +38 -0
  338. package/dist-server/service/scenario/scenario.js +142 -0
  339. package/dist-server/service/scenario/scenario.js.map +1 -0
  340. package/dist-server/service/scenario-flow/scenario-flow.d.ts +6 -0
  341. package/dist-server/service/scenario-flow/scenario-flow.js +28 -0
  342. package/dist-server/service/scenario-flow/scenario-flow.js.map +1 -0
  343. package/dist-server/service/scenario-instance/index.d.ts +5 -0
  344. package/dist-server/service/scenario-instance/index.js +9 -0
  345. package/dist-server/service/scenario-instance/index.js.map +1 -0
  346. package/dist-server/service/scenario-instance/scenario-instance-mutation.d.ts +6 -0
  347. package/dist-server/service/scenario-instance/scenario-instance-mutation.js +54 -0
  348. package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -0
  349. package/dist-server/service/scenario-instance/scenario-instance-query.d.ts +6 -0
  350. package/dist-server/service/scenario-instance/scenario-instance-query.js +45 -0
  351. package/dist-server/service/scenario-instance/scenario-instance-query.js.map +1 -0
  352. package/dist-server/service/scenario-instance/scenario-instance-subscription.d.ts +10 -0
  353. package/dist-server/service/scenario-instance/scenario-instance-subscription.js +109 -0
  354. package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +1 -0
  355. package/dist-server/service/scenario-instance/scenario-instance-type.d.ts +102 -0
  356. package/dist-server/service/scenario-instance/scenario-instance-type.js +533 -0
  357. package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -0
  358. package/dist-server/service/scenario-queue/index.d.ts +3 -0
  359. package/dist-server/service/scenario-queue/index.js +7 -0
  360. package/dist-server/service/scenario-queue/index.js.map +1 -0
  361. package/dist-server/service/scenario-queue/scenario-queue-subscription.d.ts +6 -0
  362. package/dist-server/service/scenario-queue/scenario-queue-subscription.js +58 -0
  363. package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +1 -0
  364. package/dist-server/service/scenario-queue/scenario-queue-type.d.ts +11 -0
  365. package/dist-server/service/scenario-queue/scenario-queue-type.js +43 -0
  366. package/dist-server/service/scenario-queue/scenario-queue-type.js.map +1 -0
  367. package/dist-server/service/state-register/data-resolver.d.ts +6 -0
  368. package/dist-server/service/state-register/data-resolver.js +61 -0
  369. package/dist-server/service/state-register/data-resolver.js.map +1 -0
  370. package/dist-server/service/state-register/index.d.ts +7 -0
  371. package/dist-server/service/state-register/index.js +11 -0
  372. package/dist-server/service/state-register/index.js.map +1 -0
  373. package/dist-server/service/state-register/state-register-mutation.d.ts +11 -0
  374. package/dist-server/service/state-register/state-register-mutation.js +153 -0
  375. package/dist-server/service/state-register/state-register-mutation.js.map +1 -0
  376. package/dist-server/service/state-register/state-register-query.d.ts +14 -0
  377. package/dist-server/service/state-register/state-register-query.js +123 -0
  378. package/dist-server/service/state-register/state-register-query.js.map +1 -0
  379. package/dist-server/service/state-register/state-register-type.d.ts +29 -0
  380. package/dist-server/service/state-register/state-register-type.js +114 -0
  381. package/dist-server/service/state-register/state-register-type.js.map +1 -0
  382. package/dist-server/service/state-register/state-register.d.ts +25 -0
  383. package/dist-server/service/state-register/state-register.js +128 -0
  384. package/dist-server/service/state-register/state-register.js.map +1 -0
  385. package/dist-server/service/step/index.d.ts +5 -0
  386. package/dist-server/service/step/index.js +9 -0
  387. package/dist-server/service/step/index.js.map +1 -0
  388. package/dist-server/service/step/step-mutation.d.ts +5 -0
  389. package/dist-server/service/step/step-mutation.js +55 -0
  390. package/dist-server/service/step/step-mutation.js.map +1 -0
  391. package/dist-server/service/step/step-query.d.ts +12 -0
  392. package/dist-server/service/step/step-query.js +89 -0
  393. package/dist-server/service/step/step-query.js.map +1 -0
  394. package/dist-server/service/step/step-type.d.ts +111 -0
  395. package/dist-server/service/step/step-type.js +212 -0
  396. package/dist-server/service/step/step-type.js.map +1 -0
  397. package/dist-server/service/task-type/index.d.ts +3 -0
  398. package/dist-server/service/task-type/index.js +7 -0
  399. package/dist-server/service/task-type/index.js.map +1 -0
  400. package/dist-server/service/task-type/task-type-query.d.ts +6 -0
  401. package/dist-server/service/task-type/task-type-query.js +108 -0
  402. package/dist-server/service/task-type/task-type-query.js.map +1 -0
  403. package/dist-server/service/task-type/task-type-type.d.ts +12 -0
  404. package/dist-server/service/task-type/task-type-type.js +47 -0
  405. package/dist-server/service/task-type/task-type-type.js.map +1 -0
  406. package/dist-server/tsconfig.tsbuildinfo +1 -0
  407. package/package.json +10 -10
@@ -0,0 +1,2 @@
1
+ export * from './scenario-controller';
2
+ export * from './publish-data';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./scenario-controller"), exports);
5
+ tslib_1.__exportStar(require("./publish-data"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;AAAA,gEAAqC;AACrC,yDAA8B","sourcesContent":["export * from './scenario-controller'\nexport * from './publish-data'\n"]}
@@ -0,0 +1,6 @@
1
+ import { Domain } from '@things-factory/shell';
2
+ import { User } from '@things-factory/auth-base';
3
+ export declare function publishData(tag: string, data: any, { domain, user }: {
4
+ domain: Domain;
5
+ user: User;
6
+ }): Promise<void>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.publishData = publishData;
4
+ const shell_1 = require("@things-factory/shell");
5
+ const state_register_1 = require("../service/state-register/state-register");
6
+ async function publishData(tag, data, { domain, user }) {
7
+ const repository = (0, shell_1.getRepository)(state_register_1.StateRegister);
8
+ const stateRegister = await repository.findOne({
9
+ where: { domain: { id: domain === null || domain === void 0 ? void 0 : domain.id }, name: tag }
10
+ });
11
+ if (stateRegister) {
12
+ await repository.save(Object.assign(Object.assign({}, stateRegister), { state: data, writer: user, wroteAt: new Date() }));
13
+ }
14
+ shell_1.pubsub.publish('data', {
15
+ data: {
16
+ domain,
17
+ tag,
18
+ data
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=publish-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-data.js","sourceRoot":"","sources":["../../server/controllers/publish-data.ts"],"names":[],"mappings":";;AAKA,kCAuBC;AA5BD,iDAAqE;AAGrE,6EAAwE;AAEjE,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,IAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAkC;IACxG,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,8BAAa,CAAC,CAAA;IAE/C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;KACjD,CAAC,CAAA;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,UAAU,CAAC,IAAI,iCAChB,aAAa,KAChB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,IAAI,IAAI,EAAE,IACnB,CAAA;IACJ,CAAC;IAED,cAAM,CAAC,OAAO,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE;YACJ,MAAM;YACN,GAAG;YACH,IAAI;SACL;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { Domain, getRepository, pubsub } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\nimport { StateRegister } from '../service/state-register/state-register'\n\nexport async function publishData(tag: string, data: any, { domain, user }: { domain: Domain; user: User }) {\n const repository = getRepository(StateRegister)\n\n const stateRegister = await repository.findOne({\n where: { domain: { id: domain?.id }, name: tag }\n })\n\n if (stateRegister) {\n await repository.save({\n ...stateRegister,\n state: data,\n writer: user,\n wroteAt: new Date()\n })\n }\n\n pubsub.publish('data', {\n data: {\n domain,\n tag,\n data\n }\n })\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { Scenario } from '../service/scenario/scenario';
2
+ import { ScenarioInstance, ScenarioInstanceRunResult } from '../service/scenario-instance/scenario-instance-type';
3
+ export declare function checkHasRole(scenario: Partial<Scenario>, context: ResolverContext): Promise<void>;
4
+ export declare function runScenario(instanceName: string, scenarioName: string, variables: any, context: ResolverContext): Promise<ScenarioInstanceRunResult>;
5
+ export declare function startScenario(instanceName: string, scenarioName: string, variables: any, context: ResolverContext): Promise<ScenarioInstance>;
6
+ export declare function stopScenario(instanceName: string, context: ResolverContext): Promise<ScenarioInstance | undefined>;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkHasRole = checkHasRole;
4
+ exports.runScenario = runScenario;
5
+ exports.startScenario = startScenario;
6
+ exports.stopScenario = stopScenario;
7
+ const shell_1 = require("@things-factory/shell");
8
+ const auth_base_1 = require("@things-factory/auth-base");
9
+ const cache_service_1 = require("@things-factory/cache-service");
10
+ const scenario_engine_1 = require("../engine/scenario-engine");
11
+ const scenario_1 = require("../service/scenario/scenario");
12
+ const scenario_instance_type_1 = require("../service/scenario-instance/scenario-instance-type");
13
+ const debug = require('debug')('things-factory:integration-base:controller:run-scenario');
14
+ async function findScenario(scenarioName, domain) {
15
+ var repository = (0, shell_1.getRepository)(scenario_1.Scenario);
16
+ var scenario = await repository.findOne({
17
+ where: { domain: { id: domain.id }, name: scenarioName },
18
+ relations: ['domain', 'steps', 'role', 'creator', 'updater']
19
+ });
20
+ if (!scenario && domain.parentId) {
21
+ scenario = await repository.findOne({
22
+ where: { domain: { id: domain.parentId }, name: scenarioName },
23
+ relations: ['domain', 'steps', 'role', 'creator', 'updater']
24
+ });
25
+ }
26
+ return scenario;
27
+ }
28
+ async function checkHasRole(scenario, context) {
29
+ const { domain, user } = context.state;
30
+ if (!(await (0, auth_base_1.checkUserHasRole)(scenario.roleId, domain, user))) {
31
+ throw new Error(context.t('error.scenario run unauthorized', {
32
+ scenario: scenario.name
33
+ }));
34
+ }
35
+ }
36
+ async function runScenario(instanceName, scenarioName, variables, context) {
37
+ const { domain, user, lng } = context.state;
38
+ debug('runScenario', scenarioName, instanceName, variables);
39
+ var scenario = await findScenario(scenarioName, domain);
40
+ if (!scenario) {
41
+ throw new Error(context.t('error.scenario not found', {
42
+ scenario: scenarioName
43
+ }));
44
+ }
45
+ await checkHasRole(scenario, context);
46
+ if (scenario.ttl > 0) {
47
+ const cachedValue = await cache_service_1.cacheService.getFromCache(scenario.id, { domain: domain.id, variables: variables || {} });
48
+ if (cachedValue) {
49
+ return cachedValue.value;
50
+ }
51
+ }
52
+ /* 시나리오 인스턴스를 생성한다. */
53
+ instanceName = instanceName || scenarioName + '-' + String(Date.now());
54
+ var instance = new scenario_instance_type_1.ScenarioInstance(instanceName, scenario, {
55
+ domain,
56
+ user,
57
+ lng,
58
+ variables,
59
+ client: shell_1.GraphqlLocalClient.client
60
+ });
61
+ try {
62
+ return await instance.run();
63
+ }
64
+ catch (err) {
65
+ console.error(err);
66
+ throw new Error(context.t('error.scenario run error', {
67
+ scenario: scenarioName
68
+ }));
69
+ }
70
+ }
71
+ async function startScenario(instanceName, scenarioName, variables, context) {
72
+ const { domain, user, lng } = context.state;
73
+ debug('startScenario', instanceName, scenarioName, variables);
74
+ var scenario = await findScenario(scenarioName, domain);
75
+ if (!scenario) {
76
+ throw new Error(context.t('error.scenario not found', {
77
+ scenario: scenarioName
78
+ }));
79
+ }
80
+ await checkHasRole(scenario, context);
81
+ instanceName = instanceName || scenarioName;
82
+ return await scenario_engine_1.ScenarioEngine.load(instanceName, scenario, { domain, user, lng, variables });
83
+ }
84
+ async function stopScenario(instanceName, context) {
85
+ const { domain, user, unsafeIP, prohibitedPrivileges } = context.state;
86
+ debug('stopScenario', instanceName);
87
+ var scenarioInstance = scenario_engine_1.ScenarioEngine.getScenarioInstance(domain, instanceName);
88
+ if (!scenarioInstance) {
89
+ debug('stopScenario', `ScenarioInstance(${instanceName}) Not Found.`);
90
+ throw new Error(context.t('error.scenario instance not found', {
91
+ instance: instanceName
92
+ }));
93
+ }
94
+ var scenario = await findScenario(scenarioInstance.scenarioName, domain);
95
+ await checkHasRole(scenario, context);
96
+ await scenario_engine_1.ScenarioEngine.unload(domain, instanceName);
97
+ return scenarioInstance;
98
+ }
99
+ //# sourceMappingURL=scenario-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-controller.js","sourceRoot":"","sources":["../../server/controllers/scenario-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository, Domain, GraphqlLocalClient } from '@things-factory/shell'\nimport { checkUserHasRole } from '@things-factory/auth-base'\nimport { cacheService } from '@things-factory/cache-service'\n\nimport { ScenarioEngine } from '../engine/scenario-engine'\nimport { Scenario } from '../service/scenario/scenario'\nimport { ScenarioInstance, ScenarioInstanceRunResult } from '../service/scenario-instance/scenario-instance-type'\nimport { Step } from '../service/step/step-type'\n\nconst debug = require('debug')('things-factory:integration-base:controller:run-scenario')\n\nasync function findScenario(\n scenarioName: string,\n domain: Domain\n): Promise<{\n id: string\n ttl: number\n name: string\n steps: Step[]\n domain: Domain\n}> {\n var repository = getRepository(Scenario)\n\n var scenario = await repository.findOne({\n where: { domain: { id: domain.id }, name: scenarioName },\n relations: ['domain', 'steps', 'role', 'creator', 'updater']\n })\n\n if (!scenario && domain.parentId) {\n scenario = await repository.findOne({\n where: { domain: { id: domain.parentId }, name: scenarioName },\n relations: ['domain', 'steps', 'role', 'creator', 'updater']\n })\n }\n\n return scenario as any\n}\n\nexport async function checkHasRole(scenario: Partial<Scenario>, context: ResolverContext): Promise<void> {\n const { domain, user } = context.state\n if (!(await checkUserHasRole(scenario.roleId, domain, user))) {\n throw new Error(\n context.t('error.scenario run unauthorized', {\n scenario: scenario.name\n })\n )\n }\n}\n\nexport async function runScenario(\n instanceName: string,\n scenarioName: string,\n variables: any,\n context: ResolverContext\n): Promise<ScenarioInstanceRunResult> {\n const { domain, user, lng } = context.state\n\n debug('runScenario', scenarioName, instanceName, variables)\n\n var scenario = await findScenario(scenarioName, domain)\n\n if (!scenario) {\n throw new Error(\n context.t('error.scenario not found', {\n scenario: scenarioName\n })\n )\n }\n\n await checkHasRole(scenario, context)\n\n if (scenario.ttl > 0) {\n const cachedValue = await cacheService.getFromCache(scenario.id, { domain: domain.id, variables: variables || {} })\n if (cachedValue) {\n return cachedValue.value\n }\n }\n\n /* 시나리오 인스턴스를 생성한다. */\n instanceName = instanceName || scenarioName + '-' + String(Date.now())\n var instance = new ScenarioInstance(instanceName, scenario, {\n domain,\n user,\n lng,\n variables,\n client: GraphqlLocalClient.client\n })\n\n try {\n return await instance.run()\n } catch (err) {\n console.error(err)\n\n throw new Error(\n context.t('error.scenario run error', {\n scenario: scenarioName\n })\n )\n }\n}\n\nexport async function startScenario(\n instanceName: string,\n scenarioName: string,\n variables: any,\n context: ResolverContext\n): Promise<ScenarioInstance> {\n const { domain, user, lng } = context.state\n\n debug('startScenario', instanceName, scenarioName, variables)\n\n var scenario = await findScenario(scenarioName, domain)\n\n if (!scenario) {\n throw new Error(\n context.t('error.scenario not found', {\n scenario: scenarioName\n })\n )\n }\n\n await checkHasRole(scenario, context)\n\n instanceName = instanceName || scenarioName\n return await ScenarioEngine.load(instanceName, scenario, { domain, user, lng, variables })\n}\n\nexport async function stopScenario(\n instanceName: string,\n context: ResolverContext\n): Promise<ScenarioInstance | undefined> {\n const { domain, user, unsafeIP, prohibitedPrivileges } = context.state\n\n debug('stopScenario', instanceName)\n\n var scenarioInstance = ScenarioEngine.getScenarioInstance(domain, instanceName)\n\n if (!scenarioInstance) {\n debug('stopScenario', `ScenarioInstance(${instanceName}) Not Found.`)\n throw new Error(\n context.t('error.scenario instance not found', {\n instance: instanceName\n })\n )\n }\n\n var scenario = await findScenario(scenarioInstance.scenarioName, domain)\n\n await checkHasRole(scenario, context)\n\n await ScenarioEngine.unload(domain, instanceName)\n\n return scenarioInstance\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { Domain } from '@things-factory/shell';
2
+ export declare function analyzeIntegration(domain: Domain): Promise<{
3
+ nodes: any[];
4
+ relationships: any[];
5
+ }>;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyzeIntegration = analyzeIntegration;
4
+ const tslib_1 = require("tslib");
5
+ const uniq_1 = tslib_1.__importDefault(require("lodash/uniq"));
6
+ const shell_1 = require("@things-factory/shell");
7
+ const scenario_1 = require("../../service/scenario/scenario");
8
+ const connection_type_1 = require("../../service/connection/connection-type");
9
+ async function analyzeIntegration(domain) {
10
+ const tagNames = [];
11
+ const model = {
12
+ nodes: [],
13
+ relationships: []
14
+ };
15
+ var id = 0;
16
+ const scenarios = await (0, shell_1.getRepository)(scenario_1.Scenario).find({
17
+ where: { domain: { id: domain.id } },
18
+ relations: ['steps']
19
+ });
20
+ const connections = await (0, shell_1.getRepository)(connection_type_1.Connection).find({
21
+ where: { domain: { id: domain.id } }
22
+ });
23
+ model.nodes = model.nodes.concat(scenarios.map(scenario => {
24
+ return {
25
+ id: scenario.id,
26
+ labels: ['Scenario'],
27
+ text: scenario.name,
28
+ icon: 'settings',
29
+ properties: {
30
+ name: scenario.name,
31
+ description: scenario.description
32
+ }
33
+ };
34
+ }));
35
+ model.nodes = model.nodes.concat(connections.map(connection => {
36
+ return {
37
+ id: connection.id,
38
+ labels: ['Connection'],
39
+ text: connection.name,
40
+ icon: 'link',
41
+ properties: {
42
+ name: connection.name,
43
+ description: connection.description
44
+ }
45
+ };
46
+ }));
47
+ scenarios.forEach(scenario => {
48
+ const connectionNames = (0, uniq_1.default)(scenario.steps.map(step => step.connection).filter(Boolean));
49
+ const connectionList = connectionNames
50
+ .map(connectionName => connections.find(connection => connection.name == connectionName))
51
+ .filter(Boolean);
52
+ const relationships = connectionList.map(connection => {
53
+ return {
54
+ id: ++id,
55
+ type: 'using',
56
+ startNode: scenario.id,
57
+ endNode: connection.id,
58
+ properties: {}
59
+ };
60
+ });
61
+ model.relationships = model.relationships.concat(relationships);
62
+ });
63
+ scenarios.forEach(scenario => {
64
+ const tags = (0, uniq_1.default)(scenario.steps
65
+ .filter(step => !step.connection && step.task == 'publish')
66
+ .map(step => { var _a; return (_a = JSON.parse(step.params)) === null || _a === void 0 ? void 0 : _a.tag; })
67
+ .filter(Boolean));
68
+ for (const tag of tags) {
69
+ if (tagNames.includes(tag)) {
70
+ continue;
71
+ }
72
+ model.nodes.push({
73
+ id: `tag-${tag}`,
74
+ labels: ['Tag'],
75
+ text: tag,
76
+ icon: 'label',
77
+ properties: {
78
+ tag
79
+ }
80
+ });
81
+ tagNames.push(tag);
82
+ }
83
+ const relationships = tags.map(tag => {
84
+ return {
85
+ id: ++id,
86
+ type: 'publish',
87
+ startNode: scenario.id,
88
+ endNode: `tag-${tag}`,
89
+ properties: {}
90
+ };
91
+ });
92
+ model.relationships = model.relationships.concat(relationships);
93
+ });
94
+ return model;
95
+ }
96
+ //# sourceMappingURL=analyze-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-integration.js","sourceRoot":"","sources":["../../../server/engine/analyzer/analyze-integration.ts"],"names":[],"mappings":"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","sourcesContent":["import uniq from 'lodash/uniq'\n\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { Scenario } from '../../service/scenario/scenario'\nimport { Connection } from '../../service/connection/connection-type'\n\nexport async function analyzeIntegration(domain: Domain) {\n const tagNames = []\n\n const model = {\n nodes: [],\n relationships: []\n }\n\n var id = 0\n\n const scenarios = await getRepository(Scenario).find({\n where: { domain: { id: domain.id } },\n relations: ['steps']\n })\n\n const connections = await getRepository(Connection).find({\n where: { domain: { id: domain.id } }\n })\n\n model.nodes = model.nodes.concat(\n scenarios.map(scenario => {\n return {\n id: scenario.id,\n labels: ['Scenario'],\n text: scenario.name,\n icon: 'settings',\n properties: {\n name: scenario.name,\n description: scenario.description\n }\n }\n })\n )\n\n model.nodes = model.nodes.concat(\n connections.map(connection => {\n return {\n id: connection.id,\n labels: ['Connection'],\n text: connection.name,\n icon: 'link',\n properties: {\n name: connection.name,\n description: connection.description\n }\n }\n })\n )\n\n scenarios.forEach(scenario => {\n const connectionNames = uniq(scenario.steps.map(step => step.connection).filter(Boolean))\n const connectionList = connectionNames\n .map(connectionName => connections.find(connection => connection.name == connectionName))\n .filter(Boolean)\n\n const relationships = connectionList.map(connection => {\n return {\n id: ++id,\n type: 'using',\n startNode: scenario.id,\n endNode: connection.id,\n properties: {}\n }\n })\n\n model.relationships = model.relationships.concat(relationships)\n })\n\n scenarios.forEach(scenario => {\n const tags = uniq(\n scenario.steps\n .filter(step => !step.connection && step.task == 'publish')\n .map(step => JSON.parse(step.params)?.tag)\n .filter(Boolean)\n )\n\n for (const tag of tags) {\n if (tagNames.includes(tag)) {\n continue\n }\n\n model.nodes.push({\n id: `tag-${tag}`,\n labels: ['Tag'],\n text: tag,\n icon: 'label',\n properties: {\n tag\n }\n })\n\n tagNames.push(tag)\n }\n\n const relationships = tags.map(tag => {\n return {\n id: ++id,\n type: 'publish',\n startNode: scenario.id,\n endNode: `tag-${tag}`,\n properties: {}\n }\n })\n\n model.relationships = model.relationships.concat(relationships)\n })\n\n return model\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import { Domain } from '@things-factory/shell';
2
+ import { Connection } from '../service';
3
+ import { Connector } from './types';
4
+ export declare class ConnectionManager {
5
+ private static connectors;
6
+ private static connections;
7
+ private static entities;
8
+ private static logFormat;
9
+ static logger: import("winston").Logger;
10
+ static ready(): Promise<void>;
11
+ static registerConnector(type: string, connector: Connector): void;
12
+ static getConnector(type: string): Connector;
13
+ static getConnectors(): {
14
+ [connectorName: string]: Connector;
15
+ };
16
+ static unregisterConnector(type: string): void;
17
+ static getConnections(): {
18
+ [domainId: string]: {
19
+ [name: string]: any;
20
+ };
21
+ };
22
+ static getEntities(): {};
23
+ static getConnectionInstance(connection: Connection): any;
24
+ static getConnectionInstanceByName(domain: Domain, name: string): any;
25
+ static getConnectionInstanceEntityByName(domain: Domain, name: string): any;
26
+ static getConnectionInstances(domain: Domain): {
27
+ [connectionName: string]: any;
28
+ };
29
+ static getConnectionInstanceEntities(domain: Domain): {
30
+ [connectionName: string]: any;
31
+ };
32
+ static addConnectionInstance(connection: Connection, instance: any): void;
33
+ static removeConnectionInstance(connection: Connection): any;
34
+ private static publishState;
35
+ }
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionManager = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const moment_timezone_1 = tslib_1.__importDefault(require("moment-timezone"));
6
+ const winston_1 = require("winston");
7
+ const shell_1 = require("@things-factory/shell");
8
+ const service_1 = require("../service");
9
+ const proxy_connector_1 = require("./connector/proxy-connector");
10
+ const { combine, splat, printf, errors } = winston_1.format;
11
+ const debug = require('debug')('things-factory:integration-base:connections');
12
+ function getSystemTimeZone() {
13
+ try {
14
+ const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
15
+ if (!timeZone) {
16
+ throw new Error('Unable to resolve timeZone');
17
+ }
18
+ return timeZone;
19
+ }
20
+ catch (e) {
21
+ console.warn('Failed to get system timeZone, falling back to UTC.', e);
22
+ return 'UTC';
23
+ }
24
+ }
25
+ const SYSTEM_TZ = getSystemTimeZone();
26
+ const systemTimestamp = (0, winston_1.format)((info, opts) => {
27
+ if (opts.tz)
28
+ info.timestamp = (0, moment_timezone_1.default)().tz(opts.tz).format();
29
+ return info;
30
+ });
31
+ class ConnectionManager {
32
+ static async ready() {
33
+ const CONNECTIONS = (await (0, shell_1.getRepository)(service_1.Connection).find({
34
+ where: { active: true },
35
+ relations: ['domain', 'edge', 'creator', 'updater']
36
+ })).map(connection => {
37
+ var params = {};
38
+ try {
39
+ params = JSON.parse(connection.params || '{}');
40
+ }
41
+ catch (ex) {
42
+ ConnectionManager.logger.error(`connection '${connection.name}' params should be JSON format`, ex);
43
+ }
44
+ return Object.assign(Object.assign({}, connection), { params });
45
+ });
46
+ ConnectionManager.logger.info('Initializing ConnectionManager...');
47
+ return await Promise.all([...Object.keys(ConnectionManager.connectors), 'proxy-connector'].map(type => {
48
+ const connector = type == 'proxy-connector' ? proxy_connector_1.ProxyConnector.instance : ConnectionManager.getConnector(type);
49
+ ConnectionManager.logger.info(`Connector '${type}' started to ready`);
50
+ return connector
51
+ .ready(CONNECTIONS.filter(connection => {
52
+ if (type == 'proxy-connector') {
53
+ return !!connection.edge;
54
+ }
55
+ else {
56
+ return !connection.edge && connection.type == type;
57
+ }
58
+ }))
59
+ .catch(error => {
60
+ ConnectionManager.logger.error(error);
61
+ })
62
+ .then(() => {
63
+ ConnectionManager.logger.info(`All connector for '${type}' ready`);
64
+ });
65
+ })).then(() => {
66
+ ConnectionManager.logger.info('ConnectionManager initialization done:');
67
+ Object.keys(ConnectionManager.connections).forEach(key => {
68
+ var connections = ConnectionManager.connections[key];
69
+ ConnectionManager.logger.info('For domain(%s) : %s', key, JSON.stringify(Object.keys(connections)));
70
+ });
71
+ });
72
+ }
73
+ static registerConnector(type, connector) {
74
+ ConnectionManager.connectors[type] = connector;
75
+ }
76
+ static getConnector(type) {
77
+ return ConnectionManager.connectors[type];
78
+ }
79
+ static getConnectors() {
80
+ return Object.assign({}, ConnectionManager.connectors);
81
+ }
82
+ static unregisterConnector(type) {
83
+ delete ConnectionManager.connectors[type];
84
+ }
85
+ static getConnections() {
86
+ return ConnectionManager.connections;
87
+ }
88
+ static getEntities() {
89
+ return ConnectionManager.entities;
90
+ }
91
+ static getConnectionInstance(connection) {
92
+ var _a;
93
+ const { domain, name } = connection;
94
+ return (_a = ConnectionManager.connections[domain.id]) === null || _a === void 0 ? void 0 : _a[name];
95
+ }
96
+ static getConnectionInstanceByName(domain, name) {
97
+ const connections = ConnectionManager.connections[domain.id];
98
+ const connection = connections === null || connections === void 0 ? void 0 : connections[name];
99
+ if (!connection) {
100
+ throw `The connection with the given name(${name}) cannot be found`;
101
+ }
102
+ return connection;
103
+ }
104
+ static getConnectionInstanceEntityByName(domain, name) {
105
+ var _a, _b;
106
+ const connection = (_a = ConnectionManager.entities[domain.id]) === null || _a === void 0 ? void 0 : _a[name];
107
+ if (connection) {
108
+ return connection;
109
+ }
110
+ if (domain.parentId) {
111
+ return (_b = ConnectionManager.entities[domain.id]) === null || _b === void 0 ? void 0 : _b[name];
112
+ }
113
+ }
114
+ static getConnectionInstances(domain) {
115
+ const connections = ConnectionManager.connections[domain.id];
116
+ const parentConnections = domain.parentId && ConnectionManager.connections[domain.parentId];
117
+ return Object.assign(Object.assign({}, parentConnections), connections);
118
+ }
119
+ static getConnectionInstanceEntities(domain) {
120
+ const connections = ConnectionManager.entities[domain.id];
121
+ return Object.assign({}, connections);
122
+ }
123
+ static addConnectionInstance(connection, instance) {
124
+ const { domain, name } = connection;
125
+ var connections = ConnectionManager.connections[domain.id];
126
+ if (!connections) {
127
+ connections = ConnectionManager.connections[domain.id] = {};
128
+ }
129
+ var entities = ConnectionManager.entities[domain.id];
130
+ if (!entities) {
131
+ entities = ConnectionManager.entities[domain.id] = {};
132
+ }
133
+ connections[name] = instance;
134
+ entities[name] = connection;
135
+ ConnectionManager.publishState(connection, service_1.ConnectionStatus.CONNECTED);
136
+ debug('add-connection', domain.subdomain, name);
137
+ }
138
+ static removeConnectionInstance(connection) {
139
+ const { domain, name } = connection;
140
+ var connections = ConnectionManager.connections[domain.id];
141
+ var entities = ConnectionManager.entities[domain.id];
142
+ var instance = connections === null || connections === void 0 ? void 0 : connections[name];
143
+ if (!connections || !instance) {
144
+ debug('remove-connection', `'${name}' connection not found in domain '${domain.subdomain}'`);
145
+ return;
146
+ }
147
+ delete connections[name];
148
+ delete entities[name];
149
+ ConnectionManager.publishState(connection, service_1.ConnectionStatus.DISCONNECTED);
150
+ debug('remove-connection', `'${name}' connection is removed from domain '${domain.subdomain}'`);
151
+ return instance;
152
+ }
153
+ static async publishState(connection, state) {
154
+ const { domain, id, name, description, type, edge } = connection;
155
+ shell_1.pubsub.publish('connection-state', {
156
+ connectionState: {
157
+ domain,
158
+ id,
159
+ name,
160
+ description,
161
+ type,
162
+ edge,
163
+ state,
164
+ timestamp: new Date()
165
+ }
166
+ });
167
+ }
168
+ }
169
+ exports.ConnectionManager = ConnectionManager;
170
+ ConnectionManager.connectors = {};
171
+ ConnectionManager.connections = {};
172
+ ConnectionManager.entities = {};
173
+ ConnectionManager.logFormat = printf(({ level, message, timestamp, stack }) => {
174
+ return `${timestamp} ${level}: ${stack || message}`;
175
+ });
176
+ ConnectionManager.logger = (0, winston_1.createLogger)({
177
+ format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), ConnectionManager.logFormat),
178
+ transports: [
179
+ new winston_1.transports.DailyRotateFile({
180
+ filename: `logs/connections-%DATE%.log`,
181
+ datePattern: 'YYYY-MM-DD-HH',
182
+ zippedArchive: false,
183
+ maxSize: '20m',
184
+ maxFiles: '14d',
185
+ level: 'info'
186
+ }),
187
+ new shell_1.PubSubLogTransport({
188
+ topic: 'connection-log'
189
+ })
190
+ ]
191
+ });
192
+ //# sourceMappingURL=connection-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../server/engine/connection-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import moment from 'moment-timezone'\nimport { createLogger, format, transports } from 'winston'\n\nimport { Domain, getRepository, pubsub, PubSubLogTransport } from '@things-factory/shell'\n\nimport { Connection, ConnectionStatus } from '../service'\nimport { Connector } from './types'\nimport { ProxyConnector } from './connector/proxy-connector'\n\nconst { combine, splat, printf, errors } = format\nconst debug = require('debug')('things-factory:integration-base:connections')\n\nfunction getSystemTimeZone() {\n try {\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\n if (!timeZone) {\n throw new Error('Unable to resolve timeZone')\n }\n return timeZone\n } catch (e) {\n console.warn('Failed to get system timeZone, falling back to UTC.', e)\n return 'UTC'\n }\n}\n\nconst SYSTEM_TZ = getSystemTimeZone()\nconst systemTimestamp = format((info, opts: { tz?: string }) => {\n if (opts.tz) info.timestamp = moment().tz(opts.tz).format()\n return info\n})\n\nexport class ConnectionManager {\n private static connectors: { [propName: string]: Connector } = {}\n private static connections: { [domainId: string]: { [name: string]: any } } = {}\n private static entities = {}\n private static logFormat = printf(({ level, message, timestamp, stack }) => {\n return `${timestamp} ${level}: ${stack || message}`\n })\n\n public static logger = createLogger({\n format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), ConnectionManager.logFormat),\n transports: [\n new (transports as any).DailyRotateFile({\n filename: `logs/connections-%DATE%.log`,\n datePattern: 'YYYY-MM-DD-HH',\n zippedArchive: false,\n maxSize: '20m',\n maxFiles: '14d',\n level: 'info'\n }),\n new PubSubLogTransport({\n topic: 'connection-log'\n })\n ]\n })\n\n static async ready() {\n const CONNECTIONS = (\n await getRepository(Connection).find({\n where: { active: true },\n relations: ['domain', 'edge', 'creator', 'updater']\n })\n ).map(connection => {\n var params = {}\n try {\n params = JSON.parse(connection.params || '{}')\n } catch (ex) {\n ConnectionManager.logger.error(`connection '${connection.name}' params should be JSON format`, ex)\n }\n\n return {\n ...connection,\n params\n }\n })\n\n ConnectionManager.logger.info('Initializing ConnectionManager...')\n\n return await Promise.all(\n [...Object.keys(ConnectionManager.connectors), 'proxy-connector'].map(type => {\n const connector = type == 'proxy-connector' ? ProxyConnector.instance : ConnectionManager.getConnector(type)\n\n ConnectionManager.logger.info(`Connector '${type}' started to ready`)\n\n return connector\n .ready(\n CONNECTIONS.filter(connection => {\n if (type == 'proxy-connector') {\n return !!connection.edge\n } else {\n return !connection.edge && connection.type == type\n }\n }) as any\n )\n .catch(error => {\n ConnectionManager.logger.error(error)\n })\n .then(() => {\n ConnectionManager.logger.info(`All connector for '${type}' ready`)\n })\n })\n ).then(() => {\n ConnectionManager.logger.info('ConnectionManager initialization done:')\n Object.keys(ConnectionManager.connections).forEach(key => {\n var connections = ConnectionManager.connections[key]\n ConnectionManager.logger.info('For domain(%s) : %s', key, JSON.stringify(Object.keys(connections)))\n })\n })\n }\n\n static registerConnector(type: string, connector: Connector) {\n ConnectionManager.connectors[type] = connector\n }\n\n static getConnector(type: string): Connector {\n return ConnectionManager.connectors[type]\n }\n\n static getConnectors(): { [connectorName: string]: Connector } {\n return {\n ...ConnectionManager.connectors\n }\n }\n\n static unregisterConnector(type: string) {\n delete ConnectionManager.connectors[type]\n }\n\n static getConnections() {\n return ConnectionManager.connections\n }\n\n static getEntities() {\n return ConnectionManager.entities\n }\n\n static getConnectionInstance(connection: Connection): any {\n const { domain, name } = connection\n return ConnectionManager.connections[domain.id]?.[name]\n }\n\n static getConnectionInstanceByName(domain: Domain, name: string) {\n const connections = ConnectionManager.connections[domain.id]\n const connection = connections?.[name]\n\n if (!connection) {\n throw `The connection with the given name(${name}) cannot be found`\n }\n\n return connection\n }\n\n static getConnectionInstanceEntityByName(domain: Domain, name: string): any {\n const connection = ConnectionManager.entities[domain.id]?.[name]\n if (connection) {\n return connection\n }\n\n if (domain.parentId) {\n return ConnectionManager.entities[domain.id]?.[name]\n }\n }\n\n static getConnectionInstances(domain: Domain): { [connectionName: string]: any } {\n const connections = ConnectionManager.connections[domain.id]\n const parentConnections = domain.parentId && ConnectionManager.connections[domain.parentId]\n\n return {\n ...parentConnections,\n ...connections\n }\n }\n\n static getConnectionInstanceEntities(domain: Domain): { [connectionName: string]: any } {\n const connections = ConnectionManager.entities[domain.id]\n\n return {\n ...connections\n }\n }\n\n static addConnectionInstance(connection: Connection, instance: any) {\n const { domain, name } = connection\n\n var connections = ConnectionManager.connections[domain.id]\n if (!connections) {\n connections = ConnectionManager.connections[domain.id] = {}\n }\n\n var entities = ConnectionManager.entities[domain.id]\n if (!entities) {\n entities = ConnectionManager.entities[domain.id] = {}\n }\n\n connections[name] = instance\n entities[name] = connection\n\n ConnectionManager.publishState(connection, ConnectionStatus.CONNECTED)\n debug('add-connection', domain.subdomain, name)\n }\n\n static removeConnectionInstance(connection: Connection): any {\n const { domain, name } = connection\n var connections = ConnectionManager.connections[domain.id]\n var entities = ConnectionManager.entities[domain.id]\n\n var instance = connections?.[name]\n\n if (!connections || !instance) {\n debug('remove-connection', `'${name}' connection not found in domain '${domain.subdomain}'`)\n return\n }\n\n delete connections[name]\n delete entities[name]\n\n ConnectionManager.publishState(connection, ConnectionStatus.DISCONNECTED)\n debug('remove-connection', `'${name}' connection is removed from domain '${domain.subdomain}'`)\n\n return instance\n }\n\n private static async publishState(connection: Connection, state) {\n const { domain, id, name, description, type, edge } = connection\n\n pubsub.publish('connection-state', {\n connectionState: {\n domain,\n id,\n name,\n description,\n type,\n edge,\n state,\n timestamp: new Date()\n }\n })\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { Connector } from '../types';
2
+ import { InputConnection } from '../../service/connection/connection-type';
3
+ export declare class EchoBack implements Connector {
4
+ ready(connectionConfigs: any): Promise<void>;
5
+ connect(connection: InputConnection): Promise<void>;
6
+ disconnect(connection: InputConnection): Promise<void>;
7
+ get parameterSpec(): any[];
8
+ get taskPrefixes(): string[];
9
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EchoBack = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const net_1 = tslib_1.__importDefault(require("net"));
6
+ const promise_socket_1 = tslib_1.__importDefault(require("promise-socket"));
7
+ const connection_manager_1 = require("../connection-manager");
8
+ class EchoBack {
9
+ async ready(connectionConfigs) {
10
+ await Promise.all(connectionConfigs.map(this.connect.bind(this)));
11
+ connection_manager_1.ConnectionManager.logger.info('echo-back connections are ready');
12
+ }
13
+ async connect(connection) {
14
+ let socket = new promise_socket_1.default(new net_1.default.Socket());
15
+ let [host, port = 8124] = connection.endpoint.split(':');
16
+ try {
17
+ await socket.connect(Number(port), host);
18
+ connection_manager_1.ConnectionManager.addConnectionInstance(connection, socket);
19
+ connection_manager_1.ConnectionManager.logger.info(`echo-back-connector connection(${connection.name}:${connection.endpoint}) is connected`);
20
+ }
21
+ catch (e) {
22
+ connection_manager_1.ConnectionManager.logger.error(`echo-back-connector connection(${connection.name}:${connection.endpoint}) is not connected.`, e);
23
+ }
24
+ }
25
+ async disconnect(connection) {
26
+ let socket = connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
27
+ await socket.destroy();
28
+ connection_manager_1.ConnectionManager.logger.info(`echo-back-connector connection(${connection.name}) is disconnected`);
29
+ }
30
+ get parameterSpec() {
31
+ return [];
32
+ }
33
+ get taskPrefixes() {
34
+ return ['echo'];
35
+ }
36
+ }
37
+ exports.EchoBack = EchoBack;
38
+ connection_manager_1.ConnectionManager.registerConnector('echo-back', new EchoBack());
39
+ //# sourceMappingURL=echo-back-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo-back-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/echo-back-connector.ts"],"names":[],"mappings":";;;;AAAA,sDAAqB;AACrB,4EAA0C;AAG1C,8DAAyD;AAGzD,MAAa,QAAQ;IACnB,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjE,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAA2B;QACvC,IAAI,MAAM,GAAG,IAAI,wBAAa,CAAC,IAAI,aAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAExD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;YACxC,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAE3D,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAC3B,kCAAkC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,gBAAgB,CACzF,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,sCAAiB,CAAC,MAAM,CAAC,KAAK,CAC5B,kCAAkC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,qBAAqB,EAC7F,CAAC,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAA2B;QAC1C,IAAI,MAAM,GAAG,sCAAiB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;QAEnE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QAEtB,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,UAAU,CAAC,IAAI,mBAAmB,CAAC,CAAA;IACrG,CAAC;IAED,IAAI,aAAa;QACf,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,MAAM,CAAC,CAAA;IACjB,CAAC;CACF;AAzCD,4BAyCC;AAED,sCAAiB,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAA","sourcesContent":["import net from 'net'\nimport PromiseSocket from 'promise-socket'\n\nimport { Connector } from '../types'\nimport { ConnectionManager } from '../connection-manager'\nimport { InputConnection } from '../../service/connection/connection-type'\n\nexport class EchoBack implements Connector {\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('echo-back connections are ready')\n }\n\n async connect(connection: InputConnection) {\n let socket = new PromiseSocket(new net.Socket())\n let [host, port = 8124] = connection.endpoint.split(':')\n\n try {\n await socket.connect(Number(port), host)\n ConnectionManager.addConnectionInstance(connection, socket)\n\n ConnectionManager.logger.info(\n `echo-back-connector connection(${connection.name}:${connection.endpoint}) is connected`\n )\n } catch (e) {\n ConnectionManager.logger.error(\n `echo-back-connector connection(${connection.name}:${connection.endpoint}) is not connected.`,\n e\n )\n }\n }\n\n async disconnect(connection: InputConnection) {\n let socket = ConnectionManager.removeConnectionInstance(connection)\n\n await socket.destroy()\n\n ConnectionManager.logger.info(`echo-back-connector connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return []\n }\n\n get taskPrefixes() {\n return ['echo']\n }\n}\n\nConnectionManager.registerConnector('echo-back', new EchoBack())\n"]}
@@ -0,0 +1,8 @@
1
+ import { Connector } from '../types';
2
+ import { InputConnection } from '../../service/connection/connection-type';
3
+ export declare class EchoBack implements Connector {
4
+ ready(connectionConfigs: InputConnection[]): Promise<void>;
5
+ connect(config: InputConnection): Promise<void>;
6
+ disconnect(connection: InputConnection): Promise<void>;
7
+ get parameterSpec(): any[];
8
+ }