@things-factory/integration-base 9.0.0-beta.25 → 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 +2 -2
  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,58 +0,0 @@
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-servers are ready');
12
- }
13
- async connect(config) {
14
- var [host = '0.0.0.0', port = 8124] = config.endpoint.split(':');
15
- return new Promise((resolve, reject) => {
16
- var server = net_1.default.createServer(socket => {
17
- socket.on('data', function (data) {
18
- socket.write(data.toString());
19
- });
20
- socket.on('error', function (err) {
21
- connection_manager_1.ConnectionManager.logger.error(err);
22
- reject(err);
23
- });
24
- });
25
- server.listen(port, async () => {
26
- connection_manager_1.ConnectionManager.logger.info(`Echo-back server listening on ${host}:${port}`);
27
- /* default client connection */
28
- let socket = new net_1.default.Socket();
29
- socket.on('error', console.error);
30
- try {
31
- let promiseSocket = new promise_socket_1.default(socket);
32
- await promiseSocket.connect(Number(port), 'localhost');
33
- promiseSocket['__server__'] = server;
34
- connection_manager_1.ConnectionManager.addConnectionInstance(config, promiseSocket);
35
- connection_manager_1.ConnectionManager.logger.info(`echo-back-server connection(${config.name}:${config.endpoint}) is connected`);
36
- resolve();
37
- }
38
- catch (err) {
39
- connection_manager_1.ConnectionManager.logger.error(`echo-back-server connection(${config.name}:${config.endpoint}) is connected.\ncause: ${err}`);
40
- reject(err);
41
- }
42
- });
43
- });
44
- }
45
- async disconnect(connection) {
46
- let socket = connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
47
- var server = socket['__server__'];
48
- await socket.destroy();
49
- server && (await server.close());
50
- connection_manager_1.ConnectionManager.logger.info(`echo-back-server connection(${connection.name}) is disconnected`);
51
- }
52
- get parameterSpec() {
53
- return [];
54
- }
55
- }
56
- exports.EchoBack = EchoBack;
57
- connection_manager_1.ConnectionManager.registerConnector('echo-back-server', new EchoBack());
58
- //# sourceMappingURL=echo-back-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"echo-back-server.js","sourceRoot":"","sources":["../../../server/engine/connector/echo-back-server.ts"],"names":[],"mappings":"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","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: InputConnection[]) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('echo-back-servers are ready')\n }\n\n async connect(config: InputConnection): Promise<void> {\n var [host = '0.0.0.0', port = 8124] = config.endpoint.split(':')\n\n return new Promise((resolve, reject) => {\n var server = net.createServer(socket => {\n socket.on('data', function (data) {\n socket.write(data.toString())\n })\n\n socket.on('error', function (err) {\n ConnectionManager.logger.error(err)\n reject(err)\n })\n })\n\n server.listen(port, async () => {\n ConnectionManager.logger.info(`Echo-back server listening on ${host}:${port}`)\n\n /* default client connection */\n let socket = new net.Socket()\n socket.on('error', console.error)\n\n try {\n let promiseSocket = new PromiseSocket(socket)\n await promiseSocket.connect(Number(port), 'localhost')\n promiseSocket['__server__'] = server\n\n ConnectionManager.addConnectionInstance(config, promiseSocket)\n\n ConnectionManager.logger.info(`echo-back-server connection(${config.name}:${config.endpoint}) is connected`)\n\n resolve()\n } catch (err) {\n ConnectionManager.logger.error(\n `echo-back-server connection(${config.name}:${config.endpoint}) is connected.\\ncause: ${err}`\n )\n reject(err)\n }\n })\n })\n }\n\n async disconnect(connection: InputConnection) {\n let socket = ConnectionManager.removeConnectionInstance(connection)\n var server = socket['__server__']\n\n await socket.destroy()\n server && (await server.close())\n\n ConnectionManager.logger.info(`echo-back-server connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return []\n }\n}\n\nConnectionManager.registerConnector('echo-back-server', new EchoBack())\n"]}
@@ -1,19 +0,0 @@
1
- import 'cross-fetch/polyfill';
2
- import { Connector } from '../types';
3
- import { InputConnection } from '../../service/connection/connection-type';
4
- export declare class GraphqlConnector implements Connector {
5
- ready(connectionConfigs: 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
- property: {
13
- queryName: string;
14
- };
15
- }[];
16
- get taskPrefixes(): string[];
17
- get description(): string;
18
- get help(): string;
19
- }
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphqlConnector = void 0;
4
- require("cross-fetch/polyfill");
5
- const core_1 = require("@apollo/client/core");
6
- const error_1 = require("@apollo/client/link/error");
7
- const oauth2_client_1 = require("@things-factory/oauth2-client");
8
- const shell_1 = require("@things-factory/shell");
9
- const connection_manager_1 = require("../connection-manager");
10
- const defaultOptions = {
11
- watchQuery: {
12
- fetchPolicy: 'no-cache',
13
- errorPolicy: 'ignore'
14
- },
15
- query: {
16
- fetchPolicy: 'no-cache', //'network-only'
17
- errorPolicy: 'all'
18
- },
19
- mutate: {
20
- errorPolicy: 'all'
21
- }
22
- };
23
- class GraphqlConnector {
24
- async ready(connectionConfigs) {
25
- await Promise.all(connectionConfigs.map(this.connect.bind(this)));
26
- connection_manager_1.ConnectionManager.logger.info('graphql-connector connections are ready');
27
- }
28
- async connect(connection) {
29
- const { endpoint: uri, params: { authClient } } = connection;
30
- const ERROR_HANDLER = ({ graphQLErrors, networkError }) => {
31
- if (graphQLErrors)
32
- graphQLErrors.map(({ message, locations, path }) => {
33
- connection_manager_1.ConnectionManager.logger.error(`[GraphQL error] Message: ${message}, Location: ${locations}, Path: ${path}`, graphQLErrors);
34
- });
35
- if (networkError) {
36
- connection_manager_1.ConnectionManager.logger.error(`[Network error - ${networkError.statusCode}]`, networkError);
37
- }
38
- };
39
- const oauth2Client = await (0, shell_1.getRepository)(oauth2_client_1.Oauth2Client).findOneBy({ id: authClient });
40
- const authMiddleware = new core_1.ApolloLink((operation, forward) => {
41
- // add the authorization to the headers
42
- operation.setContext(({ headers = {} }) => ({
43
- headers: Object.assign(Object.assign({}, headers), oauth2Client.getAuthHeaders())
44
- }));
45
- return forward(operation);
46
- });
47
- const cache = new core_1.InMemoryCache({
48
- addTypename: false
49
- });
50
- connection_manager_1.ConnectionManager.addConnectionInstance(connection, new core_1.ApolloClient({
51
- defaultOptions,
52
- cache,
53
- link: (0, core_1.from)([
54
- authMiddleware,
55
- (0, error_1.onError)(ERROR_HANDLER),
56
- new core_1.HttpLink({
57
- uri,
58
- credentials: 'include'
59
- })
60
- ])
61
- }));
62
- connection_manager_1.ConnectionManager.logger.info(`graphql-connector connection(${connection.name}:${connection.endpoint}) is connected`);
63
- }
64
- async disconnect(connection) {
65
- const client = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
66
- client.stop();
67
- connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
68
- connection_manager_1.ConnectionManager.logger.info(`graphql-connector connection(${connection.name}) is disconnected`);
69
- }
70
- get parameterSpec() {
71
- return [
72
- {
73
- type: 'entity-selector',
74
- name: 'authClient',
75
- label: 'auth-client',
76
- property: {
77
- queryName: 'oauth2Clients'
78
- }
79
- }
80
- ];
81
- }
82
- get taskPrefixes() {
83
- return ['graphql'];
84
- }
85
- get description() {
86
- return 'Graphql Http Connector';
87
- }
88
- get help() {
89
- return 'integration/connector/graphql-connector';
90
- }
91
- }
92
- exports.GraphqlConnector = GraphqlConnector;
93
- connection_manager_1.ConnectionManager.registerConnector('graphql-connector', new GraphqlConnector());
94
- //# sourceMappingURL=graphql-connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphql-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/graphql-connector.ts"],"names":[],"mappings":"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","sourcesContent":["import 'cross-fetch/polyfill'\n\nimport { ApolloClient, ApolloLink, from, HttpLink, InMemoryCache } from '@apollo/client/core'\nimport { onError } from '@apollo/client/link/error'\nimport { Oauth2Client } from '@things-factory/oauth2-client'\nimport { getRepository } from '@things-factory/shell'\n\nimport { ConnectionManager } from '../connection-manager'\nimport { Connector } from '../types'\nimport { InputConnection } from '../../service/connection/connection-type'\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 class GraphqlConnector implements Connector {\n async ready(connectionConfigs: InputConnection[]) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('graphql-connector connections are ready')\n }\n\n async connect(connection: InputConnection) {\n const {\n endpoint: uri,\n params: { authClient }\n } = connection\n\n const ERROR_HANDLER: any = ({ graphQLErrors, networkError }) => {\n if (graphQLErrors)\n graphQLErrors.map(({ message, locations, path }) => {\n ConnectionManager.logger.error(\n `[GraphQL error] Message: ${message}, Location: ${locations}, Path: ${path}`,\n graphQLErrors\n )\n })\n\n if (networkError) {\n ConnectionManager.logger.error(`[Network error - ${networkError.statusCode}]`, networkError)\n }\n }\n\n const oauth2Client: Oauth2Client = await getRepository(Oauth2Client).findOneBy({ id: authClient })\n\n const authMiddleware = new ApolloLink((operation, forward) => {\n // add the authorization to the headers\n operation.setContext(({ headers = {} }) => ({\n headers: {\n ...headers,\n ...oauth2Client.getAuthHeaders()\n }\n }))\n\n return forward(operation)\n })\n\n const cache = new InMemoryCache({\n addTypename: false\n })\n\n ConnectionManager.addConnectionInstance(\n connection,\n new ApolloClient({\n defaultOptions,\n cache,\n link: from([\n authMiddleware,\n onError(ERROR_HANDLER),\n new HttpLink({\n uri,\n credentials: 'include'\n })\n ])\n })\n )\n\n ConnectionManager.logger.info(\n `graphql-connector connection(${connection.name}:${connection.endpoint}) is connected`\n )\n }\n\n async disconnect(connection: InputConnection) {\n const client = ConnectionManager.getConnectionInstance(connection)\n client.stop()\n ConnectionManager.removeConnectionInstance(connection)\n\n ConnectionManager.logger.info(`graphql-connector connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'entity-selector',\n name: 'authClient',\n label: 'auth-client',\n property: {\n queryName: 'oauth2Clients'\n }\n }\n ]\n }\n\n get taskPrefixes() {\n return ['graphql']\n }\n\n get description() {\n return 'Graphql Http Connector'\n }\n\n get help() {\n return 'integration/connector/graphql-connector'\n }\n}\n\nConnectionManager.registerConnector('graphql-connector', new GraphqlConnector())\n"]}
@@ -1,23 +0,0 @@
1
- import { Connector } from '../types';
2
- export declare class HeadlessConnector implements Connector {
3
- ready(connectionConfigs: any): Promise<void>;
4
- connect(connection: any): Promise<void>;
5
- applyCookiesAndVerifySession(page: any, cookies: any, loginInfo: any): Promise<void>;
6
- performLogin(page: any, uri: any, loginInfo: any): Promise<void>;
7
- resolveShadowDom(page: any, shadowSelectors: any, targetSelector: any): Promise<any>;
8
- disconnect(connection: any): Promise<void>;
9
- get parameterSpec(): ({
10
- type: string;
11
- name: string;
12
- label: string;
13
- value?: undefined;
14
- } | {
15
- type: string;
16
- name: string;
17
- label: string;
18
- value: number;
19
- })[];
20
- get taskPrefixes(): string[];
21
- get description(): string;
22
- get help(): string;
23
- }
@@ -1,357 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HeadlessConnector = void 0;
4
- const connection_manager_1 = require("../connection-manager");
5
- const headless_pool_1 = require("../resource-pool/headless-pool");
6
- /*
7
- Functionality of the headless-connector:
8
- - Provides a mechanism to acquire an active session page.
9
- - Performs login when necessary to obtain valid cookies.
10
- - Applies these cookies to the page for session management.
11
- - Pages are acquired from the `headlessPool`, which manages browser instances.
12
- - During the login process, pages from the pool are used for actions like form filling and navigation.
13
- - Valid cookies are saved after login and reused for subsequent page acquisitions.
14
- - Users must explicitly release the page after use through the `releasePage` method.
15
- - Released pages are returned to the `headlessPool` for reuse.
16
- */
17
- class HeadlessConnector {
18
- async ready(connectionConfigs) {
19
- await Promise.all(connectionConfigs.map(this.connect.bind(this)));
20
- connection_manager_1.ConnectionManager.logger.info('headless-connector connections are ready');
21
- }
22
- async connect(connection) {
23
- const { endpoint: uri = '1', params: { username = '', password = '', loginPagePath = '/login', loginApiUrl = null, usernameSelector = '#username', passwordSelector = '#password', submitSelector = '#submit', successSelector = null, shadowDomSelectors = '', // Comma separated shadow DOM selectors
24
- timeout = 15000, // Default timeout for operations
25
- retries = 3 // Default number of retries for login or page actions
26
- } = {} } = connection;
27
- const loginInfo = {
28
- loginRequired: Boolean(username), // Determine if login is required
29
- username,
30
- password,
31
- loginPagePath,
32
- loginApiUrl,
33
- timeout,
34
- retries,
35
- loginSelectors: {
36
- usernameSelector,
37
- passwordSelector,
38
- submitSelector,
39
- successSelector,
40
- shadowDomSelectors: shadowDomSelectors
41
- .split(',')
42
- .map(selector => selector.trim())
43
- .filter(Boolean)
44
- }
45
- };
46
- async function acquireBrowser() {
47
- try {
48
- const pool = (0, headless_pool_1.getHeadlessPool)();
49
- const browser = await pool.acquire();
50
- return browser;
51
- }
52
- catch (error) {
53
- connection_manager_1.ConnectionManager.logger.error('Failed to acquire browser:', error);
54
- throw error;
55
- }
56
- }
57
- async function releaseBrowser(browser) {
58
- try {
59
- const pool = (0, headless_pool_1.getHeadlessPool)();
60
- await pool.release(browser);
61
- }
62
- catch (error) {
63
- connection_manager_1.ConnectionManager.logger.error('Failed to release browser:', error);
64
- }
65
- }
66
- connection_manager_1.ConnectionManager.addConnectionInstance(connection, {
67
- endpoint: connection.endpoint,
68
- params: connection.params,
69
- acquireSessionPage: async () => {
70
- const browser = await acquireBrowser();
71
- let page;
72
- let cookies = connection.cookies;
73
- try {
74
- page = await browser.newPage();
75
- await page.setRequestInterception(true);
76
- await page.setBypassCSP(true);
77
- await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.204 Safari/537.36');
78
- await page.evaluateOnNewDocument(() => {
79
- Object.defineProperty(navigator, 'webdriver', { get: () => false });
80
- });
81
- await page.setExtraHTTPHeaders({
82
- 'Upgrade-Insecure-Requests': '0',
83
- 'accept-language': 'en-US,en;q=0.9',
84
- // 'upgrade-insecure-requests': '0',
85
- referer: uri
86
- });
87
- await page.setDefaultNavigationTimeout(timeout);
88
- page.on('console', async (msg) => {
89
- connection_manager_1.ConnectionManager.logger.info(`[browser ${msg.type()}] ${msg.text()}`);
90
- });
91
- page.on('request', request => {
92
- if (request.isInterceptResolutionHandled()) {
93
- return;
94
- }
95
- const resourceType = request.resourceType();
96
- const headers = request.headers();
97
- if (headers['access-control-request-headers']) {
98
- const filteredHeaders = headers['access-control-request-headers']
99
- .split(',')
100
- .map(header => header.trim())
101
- .filter(header => header.toLowerCase() !== 'upgrade-insecure-requests'); // 해당 헤더 제거
102
- if (filteredHeaders.length > 0) {
103
- headers['access-control-request-headers'] = filteredHeaders.join(', ');
104
- }
105
- else {
106
- delete headers['access-control-request-headers']; // 필요하면 전체 삭제
107
- }
108
- }
109
- // 일반적인 요청에서도 'upgrade-insecure-requests' 헤더 제거
110
- if (headers['upgrade-insecure-requests']) {
111
- delete headers['upgrade-insecure-requests'];
112
- }
113
- if (['image', 'stylesheet', 'font'].includes(resourceType)) {
114
- request.abort(); // 비필수 리소스 요청 차단
115
- }
116
- else {
117
- request.continue(); // 나머지 요청은 진행
118
- }
119
- });
120
- page.on('requestfailed', request => {
121
- var _a;
122
- try {
123
- console.log('Request failed:');
124
- console.log(`- URL: ${request.url()}`);
125
- console.log(`- Method: ${request.method()}`);
126
- console.log(`- Failure Text: ${(_a = request.failure()) === null || _a === void 0 ? void 0 : _a.errorText}`);
127
- console.log(`- Headers:`, request.headers());
128
- // POST 데이터 (필요한 경우)
129
- if (request.postData()) {
130
- console.log(`- Post Data: ${request.postData()}`);
131
- }
132
- }
133
- catch (error) {
134
- console.error('Error in requestfailed handler:', error);
135
- }
136
- });
137
- if (loginInfo.loginRequired) {
138
- // 현재 세션의 Authorization 헤더 확인
139
- const headers = await page.evaluate(() => {
140
- return fetch(window.location.href, { method: 'GET' })
141
- .then(response => response.headers.get('Authorization'))
142
- .catch(() => null);
143
- });
144
- if (headers) {
145
- connection_manager_1.ConnectionManager.logger.info('User is already logged in, skipping login process.');
146
- return page;
147
- }
148
- if (cookies && isCookieValid(cookies)) {
149
- await this.applyCookiesAndVerifySession(page, cookies, loginInfo);
150
- return page;
151
- }
152
- await this.performLogin(page, uri, loginInfo);
153
- cookies = await page.cookies();
154
- connection.cookies = cookies;
155
- }
156
- return page;
157
- }
158
- catch (error) {
159
- connection_manager_1.ConnectionManager.logger.error('Failed to acquire session page:', error);
160
- throw error;
161
- }
162
- },
163
- releasePage: async (page) => {
164
- try {
165
- if (page) {
166
- const browser = page.browser();
167
- await page.close();
168
- await releaseBrowser(browser);
169
- }
170
- }
171
- catch (error) {
172
- connection_manager_1.ConnectionManager.logger.error('Failed to release page:', error);
173
- }
174
- },
175
- acquireBrowser,
176
- releaseBrowser
177
- });
178
- connection_manager_1.ConnectionManager.logger.info(`headless-connector connection(${connection.name}:${connection.endpoint}) is connected`);
179
- }
180
- async applyCookiesAndVerifySession(page, cookies, loginInfo) {
181
- await page.setCookie(...cookies);
182
- await page.reload({ waitUntil: 'networkidle2', timeout: loginInfo.timeout });
183
- if (loginInfo.loginRequired && loginInfo.loginSelectors.successSelector) {
184
- const success = await this.resolveShadowDom(page, loginInfo.loginSelectors.shadowDomSelectors, loginInfo.loginSelectors.successSelector);
185
- if (!success) {
186
- throw new Error('Session invalid, login required');
187
- }
188
- }
189
- }
190
- async performLogin(page, uri, loginInfo) {
191
- for (let attempt = 1; attempt <= loginInfo.retries; attempt++) {
192
- try {
193
- await page.goto(`${uri}${loginInfo.loginPagePath}`, { waitUntil: 'networkidle2', timeout: loginInfo.timeout });
194
- const usernameInput = await this.resolveShadowDom(page, loginInfo.loginSelectors.shadowDomSelectors, loginInfo.loginSelectors.usernameSelector);
195
- const passwordInput = await this.resolveShadowDom(page, loginInfo.loginSelectors.shadowDomSelectors, loginInfo.loginSelectors.passwordSelector);
196
- const submitButton = await this.resolveShadowDom(page, loginInfo.loginSelectors.shadowDomSelectors, loginInfo.loginSelectors.submitSelector);
197
- if (!usernameInput || !passwordInput || !submitButton) {
198
- throw new Error('Failed to locate input elements in shadow DOM');
199
- }
200
- await usernameInput.type(loginInfo.username);
201
- await passwordInput.type(loginInfo.password);
202
- var loginApiUrl = loginInfo.loginApiUrl ||
203
- (await page.evaluate(button => {
204
- const form = button.closest('form');
205
- return form ? form.action : null;
206
- }, submitButton));
207
- if (loginApiUrl && !loginApiUrl.startsWith('http')) {
208
- loginApiUrl = `${uri}${loginApiUrl}`;
209
- }
210
- if (!loginApiUrl) {
211
- throw new Error('❌ Unable to detect login API URL!');
212
- }
213
- console.log('✅ Detected login API URL:', loginApiUrl);
214
- const [response] = await Promise.all([
215
- page.waitForResponse(response => {
216
- const url = response.url();
217
- const method = response.request().method();
218
- return url === loginApiUrl && method === 'POST' && [200, 201, 204, 302, 304].includes(response.status());
219
- }),
220
- page.evaluate(button => button.click(), submitButton),
221
- page.waitForNavigation({ waitUntil: 'networkidle2', timeout: loginInfo.timeout }) // 로그인 후 리디렉션 감지
222
- ]);
223
- if (response) {
224
- const status = response.status();
225
- if (status >= 200 && status < 400) {
226
- connection_manager_1.ConnectionManager.logger.info(`Login successful with status code: ${status}`);
227
- return;
228
- }
229
- else if (status >= 400) {
230
- throw new Error(`Login failed with status code: ${status}`);
231
- }
232
- }
233
- else {
234
- throw new Error('No response received during login');
235
- }
236
- if (loginInfo.loginSelectors.successSelector) {
237
- const success = await this.resolveShadowDom(page, loginInfo.loginSelectors.shadowDomSelectors, loginInfo.loginSelectors.successSelector);
238
- if (!success) {
239
- throw new Error('Login failed: Success selector not found');
240
- }
241
- }
242
- }
243
- catch (error) {
244
- connection_manager_1.ConnectionManager.logger.warn(`Login attempt ${attempt} failed:`, error);
245
- try {
246
- await page.screenshot({ path: `logs/login-failure-attempt-${attempt}.png` });
247
- }
248
- catch (error) {
249
- connection_manager_1.ConnectionManager.logger.error('Failed to capture screenshot:', error);
250
- }
251
- if (attempt === loginInfo.retries) {
252
- throw new Error(`Login failed after ${loginInfo.retries} attempts`);
253
- }
254
- }
255
- }
256
- }
257
- async resolveShadowDom(page, shadowSelectors, targetSelector) {
258
- let context;
259
- if (!shadowSelectors || shadowSelectors.length === 0) {
260
- // No Shadow DOM path; use document root as the context
261
- context = page.mainFrame(); // Puppeteer uses frames to represent document
262
- return context.$(targetSelector); // Search directly in the document root
263
- }
264
- context = page; // Start with the page as the context
265
- for (const selector of shadowSelectors) {
266
- const shadowHost = await context.$(selector);
267
- if (!shadowHost) {
268
- throw new Error(`Shadow host not found: ${selector}`);
269
- }
270
- context = await page.evaluateHandle(host => host.shadowRoot, shadowHost);
271
- }
272
- return context.evaluateHandle((shadowRoot, selector) => shadowRoot.querySelector(selector), targetSelector);
273
- }
274
- async disconnect(connection) {
275
- connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
276
- connection_manager_1.ConnectionManager.logger.info(`headless-connector connection(${connection.name}) is disconnected`);
277
- }
278
- get parameterSpec() {
279
- return [
280
- {
281
- type: 'string',
282
- name: 'username',
283
- label: 'username'
284
- },
285
- {
286
- type: 'password',
287
- name: 'password',
288
- label: 'password'
289
- },
290
- {
291
- type: 'string',
292
- name: 'loginPagePath',
293
- label: 'login-page-path'
294
- },
295
- {
296
- type: 'string',
297
- name: 'loginApiUrl',
298
- label: 'login-api-url'
299
- },
300
- {
301
- type: 'string',
302
- name: 'usernameSelector',
303
- label: 'username-selector'
304
- },
305
- {
306
- type: 'string',
307
- name: 'passwordSelector',
308
- label: 'password-selector'
309
- },
310
- {
311
- type: 'string',
312
- name: 'submitSelector',
313
- label: 'submit-selector'
314
- },
315
- {
316
- type: 'string',
317
- name: 'successSelector',
318
- label: 'success-selector'
319
- },
320
- {
321
- type: 'string',
322
- name: 'shadowDomSelectors',
323
- label: 'shadow-dom-selectors'
324
- },
325
- {
326
- type: 'number',
327
- name: 'timeout',
328
- label: 'timeout',
329
- value: 15000
330
- },
331
- {
332
- type: 'number',
333
- name: 'retries',
334
- label: 'maximum-retries',
335
- value: 3
336
- }
337
- ];
338
- }
339
- get taskPrefixes() {
340
- return ['headless'];
341
- }
342
- get description() {
343
- return 'Headless Pool Connector with login capabilities';
344
- }
345
- get help() {
346
- return 'integration/connector/headless-connector';
347
- }
348
- }
349
- exports.HeadlessConnector = HeadlessConnector;
350
- connection_manager_1.ConnectionManager.registerConnector('headless-connector', new HeadlessConnector());
351
- function isCookieValid(cookies) {
352
- if (!cookies || cookies.length === 0)
353
- return false;
354
- const now = Date.now() / 1000; // Current time in seconds
355
- return cookies.some(cookie => cookie.expires && cookie.expires > now);
356
- }
357
- //# sourceMappingURL=headless-connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"headless-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/headless-connector.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConnectionManager } from '../connection-manager'\nimport { Connector } from '../types'\nimport { getHeadlessPool } from '../resource-pool/headless-pool'\nimport { Browser, Page } from 'puppeteer'\n\n/*\n Functionality of the headless-connector:\n - Provides a mechanism to acquire an active session page.\n - Performs login when necessary to obtain valid cookies.\n - Applies these cookies to the page for session management.\n - Pages are acquired from the `headlessPool`, which manages browser instances.\n - During the login process, pages from the pool are used for actions like form filling and navigation.\n - Valid cookies are saved after login and reused for subsequent page acquisitions.\n - Users must explicitly release the page after use through the `releasePage` method.\n - Released pages are returned to the `headlessPool` for reuse.\n*/\n\nexport class HeadlessConnector implements Connector {\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n ConnectionManager.logger.info('headless-connector connections are ready')\n }\n\n async connect(connection) {\n const {\n endpoint: uri = '1',\n params: {\n username = '',\n password = '',\n loginPagePath = '/login',\n loginApiUrl = null,\n usernameSelector = '#username',\n passwordSelector = '#password',\n submitSelector = '#submit',\n successSelector = null,\n shadowDomSelectors = '', // Comma separated shadow DOM selectors\n timeout = 15000, // Default timeout for operations\n retries = 3 // Default number of retries for login or page actions\n } = {}\n } = connection\n\n const loginInfo = {\n loginRequired: Boolean(username), // Determine if login is required\n username,\n password,\n loginPagePath,\n loginApiUrl,\n timeout,\n retries,\n loginSelectors: {\n usernameSelector,\n passwordSelector,\n submitSelector,\n successSelector,\n shadowDomSelectors: shadowDomSelectors\n .split(',')\n .map(selector => selector.trim())\n .filter(Boolean)\n }\n }\n\n async function acquireBrowser() {\n try {\n const pool = getHeadlessPool()\n const browser = await pool.acquire()\n return browser\n } catch (error) {\n ConnectionManager.logger.error('Failed to acquire browser:', error)\n throw error\n }\n }\n\n async function releaseBrowser(browser: Browser) {\n try {\n const pool = getHeadlessPool()\n await pool.release(browser)\n } catch (error) {\n ConnectionManager.logger.error('Failed to release browser:', error)\n }\n }\n\n ConnectionManager.addConnectionInstance(connection, {\n endpoint: connection.endpoint,\n params: connection.params,\n acquireSessionPage: async () => {\n const browser = await acquireBrowser()\n let page\n let cookies = connection.cookies\n\n try {\n page = await browser.newPage()\n\n await page.setRequestInterception(true)\n\n await page.setBypassCSP(true)\n\n await page.setUserAgent(\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.204 Safari/537.36'\n )\n\n await page.evaluateOnNewDocument(() => {\n Object.defineProperty(navigator, 'webdriver', { get: () => false })\n })\n\n await page.setExtraHTTPHeaders({\n 'Upgrade-Insecure-Requests': '0',\n 'accept-language': 'en-US,en;q=0.9',\n // 'upgrade-insecure-requests': '0',\n referer: uri\n })\n\n await page.setDefaultNavigationTimeout(timeout)\n\n page.on('console', async msg => {\n ConnectionManager.logger.info(`[browser ${msg.type()}] ${msg.text()}`)\n })\n\n page.on('request', request => {\n if (request.isInterceptResolutionHandled()) {\n return\n }\n\n const resourceType = request.resourceType()\n\n const headers = request.headers()\n if (headers['access-control-request-headers']) {\n const filteredHeaders = headers['access-control-request-headers']\n .split(',')\n .map(header => header.trim())\n .filter(header => header.toLowerCase() !== 'upgrade-insecure-requests') // 해당 헤더 제거\n\n if (filteredHeaders.length > 0) {\n headers['access-control-request-headers'] = filteredHeaders.join(', ')\n } else {\n delete headers['access-control-request-headers'] // 필요하면 전체 삭제\n }\n }\n\n // 일반적인 요청에서도 'upgrade-insecure-requests' 헤더 제거\n if (headers['upgrade-insecure-requests']) {\n delete headers['upgrade-insecure-requests']\n }\n\n if (['image', 'stylesheet', 'font'].includes(resourceType)) {\n request.abort() // 비필수 리소스 요청 차단\n } else {\n request.continue() // 나머지 요청은 진행\n }\n })\n\n page.on('requestfailed', request => {\n try {\n console.log('Request failed:')\n console.log(`- URL: ${request.url()}`)\n console.log(`- Method: ${request.method()}`)\n console.log(`- Failure Text: ${request.failure()?.errorText}`)\n console.log(`- Headers:`, request.headers())\n\n // POST 데이터 (필요한 경우)\n if (request.postData()) {\n console.log(`- Post Data: ${request.postData()}`)\n }\n } catch (error) {\n console.error('Error in requestfailed handler:', error)\n }\n })\n\n if (loginInfo.loginRequired) {\n // 현재 세션의 Authorization 헤더 확인\n const headers = await page.evaluate(() => {\n return fetch(window.location.href, { method: 'GET' })\n .then(response => response.headers.get('Authorization'))\n .catch(() => null)\n })\n\n if (headers) {\n ConnectionManager.logger.info('User is already logged in, skipping login process.')\n return page\n }\n\n if (cookies && isCookieValid(cookies)) {\n await this.applyCookiesAndVerifySession(page, cookies, loginInfo)\n return page\n }\n\n await this.performLogin(page, uri, loginInfo)\n cookies = await page.cookies()\n connection.cookies = cookies\n }\n\n return page\n } catch (error) {\n ConnectionManager.logger.error('Failed to acquire session page:', error)\n throw error\n }\n },\n releasePage: async (page: Page) => {\n try {\n if (page) {\n const browser = page.browser()\n await page.close()\n await releaseBrowser(browser)\n }\n } catch (error) {\n ConnectionManager.logger.error('Failed to release page:', error)\n }\n },\n acquireBrowser,\n releaseBrowser\n })\n\n ConnectionManager.logger.info(\n `headless-connector connection(${connection.name}:${connection.endpoint}) is connected`\n )\n }\n\n async applyCookiesAndVerifySession(page, cookies, loginInfo) {\n await page.setCookie(...cookies)\n await page.reload({ waitUntil: 'networkidle2', timeout: loginInfo.timeout })\n\n if (loginInfo.loginRequired && loginInfo.loginSelectors.successSelector) {\n const success = await this.resolveShadowDom(\n page,\n loginInfo.loginSelectors.shadowDomSelectors,\n loginInfo.loginSelectors.successSelector\n )\n if (!success) {\n throw new Error('Session invalid, login required')\n }\n }\n }\n\n async performLogin(page, uri, loginInfo) {\n for (let attempt = 1; attempt <= loginInfo.retries; attempt++) {\n try {\n await page.goto(`${uri}${loginInfo.loginPagePath}`, { waitUntil: 'networkidle2', timeout: loginInfo.timeout })\n\n const usernameInput = await this.resolveShadowDom(\n page,\n loginInfo.loginSelectors.shadowDomSelectors,\n loginInfo.loginSelectors.usernameSelector\n )\n const passwordInput = await this.resolveShadowDom(\n page,\n loginInfo.loginSelectors.shadowDomSelectors,\n loginInfo.loginSelectors.passwordSelector\n )\n const submitButton = await this.resolveShadowDom(\n page,\n loginInfo.loginSelectors.shadowDomSelectors,\n loginInfo.loginSelectors.submitSelector\n )\n\n if (!usernameInput || !passwordInput || !submitButton) {\n throw new Error('Failed to locate input elements in shadow DOM')\n }\n\n await usernameInput.type(loginInfo.username)\n await passwordInput.type(loginInfo.password)\n\n var loginApiUrl =\n loginInfo.loginApiUrl ||\n (await page.evaluate(button => {\n const form = button.closest('form')\n return form ? form.action : null\n }, submitButton))\n\n if (loginApiUrl && !loginApiUrl.startsWith('http')) {\n loginApiUrl = `${uri}${loginApiUrl}`\n }\n\n if (!loginApiUrl) {\n throw new Error('❌ Unable to detect login API URL!')\n }\n\n console.log('✅ Detected login API URL:', loginApiUrl)\n\n const [response] = await Promise.all([\n page.waitForResponse(response => {\n const url = response.url()\n const method = response.request().method()\n\n return url === loginApiUrl && method === 'POST' && [200, 201, 204, 302, 304].includes(response.status())\n }),\n page.evaluate(button => button.click(), submitButton),\n page.waitForNavigation({ waitUntil: 'networkidle2', timeout: loginInfo.timeout }) // 로그인 후 리디렉션 감지\n ])\n\n if (response) {\n const status = response.status()\n if (status >= 200 && status < 400) {\n ConnectionManager.logger.info(`Login successful with status code: ${status}`)\n return\n } else if (status >= 400) {\n throw new Error(`Login failed with status code: ${status}`)\n }\n } else {\n throw new Error('No response received during login')\n }\n\n if (loginInfo.loginSelectors.successSelector) {\n const success = await this.resolveShadowDom(\n page,\n loginInfo.loginSelectors.shadowDomSelectors,\n loginInfo.loginSelectors.successSelector\n )\n if (!success) {\n throw new Error('Login failed: Success selector not found')\n }\n }\n } catch (error) {\n ConnectionManager.logger.warn(`Login attempt ${attempt} failed:`, error)\n\n try {\n await page.screenshot({ path: `logs/login-failure-attempt-${attempt}.png` })\n } catch (error) {\n ConnectionManager.logger.error('Failed to capture screenshot:', error)\n }\n\n if (attempt === loginInfo.retries) {\n throw new Error(`Login failed after ${loginInfo.retries} attempts`)\n }\n }\n }\n }\n\n async resolveShadowDom(page, shadowSelectors, targetSelector) {\n let context\n\n if (!shadowSelectors || shadowSelectors.length === 0) {\n // No Shadow DOM path; use document root as the context\n context = page.mainFrame() // Puppeteer uses frames to represent document\n return context.$(targetSelector) // Search directly in the document root\n }\n\n context = page // Start with the page as the context\n for (const selector of shadowSelectors) {\n const shadowHost = await context.$(selector)\n if (!shadowHost) {\n throw new Error(`Shadow host not found: ${selector}`)\n }\n context = await page.evaluateHandle(host => host.shadowRoot, shadowHost)\n }\n return context.evaluateHandle((shadowRoot, selector) => shadowRoot.querySelector(selector), targetSelector)\n }\n\n async disconnect(connection) {\n ConnectionManager.removeConnectionInstance(connection)\n ConnectionManager.logger.info(`headless-connector connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'string',\n name: 'username',\n label: 'username'\n },\n {\n type: 'password',\n name: 'password',\n label: 'password'\n },\n {\n type: 'string',\n name: 'loginPagePath',\n label: 'login-page-path'\n },\n {\n type: 'string',\n name: 'loginApiUrl',\n label: 'login-api-url'\n },\n {\n type: 'string',\n name: 'usernameSelector',\n label: 'username-selector'\n },\n {\n type: 'string',\n name: 'passwordSelector',\n label: 'password-selector'\n },\n {\n type: 'string',\n name: 'submitSelector',\n label: 'submit-selector'\n },\n {\n type: 'string',\n name: 'successSelector',\n label: 'success-selector'\n },\n {\n type: 'string',\n name: 'shadowDomSelectors',\n label: 'shadow-dom-selectors'\n },\n {\n type: 'number',\n name: 'timeout',\n label: 'timeout',\n value: 15000\n },\n {\n type: 'number',\n name: 'retries',\n label: 'maximum-retries',\n value: 3\n }\n ]\n }\n\n get taskPrefixes() {\n return ['headless']\n }\n\n get description() {\n return 'Headless Pool Connector with login capabilities'\n }\n\n get help() {\n return 'integration/connector/headless-connector'\n }\n}\n\nConnectionManager.registerConnector('headless-connector', new HeadlessConnector())\n\nfunction isCookieValid(cookies) {\n if (!cookies || cookies.length === 0) return false\n const now = Date.now() / 1000 // Current time in seconds\n return cookies.some(cookie => cookie.expires && cookie.expires > now)\n}\n"]}