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

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/package.json +8 -8
  2. package/dist-server/controllers/index.d.ts +0 -2
  3. package/dist-server/controllers/index.js +0 -6
  4. package/dist-server/controllers/index.js.map +0 -1
  5. package/dist-server/controllers/publish-data.d.ts +0 -6
  6. package/dist-server/controllers/publish-data.js +0 -22
  7. package/dist-server/controllers/publish-data.js.map +0 -1
  8. package/dist-server/controllers/scenario-controller.d.ts +0 -6
  9. package/dist-server/controllers/scenario-controller.js +0 -99
  10. package/dist-server/controllers/scenario-controller.js.map +0 -1
  11. package/dist-server/engine/analyzer/analyze-integration.d.ts +0 -5
  12. package/dist-server/engine/analyzer/analyze-integration.js +0 -96
  13. package/dist-server/engine/analyzer/analyze-integration.js.map +0 -1
  14. package/dist-server/engine/connection-manager.d.ts +0 -35
  15. package/dist-server/engine/connection-manager.js +0 -192
  16. package/dist-server/engine/connection-manager.js.map +0 -1
  17. package/dist-server/engine/connector/echo-back-connector.d.ts +0 -9
  18. package/dist-server/engine/connector/echo-back-connector.js +0 -39
  19. package/dist-server/engine/connector/echo-back-connector.js.map +0 -1
  20. package/dist-server/engine/connector/echo-back-server.d.ts +0 -8
  21. package/dist-server/engine/connector/echo-back-server.js +0 -58
  22. package/dist-server/engine/connector/echo-back-server.js.map +0 -1
  23. package/dist-server/engine/connector/graphql-connector.d.ts +0 -19
  24. package/dist-server/engine/connector/graphql-connector.js +0 -94
  25. package/dist-server/engine/connector/graphql-connector.js.map +0 -1
  26. package/dist-server/engine/connector/headless-connector.d.ts +0 -23
  27. package/dist-server/engine/connector/headless-connector.js +0 -357
  28. package/dist-server/engine/connector/headless-connector.js.map +0 -1
  29. package/dist-server/engine/connector/http-connector.d.ts +0 -25
  30. package/dist-server/engine/connector/http-connector.js +0 -52
  31. package/dist-server/engine/connector/http-connector.js.map +0 -1
  32. package/dist-server/engine/connector/index.d.ts +0 -13
  33. package/dist-server/engine/connector/index.js +0 -16
  34. package/dist-server/engine/connector/index.js.map +0 -1
  35. package/dist-server/engine/connector/mqtt-connector.d.ts +0 -14
  36. package/dist-server/engine/connector/mqtt-connector.js +0 -62
  37. package/dist-server/engine/connector/mqtt-connector.js.map +0 -1
  38. package/dist-server/engine/connector/mssql-connector.d.ts +0 -40
  39. package/dist-server/engine/connector/mssql-connector.js +0 -137
  40. package/dist-server/engine/connector/mssql-connector.js.map +0 -1
  41. package/dist-server/engine/connector/mysql-connector.d.ts +0 -13
  42. package/dist-server/engine/connector/mysql-connector.js +0 -80
  43. package/dist-server/engine/connector/mysql-connector.js.map +0 -1
  44. package/dist-server/engine/connector/operato-connector.d.ts +0 -27
  45. package/dist-server/engine/connector/operato-connector.js +0 -205
  46. package/dist-server/engine/connector/operato-connector.js.map +0 -1
  47. package/dist-server/engine/connector/oracle-connector.d.ts +0 -29
  48. package/dist-server/engine/connector/oracle-connector.js +0 -187
  49. package/dist-server/engine/connector/oracle-connector.js.map +0 -1
  50. package/dist-server/engine/connector/postgresql-connector.d.ts +0 -20
  51. package/dist-server/engine/connector/postgresql-connector.js +0 -136
  52. package/dist-server/engine/connector/postgresql-connector.js.map +0 -1
  53. package/dist-server/engine/connector/proxy-connector.d.ts +0 -15
  54. package/dist-server/engine/connector/proxy-connector.js +0 -44
  55. package/dist-server/engine/connector/proxy-connector.js.map +0 -1
  56. package/dist-server/engine/connector/socket-server.d.ts +0 -9
  57. package/dist-server/engine/connector/socket-server.js +0 -76
  58. package/dist-server/engine/connector/socket-server.js.map +0 -1
  59. package/dist-server/engine/connector/sqlite-connector.d.ts +0 -10
  60. package/dist-server/engine/connector/sqlite-connector.js +0 -58
  61. package/dist-server/engine/connector/sqlite-connector.js.map +0 -1
  62. package/dist-server/engine/edge-client.d.ts +0 -18
  63. package/dist-server/engine/edge-client.js +0 -37
  64. package/dist-server/engine/edge-client.js.map +0 -1
  65. package/dist-server/engine/index.d.ts +0 -9
  66. package/dist-server/engine/index.js +0 -12
  67. package/dist-server/engine/index.js.map +0 -1
  68. package/dist-server/engine/pending-queue.d.ts +0 -24
  69. package/dist-server/engine/pending-queue.js +0 -75
  70. package/dist-server/engine/pending-queue.js.map +0 -1
  71. package/dist-server/engine/resource-pool/headless-pool.d.ts +0 -1
  72. package/dist-server/engine/resource-pool/headless-pool.js +0 -62
  73. package/dist-server/engine/resource-pool/headless-pool.js.map +0 -1
  74. package/dist-server/engine/resource-pool/index.d.ts +0 -1
  75. package/dist-server/engine/resource-pool/index.js +0 -5
  76. package/dist-server/engine/resource-pool/index.js.map +0 -1
  77. package/dist-server/engine/scenario-engine.d.ts +0 -11
  78. package/dist-server/engine/scenario-engine.js +0 -79
  79. package/dist-server/engine/scenario-engine.js.map +0 -1
  80. package/dist-server/engine/task/book-up-scenario.d.ts +0 -1
  81. package/dist-server/engine/task/book-up-scenario.js +0 -63
  82. package/dist-server/engine/task/book-up-scenario.js.map +0 -1
  83. package/dist-server/engine/task/csv-readline.d.ts +0 -1
  84. package/dist-server/engine/task/csv-readline.js +0 -103
  85. package/dist-server/engine/task/csv-readline.js.map +0 -1
  86. package/dist-server/engine/task/data-accessor.d.ts +0 -1
  87. package/dist-server/engine/task/data-accessor.js +0 -28
  88. package/dist-server/engine/task/data-accessor.js.map +0 -1
  89. package/dist-server/engine/task/data-mapper.d.ts +0 -1
  90. package/dist-server/engine/task/data-mapper.js +0 -37
  91. package/dist-server/engine/task/data-mapper.js.map +0 -1
  92. package/dist-server/engine/task/database-query.d.ts +0 -1
  93. package/dist-server/engine/task/database-query.js +0 -46
  94. package/dist-server/engine/task/database-query.js.map +0 -1
  95. package/dist-server/engine/task/echo-receive.d.ts +0 -1
  96. package/dist-server/engine/task/echo-receive.js +0 -15
  97. package/dist-server/engine/task/echo-receive.js.map +0 -1
  98. package/dist-server/engine/task/echo-send.d.ts +0 -1
  99. package/dist-server/engine/task/echo-send.js +0 -24
  100. package/dist-server/engine/task/echo-send.js.map +0 -1
  101. package/dist-server/engine/task/empty-check.d.ts +0 -1
  102. package/dist-server/engine/task/empty-check.js +0 -30
  103. package/dist-server/engine/task/empty-check.js.map +0 -1
  104. package/dist-server/engine/task/end.d.ts +0 -1
  105. package/dist-server/engine/task/end.js +0 -14
  106. package/dist-server/engine/task/end.js.map +0 -1
  107. package/dist-server/engine/task/floating-point.d.ts +0 -1
  108. package/dist-server/engine/task/floating-point.js +0 -62
  109. package/dist-server/engine/task/floating-point.js.map +0 -1
  110. package/dist-server/engine/task/goto.d.ts +0 -1
  111. package/dist-server/engine/task/goto.js +0 -20
  112. package/dist-server/engine/task/goto.js.map +0 -1
  113. package/dist-server/engine/task/graphql-mutate.d.ts +0 -1
  114. package/dist-server/engine/task/graphql-mutate.js +0 -70
  115. package/dist-server/engine/task/graphql-mutate.js.map +0 -1
  116. package/dist-server/engine/task/graphql-query.d.ts +0 -1
  117. package/dist-server/engine/task/graphql-query.js +0 -70
  118. package/dist-server/engine/task/graphql-query.js.map +0 -1
  119. package/dist-server/engine/task/headless-post.d.ts +0 -1
  120. package/dist-server/engine/task/headless-post.js +0 -110
  121. package/dist-server/engine/task/headless-post.js.map +0 -1
  122. package/dist-server/engine/task/headless-scrap.d.ts +0 -1
  123. package/dist-server/engine/task/headless-scrap.js +0 -71
  124. package/dist-server/engine/task/headless-scrap.js.map +0 -1
  125. package/dist-server/engine/task/http-get.d.ts +0 -1
  126. package/dist-server/engine/task/http-get.js +0 -101
  127. package/dist-server/engine/task/http-get.js.map +0 -1
  128. package/dist-server/engine/task/http-post.d.ts +0 -1
  129. package/dist-server/engine/task/http-post.js +0 -130
  130. package/dist-server/engine/task/http-post.js.map +0 -1
  131. package/dist-server/engine/task/index.d.ts +0 -45
  132. package/dist-server/engine/task/index.js +0 -48
  133. package/dist-server/engine/task/index.js.map +0 -1
  134. package/dist-server/engine/task/jsonata.d.ts +0 -1
  135. package/dist-server/engine/task/jsonata.js +0 -37
  136. package/dist-server/engine/task/jsonata.js.map +0 -1
  137. package/dist-server/engine/task/local-graphql-mutate.d.ts +0 -1
  138. package/dist-server/engine/task/local-graphql-mutate.js +0 -89
  139. package/dist-server/engine/task/local-graphql-mutate.js.map +0 -1
  140. package/dist-server/engine/task/local-graphql-query.d.ts +0 -1
  141. package/dist-server/engine/task/local-graphql-query.js +0 -89
  142. package/dist-server/engine/task/local-graphql-query.js.map +0 -1
  143. package/dist-server/engine/task/log.d.ts +0 -1
  144. package/dist-server/engine/task/log.js +0 -68
  145. package/dist-server/engine/task/log.js.map +0 -1
  146. package/dist-server/engine/task/mqtt-publish.d.ts +0 -1
  147. package/dist-server/engine/task/mqtt-publish.js +0 -35
  148. package/dist-server/engine/task/mqtt-publish.js.map +0 -1
  149. package/dist-server/engine/task/mqtt-subscribe.d.ts +0 -1
  150. package/dist-server/engine/task/mqtt-subscribe.js +0 -113
  151. package/dist-server/engine/task/mqtt-subscribe.js.map +0 -1
  152. package/dist-server/engine/task/mssql-procedure.d.ts +0 -1
  153. package/dist-server/engine/task/mssql-procedure.js +0 -94
  154. package/dist-server/engine/task/mssql-procedure.js.map +0 -1
  155. package/dist-server/engine/task/oracle-procedure.d.ts +0 -1
  156. package/dist-server/engine/task/oracle-procedure.js +0 -91
  157. package/dist-server/engine/task/oracle-procedure.js.map +0 -1
  158. package/dist-server/engine/task/pick-pending-scenario.d.ts +0 -1
  159. package/dist-server/engine/task/pick-pending-scenario.js +0 -61
  160. package/dist-server/engine/task/pick-pending-scenario.js.map +0 -1
  161. package/dist-server/engine/task/publish.d.ts +0 -1
  162. package/dist-server/engine/task/publish.js +0 -31
  163. package/dist-server/engine/task/publish.js.map +0 -1
  164. package/dist-server/engine/task/random.d.ts +0 -1
  165. package/dist-server/engine/task/random.js +0 -45
  166. package/dist-server/engine/task/random.js.map +0 -1
  167. package/dist-server/engine/task/reset-pending-queue.d.ts +0 -1
  168. package/dist-server/engine/task/reset-pending-queue.js +0 -13
  169. package/dist-server/engine/task/reset-pending-queue.js.map +0 -1
  170. package/dist-server/engine/task/script.d.ts +0 -1
  171. package/dist-server/engine/task/script.js +0 -55
  172. package/dist-server/engine/task/script.js.map +0 -1
  173. package/dist-server/engine/task/set-domain.d.ts +0 -1
  174. package/dist-server/engine/task/set-domain.js +0 -27
  175. package/dist-server/engine/task/set-domain.js.map +0 -1
  176. package/dist-server/engine/task/sleep.d.ts +0 -1
  177. package/dist-server/engine/task/sleep.js +0 -26
  178. package/dist-server/engine/task/sleep.js.map +0 -1
  179. package/dist-server/engine/task/socket-listener.d.ts +0 -1
  180. package/dist-server/engine/task/socket-listener.js +0 -86
  181. package/dist-server/engine/task/socket-listener.js.map +0 -1
  182. package/dist-server/engine/task/state-group-read.d.ts +0 -1
  183. package/dist-server/engine/task/state-group-read.js +0 -62
  184. package/dist-server/engine/task/state-group-read.js.map +0 -1
  185. package/dist-server/engine/task/state-read.d.ts +0 -1
  186. package/dist-server/engine/task/state-read.js +0 -49
  187. package/dist-server/engine/task/state-read.js.map +0 -1
  188. package/dist-server/engine/task/state-write.d.ts +0 -1
  189. package/dist-server/engine/task/state-write.js +0 -57
  190. package/dist-server/engine/task/state-write.js.map +0 -1
  191. package/dist-server/engine/task/stop-scenario.d.ts +0 -1
  192. package/dist-server/engine/task/stop-scenario.js +0 -35
  193. package/dist-server/engine/task/stop-scenario.js.map +0 -1
  194. package/dist-server/engine/task/sub-scenario.d.ts +0 -1
  195. package/dist-server/engine/task/sub-scenario.js +0 -45
  196. package/dist-server/engine/task/sub-scenario.js.map +0 -1
  197. package/dist-server/engine/task/switch-goto.d.ts +0 -1
  198. package/dist-server/engine/task/switch-goto.js +0 -32
  199. package/dist-server/engine/task/switch-goto.js.map +0 -1
  200. package/dist-server/engine/task/switch-range-goto.d.ts +0 -1
  201. package/dist-server/engine/task/switch-range-goto.js +0 -39
  202. package/dist-server/engine/task/switch-range-goto.js.map +0 -1
  203. package/dist-server/engine/task/switch-range-scenario.d.ts +0 -1
  204. package/dist-server/engine/task/switch-range-scenario.js +0 -60
  205. package/dist-server/engine/task/switch-range-scenario.js.map +0 -1
  206. package/dist-server/engine/task/switch-range-set.d.ts +0 -1
  207. package/dist-server/engine/task/switch-range-set.js +0 -35
  208. package/dist-server/engine/task/switch-range-set.js.map +0 -1
  209. package/dist-server/engine/task/switch-scenario.d.ts +0 -1
  210. package/dist-server/engine/task/switch-scenario.js +0 -53
  211. package/dist-server/engine/task/switch-scenario.js.map +0 -1
  212. package/dist-server/engine/task/switch-set.d.ts +0 -1
  213. package/dist-server/engine/task/switch-set.js +0 -28
  214. package/dist-server/engine/task/switch-set.js.map +0 -1
  215. package/dist-server/engine/task/throw.d.ts +0 -1
  216. package/dist-server/engine/task/throw.js +0 -19
  217. package/dist-server/engine/task/throw.js.map +0 -1
  218. package/dist-server/engine/task/utils/headless-pool-for-scenario.d.ts +0 -1
  219. package/dist-server/engine/task/utils/headless-pool-for-scenario.js +0 -64
  220. package/dist-server/engine/task/utils/headless-pool-for-scenario.js.map +0 -1
  221. package/dist-server/engine/task/utils/substitute.d.ts +0 -1
  222. package/dist-server/engine/task/utils/substitute.js +0 -45
  223. package/dist-server/engine/task/utils/substitute.js.map +0 -1
  224. package/dist-server/engine/task/variables.d.ts +0 -1
  225. package/dist-server/engine/task/variables.js +0 -13
  226. package/dist-server/engine/task/variables.js.map +0 -1
  227. package/dist-server/engine/task-registry.d.ts +0 -12
  228. package/dist-server/engine/task-registry.js +0 -20
  229. package/dist-server/engine/task-registry.js.map +0 -1
  230. package/dist-server/engine/types.d.ts +0 -94
  231. package/dist-server/engine/types.js +0 -3
  232. package/dist-server/engine/types.js.map +0 -1
  233. package/dist-server/index.d.ts +0 -6
  234. package/dist-server/index.js +0 -21
  235. package/dist-server/index.js.map +0 -1
  236. package/dist-server/migrations/index.d.ts +0 -1
  237. package/dist-server/migrations/index.js +0 -12
  238. package/dist-server/migrations/index.js.map +0 -1
  239. package/dist-server/restful/index.d.ts +0 -1
  240. package/dist-server/restful/index.js +0 -4
  241. package/dist-server/restful/index.js.map +0 -1
  242. package/dist-server/restful/unstable/index.d.ts +0 -7
  243. package/dist-server/restful/unstable/index.js +0 -10
  244. package/dist-server/restful/unstable/index.js.map +0 -1
  245. package/dist-server/restful/unstable/run-scenario.d.ts +0 -1
  246. package/dist-server/restful/unstable/run-scenario.js +0 -45
  247. package/dist-server/restful/unstable/run-scenario.js.map +0 -1
  248. package/dist-server/restful/unstable/scenario-instance.d.ts +0 -1
  249. package/dist-server/restful/unstable/scenario-instance.js +0 -52
  250. package/dist-server/restful/unstable/scenario-instance.js.map +0 -1
  251. package/dist-server/restful/unstable/scenario-instances.d.ts +0 -1
  252. package/dist-server/restful/unstable/scenario-instances.js +0 -74
  253. package/dist-server/restful/unstable/scenario-instances.js.map +0 -1
  254. package/dist-server/restful/unstable/scenario.d.ts +0 -1
  255. package/dist-server/restful/unstable/scenario.js +0 -41
  256. package/dist-server/restful/unstable/scenario.js.map +0 -1
  257. package/dist-server/restful/unstable/scenarios.d.ts +0 -1
  258. package/dist-server/restful/unstable/scenarios.js +0 -63
  259. package/dist-server/restful/unstable/scenarios.js.map +0 -1
  260. package/dist-server/restful/unstable/start-scenario.d.ts +0 -1
  261. package/dist-server/restful/unstable/start-scenario.js +0 -33
  262. package/dist-server/restful/unstable/start-scenario.js.map +0 -1
  263. package/dist-server/restful/unstable/stop-scenario.d.ts +0 -1
  264. package/dist-server/restful/unstable/stop-scenario.js +0 -30
  265. package/dist-server/restful/unstable/stop-scenario.js.map +0 -1
  266. package/dist-server/routers/scenario-schedule-callback-router.d.ts +0 -1
  267. package/dist-server/routers/scenario-schedule-callback-router.js +0 -55
  268. package/dist-server/routers/scenario-schedule-callback-router.js.map +0 -1
  269. package/dist-server/routers/scenario-view-router.d.ts +0 -1
  270. package/dist-server/routers/scenario-view-router.js +0 -41
  271. package/dist-server/routers/scenario-view-router.js.map +0 -1
  272. package/dist-server/routes.d.ts +0 -1
  273. package/dist-server/routes.js +0 -23
  274. package/dist-server/routes.js.map +0 -1
  275. package/dist-server/service/analysis/analysis-query.d.ts +0 -3
  276. package/dist-server/service/analysis/analysis-query.js +0 -25
  277. package/dist-server/service/analysis/analysis-query.js.map +0 -1
  278. package/dist-server/service/analysis/index.d.ts +0 -2
  279. package/dist-server/service/analysis/index.js +0 -6
  280. package/dist-server/service/analysis/index.js.map +0 -1
  281. package/dist-server/service/connection/connection-mutation.d.ts +0 -30
  282. package/dist-server/service/connection/connection-mutation.js +0 -182
  283. package/dist-server/service/connection/connection-mutation.js.map +0 -1
  284. package/dist-server/service/connection/connection-query.d.ts +0 -12
  285. package/dist-server/service/connection/connection-query.js +0 -112
  286. package/dist-server/service/connection/connection-query.js.map +0 -1
  287. package/dist-server/service/connection/connection-subscription.d.ts +0 -10
  288. package/dist-server/service/connection/connection-subscription.js +0 -98
  289. package/dist-server/service/connection/connection-subscription.js.map +0 -1
  290. package/dist-server/service/connection/connection-type.d.ts +0 -133
  291. package/dist-server/service/connection/connection-type.js +0 -294
  292. package/dist-server/service/connection/connection-type.js.map +0 -1
  293. package/dist-server/service/connection/index.d.ts +0 -6
  294. package/dist-server/service/connection/index.js +0 -10
  295. package/dist-server/service/connection/index.js.map +0 -1
  296. package/dist-server/service/connector/connector-query.d.ts +0 -6
  297. package/dist-server/service/connector/connector-query.js +0 -77
  298. package/dist-server/service/connector/connector-query.js.map +0 -1
  299. package/dist-server/service/connector/connector-type.d.ts +0 -12
  300. package/dist-server/service/connector/connector-type.js +0 -47
  301. package/dist-server/service/connector/connector-type.js.map +0 -1
  302. package/dist-server/service/connector/index.d.ts +0 -3
  303. package/dist-server/service/connector/index.js +0 -7
  304. package/dist-server/service/connector/index.js.map +0 -1
  305. package/dist-server/service/index.d.ts +0 -17
  306. package/dist-server/service/index.js +0 -55
  307. package/dist-server/service/index.js.map +0 -1
  308. package/dist-server/service/payload-log/index.d.ts +0 -5
  309. package/dist-server/service/payload-log/index.js +0 -9
  310. package/dist-server/service/payload-log/index.js.map +0 -1
  311. package/dist-server/service/payload-log/payload-log-mutation.d.ts +0 -10
  312. package/dist-server/service/payload-log/payload-log-mutation.js +0 -134
  313. package/dist-server/service/payload-log/payload-log-mutation.js.map +0 -1
  314. package/dist-server/service/payload-log/payload-log-query.d.ts +0 -11
  315. package/dist-server/service/payload-log/payload-log-query.js +0 -76
  316. package/dist-server/service/payload-log/payload-log-query.js.map +0 -1
  317. package/dist-server/service/payload-log/payload-log-type.d.ts +0 -15
  318. package/dist-server/service/payload-log/payload-log-type.js +0 -57
  319. package/dist-server/service/payload-log/payload-log-type.js.map +0 -1
  320. package/dist-server/service/payload-log/payload-log.d.ts +0 -23
  321. package/dist-server/service/payload-log/payload-log.js +0 -110
  322. package/dist-server/service/payload-log/payload-log.js.map +0 -1
  323. package/dist-server/service/property-spec.d.ts +0 -12
  324. package/dist-server/service/property-spec.js +0 -37
  325. package/dist-server/service/property-spec.js.map +0 -1
  326. package/dist-server/service/scenario/index.d.ts +0 -5
  327. package/dist-server/service/scenario/index.js +0 -9
  328. package/dist-server/service/scenario/index.js.map +0 -1
  329. package/dist-server/service/scenario/scenario-mutation.d.ts +0 -13
  330. package/dist-server/service/scenario/scenario-mutation.js +0 -327
  331. package/dist-server/service/scenario/scenario-mutation.js.map +0 -1
  332. package/dist-server/service/scenario/scenario-query.d.ts +0 -19
  333. package/dist-server/service/scenario/scenario-query.js +0 -167
  334. package/dist-server/service/scenario/scenario-query.js.map +0 -1
  335. package/dist-server/service/scenario/scenario-type.d.ts +0 -30
  336. package/dist-server/service/scenario/scenario-type.js +0 -111
  337. package/dist-server/service/scenario/scenario-type.js.map +0 -1
  338. package/dist-server/service/scenario/scenario.d.ts +0 -38
  339. package/dist-server/service/scenario/scenario.js +0 -142
  340. package/dist-server/service/scenario/scenario.js.map +0 -1
  341. package/dist-server/service/scenario-flow/scenario-flow.d.ts +0 -6
  342. package/dist-server/service/scenario-flow/scenario-flow.js +0 -28
  343. package/dist-server/service/scenario-flow/scenario-flow.js.map +0 -1
  344. package/dist-server/service/scenario-instance/index.d.ts +0 -5
  345. package/dist-server/service/scenario-instance/index.js +0 -9
  346. package/dist-server/service/scenario-instance/index.js.map +0 -1
  347. package/dist-server/service/scenario-instance/scenario-instance-mutation.d.ts +0 -6
  348. package/dist-server/service/scenario-instance/scenario-instance-mutation.js +0 -54
  349. package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +0 -1
  350. package/dist-server/service/scenario-instance/scenario-instance-query.d.ts +0 -6
  351. package/dist-server/service/scenario-instance/scenario-instance-query.js +0 -45
  352. package/dist-server/service/scenario-instance/scenario-instance-query.js.map +0 -1
  353. package/dist-server/service/scenario-instance/scenario-instance-subscription.d.ts +0 -10
  354. package/dist-server/service/scenario-instance/scenario-instance-subscription.js +0 -109
  355. package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +0 -1
  356. package/dist-server/service/scenario-instance/scenario-instance-type.d.ts +0 -102
  357. package/dist-server/service/scenario-instance/scenario-instance-type.js +0 -533
  358. package/dist-server/service/scenario-instance/scenario-instance-type.js.map +0 -1
  359. package/dist-server/service/scenario-queue/index.d.ts +0 -3
  360. package/dist-server/service/scenario-queue/index.js +0 -7
  361. package/dist-server/service/scenario-queue/index.js.map +0 -1
  362. package/dist-server/service/scenario-queue/scenario-queue-subscription.d.ts +0 -6
  363. package/dist-server/service/scenario-queue/scenario-queue-subscription.js +0 -58
  364. package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +0 -1
  365. package/dist-server/service/scenario-queue/scenario-queue-type.d.ts +0 -11
  366. package/dist-server/service/scenario-queue/scenario-queue-type.js +0 -43
  367. package/dist-server/service/scenario-queue/scenario-queue-type.js.map +0 -1
  368. package/dist-server/service/state-register/data-resolver.d.ts +0 -6
  369. package/dist-server/service/state-register/data-resolver.js +0 -61
  370. package/dist-server/service/state-register/data-resolver.js.map +0 -1
  371. package/dist-server/service/state-register/index.d.ts +0 -7
  372. package/dist-server/service/state-register/index.js +0 -11
  373. package/dist-server/service/state-register/index.js.map +0 -1
  374. package/dist-server/service/state-register/state-register-mutation.d.ts +0 -11
  375. package/dist-server/service/state-register/state-register-mutation.js +0 -153
  376. package/dist-server/service/state-register/state-register-mutation.js.map +0 -1
  377. package/dist-server/service/state-register/state-register-query.d.ts +0 -14
  378. package/dist-server/service/state-register/state-register-query.js +0 -123
  379. package/dist-server/service/state-register/state-register-query.js.map +0 -1
  380. package/dist-server/service/state-register/state-register-type.d.ts +0 -29
  381. package/dist-server/service/state-register/state-register-type.js +0 -114
  382. package/dist-server/service/state-register/state-register-type.js.map +0 -1
  383. package/dist-server/service/state-register/state-register.d.ts +0 -25
  384. package/dist-server/service/state-register/state-register.js +0 -128
  385. package/dist-server/service/state-register/state-register.js.map +0 -1
  386. package/dist-server/service/step/index.d.ts +0 -5
  387. package/dist-server/service/step/index.js +0 -9
  388. package/dist-server/service/step/index.js.map +0 -1
  389. package/dist-server/service/step/step-mutation.d.ts +0 -5
  390. package/dist-server/service/step/step-mutation.js +0 -55
  391. package/dist-server/service/step/step-mutation.js.map +0 -1
  392. package/dist-server/service/step/step-query.d.ts +0 -12
  393. package/dist-server/service/step/step-query.js +0 -89
  394. package/dist-server/service/step/step-query.js.map +0 -1
  395. package/dist-server/service/step/step-type.d.ts +0 -111
  396. package/dist-server/service/step/step-type.js +0 -212
  397. package/dist-server/service/step/step-type.js.map +0 -1
  398. package/dist-server/service/task-type/index.d.ts +0 -3
  399. package/dist-server/service/task-type/index.js +0 -7
  400. package/dist-server/service/task-type/index.js.map +0 -1
  401. package/dist-server/service/task-type/task-type-query.d.ts +0 -6
  402. package/dist-server/service/task-type/task-type-query.js +0 -108
  403. package/dist-server/service/task-type/task-type-query.js.map +0 -1
  404. package/dist-server/service/task-type/task-type-type.d.ts +0 -12
  405. package/dist-server/service/task-type/task-type-type.js +0 -47
  406. package/dist-server/service/task-type/task-type-type.js.map +0 -1
  407. package/dist-server/tsconfig.tsbuildinfo +0 -1
