@things-factory/integration-base 4.3.671 → 4.3.673

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 (249) hide show
  1. package/dist-server/engine/connection-manager.js +141 -0
  2. package/dist-server/engine/connection-manager.js.map +1 -0
  3. package/dist-server/engine/connector/echo-back-connector.js +41 -0
  4. package/dist-server/engine/connector/echo-back-connector.js.map +1 -0
  5. package/dist-server/engine/connector/echo-back-server.js +60 -0
  6. package/dist-server/engine/connector/echo-back-server.js.map +1 -0
  7. package/dist-server/engine/connector/graphql-connector.js +91 -0
  8. package/dist-server/engine/connector/graphql-connector.js.map +1 -0
  9. package/dist-server/engine/connector/http-connector.js +52 -0
  10. package/dist-server/engine/connector/http-connector.js.map +1 -0
  11. package/dist-server/engine/connector/index.js +14 -0
  12. package/dist-server/engine/connector/index.js.map +1 -0
  13. package/dist-server/engine/connector/mqtt-connector.js +44 -0
  14. package/dist-server/engine/connector/mqtt-connector.js.map +1 -0
  15. package/dist-server/engine/connector/mssql-connector.js +88 -0
  16. package/dist-server/engine/connector/mssql-connector.js.map +1 -0
  17. package/dist-server/engine/connector/mysql-connector.js +82 -0
  18. package/dist-server/engine/connector/mysql-connector.js.map +1 -0
  19. package/dist-server/engine/connector/oracle-connector.js +80 -0
  20. package/dist-server/engine/connector/oracle-connector.js.map +1 -0
  21. package/dist-server/engine/connector/postgresql-connector.js +88 -0
  22. package/dist-server/engine/connector/postgresql-connector.js.map +1 -0
  23. package/dist-server/engine/connector/socket-server.js +78 -0
  24. package/dist-server/engine/connector/socket-server.js.map +1 -0
  25. package/dist-server/engine/connector/sqlite-connector.js +57 -0
  26. package/dist-server/engine/connector/sqlite-connector.js.map +1 -0
  27. package/dist-server/engine/index.js +22 -0
  28. package/dist-server/engine/index.js.map +1 -0
  29. package/dist-server/engine/pending-queue.js +75 -0
  30. package/dist-server/engine/pending-queue.js.map +1 -0
  31. package/dist-server/engine/scenario-engine.js +74 -0
  32. package/dist-server/engine/scenario-engine.js.map +1 -0
  33. package/dist-server/engine/task/book-up-scenario.js +63 -0
  34. package/dist-server/engine/task/book-up-scenario.js.map +1 -0
  35. package/dist-server/engine/task/database-query.js +30 -0
  36. package/dist-server/engine/task/database-query.js.map +1 -0
  37. package/dist-server/engine/task/echo-receive.js +15 -0
  38. package/dist-server/engine/task/echo-receive.js.map +1 -0
  39. package/dist-server/engine/task/echo-send.js +24 -0
  40. package/dist-server/engine/task/echo-send.js.map +1 -0
  41. package/dist-server/engine/task/empty-check.js +29 -0
  42. package/dist-server/engine/task/empty-check.js.map +1 -0
  43. package/dist-server/engine/task/end.js +14 -0
  44. package/dist-server/engine/task/end.js.map +1 -0
  45. package/dist-server/engine/task/floating-point.js +64 -0
  46. package/dist-server/engine/task/floating-point.js.map +1 -0
  47. package/dist-server/engine/task/goto.js +20 -0
  48. package/dist-server/engine/task/goto.js.map +1 -0
  49. package/dist-server/engine/task/graphql-mutate.js +41 -0
  50. package/dist-server/engine/task/graphql-mutate.js.map +1 -0
  51. package/dist-server/engine/task/graphql-query.js +40 -0
  52. package/dist-server/engine/task/graphql-query.js.map +1 -0
  53. package/dist-server/engine/task/http-get.js +67 -0
  54. package/dist-server/engine/task/http-get.js.map +1 -0
  55. package/dist-server/engine/task/http-post.js +106 -0
  56. package/dist-server/engine/task/http-post.js.map +1 -0
  57. package/dist-server/engine/task/index.js +35 -0
  58. package/dist-server/engine/task/index.js.map +1 -0
  59. package/dist-server/engine/task/local-graphql-mutate.js +51 -0
  60. package/dist-server/engine/task/local-graphql-mutate.js.map +1 -0
  61. package/dist-server/engine/task/local-graphql-query.js +51 -0
  62. package/dist-server/engine/task/local-graphql-query.js.map +1 -0
  63. package/dist-server/engine/task/log.js +48 -0
  64. package/dist-server/engine/task/log.js.map +1 -0
  65. package/dist-server/engine/task/mqtt-publish.js +35 -0
  66. package/dist-server/engine/task/mqtt-publish.js.map +1 -0
  67. package/dist-server/engine/task/mqtt-subscribe.js +109 -0
  68. package/dist-server/engine/task/mqtt-subscribe.js.map +1 -0
  69. package/dist-server/engine/task/pick-pending-scenario.js +61 -0
  70. package/dist-server/engine/task/pick-pending-scenario.js.map +1 -0
  71. package/dist-server/engine/task/publish.js +31 -0
  72. package/dist-server/engine/task/publish.js.map +1 -0
  73. package/dist-server/engine/task/reset-pending-queue.js +13 -0
  74. package/dist-server/engine/task/reset-pending-queue.js.map +1 -0
  75. package/dist-server/engine/task/script.js +32 -0
  76. package/dist-server/engine/task/script.js.map +1 -0
  77. package/dist-server/engine/task/sleep.js +26 -0
  78. package/dist-server/engine/task/sleep.js.map +1 -0
  79. package/dist-server/engine/task/socket-listener.js +86 -0
  80. package/dist-server/engine/task/socket-listener.js.map +1 -0
  81. package/dist-server/engine/task/sub-scenario.js +45 -0
  82. package/dist-server/engine/task/sub-scenario.js.map +1 -0
  83. package/dist-server/engine/task/switch-goto.js +32 -0
  84. package/dist-server/engine/task/switch-goto.js.map +1 -0
  85. package/dist-server/engine/task/switch-range-goto.js +39 -0
  86. package/dist-server/engine/task/switch-range-goto.js.map +1 -0
  87. package/dist-server/engine/task/switch-range-scenario.js +60 -0
  88. package/dist-server/engine/task/switch-range-scenario.js.map +1 -0
  89. package/dist-server/engine/task/switch-range-set.js +35 -0
  90. package/dist-server/engine/task/switch-range-set.js.map +1 -0
  91. package/dist-server/engine/task/switch-scenario.js +53 -0
  92. package/dist-server/engine/task/switch-scenario.js.map +1 -0
  93. package/dist-server/engine/task/switch-set.js +28 -0
  94. package/dist-server/engine/task/switch-set.js.map +1 -0
  95. package/dist-server/engine/task/throw.js +19 -0
  96. package/dist-server/engine/task/throw.js.map +1 -0
  97. package/dist-server/engine/task/utils/substitute.js +46 -0
  98. package/dist-server/engine/task/utils/substitute.js.map +1 -0
  99. package/dist-server/engine/task/variables.js +13 -0
  100. package/dist-server/engine/task/variables.js.map +1 -0
  101. package/dist-server/engine/task-registry.js +20 -0
  102. package/dist-server/engine/task-registry.js.map +1 -0
  103. package/dist-server/engine/types.js +3 -0
  104. package/dist-server/engine/types.js.map +1 -0
  105. package/dist-server/index.js +25 -0
  106. package/dist-server/index.js.map +1 -0
  107. package/dist-server/migrations/index.js +12 -0
  108. package/dist-server/migrations/index.js.map +1 -0
  109. package/dist-server/restful/index.js +4 -0
  110. package/dist-server/restful/index.js.map +1 -0
  111. package/dist-server/restful/unstable/index.js +10 -0
  112. package/dist-server/restful/unstable/index.js.map +1 -0
  113. package/dist-server/restful/unstable/run-scenario.js +40 -0
  114. package/dist-server/restful/unstable/run-scenario.js.map +1 -0
  115. package/dist-server/restful/unstable/scenario-instance.js +54 -0
  116. package/dist-server/restful/unstable/scenario-instance.js.map +1 -0
  117. package/dist-server/restful/unstable/scenario-instances.js +76 -0
  118. package/dist-server/restful/unstable/scenario-instances.js.map +1 -0
  119. package/dist-server/restful/unstable/scenario.js +44 -0
  120. package/dist-server/restful/unstable/scenario.js.map +1 -0
  121. package/dist-server/restful/unstable/scenarios.js +65 -0
  122. package/dist-server/restful/unstable/scenarios.js.map +1 -0
  123. package/dist-server/restful/unstable/start-scenario.js +35 -0
  124. package/dist-server/restful/unstable/start-scenario.js.map +1 -0
  125. package/dist-server/restful/unstable/stop-scenario.js +32 -0
  126. package/dist-server/restful/unstable/stop-scenario.js.map +1 -0
  127. package/dist-server/routers/scenario-view-router.js +42 -0
  128. package/dist-server/routers/scenario-view-router.js.map +1 -0
  129. package/dist-server/routes.js +14 -0
  130. package/dist-server/routes.js.map +1 -0
  131. package/dist-server/service/connection/connection-mutation.js +162 -0
  132. package/dist-server/service/connection/connection-mutation.js.map +1 -0
  133. package/dist-server/service/connection/connection-query.js +112 -0
  134. package/dist-server/service/connection/connection-query.js.map +1 -0
  135. package/dist-server/service/connection/connection-subscription.js +114 -0
  136. package/dist-server/service/connection/connection-subscription.js.map +1 -0
  137. package/dist-server/service/connection/connection-type.js +253 -0
  138. package/dist-server/service/connection/connection-type.js.map +1 -0
  139. package/dist-server/service/connection/index.js +10 -0
  140. package/dist-server/service/connection/index.js.map +1 -0
  141. package/dist-server/service/connector/connector-query.js +88 -0
  142. package/dist-server/service/connector/connector-query.js.map +1 -0
  143. package/dist-server/service/connector/connector-type.js +55 -0
  144. package/dist-server/service/connector/connector-type.js.map +1 -0
  145. package/dist-server/service/connector/index.js +7 -0
  146. package/dist-server/service/connector/index.js.map +1 -0
  147. package/dist-server/service/index.js +81 -0
  148. package/dist-server/service/index.js.map +1 -0
  149. package/dist-server/service/integration/index.js +9 -0
  150. package/dist-server/service/integration/index.js.map +1 -0
  151. package/dist-server/service/integration/integration-mutation.js +120 -0
  152. package/dist-server/service/integration/integration-mutation.js.map +1 -0
  153. package/dist-server/service/integration/integration-query.js +87 -0
  154. package/dist-server/service/integration/integration-query.js.map +1 -0
  155. package/dist-server/service/integration/integration-type.js +77 -0
  156. package/dist-server/service/integration/integration-type.js.map +1 -0
  157. package/dist-server/service/integration/integration.js +147 -0
  158. package/dist-server/service/integration/integration.js.map +1 -0
  159. package/dist-server/service/payload-log/index.js +9 -0
  160. package/dist-server/service/payload-log/index.js.map +1 -0
  161. package/dist-server/service/payload-log/payload-log-mutation.js +144 -0
  162. package/dist-server/service/payload-log/payload-log-mutation.js.map +1 -0
  163. package/dist-server/service/payload-log/payload-log-query.js +77 -0
  164. package/dist-server/service/payload-log/payload-log-query.js.map +1 -0
  165. package/dist-server/service/payload-log/payload-log-type.js +65 -0
  166. package/dist-server/service/payload-log/payload-log-type.js.map +1 -0
  167. package/dist-server/service/payload-log/payload-log.js +109 -0
  168. package/dist-server/service/payload-log/payload-log.js.map +1 -0
  169. package/dist-server/service/property-spec.js +42 -0
  170. package/dist-server/service/property-spec.js.map +1 -0
  171. package/dist-server/service/scenario/index.js +9 -0
  172. package/dist-server/service/scenario/index.js.map +1 -0
  173. package/dist-server/service/scenario/scenario-mutation.js +213 -0
  174. package/dist-server/service/scenario/scenario-mutation.js.map +1 -0
  175. package/dist-server/service/scenario/scenario-query.js +130 -0
  176. package/dist-server/service/scenario/scenario-query.js.map +1 -0
  177. package/dist-server/service/scenario/scenario-type.js +220 -0
  178. package/dist-server/service/scenario/scenario-type.js.map +1 -0
  179. package/dist-server/service/scenario-flow/scenario-flow.js +37 -0
  180. package/dist-server/service/scenario-flow/scenario-flow.js.map +1 -0
  181. package/dist-server/service/scenario-instance/index.js +9 -0
  182. package/dist-server/service/scenario-instance/index.js.map +1 -0
  183. package/dist-server/service/scenario-instance/scenario-instance-mutation.js +115 -0
  184. package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -0
  185. package/dist-server/service/scenario-instance/scenario-instance-query.js +122 -0
  186. package/dist-server/service/scenario-instance/scenario-instance-query.js.map +1 -0
  187. package/dist-server/service/scenario-instance/scenario-instance-subscription.js +122 -0
  188. package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +1 -0
  189. package/dist-server/service/scenario-instance/scenario-instance-type.js +428 -0
  190. package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -0
  191. package/dist-server/service/scenario-queue/index.js +7 -0
  192. package/dist-server/service/scenario-queue/index.js.map +1 -0
  193. package/dist-server/service/scenario-queue/scenario-queue-subscription.js +69 -0
  194. package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +1 -0
  195. package/dist-server/service/scenario-queue/scenario-queue-type.js +52 -0
  196. package/dist-server/service/scenario-queue/scenario-queue-type.js.map +1 -0
  197. package/dist-server/service/step/index.js +9 -0
  198. package/dist-server/service/step/index.js.map +1 -0
  199. package/dist-server/service/step/step-mutation.js +66 -0
  200. package/dist-server/service/step/step-mutation.js.map +1 -0
  201. package/dist-server/service/step/step-query.js +97 -0
  202. package/dist-server/service/step/step-query.js.map +1 -0
  203. package/dist-server/service/step/step-type.js +194 -0
  204. package/dist-server/service/step/step-type.js.map +1 -0
  205. package/dist-server/service/task-type/index.js +7 -0
  206. package/dist-server/service/task-type/index.js.map +1 -0
  207. package/dist-server/service/task-type/task-type-query.js +119 -0
  208. package/dist-server/service/task-type/task-type-query.js.map +1 -0
  209. package/dist-server/service/task-type/task-type-type.js +55 -0
  210. package/dist-server/service/task-type/task-type-type.js.map +1 -0
  211. package/dist-server/service/webhook/index.js +9 -0
  212. package/dist-server/service/webhook/index.js.map +1 -0
  213. package/dist-server/service/webhook/webhook-mutation.js +19 -0
  214. package/dist-server/service/webhook/webhook-mutation.js.map +1 -0
  215. package/dist-server/service/webhook/webhook-query.js +18 -0
  216. package/dist-server/service/webhook/webhook-query.js.map +1 -0
  217. package/dist-server/service/webhook/webhook-type.js +77 -0
  218. package/dist-server/service/webhook/webhook-type.js.map +1 -0
  219. package/dist-server/service/webhook/webhook.js +82 -0
  220. package/dist-server/service/webhook/webhook.js.map +1 -0
  221. package/dist-server/service/webhook-event/index.js +9 -0
  222. package/dist-server/service/webhook-event/index.js.map +1 -0
  223. package/dist-server/service/webhook-event/webhook-event-enums.js +36 -0
  224. package/dist-server/service/webhook-event/webhook-event-enums.js.map +1 -0
  225. package/dist-server/service/webhook-event/webhook-event-mutation.js +18 -0
  226. package/dist-server/service/webhook-event/webhook-event-mutation.js.map +1 -0
  227. package/dist-server/service/webhook-event/webhook-event-query.js +18 -0
  228. package/dist-server/service/webhook-event/webhook-event-query.js.map +1 -0
  229. package/dist-server/service/webhook-event/webhook-event-type.js +77 -0
  230. package/dist-server/service/webhook-event/webhook-event-type.js.map +1 -0
  231. package/dist-server/service/webhook-event/webhook-event.js +60 -0
  232. package/dist-server/service/webhook-event/webhook-event.js.map +1 -0
  233. package/dist-server/service/webhook-handler/lambda-handler.js +30 -0
  234. package/dist-server/service/webhook-handler/lambda-handler.js.map +1 -0
  235. package/dist-server/service/webhook-handler/webhook-controller.js +54 -0
  236. package/dist-server/service/webhook-handler/webhook-controller.js.map +1 -0
  237. package/dist-server/sqs-client.js +29 -0
  238. package/dist-server/sqs-client.js.map +1 -0
  239. package/dist-server/sqs-const.js +6 -0
  240. package/dist-server/sqs-const.js.map +1 -0
  241. package/dist-server/util/index.js +19 -0
  242. package/dist-server/util/index.js.map +1 -0
  243. package/dist-server/util/lambda/lambda-const.js +7 -0
  244. package/dist-server/util/lambda/lambda-const.js.map +1 -0
  245. package/dist-server/util/lambda/lambda-service.js +33 -0
  246. package/dist-server/util/lambda/lambda-service.js.map +1 -0
  247. package/dist-server/util/sqs-send-message.js +11 -0
  248. package/dist-server/util/sqs-send-message.js.map +1 -0
  249. package/package.json +6 -6
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mysqlConnector = void 0;
7
+ const connection_manager_1 = require("../connection-manager");
8
+ const promise_1 = __importDefault(require("mysql2/promise"));
9
+ class mysqlConnector {
10
+ async ready(connectionConfigs) {
11
+ await Promise.all(connectionConfigs.map(this.connect));
12
+ connection_manager_1.ConnectionManager.logger.info("mysql-connector connections are ready");
13
+ }
14
+ async connect(connection) {
15
+ const { endpoint, params: { user, password, database }, } = connection;
16
+ const [host, port = 3306] = endpoint.split(":");
17
+ if (!promise_1.default) {
18
+ throw new Error("mysql module loading failed");
19
+ }
20
+ let pool = await promise_1.default.createPool({
21
+ user,
22
+ password,
23
+ host,
24
+ port,
25
+ database,
26
+ });
27
+ const client = await pool.getConnection();
28
+ connection_manager_1.ConnectionManager.addConnectionInstance(connection, {
29
+ query: async (query, params) => {
30
+ var result;
31
+ try {
32
+ const results = await client.query(query);
33
+ if (results && results.length > 0) {
34
+ result = results[0];
35
+ }
36
+ }
37
+ catch (e) {
38
+ connection_manager_1.ConnectionManager.logger.error(e);
39
+ }
40
+ return result;
41
+ },
42
+ close: client.end(),
43
+ });
44
+ connection_manager_1.ConnectionManager.logger.info(`mysql Database(${connection.name}:${database}) at ${endpoint} connected.`);
45
+ }
46
+ async disconnect(connection) {
47
+ var client = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
48
+ try {
49
+ await client.close();
50
+ connection_manager_1.ConnectionManager.logger.info(`mysql Database(${connection.name}) closed.`);
51
+ }
52
+ catch (e) {
53
+ connection_manager_1.ConnectionManager.logger.error(e);
54
+ }
55
+ connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
56
+ }
57
+ get parameterSpec() {
58
+ return [
59
+ {
60
+ type: "string",
61
+ name: "user",
62
+ label: "user",
63
+ },
64
+ {
65
+ type: "password",
66
+ name: "password",
67
+ label: "password",
68
+ },
69
+ {
70
+ type: "string",
71
+ name: "database",
72
+ label: "database",
73
+ },
74
+ ];
75
+ }
76
+ get taskPrefixes() {
77
+ return ["database"];
78
+ }
79
+ }
80
+ exports.mysqlConnector = mysqlConnector;
81
+ connection_manager_1.ConnectionManager.registerConnector("mysql-connector", new mysqlConnector());
82
+ //# sourceMappingURL=mysql-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/mysql-connector.ts"],"names":[],"mappings":";;;;;;AACA,8DAAyD;AACzD,6DAAmC;AAEnC,MAAa,cAAc;IACzB,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,MAAM,EACJ,QAAQ,EACR,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GACrC,GAAG,UAAU,CAAC;QAEf,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAI,CAAC,iBAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QAED,IAAI,IAAI,GAAG,MAAM,iBAAK,CAAC,UAAU,CAAC;YAChC,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,IAAI;YACJ,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,EAAE;YAClD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC7B,IAAI,MAAM,CAAC;gBACX,IAAI;oBACF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACjC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;qBACrB;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,sCAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACnC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE;SACpB,CAAC,CAAC;QAEH,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAC3B,kBAAkB,UAAU,CAAC,IAAI,IAAI,QAAQ,QAAQ,QAAQ,aAAa,CAC3E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAU;QACzB,IAAI,MAAM,GAAG,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAC3B,kBAAkB,UAAU,CAAC,IAAI,WAAW,CAC7C,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,sCAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACnC;QAED,sCAAiB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,aAAa;QACf,OAAO;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;aACd;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,UAAU;aAClB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,UAAU;aAClB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;CACF;AArFD,wCAqFC;AAED,sCAAiB,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OracleConnector = void 0;
4
+ const connection_manager_1 = require("../connection-manager");
5
+ try {
6
+ var Client = require('oracledb');
7
+ }
8
+ catch (err) {
9
+ console.error('oracledb module loading failed');
10
+ }
11
+ class OracleConnector {
12
+ async ready(connectionConfigs) {
13
+ await Promise.all(connectionConfigs.map(this.connect));
14
+ connection_manager_1.ConnectionManager.logger.info('oracle-connector connections are ready');
15
+ }
16
+ async connect(connection) {
17
+ const { endpoint, params: { user, password, database } } = connection;
18
+ if (!Client) {
19
+ throw new Error('oracledb module loading failed');
20
+ }
21
+ //when oracle not using defualt port must add connection string with port like localhsot:port
22
+ const client = await Client.getConnection({
23
+ user,
24
+ password,
25
+ connectString: `${endpoint.trim()}/${database}`
26
+ });
27
+ connection_manager_1.ConnectionManager.addConnectionInstance(connection, {
28
+ query: async (query, params) => {
29
+ return (await client.execute(query, params, {
30
+ outFormat: Client.OBJECT
31
+ })).rows;
32
+ },
33
+ close: client.close.bind(client)
34
+ });
35
+ connection_manager_1.ConnectionManager.logger.info(`Oracle Database(${connection.name}:${database}) at ${endpoint} connected.`);
36
+ }
37
+ async disconnect(connection) {
38
+ var client = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
39
+ try {
40
+ await client.close();
41
+ connection_manager_1.ConnectionManager.logger.info(`Oracle Database(${connection.name}) closed.`);
42
+ }
43
+ catch (e) {
44
+ connection_manager_1.ConnectionManager.logger.error(e);
45
+ }
46
+ connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
47
+ }
48
+ get parameterSpec() {
49
+ return [
50
+ {
51
+ type: 'string',
52
+ name: 'user',
53
+ label: 'user'
54
+ },
55
+ {
56
+ type: 'password',
57
+ name: 'password',
58
+ label: 'password'
59
+ },
60
+ {
61
+ type: 'string',
62
+ name: 'database',
63
+ placeholder: 'SID',
64
+ label: 'database'
65
+ }
66
+ ];
67
+ }
68
+ get taskPrefixes() {
69
+ return ['database'];
70
+ }
71
+ get help() {
72
+ return 'integration/connector/oracle-connector';
73
+ }
74
+ }
75
+ exports.OracleConnector = OracleConnector;
76
+ connection_manager_1.ConnectionManager.registerConnector('oracle-connector', new OracleConnector());
77
+ // need reference:
78
+ // https://download.oracle.com/otn_software/mac/instantclient/193000/instantclient-basiclite-macos.x64-19.3.0.0.0dbru.zip
79
+ // docker pull store/oracle/database-instantclient:12.2.0.1
80
+ //# sourceMappingURL=oracle-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oracle-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/oracle-connector.ts"],"names":[],"mappings":";;;AACA,8DAAyD;AACzD,IAAI;IACF,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CACjC;AAAC,OAAO,GAAG,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;CAChD;AAED,MAAa,eAAe;IAC1B,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAEtD,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,MAAM,EACJ,QAAQ,EACR,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACrC,GAAG,UAAU,CAAA;QAEd,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;SAClD;QAED,6FAA6F;QAC7F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACxC,IAAI;YACJ,QAAQ;YACR,aAAa,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,QAAQ,EAAE;SAChD,CAAC,CAAA;QAEF,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,EAAE;YAClD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC7B,OAAO,CACL,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;oBAClC,SAAS,EAAE,MAAM,CAAC,MAAM;iBACzB,CAAC,CACH,CAAC,IAAI,CAAA;YACR,CAAC;YACD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC,CAAA;QAEF,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,IAAI,IAAI,QAAQ,QAAQ,QAAQ,aAAa,CAAC,CAAA;IAC5G,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAU;QACzB,IAAI,MAAM,GAAG,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QAChE,IAAI;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,IAAI,WAAW,CAAC,CAAA;SAC7E;QAAC,OAAO,CAAC,EAAE;YACV,sCAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;SAClC;QAED,sCAAiB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,aAAa;QACf,OAAO;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;aACd;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,UAAU;aAClB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,KAAK;gBAClB,KAAK,EAAE,UAAU;aAClB;SACF,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,UAAU,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,wCAAwC,CAAA;IACjD,CAAC;CACF;AA9ED,0CA8EC;AAED,sCAAiB,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,eAAe,EAAE,CAAC,CAAA;AAE9E,kBAAkB;AAClB,yHAAyH;AAEzH,2DAA2D"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostgresqlConnector = void 0;
4
+ const connection_manager_1 = require("../connection-manager");
5
+ try {
6
+ var { Client } = require('pg');
7
+ }
8
+ catch (err) {
9
+ console.error('postgresql module loading failed');
10
+ }
11
+ class PostgresqlConnector {
12
+ async ready(connectionConfigs) {
13
+ await Promise.all(connectionConfigs.map(this.connect.bind(this)));
14
+ connection_manager_1.ConnectionManager.logger.info('postgresql-connector connections are ready');
15
+ }
16
+ async connect(connection) {
17
+ const { endpoint, params: { user, password, database } } = connection;
18
+ const [host, port = 5432] = endpoint.split(':');
19
+ if (!Client) {
20
+ throw new Error('postgresql module loading failed');
21
+ }
22
+ const client = new Client({
23
+ user,
24
+ host,
25
+ database,
26
+ password,
27
+ port: Number(port)
28
+ });
29
+ client.on('error', async (err) => {
30
+ // create a new database clinet and reconnect to server at an unexpected error
31
+ this.connect(connection);
32
+ });
33
+ try {
34
+ await client.connect();
35
+ connection_manager_1.ConnectionManager.addConnectionInstance(connection, {
36
+ query: async (query, params) => {
37
+ return (await client.query(query, params)).rows;
38
+ },
39
+ close: async () => {
40
+ await client.end();
41
+ }
42
+ });
43
+ connection_manager_1.ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}:${database}) at ${endpoint} connected.`);
44
+ }
45
+ catch (e) {
46
+ connection_manager_1.ConnectionManager.logger.error(`PostgresSQL Database(${connection.name}:${database}) at ${endpoint} not connected.\ncause: ${e}`);
47
+ }
48
+ }
49
+ async disconnect(connection) {
50
+ var client = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
51
+ try {
52
+ await client.close();
53
+ connection_manager_1.ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}) closed.`);
54
+ }
55
+ catch (e) {
56
+ connection_manager_1.ConnectionManager.logger.error(e);
57
+ }
58
+ connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
59
+ }
60
+ get parameterSpec() {
61
+ return [
62
+ {
63
+ type: 'string',
64
+ name: 'user',
65
+ label: 'user'
66
+ },
67
+ {
68
+ type: 'password',
69
+ name: 'password',
70
+ label: 'password'
71
+ },
72
+ {
73
+ type: 'string',
74
+ name: 'database',
75
+ label: 'database'
76
+ }
77
+ ];
78
+ }
79
+ get taskPrefixes() {
80
+ return ['database'];
81
+ }
82
+ get help() {
83
+ return 'integration/connector/postgresql-connector';
84
+ }
85
+ }
86
+ exports.PostgresqlConnector = PostgresqlConnector;
87
+ connection_manager_1.ConnectionManager.registerConnector('postgresql-connector', new PostgresqlConnector());
88
+ //# sourceMappingURL=postgresql-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresql-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/postgresql-connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SocketServer = void 0;
7
+ const net_1 = __importDefault(require("net"));
8
+ const connection_manager_1 = require("../connection-manager");
9
+ const events_1 = require("events");
10
+ class SocketServer {
11
+ // socket: any
12
+ async ready(connectionConfigs) {
13
+ await Promise.all(connectionConfigs.map(this.connect));
14
+ connection_manager_1.ConnectionManager.logger.info('socket servers are ready');
15
+ }
16
+ async connect(config) {
17
+ var em = new events_1.EventEmitter();
18
+ var [host = '0.0.0.0', port = 8124] = config.endpoint.split(':');
19
+ return new Promise((resolve, reject) => {
20
+ var server = net_1.default.createServer(tcp => {
21
+ connection_manager_1.ConnectionManager.logger.info('Client connection: ');
22
+ connection_manager_1.ConnectionManager.logger.info(' local = %s:%s', tcp.localAddress, tcp.localPort);
23
+ connection_manager_1.ConnectionManager.logger.info(' remote = %s:%s', tcp.remoteAddress, tcp.remotePort);
24
+ tcp.on('data', (data) => {
25
+ em['__tcp__'] = tcp;
26
+ var message = data.toString();
27
+ message = message.replace('SB#', '');
28
+ message = message.replace(/(\r\n|\n|\r)/gm, '');
29
+ em.emit('socket-message-arrive', message);
30
+ connection_manager_1.ConnectionManager.logger.info(`socket ${message}`);
31
+ tcp.write('ok');
32
+ });
33
+ tcp.on('end', () => {
34
+ connection_manager_1.ConnectionManager.logger.info('Client disconnected');
35
+ });
36
+ tcp.on('error', ex => {
37
+ connection_manager_1.ConnectionManager.logger.info('Server socket error: ');
38
+ var logger = connection_manager_1.ConnectionManager.logger;
39
+ let message = ex.stack ? ex.stack : ex;
40
+ let msg = typeof message == 'object' ? JSON.stringify(message, null, 2) : message;
41
+ logger.error(msg);
42
+ reject(ex);
43
+ });
44
+ });
45
+ server.listen(port, async () => {
46
+ connection_manager_1.ConnectionManager.logger.info(`tcp echo server listening on ${host}:${port}`);
47
+ /* default client connection */
48
+ try {
49
+ em['__server__'] = server;
50
+ connection_manager_1.ConnectionManager.addConnectionInstance(config, em);
51
+ connection_manager_1.ConnectionManager.logger.info(`socket server connection(${config.name}:${config.endpoint}) is connected`);
52
+ resolve();
53
+ }
54
+ catch (err) {
55
+ connection_manager_1.ConnectionManager.logger.error(err);
56
+ reject(err);
57
+ }
58
+ });
59
+ });
60
+ }
61
+ async disconnect(connection) {
62
+ let em = connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
63
+ var tcp = em['__tcp__'];
64
+ var server = em['__server__'];
65
+ tcp && (await tcp.destroy());
66
+ server && (await server.close());
67
+ connection_manager_1.ConnectionManager.logger.info(`socket server connection(${connection.name}) is disconnected`);
68
+ }
69
+ get parameterSpec() {
70
+ return [];
71
+ }
72
+ get taskPrefixes() {
73
+ return ['socket'];
74
+ }
75
+ }
76
+ exports.SocketServer = SocketServer;
77
+ connection_manager_1.ConnectionManager.registerConnector('socket-server', new SocketServer());
78
+ //# sourceMappingURL=socket-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-server.js","sourceRoot":"","sources":["../../../server/engine/connector/socket-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqliteConnector = void 0;
4
+ const connection_manager_1 = require("../connection-manager");
5
+ const util_1 = require("util");
6
+ try {
7
+ var sqlite3 = require('sqlite3').verbose();
8
+ }
9
+ catch (err) {
10
+ console.error('sqlite3 module loading failed');
11
+ }
12
+ class SqliteConnector {
13
+ async ready(connectionConfigs) {
14
+ await Promise.all(connectionConfigs.map(this.connect.bind(this)));
15
+ connection_manager_1.ConnectionManager.logger.info('sqlite-connector connections are ready');
16
+ }
17
+ async connect(connection) {
18
+ var { endpoint } = connection;
19
+ if (!sqlite3) {
20
+ throw new Error('sqlite3 module loading failed');
21
+ }
22
+ var database = new sqlite3.Database(endpoint, sqlite3.OPEN_READWRITE, err => {
23
+ if (err) {
24
+ connection_manager_1.ConnectionManager.logger.error(`SQLite Database(${connection.name}) at ${endpoint} not connected.\ncause: ${err}`);
25
+ return;
26
+ }
27
+ connection_manager_1.ConnectionManager.addConnectionInstance(connection, {
28
+ query: (0, util_1.promisify)(database.all.bind(database)),
29
+ close: (0, util_1.promisify)(database.close.bind(database))
30
+ });
31
+ connection_manager_1.ConnectionManager.logger.info(`SQLite Database(${connection.name}) at ${endpoint} connected.`);
32
+ });
33
+ }
34
+ async disconnect(connection) {
35
+ var database = connection_manager_1.ConnectionManager.getConnectionInstance(connection);
36
+ try {
37
+ await database.close();
38
+ connection_manager_1.ConnectionManager.logger.info(`SQLite Database(${connection.name}) closed.`);
39
+ }
40
+ catch (e) {
41
+ connection_manager_1.ConnectionManager.logger.error(e);
42
+ }
43
+ connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
44
+ }
45
+ get parameterSpec() {
46
+ return [];
47
+ }
48
+ get taskPrefixes() {
49
+ return ['database'];
50
+ }
51
+ get help() {
52
+ return 'integration/connector/sqlite-connector';
53
+ }
54
+ }
55
+ exports.SqliteConnector = SqliteConnector;
56
+ connection_manager_1.ConnectionManager.registerConnector('sqlite-connector', new SqliteConnector());
57
+ //# sourceMappingURL=sqlite-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/sqlite-connector.ts"],"names":[],"mappings":";;;AACA,8DAAyD;AACzD,+BAAgC;AAEhC,IAAI;IACF,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;CAC3C;AAAC,OAAO,GAAG,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;CAC/C;AAED,MAAa,eAAe;IAC1B,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjE,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAA;QAE7B,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;SACjD;QAED,IAAI,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE;YAC1E,IAAI,GAAG,EAAE;gBACP,sCAAiB,CAAC,MAAM,CAAC,KAAK,CAC5B,mBAAmB,UAAU,CAAC,IAAI,QAAQ,QAAQ,2BAA2B,GAAG,EAAE,CACnF,CAAA;gBACD,OAAM;aACP;YAED,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,EAAE;gBAClD,KAAK,EAAE,IAAA,gBAAS,EAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7C,KAAK,EAAE,IAAA,gBAAS,EAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAChD,CAAC,CAAA;YAEF,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,IAAI,QAAQ,QAAQ,aAAa,CAAC,CAAA;QAChG,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAU;QACzB,IAAI,QAAQ,GAAG,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QAClE,IAAI;YACF,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;YACtB,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,IAAI,WAAW,CAAC,CAAA;SAC7E;QAAC,OAAO,CAAC,EAAE;YACV,sCAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;SAClC;QAED,sCAAiB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,UAAU,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,wCAAwC,CAAA;IACjD,CAAC;CACF;AAtDD,0CAsDC;AAED,sCAAiB,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,IAAI,eAAe,EAAE,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ require("./connector");
18
+ require("./task");
19
+ __exportStar(require("./connection-manager"), exports);
20
+ __exportStar(require("./scenario-engine"), exports);
21
+ __exportStar(require("./task-registry"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uBAAoB;AACpB,kBAAe;AAEf,uDAAoC;AACpC,oDAAiC;AACjC,kDAA+B"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PendingQueue = void 0;
4
+ const debug = require('debug')('things-factory:integration-base:pending-queue');
5
+ class PendingQueue {
6
+ constructor(changedCallback) {
7
+ this._queue = [];
8
+ this._changedCallback = changedCallback;
9
+ }
10
+ get queue() {
11
+ return this._queue;
12
+ }
13
+ get status() {
14
+ return {
15
+ total: this._queue.length
16
+ };
17
+ }
18
+ reset() {
19
+ this._queue = [];
20
+ this._changedCallback(this._queue);
21
+ }
22
+ put({ delay, stuff, priority = 0, tag = '' }) {
23
+ const due = Date.now() + (Number(delay) || 0) * 1000;
24
+ const insertBefore = this._queue.findIndex(pended => pended.due > due);
25
+ if (insertBefore == -1) {
26
+ this._queue.push({
27
+ due,
28
+ priority: Number(priority) || 0,
29
+ stuff,
30
+ tag: tag || ''
31
+ });
32
+ }
33
+ else {
34
+ this._queue.splice(insertBefore, 0, {
35
+ due,
36
+ priority,
37
+ stuff,
38
+ tag
39
+ });
40
+ }
41
+ this._changedCallback(this._queue);
42
+ debug('put', this.status);
43
+ }
44
+ pick(tag = '') {
45
+ const due = Date.now();
46
+ var toppick;
47
+ var index = -1;
48
+ for (let i = 0; i < this._queue.length; i++) {
49
+ var pended = this._queue[i];
50
+ if (pended.due > due) {
51
+ break;
52
+ }
53
+ if (pended.tag !== tag) {
54
+ continue;
55
+ }
56
+ if (!toppick || toppick.priority < pended.priority) {
57
+ toppick = pended;
58
+ index = i;
59
+ }
60
+ }
61
+ if (index !== -1) {
62
+ this._queue.splice(index, 1);
63
+ this._changedCallback(this._queue);
64
+ }
65
+ toppick && debug('pick', toppick, this.status, due);
66
+ return toppick;
67
+ }
68
+ cancel(stuff) {
69
+ const index = this._queue.findIndex(pended => pended.stuff === stuff);
70
+ index !== -1 && this._queue.splice(index, 1);
71
+ this._changedCallback(this._queue);
72
+ }
73
+ }
74
+ exports.PendingQueue = PendingQueue;
75
+ //# sourceMappingURL=pending-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-queue.js","sourceRoot":"","sources":["../../server/engine/pending-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScenarioEngine = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const shell_1 = require("@things-factory/shell");
6
+ const service_1 = require("../service");
7
+ const pending_queue_1 = require("./pending-queue");
8
+ const debug = require('debug')('things-factory:integration-base:scenario-engine');
9
+ class ScenarioEngine {
10
+ static getPendingQueue(domain) {
11
+ if (!ScenarioEngine.pendingQueues[domain.id]) {
12
+ ScenarioEngine.pendingQueues[domain.id] = new pending_queue_1.PendingQueue(queue => {
13
+ shell_1.pubsub.publish('scenario-queue-state', {
14
+ scenarioQueueState: {
15
+ domain,
16
+ queue
17
+ }
18
+ });
19
+ });
20
+ }
21
+ return ScenarioEngine.pendingQueues[domain.id];
22
+ }
23
+ static getScenarioInstance(domain, instanceName) {
24
+ var _a;
25
+ return (_a = ScenarioEngine.scenarioInstances[domain.id]) === null || _a === void 0 ? void 0 : _a[instanceName];
26
+ }
27
+ static getScenarioInstances(domain, scenarioName) {
28
+ const instances = Object.values(ScenarioEngine.scenarioInstances[domain.id] || {}) || [];
29
+ return instances.filter(instance => !scenarioName || instance.scenarioName == scenarioName);
30
+ }
31
+ static async load(instanceName, scenarioConfig, context) {
32
+ const { domain } = scenarioConfig;
33
+ debug('load', domain.subdomain, instanceName);
34
+ var scenarioInstances = ScenarioEngine.scenarioInstances[domain.id];
35
+ if (!scenarioInstances) {
36
+ scenarioInstances = ScenarioEngine.scenarioInstances[domain.id] = {};
37
+ }
38
+ var scenarioInstance = scenarioInstances[instanceName];
39
+ if (scenarioInstance) {
40
+ debug('load - duplicated', instanceName);
41
+ return scenarioInstance;
42
+ }
43
+ var instance = new service_1.ScenarioInstance(instanceName, scenarioConfig, Object.assign(Object.assign({}, context), { client: shell_1.GraphqlLocalClient.client, disposer: () => {
44
+ this.unload(domain, instanceName);
45
+ } }));
46
+ instance.start();
47
+ scenarioInstances[instanceName] = instance;
48
+ return instance;
49
+ }
50
+ static async unload(domain, instanceName) {
51
+ var scenarioInstances = ScenarioEngine.scenarioInstances[domain.id];
52
+ if (!scenarioInstances) {
53
+ return;
54
+ }
55
+ var instance = scenarioInstances[instanceName];
56
+ if (!instance) {
57
+ return;
58
+ }
59
+ delete scenarioInstances[instanceName];
60
+ instance.unload();
61
+ }
62
+ static async loadAll() {
63
+ const SCENARIOS = await (0, typeorm_1.getRepository)(service_1.Scenario).find({
64
+ where: { active: true },
65
+ relations: ['domain', 'steps']
66
+ });
67
+ debug('load-all', SCENARIOS.map(scenario => `${scenario.domain.subdomain}: ${scenario.name}`));
68
+ SCENARIOS.forEach(scenario => ScenarioEngine.load(scenario.name, scenario));
69
+ }
70
+ }
71
+ exports.ScenarioEngine = ScenarioEngine;
72
+ ScenarioEngine.scenarioInstances = {}; // TODO impl. by WeakMap
73
+ ScenarioEngine.pendingQueues = {};
74
+ //# sourceMappingURL=scenario-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-engine.js","sourceRoot":"","sources":["../../server/engine/scenario-engine.ts"],"names":[],"mappings":"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"}