@@ -1,205 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperatoConnector = exports.SUBSCRIPTION_URI = exports.GRAPHQL_URI = void 0;
4
- const tslib_1 = require("tslib");
5
- require("cross-fetch/polyfill");
6
- const core_1 = require("@apollo/client/core");
7
- const context_1 = require("@apollo/client/link/context");
8
- const ws_1 = tslib_1.__importDefault(require("ws"));
9
- const graphql_ws_1 = require("graphql-ws");
10
- const subscriptions_1 = require("@apollo/client/link/subscriptions");
11
- const utilities_1 = require("@apollo/client/utilities");
12
- const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
13
- const connection_manager_1 = require("../connection-manager");
14
- const scenario_1 = require("../../service/scenario/scenario");
15
- const scenario_instance_type_1 = require("../../service/scenario-instance/scenario-instance-type");
16
- const shell_1 = require("@things-factory/shell");
17
- const auth_base_1 = require("@things-factory/auth-base");
18
- const debug = require('debug')('things-factory:integration-base:operato-connector');
19
- const defaultOptions = {
20
- watchQuery: {
21
- fetchPolicy: 'no-cache',
22
- errorPolicy: 'ignore'
23
- },
24
- query: {
25
- fetchPolicy: 'no-cache', //'network-only'
26
- errorPolicy: 'all'
27
- },
28
- mutate: {
29
- errorPolicy: 'all'
30
- }
31
- };
32
- exports.GRAPHQL_URI = '/graphql';
33
- exports.SUBSCRIPTION_URI = exports.GRAPHQL_URI;
34
- class OperatoConnector {
35
- async ready(connectionConfigs) {
36
- await Promise.all(connectionConfigs.map(this.connect.bind(this)));
37
- connection_manager_1.ConnectionManager.logger.info('operato-connector connections are ready');
38
- }
39
- async connect(connection) {
40
- const { endpoint: uri, params: { authKey, domain, subscriptionHandlers = {} } } = connection;
41
- if (!authKey || !domain) {
42
- throw new Error('some connection paramter missing.');
43
- }
44
- const domainOwner = await (0, shell_1.getRepository)(auth_base_1.User).findOne({
45
- where: {
46
- id: connection.domain.owner
47
- }
48
- });
49
- this.context = {
50
- domain: connection.domain,
51
- user: domainOwner
52
- /* TODO: domainOwner 대신 특정 유저를 지정할 수 있도록 개선해야함. 모든 커넥션에 유저를 지정하는 기능으로 일반화할 필요가 있는 지 고민해야함 */
53
- };
54
- const httpLink = (0, core_1.createHttpLink)({
55
- uri: uri
56
- });
57
- /*
58
- CHECKPOINT:
59
- 1. GraphqQLWsLink를 사용하면 setContext를 통한 추가 헤더 설정이 무시됩니다.
60
- 따라서, GraphQLWsLink를 사용하려면, connectionParams를 통해 헤더를 설정해야 합니다.
61
-
62
- 2. 서버에서 실행시, webSocketImpl을 명시적으로 지정해야 합니다.
63
- */
64
- const wsLink = new subscriptions_1.GraphQLWsLink((0, graphql_ws_1.createClient)({
65
- url: uri.replace(/^http/, 'ws'),
66
- keepAlive: 10000,
67
- retryAttempts: 1000000,
68
- shouldRetry: e => true,
69
- webSocketImpl: ws_1.default,
70
- connectionParams: {
71
- headers: {
72
- 'x-things-factory-domain': domain,
73
- authorization: authKey ? `Bearer ${authKey}` : ''
74
- }
75
- }
76
- }));
77
- const splitLink = (0, core_1.split)(({ query }) => {
78
- const def = (0, utilities_1.getMainDefinition)(query);
79
- return def.kind === 'OperationDefinition' && def.operation === 'subscription';
80
- }, wsLink, (0, context_1.setContext)((_, { headers }) => {
81
- return {
82
- headers: Object.assign(Object.assign({}, headers), { 'x-things-factory-domain': domain, authorization: authKey ? `Bearer ${authKey}` : '' })
83
- };
84
- }).concat(httpLink));
85
- const cache = new core_1.InMemoryCache({
86
- addTypename: false
87
- });
88
- const client = new core_1.ApolloClient({
89
- defaultOptions,
90
- cache,
91
- link: splitLink
92
- });
93
- const subscriptions = [];
94
- Object.keys(subscriptionHandlers).forEach(async (tag) => {
95
- if (!tag || !subscriptionHandlers[tag])
96
- return;
97
- const scenarioName = subscriptionHandlers[tag];
98
- // fetch a scenario
99
- const selectedScenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
100
- where: {
101
- name: scenarioName
102
- },
103
- relations: ['steps', 'domain']
104
- });
105
- const subscription = client.subscribe({
106
- query: (0, graphql_tag_1.default) `
107
- subscription {
108
- data(tag: "${tag}") {
109
- tag
110
- data
111
- }
112
- }
113
- `
114
- });
115
- const subscriptionObserver = subscription.subscribe({
116
- next: async (data) => {
117
- var _a;
118
- debug('received pubsub msg.:', data === null || data === void 0 ? void 0 : data.data);
119
- await this.runScenario(subscriptions, (_a = data === null || data === void 0 ? void 0 : data.data) === null || _a === void 0 ? void 0 : _a.data);
120
- },
121
- error: error => {
122
- connection_manager_1.ConnectionManager.logger.error(`(${connection.name}:${connection.endpoint}) subscription error`, error);
123
- },
124
- complete: () => {
125
- connection_manager_1.ConnectionManager.logger.info(`(${connection.name}:${connection.endpoint}) subscription complete`);
126
- }
127
- });
128
- connection_manager_1.ConnectionManager.logger.info(`(${connection.name}:${connection.endpoint}) subscription closed flag: ${subscriptionObserver.closed}`);
129
- subscriptions.push({
130
- tag,
131
- scenario: selectedScenario,
132
- subscriptionObserver
133
- });
134
- connection_manager_1.ConnectionManager.logger.info(`(${tag}:${scenarioName}) subscription closed flag: ${subscriptionObserver.closed}`);
135
- });
136
- client['subscriptions'] = subscriptions;
137
- connection_manager_1.ConnectionManager.addConnectionInstance(connection, client);
138
- connection_manager_1.ConnectionManager.logger.info(`operato-connector connection(${connection.name}:${connection.endpoint}) is connected`);
139
- }
140
- async disconnect(connection) {
141
- const client = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
142
- const subscriptions = client['subscriptions'];
143
- subscriptions.forEach(subscription => subscription.subscriptionObserver.unsubscribe());
144
- client.stop();
145
- connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
146
- connection_manager_1.ConnectionManager.logger.info(`operato-connector connection(${connection.name}) is disconnected`);
147
- }
148
- async runScenario(subscriptions, variables) {
149
- var _a;
150
- const { domain, user } = this.context;
151
- const { tag } = variables;
152
- if (!tag) {
153
- throw new Error(`tag is invalid - ${tag}`);
154
- }
155
- const scenario = (_a = subscriptions.find(subscription => subscription.tag === tag)) === null || _a === void 0 ? void 0 : _a.scenario;
156
- if (!scenario) {
157
- throw new Error(`scenario is not found - ${tag}`);
158
- }
159
- if (!(await (0, auth_base_1.checkUserHasRole)(scenario.roleId, domain, user))) {
160
- throw new Error(`Unauthorized! ${scenario.name} doesn't have required role.`);
161
- }
162
- /* create a scenario instance */
163
- const instanceName = scenario.name + '-' + String(Date.now());
164
- const instance = new scenario_instance_type_1.ScenarioInstance(instanceName, scenario, {
165
- user,
166
- domain,
167
- variables,
168
- client: shell_1.GraphqlLocalClient.client
169
- });
170
- // run scenario
171
- await instance.run();
172
- return instance;
173
- }
174
- get parameterSpec() {
175
- return [
176
- {
177
- type: 'string',
178
- name: 'authKey',
179
- label: 'auth-key'
180
- },
181
- {
182
- type: 'string',
183
- name: 'domain',
184
- label: 'domain'
185
- },
186
- {
187
- type: 'tag-scenarios',
188
- name: 'subscriptionHandlers',
189
- label: 'subscription-handlers'
190
- }
191
- ];
192
- }
193
- get taskPrefixes() {
194
- return ['graphql'];
195
- }
196
- get help() {
197
- return 'integration/connector/operato-connector';
198
- }
199
- get description() {
200
- return 'Operato Graphql Connector';
201
- }
202
- }
203
- exports.OperatoConnector = OperatoConnector;
204
- connection_manager_1.ConnectionManager.registerConnector('operato-connector', new OperatoConnector());
205
- //# sourceMappingURL=operato-connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operato-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/operato-connector.ts"],"names":[],"mappings":"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","sourcesContent":["import 'cross-fetch/polyfill'\n\nimport { ApolloClient, InMemoryCache, createHttpLink, split } from '@apollo/client/core'\nimport { setContext } from '@apollo/client/link/context'\n\nimport WebSocket from 'ws'\nimport { createClient } from 'graphql-ws'\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions'\nimport { getMainDefinition } from '@apollo/client/utilities'\nimport gql from 'graphql-tag'\n\nimport { ConnectionManager } from '../connection-manager'\nimport { Connector } from '../types'\nimport { InputConnection } from '../../service/connection/connection-type'\n\nimport { Scenario } from '../../service/scenario/scenario'\nimport { ScenarioInstance } from '../../service/scenario-instance/scenario-instance-type'\n\nimport { getRepository, GraphqlLocalClient, Domain } from '@things-factory/shell'\nimport { User, checkUserHasRole } from '@things-factory/auth-base'\n\nconst debug = require('debug')('things-factory:integration-base:operato-connector')\n\nconst defaultOptions: any = {\n watchQuery: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'ignore'\n },\n query: {\n fetchPolicy: 'no-cache', //'network-only'\n errorPolicy: 'all'\n },\n mutate: {\n errorPolicy: 'all'\n }\n}\n\nexport const GRAPHQL_URI = '/graphql'\nexport const SUBSCRIPTION_URI = GRAPHQL_URI\n\ninterface SubscriberData {\n tag: string\n scenario: any\n subscriptionObserver: any\n}\n\nexport class OperatoConnector implements Connector {\n private context: any\n\n async ready(connectionConfigs: InputConnection[]) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('operato-connector connections are ready')\n }\n\n async connect(connection: InputConnection) {\n const {\n endpoint: uri,\n params: { authKey, domain, subscriptionHandlers = {} }\n } = connection\n\n if (!authKey || !domain) {\n throw new Error('some connection paramter missing.')\n }\n\n const domainOwner = await getRepository(User).findOne({\n where: {\n id: connection.domain.owner\n }\n })\n\n this.context = {\n domain: connection.domain,\n user: domainOwner\n /* TODO: domainOwner 대신 특정 유저를 지정할 수 있도록 개선해야함. 모든 커넥션에 유저를 지정하는 기능으로 일반화할 필요가 있는 지 고민해야함 */\n }\n\n const httpLink = createHttpLink({\n uri: uri\n })\n\n /* \n CHECKPOINT: \n 1. GraphqQLWsLink를 사용하면 setContext를 통한 추가 헤더 설정이 무시됩니다.\n 따라서, GraphQLWsLink를 사용하려면, connectionParams를 통해 헤더를 설정해야 합니다.\n \n 2. 서버에서 실행시, webSocketImpl을 명시적으로 지정해야 합니다.\n */\n const wsLink = new GraphQLWsLink(\n createClient({\n url: uri.replace(/^http/, 'ws'),\n keepAlive: 10_000,\n retryAttempts: 1_000_000,\n shouldRetry: e => true,\n webSocketImpl: WebSocket,\n connectionParams: {\n headers: {\n 'x-things-factory-domain': domain,\n authorization: authKey ? `Bearer ${authKey}` : ''\n }\n }\n })\n )\n\n const splitLink = split(\n ({ query }) => {\n const def = getMainDefinition(query)\n return def.kind === 'OperationDefinition' && def.operation === 'subscription'\n },\n wsLink,\n setContext((_, { headers }) => {\n return {\n headers: {\n ...headers,\n 'x-things-factory-domain': domain,\n authorization: authKey ? `Bearer ${authKey}` : ''\n }\n }\n }).concat(httpLink)\n )\n\n const cache = new InMemoryCache({\n addTypename: false\n })\n\n const client = new ApolloClient({\n defaultOptions,\n cache,\n link: splitLink\n })\n\n const subscriptions: SubscriberData[] = []\n Object.keys(subscriptionHandlers).forEach(async tag => {\n if (!tag || !subscriptionHandlers[tag]) return\n\n const scenarioName = subscriptionHandlers[tag]\n\n // fetch a scenario\n const selectedScenario = await getRepository(Scenario).findOne({\n where: {\n name: scenarioName\n },\n relations: ['steps', 'domain']\n })\n\n const subscription = client.subscribe({\n query: gql`\n subscription {\n data(tag: \"${tag}\") {\n tag\n data\n }\n }\n `\n })\n\n const subscriptionObserver = subscription.subscribe({\n next: async data => {\n debug('received pubsub msg.:', data?.data)\n await this.runScenario(subscriptions, data?.data?.data)\n },\n error: error => {\n ConnectionManager.logger.error(`(${connection.name}:${connection.endpoint}) subscription error`, error)\n },\n complete: () => {\n ConnectionManager.logger.info(`(${connection.name}:${connection.endpoint}) subscription complete`)\n }\n })\n\n ConnectionManager.logger.info(\n `(${connection.name}:${connection.endpoint}) subscription closed flag: ${subscriptionObserver.closed}`\n )\n\n subscriptions.push({\n tag,\n scenario: selectedScenario,\n subscriptionObserver\n })\n ConnectionManager.logger.info(`(${tag}:${scenarioName}) subscription closed flag: ${subscriptionObserver.closed}`)\n })\n\n client['subscriptions'] = subscriptions\n ConnectionManager.addConnectionInstance(connection, client)\n\n ConnectionManager.logger.info(\n `operato-connector connection(${connection.name}:${connection.endpoint}) is connected`\n )\n }\n\n async disconnect(connection: InputConnection) {\n const client = ConnectionManager.getConnectionInstance(connection)\n const subscriptions: SubscriberData[] = client['subscriptions']\n subscriptions.forEach(subscription => subscription.subscriptionObserver.unsubscribe())\n client.stop()\n ConnectionManager.removeConnectionInstance(connection)\n\n ConnectionManager.logger.info(`operato-connector connection(${connection.name}) is disconnected`)\n }\n\n async runScenario(subscriptions: SubscriberData[], variables: any): Promise<ScenarioInstance> {\n const { domain, user } = this.context\n const { tag } = variables\n\n if (!tag) {\n throw new Error(`tag is invalid - ${tag}`)\n }\n\n const scenario = subscriptions.find(subscription => subscription.tag === tag)?.scenario\n if (!scenario) {\n throw new Error(`scenario is not found - ${tag}`)\n }\n\n if (!(await checkUserHasRole(scenario.roleId, domain, user))) {\n throw new Error(`Unauthorized! ${scenario.name} doesn't have required role.`)\n }\n\n /* create a scenario instance */\n const instanceName = scenario.name + '-' + String(Date.now())\n const instance = new ScenarioInstance(instanceName, scenario, {\n user,\n domain,\n variables,\n client: GraphqlLocalClient.client\n })\n\n // run scenario\n await instance.run()\n return instance\n }\n\n get parameterSpec() {\n return [\n {\n type: 'string',\n name: 'authKey',\n label: 'auth-key'\n },\n {\n type: 'string',\n name: 'domain',\n label: 'domain'\n },\n {\n type: 'tag-scenarios',\n name: 'subscriptionHandlers',\n label: 'subscription-handlers'\n }\n ]\n }\n\n get taskPrefixes() {\n return ['graphql']\n }\n\n get help() {\n return 'integration/connector/operato-connector'\n }\n\n get description() {\n return 'Operato Graphql Connector'\n }\n}\n\nConnectionManager.registerConnector('operato-connector', new OperatoConnector())\n"]}
@@ -1,29 +0,0 @@
1
- import { Connector } from '../types';
2
- import { InputConnection } from '../../service/connection/connection-type';
3
- export declare class OracleConnector implements Connector {
4
- ready(connectionConfigs: InputConnection[]): Promise<void>;
5
- recreatePool(connection: InputConnection): Promise<void>;
6
- connect(connection: InputConnection): Promise<void>;
7
- disconnect(connection: InputConnection): Promise<void>;
8
- get parameterSpec(): ({
9
- type: string;
10
- name: string;
11
- label: string;
12
- placeholder?: undefined;
13
- value?: undefined;
14
- } | {
15
- type: string;
16
- name: string;
17
- placeholder: string;
18
- label: string;
19
- value?: undefined;
20
- } | {
21
- type: string;
22
- name: string;
23
- placeholder: string;
24
- label: string;
25
- value: number;
26
- })[];
27
- get taskPrefixes(): string[];
28
- get help(): string;
29
- }
@@ -1,187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OracleConnector = void 0;
4
- const env_1 = require("@things-factory/env");
5
- const connection_manager_1 = require("../connection-manager");
6
- try {
7
- var oracledb = require('oracledb');
8
- }
9
- catch (err) {
10
- env_1.logger.error('oracledb module loading failed', err);
11
- }
12
- class OracleConnector {
13
- async ready(connectionConfigs) {
14
- await Promise.all(connectionConfigs.map(this.connect));
15
- connection_manager_1.ConnectionManager.logger.info('oracle-connector connections are ready');
16
- }
17
- async recreatePool(connection) {
18
- const { name, endpoint, params: { user, password, database, poolMin, poolMax, poolIncrement }, domain } = connection;
19
- if (!oracledb) {
20
- throw new Error('oracledb module loading failed');
21
- }
22
- const poolAlias = `${domain.name}-${name}`;
23
- await oracledb.getPool(poolAlias).close(10);
24
- await oracledb.createPool({
25
- user,
26
- password,
27
- // when oracle not using default port must add connection string with port like localhost:port
28
- connectString: `${endpoint.trim()}/${database}`,
29
- poolMin,
30
- poolMax,
31
- poolIncrement,
32
- poolAlias
33
- });
34
- connection_manager_1.ConnectionManager.logger.info(`Oracle Database(${connection.name}:${database}) at ${endpoint} recreated.`);
35
- }
36
- async connect(connection) {
37
- const { name, endpoint, params: { user, password, database, poolMin, poolMax, poolIncrement }, domain } = connection;
38
- if (!oracledb) {
39
- throw new Error('oracledb module loading failed');
40
- }
41
- const poolAlias = `${domain.name}-${name}`;
42
- var enableStatistics = true;
43
- const pool = await oracledb.createPool({
44
- user,
45
- password,
46
- // when oracle not using default port must add connection string with port like localhost:port
47
- connectString: `${endpoint.trim()}/${database}`,
48
- poolMin,
49
- poolMax,
50
- poolIncrement,
51
- poolAlias,
52
- enableStatistics
53
- });
54
- connection_manager_1.ConnectionManager.addConnectionInstance(connection, {
55
- query: async (query, params) => {
56
- let dbConnection = {};
57
- let taskResult = {};
58
- try {
59
- dbConnection = await oracledb.getConnection(poolAlias);
60
- taskResult = (await dbConnection.execute(query, params, {
61
- outFormat: oracledb.OBJECT
62
- })).rows;
63
- }
64
- catch (e) {
65
- if (e.name === 'Error' && e.message.includes('NJS-040')) {
66
- await this.recreatePool(connection);
67
- }
68
- throw e;
69
- }
70
- finally {
71
- await dbConnection.close();
72
- }
73
- return taskResult;
74
- },
75
- execute: async (procedure, params) => {
76
- let dbConnection = {};
77
- let taskResult = {};
78
- try {
79
- // TODO: need to check if this is available when procedure string is a common query.
80
- procedure = `BEGIN
81
- ${procedure}
82
- END;`;
83
- dbConnection = await oracledb.getConnection(poolAlias);
84
- // console.log('\n************* stat after get ****************')
85
- // await oracledb.getPool(poolAlias).logStatistics()
86
- const result = await dbConnection.execute(procedure, params, {
87
- outFormat: oracledb.OBJECT
88
- });
89
- let paramKeys = Object.keys(params);
90
- for (const paramKey of paramKeys) {
91
- if (params[paramKey].dir === (oracledb === null || oracledb === void 0 ? void 0 : oracledb.BIND_OUT)) {
92
- if (params[paramKey].type === (oracledb === null || oracledb === void 0 ? void 0 : oracledb.CURSOR)) {
93
- const resultSetTemp = result.outBinds[paramKey];
94
- taskResult[paramKey] = await resultSetTemp.getRows();
95
- await resultSetTemp.close();
96
- }
97
- else {
98
- taskResult[paramKey] = result.outBinds[paramKey];
99
- }
100
- }
101
- }
102
- }
103
- catch (e) {
104
- if (e.name === 'Error' && e.message.includes('NJS-040')) {
105
- await this.recreatePool(connection);
106
- }
107
- throw e;
108
- }
109
- finally {
110
- await dbConnection.close();
111
- // console.log('\n************* stat after close ****************')
112
- // await oracledb.getPool(poolAlias).logStatistics()
113
- }
114
- return taskResult;
115
- },
116
- close: async () => {
117
- await oracledb.getPool(poolAlias).close(10);
118
- }
119
- });
120
- connection_manager_1.ConnectionManager.logger.info(`Oracle Database(${connection.name}:${database}) at ${endpoint} connected.`);
121
- }
122
- async disconnect(connection) {
123
- var client = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
124
- try {
125
- await client.close();
126
- connection_manager_1.ConnectionManager.logger.info(`Oracle Database(${connection.name}) closed.`);
127
- }
128
- catch (e) {
129
- connection_manager_1.ConnectionManager.logger.error(e);
130
- }
131
- connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
132
- }
133
- get parameterSpec() {
134
- return [
135
- {
136
- type: 'string',
137
- name: 'user',
138
- label: 'user'
139
- },
140
- {
141
- type: 'password',
142
- name: 'password',
143
- label: 'password'
144
- },
145
- {
146
- type: 'string',
147
- name: 'database',
148
- placeholder: 'SID',
149
- label: 'database'
150
- },
151
- {
152
- type: 'number',
153
- name: 'poolMin',
154
- placeholder: 'minimum connection-pool size',
155
- label: 'pool-min',
156
- value: 0
157
- },
158
- {
159
- type: 'number',
160
- name: 'poolMax',
161
- placeholder: 'maximum connection-pool size',
162
- label: 'pool-max',
163
- value: 4
164
- },
165
- {
166
- type: 'number',
167
- name: 'poolIncrement',
168
- placeholder: 'connection incremental size',
169
- label: 'pool-increment',
170
- value: 1
171
- }
172
- ];
173
- }
174
- get taskPrefixes() {
175
- return ['database', 'oracle'];
176
- }
177
- get help() {
178
- return 'integration/connector/oracle-connector';
179
- }
180
- }
181
- exports.OracleConnector = OracleConnector;
182
- connection_manager_1.ConnectionManager.registerConnector('oracle-connector', new OracleConnector());
183
- // need reference:
184
- // https://download.oracle.com/otn_software/mac/instantclient/193000/instantclient-basiclite-macos.x64-19.3.0.0.0dbru.zip
185
- // https://node-oracledb.readthedocs.io/en/latest/index.html
186
- // docker pull store/oracle/database-instantclient:12.2.0.1
187
- //# sourceMappingURL=oracle-connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oracle-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/oracle-connector.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '@things-factory/env'\n\nimport { ConnectionManager } from '../connection-manager'\nimport { Connector } from '../types'\nimport { InputConnection } from '../../service/connection/connection-type'\n\ntry {\n var oracledb = require('oracledb')\n} catch (err) {\n logger.error('oracledb module loading failed', err)\n}\n\nexport class OracleConnector implements Connector {\n async ready(connectionConfigs: InputConnection[]) {\n await Promise.all(connectionConfigs.map(this.connect))\n\n ConnectionManager.logger.info('oracle-connector connections are ready')\n }\n\n async recreatePool(connection: InputConnection) {\n const {\n name,\n endpoint,\n params: { user, password, database, poolMin, poolMax, poolIncrement },\n domain\n } = connection\n\n if (!oracledb) {\n throw new Error('oracledb module loading failed')\n }\n\n const poolAlias = `${domain.name}-${name}`\n await oracledb.getPool(poolAlias).close(10)\n await oracledb.createPool({\n user,\n password,\n // when oracle not using default port must add connection string with port like localhost:port\n connectString: `${endpoint.trim()}/${database}`,\n poolMin,\n poolMax,\n poolIncrement,\n poolAlias\n })\n\n ConnectionManager.logger.info(`Oracle Database(${connection.name}:${database}) at ${endpoint} recreated.`)\n }\n\n async connect(connection: InputConnection) {\n const {\n name,\n endpoint,\n params: { user, password, database, poolMin, poolMax, poolIncrement },\n domain\n } = connection\n\n if (!oracledb) {\n throw new Error('oracledb module loading failed')\n }\n\n const poolAlias = `${domain.name}-${name}`\n\n var enableStatistics = true\n const pool = await oracledb.createPool({\n user,\n password,\n // when oracle not using default port must add connection string with port like localhost:port\n connectString: `${endpoint.trim()}/${database}`,\n poolMin,\n poolMax,\n poolIncrement,\n poolAlias,\n enableStatistics\n })\n\n ConnectionManager.addConnectionInstance(connection, {\n query: async (query, params) => {\n let dbConnection: any = {}\n let taskResult: any = {}\n try {\n dbConnection = await oracledb.getConnection(poolAlias)\n\n taskResult = (\n await dbConnection.execute(query, params, {\n outFormat: oracledb.OBJECT\n })\n ).rows\n } catch (e) {\n if (e.name === 'Error' && e.message.includes('NJS-040')) {\n await this.recreatePool(connection)\n }\n throw e\n } finally {\n await dbConnection.close()\n }\n return taskResult\n },\n execute: async (procedure, params) => {\n let dbConnection: any = {}\n let taskResult: any = {}\n try {\n // TODO: need to check if this is available when procedure string is a common query.\n procedure = `BEGIN\n ${procedure}\n END;`\n dbConnection = await oracledb.getConnection(poolAlias)\n\n // console.log('\\n************* stat after get ****************')\n // await oracledb.getPool(poolAlias).logStatistics()\n\n const result = await dbConnection.execute(procedure, params, {\n outFormat: oracledb.OBJECT\n })\n\n let paramKeys = Object.keys(params)\n\n for (const paramKey of paramKeys) {\n if (params[paramKey].dir === oracledb?.BIND_OUT) {\n if (params[paramKey].type === oracledb?.CURSOR) {\n const resultSetTemp = result.outBinds[paramKey]\n taskResult[paramKey] = await resultSetTemp.getRows()\n await resultSetTemp.close()\n } else {\n taskResult[paramKey] = result.outBinds[paramKey]\n }\n }\n }\n } catch (e) {\n if (e.name === 'Error' && e.message.includes('NJS-040')) {\n await this.recreatePool(connection)\n }\n throw e\n } finally {\n await dbConnection.close()\n\n // console.log('\\n************* stat after close ****************')\n // await oracledb.getPool(poolAlias).logStatistics()\n }\n return taskResult\n },\n close: async () => {\n await oracledb.getPool(poolAlias).close(10)\n }\n })\n\n ConnectionManager.logger.info(`Oracle Database(${connection.name}:${database}) at ${endpoint} connected.`)\n }\n\n async disconnect(connection: InputConnection) {\n var client = ConnectionManager.getConnectionInstance(connection)\n\n try {\n await client.close()\n ConnectionManager.logger.info(`Oracle Database(${connection.name}) closed.`)\n } catch (e) {\n ConnectionManager.logger.error(e)\n }\n\n ConnectionManager.removeConnectionInstance(connection)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'string',\n name: 'user',\n label: 'user'\n },\n {\n type: 'password',\n name: 'password',\n label: 'password'\n },\n {\n type: 'string',\n name: 'database',\n placeholder: 'SID',\n label: 'database'\n },\n {\n type: 'number',\n name: 'poolMin',\n placeholder: 'minimum connection-pool size',\n label: 'pool-min',\n value: 0\n },\n {\n type: 'number',\n name: 'poolMax',\n placeholder: 'maximum connection-pool size',\n label: 'pool-max',\n value: 4\n },\n {\n type: 'number',\n name: 'poolIncrement',\n placeholder: 'connection incremental size',\n label: 'pool-increment',\n value: 1\n }\n ]\n }\n\n get taskPrefixes() {\n return ['database', 'oracle']\n }\n\n get help() {\n return 'integration/connector/oracle-connector'\n }\n}\n\nConnectionManager.registerConnector('oracle-connector', new OracleConnector())\n\n// need reference:\n// https://download.oracle.com/otn_software/mac/instantclient/193000/instantclient-basiclite-macos.x64-19.3.0.0.0dbru.zip\n// https://node-oracledb.readthedocs.io/en/latest/index.html\n\n// docker pull store/oracle/database-instantclient:12.2.0.1\n"]}
@@ -1,20 +0,0 @@
1
- import { Connector } from '../types';
2
- import { InputConnection } from '../../service/connection/connection-type';
3
- export declare class PostgresqlConnector implements Connector {
4
- ready(connectionConfigs: InputConnection[]): Promise<void>;
5
- connect(connection: InputConnection): Promise<void>;
6
- disconnect(connection: InputConnection): Promise<void>;
7
- get parameterSpec(): ({
8
- type: string;
9
- name: string;
10
- label: string;
11
- placeHolder?: undefined;
12
- } | {
13
- type: string;
14
- name: string;
15
- label: string;
16
- placeHolder: string;
17
- })[];
18
- get taskPrefixes(): string[];
19
- get help(): string;
20
- }
@@ -1,136 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PostgresqlConnector = void 0;
4
- const env_1 = require("@things-factory/env");
5
- const connection_manager_1 = require("../connection-manager");
6
- try {
7
- var { Client, Pool } = require('pg');
8
- }
9
- catch (err) {
10
- env_1.logger.error('postgresql module loading failed', err);
11
- }
12
- class PostgresqlConnector {
13
- async ready(connectionConfigs) {
14
- await Promise.all(connectionConfigs.map(this.connect.bind(this)));
15
- connection_manager_1.ConnectionManager.logger.info('postgresql-connector connections are ready');
16
- }
17
- async connect(connection) {
18
- const { endpoint, params: { user, password, database, maxPoolConnection, idleTimeoutMillis, connectionTimeoutMillis } } = connection;
19
- const [host, port = 5432] = endpoint.split(':');
20
- if (!Pool) {
21
- throw new Error('postgresql module loading failed');
22
- }
23
- // create a new pool
24
- const pool = new Pool({
25
- user,
26
- host,
27
- database,
28
- password,
29
- port: Number(port),
30
- max: maxPoolConnection || 10,
31
- idleTimeoutMillis: idleTimeoutMillis || 30000,
32
- connectionTimeoutMillis: connectionTimeoutMillis || 2000
33
- });
34
- pool.on('error', (err, client) => {
35
- env_1.logger.error('unexpected error on postgres pool.', err);
36
- });
37
- try {
38
- // try to connect to database to check the connection at initial time
39
- const entryConnection = await pool.connect().catch(async (e) => {
40
- connection_manager_1.ConnectionManager.logger.error(e);
41
- throw e;
42
- });
43
- entryConnection.release();
44
- connection_manager_1.ConnectionManager.addConnectionInstance(connection, {
45
- query: async (query, params) => {
46
- try {
47
- // get a connection from the pool
48
- var client = await pool.connect().catch(async (e) => {
49
- connection_manager_1.ConnectionManager.logger.error(e);
50
- throw e;
51
- });
52
- client === null || client === void 0 ? void 0 : client.on('error', async (err) => {
53
- env_1.logger.error('unexpected error on postgres client.', err);
54
- connection_manager_1.ConnectionManager.logger.error(err);
55
- });
56
- // try to query
57
- var result = (await client.query(query, params)).rows;
58
- }
59
- catch (e) {
60
- connection_manager_1.ConnectionManager.logger.error(e);
61
- throw e;
62
- }
63
- finally {
64
- // release the connection back to the pool
65
- client === null || client === void 0 ? void 0 : client.release();
66
- }
67
- return result;
68
- },
69
- close: async () => {
70
- // close the pool
71
- await (pool === null || pool === void 0 ? void 0 : pool.end());
72
- }
73
- });
74
- connection_manager_1.ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}:${database}) at ${endpoint} connected.`);
75
- }
76
- catch (e) {
77
- connection_manager_1.ConnectionManager.logger.error(`PostgresSQL Database(${connection.name}:${database}) at ${endpoint} not connected.`, e);
78
- }
79
- }
80
- async disconnect(connection) {
81
- var connectionInstance = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
82
- try {
83
- await connectionInstance.close();
84
- connection_manager_1.ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}) closed.`);
85
- }
86
- catch (e) {
87
- connection_manager_1.ConnectionManager.logger.error(e);
88
- }
89
- connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
90
- }
91
- get parameterSpec() {
92
- return [
93
- {
94
- type: 'string',
95
- name: 'user',
96
- label: 'user'
97
- },
98
- {
99
- type: 'password',
100
- name: 'password',
101
- label: 'password'
102
- },
103
- {
104
- type: 'string',
105
- name: 'database',
106
- label: 'database'
107
- },
108
- {
109
- type: 'number',
110
- name: 'maxPoolConnection',
111
- label: 'maxPoolConnection'
112
- },
113
- {
114
- type: 'number',
115
- name: 'idleTimeoutMillis',
116
- label: 'idleTimeoutMillis',
117
- placeHolder: 'milli-seconds'
118
- },
119
- {
120
- type: 'number',
121
- name: 'connectionTimeoutMillis',
122
- label: 'connectionTimeoutMillis',
123
- placeHolder: 'milli-seconds'
124
- }
125
- ];
126
- }
127
- get taskPrefixes() {
128
- return ['database'];
129
- }
130
- get help() {
131
- return 'integration/connector/postgresql-connector';
132
- }
133
- }
134
- exports.PostgresqlConnector = PostgresqlConnector;
135
- connection_manager_1.ConnectionManager.registerConnector('postgresql-connector', new PostgresqlConnector());
136
- //# sourceMappingURL=postgresql-connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postgresql-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/postgresql-connector.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '@things-factory/env'\n\nimport { ConnectionManager } from '../connection-manager'\nimport { Connector } from '../types'\nimport { InputConnection } from '../../service/connection/connection-type'\n\ntry {\n var { Client, Pool } = require('pg')\n} catch (err) {\n logger.error('postgresql module loading failed', err)\n}\n\nexport class PostgresqlConnector implements Connector {\n async ready(connectionConfigs: InputConnection[]) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('postgresql-connector connections are ready')\n }\n\n async connect(connection: InputConnection) {\n const {\n endpoint,\n params: { user, password, database, maxPoolConnection, idleTimeoutMillis, connectionTimeoutMillis }\n } = connection\n const [host, port = 5432] = endpoint.split(':')\n\n if (!Pool) {\n throw new Error('postgresql module loading failed')\n }\n\n // create a new pool\n const pool = new Pool({\n user,\n host,\n database,\n password,\n port: Number(port),\n max: maxPoolConnection || 10,\n idleTimeoutMillis: idleTimeoutMillis || 30000,\n connectionTimeoutMillis: connectionTimeoutMillis || 2000\n })\n\n pool.on('error', (err, client) => {\n logger.error('unexpected error on postgres pool.', err)\n })\n\n try {\n // try to connect to database to check the connection at initial time\n const entryConnection = await pool.connect().catch(async e => {\n ConnectionManager.logger.error(e)\n throw e\n })\n entryConnection.release()\n\n ConnectionManager.addConnectionInstance(connection, {\n query: async (query, params) => {\n try {\n // get a connection from the pool\n var client = await pool.connect().catch(async e => {\n ConnectionManager.logger.error(e)\n throw e\n })\n\n client?.on('error', async err => {\n logger.error('unexpected error on postgres client.', err)\n ConnectionManager.logger.error(err)\n })\n\n // try to query\n var result = (await client.query(query, params)).rows\n } catch (e) {\n ConnectionManager.logger.error(e)\n throw e\n } finally {\n // release the connection back to the pool\n client?.release()\n }\n return result\n },\n close: async () => {\n // close the pool\n await pool?.end()\n }\n })\n\n ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}:${database}) at ${endpoint} connected.`)\n } catch (e) {\n ConnectionManager.logger.error(\n `PostgresSQL Database(${connection.name}:${database}) at ${endpoint} not connected.`,\n e\n )\n }\n }\n\n async disconnect(connection: InputConnection) {\n var connectionInstance = ConnectionManager.getConnectionInstance(connection)\n try {\n await connectionInstance.close()\n ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}) closed.`)\n } catch (e) {\n ConnectionManager.logger.error(e)\n }\n ConnectionManager.removeConnectionInstance(connection)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'string',\n name: 'user',\n label: 'user'\n },\n {\n type: 'password',\n name: 'password',\n label: 'password'\n },\n {\n type: 'string',\n name: 'database',\n label: 'database'\n },\n {\n type: 'number',\n name: 'maxPoolConnection',\n label: 'maxPoolConnection'\n },\n {\n type: 'number',\n name: 'idleTimeoutMillis',\n label: 'idleTimeoutMillis',\n placeHolder: 'milli-seconds'\n },\n {\n type: 'number',\n name: 'connectionTimeoutMillis',\n label: 'connectionTimeoutMillis',\n placeHolder: 'milli-seconds'\n }\n ]\n }\n\n get taskPrefixes() {\n return ['database']\n }\n\n get help() {\n return 'integration/connector/postgresql-connector'\n }\n}\n\nConnectionManager.registerConnector('postgresql-connector', new PostgresqlConnector())\n"]}