@things-factory/integration-base 7.0.1-beta.9 → 7.0.1-rc.1

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 (278) hide show
  1. package/dist-server/controllers/index.d.ts +1 -0
  2. package/dist-server/controllers/scenario-controller.d.ts +4 -0
  3. package/dist-server/controllers/scenario-controller.js +11 -6
  4. package/dist-server/controllers/scenario-controller.js.map +1 -1
  5. package/dist-server/engine/analyzer/analyze-integration.d.ts +5 -0
  6. package/dist-server/engine/analyzer/analyze-integration.js +1 -2
  7. package/dist-server/engine/analyzer/analyze-integration.js.map +1 -1
  8. package/dist-server/engine/connection-manager.d.ts +35 -0
  9. package/dist-server/engine/connection-manager.js.map +1 -1
  10. package/dist-server/engine/connector/echo-back-connector.d.ts +9 -0
  11. package/dist-server/engine/connector/echo-back-connector.js.map +1 -1
  12. package/dist-server/engine/connector/echo-back-server.d.ts +8 -0
  13. package/dist-server/engine/connector/echo-back-server.js.map +1 -1
  14. package/dist-server/engine/connector/graphql-connector.d.ts +19 -0
  15. package/dist-server/engine/connector/graphql-connector.js +1 -1
  16. package/dist-server/engine/connector/graphql-connector.js.map +1 -1
  17. package/dist-server/engine/connector/http-connector.d.ts +25 -0
  18. package/dist-server/engine/connector/http-connector.js.map +1 -1
  19. package/dist-server/engine/connector/index.d.ts +12 -0
  20. package/dist-server/engine/connector/mqtt-connector.d.ts +14 -0
  21. package/dist-server/engine/connector/mqtt-connector.js.map +1 -1
  22. package/dist-server/engine/connector/mssql-connector.d.ts +30 -0
  23. package/dist-server/engine/connector/mssql-connector.js.map +1 -1
  24. package/dist-server/engine/connector/mysql-connector.d.ts +13 -0
  25. package/dist-server/engine/connector/mysql-connector.js.map +1 -1
  26. package/dist-server/engine/connector/operato-connector.d.ts +27 -0
  27. package/dist-server/engine/connector/operato-connector.js +1 -1
  28. package/dist-server/engine/connector/operato-connector.js.map +1 -1
  29. package/dist-server/engine/connector/oracle-connector.d.ts +29 -0
  30. package/dist-server/engine/connector/oracle-connector.js.map +1 -1
  31. package/dist-server/engine/connector/postgresql-connector.d.ts +14 -0
  32. package/dist-server/engine/connector/postgresql-connector.js.map +1 -1
  33. package/dist-server/engine/connector/proxy-connector.d.ts +15 -0
  34. package/dist-server/engine/connector/socket-server.d.ts +9 -0
  35. package/dist-server/engine/connector/socket-server.js.map +1 -1
  36. package/dist-server/engine/connector/sqlite-connector.d.ts +10 -0
  37. package/dist-server/engine/connector/sqlite-connector.js.map +1 -1
  38. package/dist-server/engine/edge-client.d.ts +18 -0
  39. package/dist-server/engine/edge-client.js +5 -6
  40. package/dist-server/engine/edge-client.js.map +1 -1
  41. package/dist-server/engine/index.d.ts +8 -0
  42. package/dist-server/engine/index.js.map +1 -1
  43. package/dist-server/engine/pending-queue.d.ts +24 -0
  44. package/dist-server/engine/pending-queue.js.map +1 -1
  45. package/dist-server/engine/scenario-engine.d.ts +11 -0
  46. package/dist-server/engine/scenario-engine.js.map +1 -1
  47. package/dist-server/engine/task/book-up-scenario.d.ts +1 -0
  48. package/dist-server/engine/task/csv-readline.d.ts +1 -0
  49. package/dist-server/engine/task/csv-readline.js.map +1 -1
  50. package/dist-server/engine/task/data-accessor.d.ts +1 -0
  51. package/dist-server/engine/task/data-mapper.d.ts +1 -0
  52. package/dist-server/engine/task/data-mapper.js.map +1 -1
  53. package/dist-server/engine/task/database-query.d.ts +1 -0
  54. package/dist-server/engine/task/echo-receive.d.ts +1 -0
  55. package/dist-server/engine/task/echo-send.d.ts +1 -0
  56. package/dist-server/engine/task/echo-send.js.map +1 -1
  57. package/dist-server/engine/task/empty-check.d.ts +1 -0
  58. package/dist-server/engine/task/empty-check.js.map +1 -1
  59. package/dist-server/engine/task/end.d.ts +1 -0
  60. package/dist-server/engine/task/floating-point.d.ts +1 -0
  61. package/dist-server/engine/task/floating-point.js.map +1 -1
  62. package/dist-server/engine/task/goto.d.ts +1 -0
  63. package/dist-server/engine/task/graphql-mutate.d.ts +1 -0
  64. package/dist-server/engine/task/graphql-query.d.ts +1 -0
  65. package/dist-server/engine/task/headless-post.d.ts +1 -0
  66. package/dist-server/engine/task/headless-post.js.map +1 -1
  67. package/dist-server/engine/task/headless-scrap.d.ts +1 -0
  68. package/dist-server/engine/task/headless-scrap.js.map +1 -1
  69. package/dist-server/engine/task/http-get.d.ts +1 -0
  70. package/dist-server/engine/task/http-get.js.map +1 -1
  71. package/dist-server/engine/task/http-post.d.ts +1 -0
  72. package/dist-server/engine/task/http-post.js.map +1 -1
  73. package/dist-server/engine/task/index.d.ts +43 -0
  74. package/dist-server/engine/task/jsonata.d.ts +1 -0
  75. package/dist-server/engine/task/local-graphql-mutate.d.ts +1 -0
  76. package/dist-server/engine/task/local-graphql-mutate.js.map +1 -1
  77. package/dist-server/engine/task/local-graphql-query.d.ts +1 -0
  78. package/dist-server/engine/task/local-graphql-query.js.map +1 -1
  79. package/dist-server/engine/task/log.d.ts +1 -0
  80. package/dist-server/engine/task/log.js.map +1 -1
  81. package/dist-server/engine/task/mqtt-publish.d.ts +1 -0
  82. package/dist-server/engine/task/mqtt-publish.js.map +1 -1
  83. package/dist-server/engine/task/mqtt-subscribe.d.ts +1 -0
  84. package/dist-server/engine/task/mqtt-subscribe.js.map +1 -1
  85. package/dist-server/engine/task/oracle-procedure.d.ts +1 -0
  86. package/dist-server/engine/task/oracle-procedure.js.map +1 -1
  87. package/dist-server/engine/task/pick-pending-scenario.d.ts +1 -0
  88. package/dist-server/engine/task/pick-pending-scenario.js.map +1 -1
  89. package/dist-server/engine/task/publish.d.ts +1 -0
  90. package/dist-server/engine/task/publish.js.map +1 -1
  91. package/dist-server/engine/task/random.d.ts +1 -0
  92. package/dist-server/engine/task/reset-pending-queue.d.ts +1 -0
  93. package/dist-server/engine/task/script.d.ts +1 -0
  94. package/dist-server/engine/task/set-domain.d.ts +1 -0
  95. package/dist-server/engine/task/set-domain.js.map +1 -1
  96. package/dist-server/engine/task/sleep.d.ts +1 -0
  97. package/dist-server/engine/task/sleep.js.map +1 -1
  98. package/dist-server/engine/task/socket-listener.d.ts +1 -0
  99. package/dist-server/engine/task/socket-listener.js.map +1 -1
  100. package/dist-server/engine/task/state-read.d.ts +1 -0
  101. package/dist-server/engine/task/state-read.js.map +1 -1
  102. package/dist-server/engine/task/state-write.d.ts +1 -0
  103. package/dist-server/engine/task/state-write.js.map +1 -1
  104. package/dist-server/engine/task/stop-scenario.d.ts +1 -0
  105. package/dist-server/engine/task/sub-scenario.d.ts +1 -0
  106. package/dist-server/engine/task/switch-goto.d.ts +1 -0
  107. package/dist-server/engine/task/switch-range-goto.d.ts +1 -0
  108. package/dist-server/engine/task/switch-range-goto.js.map +1 -1
  109. package/dist-server/engine/task/switch-range-scenario.d.ts +1 -0
  110. package/dist-server/engine/task/switch-range-scenario.js.map +1 -1
  111. package/dist-server/engine/task/switch-range-set.d.ts +1 -0
  112. package/dist-server/engine/task/switch-range-set.js.map +1 -1
  113. package/dist-server/engine/task/switch-scenario.d.ts +1 -0
  114. package/dist-server/engine/task/switch-set.d.ts +1 -0
  115. package/dist-server/engine/task/throw.d.ts +1 -0
  116. package/dist-server/engine/task/utils/headless-pool-for-scenario.d.ts +1 -0
  117. package/dist-server/engine/task/utils/headless-pool-for-scenario.js +1 -2
  118. package/dist-server/engine/task/utils/headless-pool-for-scenario.js.map +1 -1
  119. package/dist-server/engine/task/utils/substitute.d.ts +1 -0
  120. package/dist-server/engine/task/utils/substitute.js +1 -2
  121. package/dist-server/engine/task/utils/substitute.js.map +1 -1
  122. package/dist-server/engine/task/variables.d.ts +1 -0
  123. package/dist-server/engine/task-registry.d.ts +12 -0
  124. package/dist-server/engine/types.d.ts +94 -0
  125. package/dist-server/engine/types.js.map +1 -1
  126. package/dist-server/index.d.ts +6 -0
  127. package/dist-server/index.js.map +1 -1
  128. package/dist-server/migrations/index.d.ts +1 -0
  129. package/dist-server/restful/index.d.ts +1 -0
  130. package/dist-server/restful/unstable/index.d.ts +7 -0
  131. package/dist-server/restful/unstable/run-scenario.d.ts +1 -0
  132. package/dist-server/restful/unstable/run-scenario.js +0 -1
  133. package/dist-server/restful/unstable/run-scenario.js.map +1 -1
  134. package/dist-server/restful/unstable/scenario-instance.d.ts +1 -0
  135. package/dist-server/restful/unstable/scenario-instances.d.ts +1 -0
  136. package/dist-server/restful/unstable/scenario.d.ts +1 -0
  137. package/dist-server/restful/unstable/scenarios.d.ts +1 -0
  138. package/dist-server/restful/unstable/start-scenario.d.ts +1 -0
  139. package/dist-server/restful/unstable/stop-scenario.d.ts +1 -0
  140. package/dist-server/routers/scenario-schedule-callback-router.d.ts +1 -0
  141. package/dist-server/routers/scenario-schedule-callback-router.js +2 -3
  142. package/dist-server/routers/scenario-schedule-callback-router.js.map +1 -1
  143. package/dist-server/routers/scenario-view-router.d.ts +1 -0
  144. package/dist-server/routers/scenario-view-router.js.map +1 -1
  145. package/dist-server/routes.d.ts +1 -0
  146. package/dist-server/routes.js.map +1 -1
  147. package/dist-server/service/analysis/analysis-query.d.ts +3 -0
  148. package/dist-server/service/analysis/analysis-query.js +2 -2
  149. package/dist-server/service/analysis/analysis-query.js.map +1 -1
  150. package/dist-server/service/analysis/index.d.ts +2 -0
  151. package/dist-server/service/connection/connection-mutation.d.ts +30 -0
  152. package/dist-server/service/connection/connection-mutation.js +2 -2
  153. package/dist-server/service/connection/connection-mutation.js.map +1 -1
  154. package/dist-server/service/connection/connection-query.d.ts +12 -0
  155. package/dist-server/service/connection/connection-query.js +10 -6
  156. package/dist-server/service/connection/connection-query.js.map +1 -1
  157. package/dist-server/service/connection/connection-subscription.d.ts +10 -0
  158. package/dist-server/service/connection/connection-subscription.js +2 -2
  159. package/dist-server/service/connection/connection-subscription.js.map +1 -1
  160. package/dist-server/service/connection/connection-type.d.ts +133 -0
  161. package/dist-server/service/connection/connection-type.js +11 -11
  162. package/dist-server/service/connection/connection-type.js.map +1 -1
  163. package/dist-server/service/connection/index.d.ts +6 -0
  164. package/dist-server/service/connector/connector-query.d.ts +6 -0
  165. package/dist-server/service/connector/connector-query.js +2 -2
  166. package/dist-server/service/connector/connector-query.js.map +1 -1
  167. package/dist-server/service/connector/connector-type.d.ts +12 -0
  168. package/dist-server/service/connector/connector-type.js +4 -4
  169. package/dist-server/service/connector/connector-type.js.map +1 -1
  170. package/dist-server/service/connector/index.d.ts +3 -0
  171. package/dist-server/service/index.d.ts +17 -0
  172. package/dist-server/service/payload-log/index.d.ts +5 -0
  173. package/dist-server/service/payload-log/payload-log-mutation.d.ts +10 -0
  174. package/dist-server/service/payload-log/payload-log-mutation.js +4 -4
  175. package/dist-server/service/payload-log/payload-log-mutation.js.map +1 -1
  176. package/dist-server/service/payload-log/payload-log-query.d.ts +11 -0
  177. package/dist-server/service/payload-log/payload-log-query.js +3 -3
  178. package/dist-server/service/payload-log/payload-log-query.js.map +1 -1
  179. package/dist-server/service/payload-log/payload-log-type.d.ts +15 -0
  180. package/dist-server/service/payload-log/payload-log-type.js +6 -6
  181. package/dist-server/service/payload-log/payload-log-type.js.map +1 -1
  182. package/dist-server/service/payload-log/payload-log.d.ts +23 -0
  183. package/dist-server/service/payload-log/payload-log.js +5 -5
  184. package/dist-server/service/payload-log/payload-log.js.map +1 -1
  185. package/dist-server/service/property-spec.d.ts +12 -0
  186. package/dist-server/service/property-spec.js +2 -2
  187. package/dist-server/service/property-spec.js.map +1 -1
  188. package/dist-server/service/scenario/index.d.ts +5 -0
  189. package/dist-server/service/scenario/scenario-mutation.d.ts +13 -0
  190. package/dist-server/service/scenario/scenario-mutation.js +3 -3
  191. package/dist-server/service/scenario/scenario-mutation.js.map +1 -1
  192. package/dist-server/service/scenario/scenario-query.d.ts +18 -0
  193. package/dist-server/service/scenario/scenario-query.js +3 -3
  194. package/dist-server/service/scenario/scenario-query.js.map +1 -1
  195. package/dist-server/service/scenario/scenario-type.d.ts +30 -0
  196. package/dist-server/service/scenario/scenario-type.js +14 -6
  197. package/dist-server/service/scenario/scenario-type.js.map +1 -1
  198. package/dist-server/service/scenario/scenario.d.ts +27 -0
  199. package/dist-server/service/scenario/scenario.js +9 -4
  200. package/dist-server/service/scenario/scenario.js.map +1 -1
  201. package/dist-server/service/scenario-flow/scenario-flow.d.ts +6 -0
  202. package/dist-server/service/scenario-flow/scenario-flow.js +2 -2
  203. package/dist-server/service/scenario-flow/scenario-flow.js.map +1 -1
  204. package/dist-server/service/scenario-instance/index.d.ts +5 -0
  205. package/dist-server/service/scenario-instance/scenario-instance-mutation.d.ts +6 -0
  206. package/dist-server/service/scenario-instance/scenario-instance-mutation.js +3 -3
  207. package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -1
  208. package/dist-server/service/scenario-instance/scenario-instance-query.d.ts +6 -0
  209. package/dist-server/service/scenario-instance/scenario-instance-query.js +3 -67
  210. package/dist-server/service/scenario-instance/scenario-instance-query.js.map +1 -1
  211. package/dist-server/service/scenario-instance/scenario-instance-subscription.d.ts +10 -0
  212. package/dist-server/service/scenario-instance/scenario-instance-subscription.js +2 -2
  213. package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +1 -1
  214. package/dist-server/service/scenario-instance/scenario-instance-type.d.ts +102 -0
  215. package/dist-server/service/scenario-instance/scenario-instance-type.js +109 -23
  216. package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
  217. package/dist-server/service/scenario-queue/index.d.ts +3 -0
  218. package/dist-server/service/scenario-queue/scenario-queue-subscription.d.ts +6 -0
  219. package/dist-server/service/scenario-queue/scenario-queue-subscription.js +2 -2
  220. package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +1 -1
  221. package/dist-server/service/scenario-queue/scenario-queue-type.d.ts +11 -0
  222. package/dist-server/service/scenario-queue/scenario-queue-type.js +4 -4
  223. package/dist-server/service/scenario-queue/scenario-queue-type.js.map +1 -1
  224. package/dist-server/service/state-register/index.d.ts +6 -0
  225. package/dist-server/service/state-register/state-register-mutation.d.ts +11 -0
  226. package/dist-server/service/state-register/state-register-mutation.js +2 -2
  227. package/dist-server/service/state-register/state-register-mutation.js.map +1 -1
  228. package/dist-server/service/state-register/state-register-query.d.ts +14 -0
  229. package/dist-server/service/state-register/state-register-query.js +3 -3
  230. package/dist-server/service/state-register/state-register-query.js.map +1 -1
  231. package/dist-server/service/state-register/state-register-type.d.ts +23 -0
  232. package/dist-server/service/state-register/state-register-type.js +6 -6
  233. package/dist-server/service/state-register/state-register-type.js.map +1 -1
  234. package/dist-server/service/state-register/state-register.d.ts +22 -0
  235. package/dist-server/service/state-register/state-register.js +2 -2
  236. package/dist-server/service/state-register/state-register.js.map +1 -1
  237. package/dist-server/service/step/index.d.ts +5 -0
  238. package/dist-server/service/step/step-mutation.d.ts +5 -0
  239. package/dist-server/service/step/step-mutation.js +2 -2
  240. package/dist-server/service/step/step-mutation.js.map +1 -1
  241. package/dist-server/service/step/step-query.d.ts +12 -0
  242. package/dist-server/service/step/step-query.js +3 -3
  243. package/dist-server/service/step/step-query.js.map +1 -1
  244. package/dist-server/service/step/step-type.d.ts +111 -0
  245. package/dist-server/service/step/step-type.js +8 -8
  246. package/dist-server/service/step/step-type.js.map +1 -1
  247. package/dist-server/service/task-type/index.d.ts +3 -0
  248. package/dist-server/service/task-type/task-type-query.d.ts +6 -0
  249. package/dist-server/service/task-type/task-type-query.js +2 -2
  250. package/dist-server/service/task-type/task-type-query.js.map +1 -1
  251. package/dist-server/service/task-type/task-type-type.d.ts +12 -0
  252. package/dist-server/service/task-type/task-type-type.js +4 -4
  253. package/dist-server/service/task-type/task-type-type.js.map +1 -1
  254. package/dist-server/tsconfig.tsbuildinfo +1 -1
  255. package/helps/integration/connector/mssql-connector.ja.md +10 -6
  256. package/helps/integration/connector/mssql-connector.ko.md +10 -6
  257. package/helps/integration/connector/mssql-connector.md +10 -6
  258. package/helps/integration/connector/mssql-connector.ms.md +10 -6
  259. package/helps/integration/connector/mssql-connector.zh.md +10 -6
  260. package/helps/integration/connector/operato-connector.ja.md +0 -3
  261. package/package.json +11 -10
  262. package/server/controllers/scenario-controller.ts +55 -19
  263. package/server/engine/index.ts +1 -1
  264. package/server/engine/types.ts +2 -2
  265. package/server/restful/unstable/run-scenario.ts +0 -1
  266. package/server/routers/scenario-schedule-callback-router.ts +2 -2
  267. package/server/service/connection/connection-query.ts +13 -4
  268. package/server/service/payload-log/payload-log-query.ts +4 -1
  269. package/server/service/payload-log/payload-log.ts +2 -2
  270. package/server/service/scenario/scenario-query.ts +1 -1
  271. package/server/service/scenario/scenario-type.ts +6 -0
  272. package/server/service/scenario/scenario.ts +6 -2
  273. package/server/service/scenario-instance/scenario-instance-mutation.ts +7 -4
  274. package/server/service/scenario-instance/scenario-instance-query.ts +4 -30
  275. package/server/service/scenario-instance/scenario-instance-type.ts +87 -9
  276. package/server/service/state-register/state-register-query.ts +4 -1
  277. package/server/service/step/step-query.ts +1 -1
  278. package/server/service/step/step-type.ts +22 -22
@@ -0,0 +1,102 @@
1
+ import 'winston-daily-rotate-file';
2
+ import { Domain } from '@things-factory/shell';
3
+ import { User } from '@things-factory/auth-base';
4
+ import { Context } from '../../engine/types';
5
+ import { Step } from '../step/step-type';
6
+ export declare enum ScenarioInstanceStatus {
7
+ READY = "READY",
8
+ STARTED = "STARTED",
9
+ STOPPED = "STOPPED",
10
+ HALTED = "HALTED",
11
+ UNLOADED = "UNLOADED"
12
+ }
13
+ export declare class ScenarioInstanceProgress {
14
+ rounds: number;
15
+ rate: number;
16
+ steps: number;
17
+ step: number;
18
+ }
19
+ export declare class ScenarioInstanceState {
20
+ domain: Domain;
21
+ instanceName: string;
22
+ scenarioName: string;
23
+ state: ScenarioInstanceStatus;
24
+ variables: any;
25
+ data: any;
26
+ progress: ScenarioInstanceProgress;
27
+ message: string;
28
+ timestamp: Date;
29
+ }
30
+ export declare class ScenarioInstanceRunResult {
31
+ scenarioName: string;
32
+ instanceName: string;
33
+ variables: any;
34
+ data: any;
35
+ result: any;
36
+ timestamp: Date;
37
+ message: string;
38
+ state: ScenarioInstanceStatus;
39
+ }
40
+ export declare class ScenarioInstance {
41
+ private subScenarioInstances;
42
+ context: Context;
43
+ domain: Domain;
44
+ user: User;
45
+ scenarioName: string;
46
+ instanceName: string;
47
+ get root(): ScenarioInstance;
48
+ get state(): ScenarioInstanceStatus;
49
+ get progress(): ScenarioInstanceProgress;
50
+ get variables(): any;
51
+ get data(): any;
52
+ result: any;
53
+ get timestamp(): Date;
54
+ message: string;
55
+ private scenarioId;
56
+ private scenarioTtl;
57
+ private steps;
58
+ private rounds;
59
+ private lastStep;
60
+ private nextStep;
61
+ private disposer;
62
+ addSubScenarioInstance(instance: ScenarioInstance): ScenarioInstance[];
63
+ getSubScenarioInstances(): ScenarioInstance[];
64
+ stopSubScenarios(): Promise<void>;
65
+ constructor(instanceName: any, { id: scenarioId, ttl: scenarioTtl, name: scenarioName, steps, domain: scenarioDomain }: {
66
+ id: string;
67
+ ttl?: number;
68
+ name: string;
69
+ steps: Step[];
70
+ domain: Domain;
71
+ }, context?: any);
72
+ run(): Promise<{
73
+ scenarioName: string;
74
+ instanceName: string;
75
+ variables: any;
76
+ data: any;
77
+ result: any;
78
+ timestamp: Date;
79
+ message: string;
80
+ state: ScenarioInstanceStatus;
81
+ }>;
82
+ loadSubscenario(step: any, scenarioConfig: any, context: any): Promise<any>;
83
+ publishData(tag: any, data: any): void;
84
+ publishState(): void;
85
+ calcProgress(): ScenarioInstanceProgress;
86
+ setNextStep(step: any): void;
87
+ getState(): ScenarioInstanceStatus;
88
+ setState(state: any, message?: any): void;
89
+ start(): Promise<void>;
90
+ stop(): void;
91
+ unload(): void;
92
+ dispose(): Promise<void>;
93
+ process(step: any, context: any): Promise<{
94
+ next: string;
95
+ state: ScenarioInstanceStatus;
96
+ data: object;
97
+ }>;
98
+ }
99
+ export declare class ScenarioInstanceList {
100
+ items: ScenarioInstance[];
101
+ total: number;
102
+ }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var ScenarioInstance_1;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ScenarioInstanceList = exports.ScenarioInstance = exports.ScenarioInstanceState = exports.ScenarioInstanceProgress = exports.ScenarioInstanceStatus = void 0;
4
+ exports.ScenarioInstanceList = exports.ScenarioInstance = exports.ScenarioInstanceRunResult = exports.ScenarioInstanceState = exports.ScenarioInstanceProgress = exports.ScenarioInstanceStatus = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  require("winston-daily-rotate-file");
7
7
  const orderBy_1 = tslib_1.__importDefault(require("lodash/orderBy"));
@@ -10,6 +10,7 @@ const type_graphql_1 = require("type-graphql");
10
10
  const util_1 = tslib_1.__importDefault(require("util"));
11
11
  const winston_1 = require("winston");
12
12
  const shell_1 = require("@things-factory/shell");
13
+ const cache_service_1 = require("@things-factory/cache-service");
13
14
  const auth_base_1 = require("@things-factory/auth-base");
14
15
  const utils_1 = require("@things-factory/utils");
15
16
  const connection_manager_1 = require("../../engine/connection-manager");
@@ -33,13 +34,14 @@ var ScenarioInstanceStatus;
33
34
  ScenarioInstanceStatus["STOPPED"] = "STOPPED";
34
35
  ScenarioInstanceStatus["HALTED"] = "HALTED";
35
36
  ScenarioInstanceStatus["UNLOADED"] = "UNLOADED";
36
- })(ScenarioInstanceStatus = exports.ScenarioInstanceStatus || (exports.ScenarioInstanceStatus = {}));
37
+ })(ScenarioInstanceStatus || (exports.ScenarioInstanceStatus = ScenarioInstanceStatus = {}));
37
38
  (0, type_graphql_1.registerEnumType)(ScenarioInstanceStatus, {
38
39
  name: 'ScenarioInstanceStatus',
39
40
  description: 'state enumeration of a scenario-instance'
40
41
  });
41
42
  let ScenarioInstanceProgress = class ScenarioInstanceProgress {
42
43
  };
44
+ exports.ScenarioInstanceProgress = ScenarioInstanceProgress;
43
45
  tslib_1.__decorate([
44
46
  (0, type_graphql_1.Field)(type => type_graphql_1.Int),
45
47
  tslib_1.__metadata("design:type", Number)
@@ -56,12 +58,12 @@ tslib_1.__decorate([
56
58
  (0, type_graphql_1.Field)(type => type_graphql_1.Int),
57
59
  tslib_1.__metadata("design:type", Number)
58
60
  ], ScenarioInstanceProgress.prototype, "step", void 0);
59
- ScenarioInstanceProgress = tslib_1.__decorate([
61
+ exports.ScenarioInstanceProgress = ScenarioInstanceProgress = tslib_1.__decorate([
60
62
  (0, type_graphql_1.ObjectType)()
61
63
  ], ScenarioInstanceProgress);
62
- exports.ScenarioInstanceProgress = ScenarioInstanceProgress;
63
64
  let ScenarioInstanceState = class ScenarioInstanceState {
64
65
  };
66
+ exports.ScenarioInstanceState = ScenarioInstanceState;
65
67
  tslib_1.__decorate([
66
68
  (0, type_graphql_1.Field)({ nullable: true }),
67
69
  tslib_1.__metadata("design:type", shell_1.Domain)
@@ -98,11 +100,70 @@ tslib_1.__decorate([
98
100
  (0, type_graphql_1.Field)({ nullable: true }),
99
101
  tslib_1.__metadata("design:type", Date)
100
102
  ], ScenarioInstanceState.prototype, "timestamp", void 0);
101
- ScenarioInstanceState = tslib_1.__decorate([
103
+ exports.ScenarioInstanceState = ScenarioInstanceState = tslib_1.__decorate([
102
104
  (0, type_graphql_1.ObjectType)()
103
105
  ], ScenarioInstanceState);
104
- exports.ScenarioInstanceState = ScenarioInstanceState;
106
+ let ScenarioInstanceRunResult = class ScenarioInstanceRunResult {
107
+ };
108
+ exports.ScenarioInstanceRunResult = ScenarioInstanceRunResult;
109
+ tslib_1.__decorate([
110
+ (0, type_graphql_1.Field)({ nullable: true }),
111
+ tslib_1.__metadata("design:type", String)
112
+ ], ScenarioInstanceRunResult.prototype, "scenarioName", void 0);
113
+ tslib_1.__decorate([
114
+ (0, type_graphql_1.Field)({ nullable: true }),
115
+ tslib_1.__metadata("design:type", String)
116
+ ], ScenarioInstanceRunResult.prototype, "instanceName", void 0);
117
+ tslib_1.__decorate([
118
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
119
+ tslib_1.__metadata("design:type", Object)
120
+ ], ScenarioInstanceRunResult.prototype, "variables", void 0);
121
+ tslib_1.__decorate([
122
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
123
+ tslib_1.__metadata("design:type", Object)
124
+ ], ScenarioInstanceRunResult.prototype, "data", void 0);
125
+ tslib_1.__decorate([
126
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
127
+ tslib_1.__metadata("design:type", Object)
128
+ ], ScenarioInstanceRunResult.prototype, "result", void 0);
129
+ tslib_1.__decorate([
130
+ (0, type_graphql_1.Field)({ nullable: true }),
131
+ tslib_1.__metadata("design:type", Date)
132
+ ], ScenarioInstanceRunResult.prototype, "timestamp", void 0);
133
+ tslib_1.__decorate([
134
+ (0, type_graphql_1.Field)({ nullable: true }),
135
+ tslib_1.__metadata("design:type", String)
136
+ ], ScenarioInstanceRunResult.prototype, "message", void 0);
137
+ tslib_1.__decorate([
138
+ (0, type_graphql_1.Field)({ nullable: true }),
139
+ tslib_1.__metadata("design:type", String)
140
+ ], ScenarioInstanceRunResult.prototype, "state", void 0);
141
+ exports.ScenarioInstanceRunResult = ScenarioInstanceRunResult = tslib_1.__decorate([
142
+ (0, type_graphql_1.ObjectType)()
143
+ ], ScenarioInstanceRunResult);
105
144
  let ScenarioInstance = ScenarioInstance_1 = class ScenarioInstance {
145
+ get root() {
146
+ var _a;
147
+ return (_a = this.context) === null || _a === void 0 ? void 0 : _a.root;
148
+ }
149
+ get state() {
150
+ var _a;
151
+ return (_a = this.context) === null || _a === void 0 ? void 0 : _a.state;
152
+ }
153
+ get progress() {
154
+ return this.calcProgress();
155
+ }
156
+ get variables() {
157
+ var _a;
158
+ return (_a = this.context) === null || _a === void 0 ? void 0 : _a.variables;
159
+ }
160
+ get data() {
161
+ var _a;
162
+ return (_a = this.context) === null || _a === void 0 ? void 0 : _a.data;
163
+ }
164
+ get timestamp() {
165
+ return new Date();
166
+ }
106
167
  addSubScenarioInstance(instance) {
107
168
  this.subScenarioInstances.push(instance);
108
169
  return this.subScenarioInstances;
@@ -118,13 +179,15 @@ let ScenarioInstance = ScenarioInstance_1 = class ScenarioInstance {
118
179
  subInstance = subScenarioInstances.pop();
119
180
  }
120
181
  }
121
- constructor(instanceName, { name: scenarioName, steps, domain: scenarioDomain }, context) {
182
+ constructor(instanceName, { id: scenarioId, ttl: scenarioTtl, name: scenarioName, steps, domain: scenarioDomain }, context) {
122
183
  this.subScenarioInstances = []; // TODO Imple by WeakSet
123
184
  this.rounds = 0;
124
185
  this.lastStep = -1;
125
186
  this.nextStep = -1;
126
187
  var { domain, user, lng, unsafeIP, prohibitedPrivileges } = context || {};
127
188
  domain || (domain = scenarioDomain);
189
+ this.scenarioId = scenarioId;
190
+ this.scenarioTtl = scenarioTtl;
128
191
  this.instanceName = instanceName;
129
192
  this.scenarioName = scenarioName;
130
193
  this.steps = (0, orderBy_1.default)(steps || [], step => step.sequence);
@@ -232,6 +295,23 @@ let ScenarioInstance = ScenarioInstance_1 = class ScenarioInstance {
232
295
  sum[step.name] = this.context.data[step.name];
233
296
  return sum;
234
297
  }, {});
298
+ const { scenarioId, scenarioTtl, variables, message, scenarioName, instanceName, result, domain } = this;
299
+ const obj = {
300
+ scenarioName,
301
+ instanceName,
302
+ variables,
303
+ data: this.data,
304
+ result,
305
+ timestamp: new Date(),
306
+ message,
307
+ state: ScenarioInstanceStatus.STOPPED /* redundent, no meaning */
308
+ };
309
+ if (this.scenarioTtl && this.scenarioId) {
310
+ setTimeout(() => {
311
+ cache_service_1.cacheService.setInCache(scenarioId, { domain: domain.id, variables: variables || {} }, obj, scenarioTtl);
312
+ });
313
+ }
314
+ return obj;
235
315
  }
236
316
  async loadSubscenario(step, scenarioConfig, context) {
237
317
  var { name: stepName, params } = step;
@@ -367,6 +447,7 @@ let ScenarioInstance = ScenarioInstance_1 = class ScenarioInstance {
367
447
  return retval;
368
448
  }
369
449
  };
450
+ exports.ScenarioInstance = ScenarioInstance;
370
451
  tslib_1.__decorate([
371
452
  (0, type_graphql_1.Field)({ nullable: true }),
372
453
  tslib_1.__metadata("design:type", shell_1.Domain)
@@ -385,43 +466,49 @@ tslib_1.__decorate([
385
466
  ], ScenarioInstance.prototype, "instanceName", void 0);
386
467
  tslib_1.__decorate([
387
468
  (0, type_graphql_1.Field)({ nullable: true }),
388
- tslib_1.__metadata("design:type", ScenarioInstance)
389
- ], ScenarioInstance.prototype, "root", void 0);
469
+ tslib_1.__metadata("design:type", ScenarioInstance),
470
+ tslib_1.__metadata("design:paramtypes", [])
471
+ ], ScenarioInstance.prototype, "root", null);
390
472
  tslib_1.__decorate([
391
473
  (0, type_graphql_1.Field)({ nullable: true }),
392
- tslib_1.__metadata("design:type", String)
393
- ], ScenarioInstance.prototype, "state", void 0);
474
+ tslib_1.__metadata("design:type", String),
475
+ tslib_1.__metadata("design:paramtypes", [])
476
+ ], ScenarioInstance.prototype, "state", null);
394
477
  tslib_1.__decorate([
395
478
  (0, type_graphql_1.Field)(type => ScenarioInstanceProgress, { nullable: true }),
396
- tslib_1.__metadata("design:type", ScenarioInstanceProgress)
397
- ], ScenarioInstance.prototype, "progress", void 0);
479
+ tslib_1.__metadata("design:type", ScenarioInstanceProgress),
480
+ tslib_1.__metadata("design:paramtypes", [])
481
+ ], ScenarioInstance.prototype, "progress", null);
398
482
  tslib_1.__decorate([
399
483
  (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
400
- tslib_1.__metadata("design:type", Object)
401
- ], ScenarioInstance.prototype, "variables", void 0);
484
+ tslib_1.__metadata("design:type", Object),
485
+ tslib_1.__metadata("design:paramtypes", [])
486
+ ], ScenarioInstance.prototype, "variables", null);
402
487
  tslib_1.__decorate([
403
488
  (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
404
- tslib_1.__metadata("design:type", Object)
405
- ], ScenarioInstance.prototype, "data", void 0);
489
+ tslib_1.__metadata("design:type", Object),
490
+ tslib_1.__metadata("design:paramtypes", [])
491
+ ], ScenarioInstance.prototype, "data", null);
406
492
  tslib_1.__decorate([
407
493
  (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
408
494
  tslib_1.__metadata("design:type", Object)
409
495
  ], ScenarioInstance.prototype, "result", void 0);
410
496
  tslib_1.__decorate([
411
497
  (0, type_graphql_1.Field)({ nullable: true }),
412
- tslib_1.__metadata("design:type", Date)
413
- ], ScenarioInstance.prototype, "timestamp", void 0);
498
+ tslib_1.__metadata("design:type", Date),
499
+ tslib_1.__metadata("design:paramtypes", [])
500
+ ], ScenarioInstance.prototype, "timestamp", null);
414
501
  tslib_1.__decorate([
415
502
  (0, type_graphql_1.Field)({ nullable: true }),
416
503
  tslib_1.__metadata("design:type", String)
417
504
  ], ScenarioInstance.prototype, "message", void 0);
418
- ScenarioInstance = ScenarioInstance_1 = tslib_1.__decorate([
505
+ exports.ScenarioInstance = ScenarioInstance = ScenarioInstance_1 = tslib_1.__decorate([
419
506
  (0, type_graphql_1.ObjectType)(),
420
507
  tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
421
508
  ], ScenarioInstance);
422
- exports.ScenarioInstance = ScenarioInstance;
423
509
  let ScenarioInstanceList = class ScenarioInstanceList {
424
510
  };
511
+ exports.ScenarioInstanceList = ScenarioInstanceList;
425
512
  tslib_1.__decorate([
426
513
  (0, type_graphql_1.Field)(type => [ScenarioInstance]),
427
514
  tslib_1.__metadata("design:type", Array)
@@ -430,8 +517,7 @@ tslib_1.__decorate([
430
517
  (0, type_graphql_1.Field)(type => type_graphql_1.Int),
431
518
  tslib_1.__metadata("design:type", Number)
432
519
  ], ScenarioInstanceList.prototype, "total", void 0);
433
- ScenarioInstanceList = tslib_1.__decorate([
520
+ exports.ScenarioInstanceList = ScenarioInstanceList = tslib_1.__decorate([
434
521
  (0, type_graphql_1.ObjectType)()
435
522
  ], ScenarioInstanceList);
436
- exports.ScenarioInstanceList = ScenarioInstanceList;
437
523
  //# sourceMappingURL=scenario-instance-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-instance-type.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-type.ts"],"names":[],"mappings":"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","sourcesContent":["import 'winston-daily-rotate-file'\n\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment-timezone'\nimport { Field, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport util from 'util'\nimport { createLogger, format, transports } from 'winston'\n\nimport { Domain, pubsub, PubSubLogTransport, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { sleep } from '@things-factory/utils'\n\nimport { ConnectionManager } from '../../engine/connection-manager'\nimport { TaskRegistry } from '../../engine'\nimport { Context } from '../../engine/types'\nimport { Step } from '../step/step-type'\nimport { handler as edgeHandler } from '../../engine/edge-client'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-instance')\nconst { combine, timestamp, splat, printf } = format\n\nconst LOGFORMAT = printf(({ level, message, timestamp }) => {\n return `${timestamp} ${level}: ${message}`\n})\n\nconst SYSTEM_TZ = Intl.DateTimeFormat().resolvedOptions().timeZone\nconst systemTimestamp = format((info, opts) => {\n if (opts.tz) info.timestamp = moment().tz(opts.tz).format()\n return info\n})\n\nexport enum ScenarioInstanceStatus {\n READY = 'READY',\n STARTED = 'STARTED',\n STOPPED = 'STOPPED',\n HALTED = 'HALTED',\n UNLOADED = 'UNLOADED'\n}\n\nregisterEnumType(ScenarioInstanceStatus, {\n name: 'ScenarioInstanceStatus',\n description: 'state enumeration of a scenario-instance'\n})\n\n@ObjectType()\nexport class ScenarioInstanceProgress {\n @Field(type => Int)\n rounds: number\n\n @Field(type => Int)\n rate: number\n\n @Field(type => Int)\n steps: number\n\n @Field(type => Int)\n step: number\n}\n\n@ObjectType()\nexport class ScenarioInstanceState {\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field(type => ScenarioInstanceStatus, { nullable: true })\n public state: ScenarioInstanceStatus\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n public progress: ScenarioInstanceProgress\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public timestamp: Date\n}\n\n@ObjectType()\nexport class ScenarioInstance {\n private subScenarioInstances: ScenarioInstance[] = [] // TODO Imple by WeakSet\n\n public context: Context\n\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public user: User\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n root: ScenarioInstance\n\n @Field({ nullable: true })\n state: ScenarioInstanceStatus\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n progress: ScenarioInstanceProgress\n\n @Field(type => ScalarObject, { nullable: true })\n variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n data: any\n\n @Field(type => ScalarObject, { nullable: true })\n result: any\n\n @Field({ nullable: true })\n timestamp: Date\n\n @Field({ nullable: true })\n public message: string\n\n private steps: Step[]\n private rounds: number = 0\n\n private lastStep: number = -1\n private nextStep: number = -1\n private disposer: any\n public addSubScenarioInstance(instance: ScenarioInstance): ScenarioInstance[] {\n this.subScenarioInstances.push(instance)\n return this.subScenarioInstances\n }\n\n public getSubScenarioInstances(): ScenarioInstance[] {\n return this.subScenarioInstances\n }\n\n public async stopSubScenarios() {\n var subScenarioInstances = this.getSubScenarioInstances()\n\n var subInstance = subScenarioInstances.pop()\n while (subInstance) {\n await subInstance.dispose()\n subInstance = subScenarioInstances.pop()\n }\n }\n\n constructor(instanceName, { name: scenarioName, steps, domain: scenarioDomain }, context?) {\n var { domain, user, lng, unsafeIP, prohibitedPrivileges } = context || {}\n domain ||= scenarioDomain\n\n this.instanceName = instanceName\n this.scenarioName = scenarioName\n this.steps = orderBy(steps || [], step => step.sequence)\n this.domain = domain\n this.user = user\n this.disposer = context?.disposer\n\n this.context = {\n domain,\n user,\n lng,\n unsafeIP,\n prohibitedPrivileges,\n logger:\n context?.logger ||\n createLogger({\n format: combine(systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),\n transports: [\n new (transports as any).DailyRotateFile({\n filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,\n datePattern: 'YYYY-MM-DD-HH',\n zippedArchive: false,\n maxSize: '5m',\n maxFiles: '14d',\n level: 'info'\n }),\n new PubSubLogTransport({\n topic: 'scenario-instance-log',\n source: { domain, scenarioName, instanceName }\n })\n ]\n }),\n publish: context?.publish || this.publishData.bind(this),\n load: context?.load || this.loadSubscenario.bind(this),\n data: context?.data || {},\n variables: context?.variables || {},\n client: context?.client,\n state: ScenarioInstanceStatus.STOPPED,\n root: context?.root || this,\n closures: [],\n checkState(state = ScenarioInstanceStatus.STARTED) {\n return this.state == state\n }\n }\n\n this.setState(ScenarioInstanceStatus.READY)\n }\n\n async run() {\n var state = this.getState()\n if (state == ScenarioInstanceStatus.STARTED || this.steps.length == 0) {\n return\n }\n\n this.setState(ScenarioInstanceStatus.STARTED)\n var context = this.context\n\n try {\n while (this.getState() == ScenarioInstanceStatus.STARTED) {\n if (this.nextStep == -1) {\n this.setNextStep(0)\n }\n\n if (this.nextStep == 0) {\n this.rounds++\n this.context.logger.info(`Start ${this.rounds} Rounds #######`)\n }\n\n var step = this.steps[this.nextStep]\n var next, data\n\n if (!step.skip) {\n // @ts-ignore: Initializer provides no value for this binding element and the binding element has no default value.\n var { next, state: stepState, data } = (await this.process(step, context)) || {}\n context.data[step.name] = data\n } else {\n next = ''\n stepState = undefined\n }\n\n this.publishState()\n\n await sleep(1)\n\n if (next) {\n this.setNextStep(\n this.steps.findIndex(step => {\n return step.name == next\n })\n )\n if (this.nextStep == -1) {\n throw 'Not Found Next Step'\n }\n } else if (this.nextStep == this.steps.length - 1) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n } else {\n this.setNextStep(this.nextStep + 1)\n }\n\n /* last step 에 의해서 시나리오 state를 변경할 수 있도록 함. */\n if (stepState !== undefined) {\n this.setState(stepState)\n }\n }\n } catch (ex) {\n const message = ex.stack ? ex.stack : ex\n const { scenarioName, domain } = this\n\n this.context.logger.error(ex.message ? ex.message : ex)\n\n debug('failed to run ', `[ Domain: ${domain.name}, Scenario: ${scenarioName} ]\\n`, ex)\n this.setState(ScenarioInstanceStatus.HALTED, typeof message == 'object' ? JSON.stringify(message, null, 2) : message)\n\n throw ex\n }\n\n this.result = this.steps\n .filter(step => !!step.result)\n .reduce((sum, step) => {\n sum[step.name] = this.context.data[step.name]\n return sum\n }, {})\n }\n\n async loadSubscenario(step, scenarioConfig, context) {\n var { name: stepName, params } = step\n var { preventErrorPropagation } = params || {}\n\n debug('load-subscenario', this.instanceName, stepName, scenarioConfig.name)\n\n context.data[stepName] = {}\n\n let subContext = {\n ...context,\n data: context.data[stepName],\n closures: [],\n state: ScenarioInstanceStatus.READY\n }\n\n if (!scenarioConfig.domain) {\n scenarioConfig.domain = context.domain\n }\n\n var subScenarioInstance = new ScenarioInstance(`${this.instanceName}$${stepName}`, scenarioConfig, subContext)\n this.addSubScenarioInstance(subScenarioInstance)\n await subScenarioInstance.run()\n\n if (!preventErrorPropagation && subScenarioInstance.getState() == ScenarioInstanceStatus.HALTED) {\n throw new Error(`Sub-scenario[${this.instanceName}$${stepName}] is halted.`)\n }\n\n return subContext\n }\n\n publishData(tag, data) {\n pubsub.publish('data', {\n data: {\n domain: this.context.domain,\n tag,\n data\n }\n })\n }\n\n publishState() {\n const {\n instanceName,\n scenarioName,\n steps,\n domain,\n message,\n context: { data, variables, state }\n } = this\n\n pubsub.publish('scenario-instance-state', {\n scenarioInstanceState: {\n domain,\n instanceName,\n scenarioName,\n state,\n variables,\n progress: this.calcProgress(),\n data,\n message,\n timestamp: new Date()\n }\n })\n\n this.context.logger.info(this.message)\n }\n\n calcProgress(): ScenarioInstanceProgress {\n var steps = this.steps.length\n var step = Math.max(this.lastStep, 0)\n\n return {\n rounds: this.rounds,\n rate: steps ? Math.round(100 * (step / steps)) : 0,\n steps,\n step\n }\n }\n\n setNextStep(step) {\n this.lastStep = this.nextStep + 1\n this.nextStep = step\n }\n\n getState(): ScenarioInstanceStatus {\n return this.context.state\n }\n\n setState(state, message?) {\n if (this.context.state == state) {\n return\n }\n\n this.message = `${this.instanceName}:[state changed] ${ScenarioInstanceStatus[this.getState()]} => ${ScenarioInstanceStatus[state]}${\n message ? ' caused by ' + util.inspect(message, false, 2, true) : ''\n }`\n\n this.context.state = state\n\n if (state == ScenarioInstanceStatus.STOPPED || state == ScenarioInstanceStatus.HALTED) {\n this.setNextStep(-1)\n this.setState(ScenarioInstanceStatus.UNLOADED)\n } else if (state == ScenarioInstanceStatus.UNLOADED) {\n this.setNextStep(-1)\n this.dispose()\n }\n\n this.publishState()\n }\n\n async start() {\n await this.run()\n }\n\n stop() {\n if (this.getState() !== ScenarioInstanceStatus.HALTED) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n }\n }\n\n unload() {\n this.setState(ScenarioInstanceStatus.UNLOADED)\n }\n\n async dispose() {\n await this.stopSubScenarios()\n\n this.unload()\n\n var closure = this.context?.closures?.pop()\n while (closure) {\n closure.call(this)\n closure = this.context?.closures?.pop()\n }\n\n if (this.disposer) {\n await this.disposer.call(this)\n }\n\n // {{ CHECKPOINT 본 인스턴스를 위해서 생성된 logger를 닫는다.\n if (this.context?.logger) {\n this.context.logger.close()\n }\n // }}\n }\n\n async process(step, context): Promise<{ next: string; state: ScenarioInstanceStatus; data: object }> {\n this.context.logger.info(`Step '${step.name}'(${step.id}) started.`)\n\n step = {\n ...step\n } // copy step\n\n try {\n step.params = JSON.parse(step.params)\n } catch (ex) {\n this.context.logger.error(`params(${step.params}) parsing error. params must be a JSON.`)\n }\n step.params = step.params || {}\n\n const connection = step.connection && ConnectionManager.getConnectionInstanceEntityByName(this.domain, step.connection)\n\n if (!connection || !connection.edgeId) {\n var handler = TaskRegistry.getTaskHandler(step.task)\n if (!handler) {\n throw new Error(`no task handler for step '${step.name}'(${step.id})`)\n }\n\n var retval: any = await handler(step, context)\n } else {\n var retval: any = await edgeHandler(step, context)\n }\n\n if (step.log) {\n var { data } = retval || {}\n this.context.logger.info(`returns ${typeof data == 'string' ? data : JSON.stringify(data, null, 2)}`)\n }\n\n this.context.logger.info(`Step done.`)\n return retval\n }\n}\n\n@ObjectType()\nexport class ScenarioInstanceList {\n @Field(type => [ScenarioInstance])\n items: ScenarioInstance[]\n\n @Field(type => Int)\n total: number\n}\n"]}
1
+ {"version":3,"file":"scenario-instance-type.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-type.ts"],"names":[],"mappings":"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","sourcesContent":["import 'winston-daily-rotate-file'\n\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment-timezone'\nimport { Field, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport util from 'util'\nimport { createLogger, format, transports } from 'winston'\n\nimport { Domain, pubsub, PubSubLogTransport, ScalarObject } from '@things-factory/shell'\nimport { cacheService } from '@things-factory/cache-service'\nimport { User } from '@things-factory/auth-base'\nimport { sleep } from '@things-factory/utils'\n\nimport { ConnectionManager } from '../../engine/connection-manager'\nimport { TaskRegistry } from '../../engine'\nimport { Context } from '../../engine/types'\nimport { Step } from '../step/step-type'\nimport { handler as edgeHandler } from '../../engine/edge-client'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-instance')\nconst { combine, timestamp, splat, printf } = format\n\nconst LOGFORMAT = printf(({ level, message, timestamp }) => {\n return `${timestamp} ${level}: ${message}`\n})\n\nconst SYSTEM_TZ = Intl.DateTimeFormat().resolvedOptions().timeZone\nconst systemTimestamp = format((info, opts) => {\n if (opts.tz) info.timestamp = moment().tz(opts.tz).format()\n return info\n})\n\nexport enum ScenarioInstanceStatus {\n READY = 'READY',\n STARTED = 'STARTED',\n STOPPED = 'STOPPED',\n HALTED = 'HALTED',\n UNLOADED = 'UNLOADED'\n}\n\nregisterEnumType(ScenarioInstanceStatus, {\n name: 'ScenarioInstanceStatus',\n description: 'state enumeration of a scenario-instance'\n})\n\n@ObjectType()\nexport class ScenarioInstanceProgress {\n @Field(type => Int)\n rounds: number\n\n @Field(type => Int)\n rate: number\n\n @Field(type => Int)\n steps: number\n\n @Field(type => Int)\n step: number\n}\n\n@ObjectType()\nexport class ScenarioInstanceState {\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field(type => ScenarioInstanceStatus, { nullable: true })\n public state: ScenarioInstanceStatus\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n public progress: ScenarioInstanceProgress\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public timestamp: Date\n}\n\n@ObjectType()\nexport class ScenarioInstanceRunResult {\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScalarObject, { nullable: true })\n public result: any\n\n @Field({ nullable: true })\n public timestamp: Date\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public state: ScenarioInstanceStatus\n}\n\n@ObjectType()\nexport class ScenarioInstance {\n private subScenarioInstances: ScenarioInstance[] = [] // TODO Imple by WeakSet\n\n public context: Context\n\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public user: User\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n get root(): ScenarioInstance {\n return this.context?.root\n }\n\n @Field({ nullable: true })\n get state(): ScenarioInstanceStatus {\n return this.context?.state\n }\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n get progress(): ScenarioInstanceProgress {\n return this.calcProgress()\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get variables(): any {\n return this.context?.variables\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get data(): any {\n return this.context?.data\n }\n\n @Field(type => ScalarObject, { nullable: true })\n result: any\n\n @Field({ nullable: true })\n get timestamp(): Date {\n return new Date()\n }\n\n @Field({ nullable: true })\n public message: string\n\n private scenarioId: string\n private scenarioTtl: number\n private steps: Step[]\n private rounds: number = 0\n\n private lastStep: number = -1\n private nextStep: number = -1\n private disposer: any\n public addSubScenarioInstance(instance: ScenarioInstance): ScenarioInstance[] {\n this.subScenarioInstances.push(instance)\n return this.subScenarioInstances\n }\n\n public getSubScenarioInstances(): ScenarioInstance[] {\n return this.subScenarioInstances\n }\n\n public async stopSubScenarios() {\n var subScenarioInstances = this.getSubScenarioInstances()\n\n var subInstance = subScenarioInstances.pop()\n while (subInstance) {\n await subInstance.dispose()\n subInstance = subScenarioInstances.pop()\n }\n }\n\n constructor(\n instanceName,\n {\n id: scenarioId,\n ttl: scenarioTtl,\n name: scenarioName,\n steps,\n domain: scenarioDomain\n }: { id: string; ttl?: number; name: string; steps: Step[]; domain: Domain },\n context?\n ) {\n var { domain, user, lng, unsafeIP, prohibitedPrivileges } = context || {}\n domain ||= scenarioDomain\n\n this.scenarioId = scenarioId\n this.scenarioTtl = scenarioTtl\n this.instanceName = instanceName\n this.scenarioName = scenarioName\n this.steps = orderBy(steps || [], step => step.sequence)\n this.domain = domain\n this.user = user\n this.disposer = context?.disposer\n\n this.context = {\n domain,\n user,\n lng,\n unsafeIP,\n prohibitedPrivileges,\n logger:\n context?.logger ||\n createLogger({\n format: combine(systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),\n transports: [\n new (transports as any).DailyRotateFile({\n filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,\n datePattern: 'YYYY-MM-DD-HH',\n zippedArchive: false,\n maxSize: '5m',\n maxFiles: '14d',\n level: 'info'\n }),\n new PubSubLogTransport({\n topic: 'scenario-instance-log',\n source: { domain, scenarioName, instanceName }\n })\n ]\n }),\n publish: context?.publish || this.publishData.bind(this),\n load: context?.load || this.loadSubscenario.bind(this),\n data: context?.data || {},\n variables: context?.variables || {},\n client: context?.client,\n state: ScenarioInstanceStatus.STOPPED,\n root: context?.root || this,\n closures: [],\n checkState(state = ScenarioInstanceStatus.STARTED) {\n return this.state == state\n }\n }\n\n this.setState(ScenarioInstanceStatus.READY)\n }\n\n async run() {\n var state = this.getState()\n if (state == ScenarioInstanceStatus.STARTED || this.steps.length == 0) {\n return\n }\n\n this.setState(ScenarioInstanceStatus.STARTED)\n var context = this.context\n\n try {\n while (this.getState() == ScenarioInstanceStatus.STARTED) {\n if (this.nextStep == -1) {\n this.setNextStep(0)\n }\n\n if (this.nextStep == 0) {\n this.rounds++\n this.context.logger.info(`Start ${this.rounds} Rounds #######`)\n }\n\n var step = this.steps[this.nextStep]\n var next, data\n\n if (!step.skip) {\n // @ts-ignore: Initializer provides no value for this binding element and the binding element has no default value.\n var { next, state: stepState, data } = (await this.process(step, context)) || {}\n context.data[step.name] = data\n } else {\n next = ''\n stepState = undefined\n }\n\n this.publishState()\n\n await sleep(1)\n\n if (next) {\n this.setNextStep(\n this.steps.findIndex(step => {\n return step.name == next\n })\n )\n if (this.nextStep == -1) {\n throw 'Not Found Next Step'\n }\n } else if (this.nextStep == this.steps.length - 1) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n } else {\n this.setNextStep(this.nextStep + 1)\n }\n\n /* last step 에 의해서 시나리오 state를 변경할 수 있도록 함. */\n if (stepState !== undefined) {\n this.setState(stepState)\n }\n }\n } catch (ex) {\n const message = ex.stack ? ex.stack : ex\n const { scenarioName, domain } = this\n\n this.context.logger.error(ex.message ? ex.message : ex)\n\n debug('failed to run ', `[ Domain: ${domain.name}, Scenario: ${scenarioName} ]\\n`, ex)\n this.setState(\n ScenarioInstanceStatus.HALTED,\n typeof message == 'object' ? JSON.stringify(message, null, 2) : message\n )\n\n throw ex\n }\n\n this.result = this.steps\n .filter(step => !!step.result)\n .reduce((sum, step) => {\n sum[step.name] = this.context.data[step.name]\n return sum\n }, {})\n\n const { scenarioId, scenarioTtl, variables, message, scenarioName, instanceName, result, domain } = this\n const obj = {\n scenarioName,\n instanceName,\n variables,\n data: this.data,\n result,\n timestamp: new Date(),\n message,\n state: ScenarioInstanceStatus.STOPPED /* redundent, no meaning */\n }\n\n if (this.scenarioTtl && this.scenarioId) {\n setTimeout(() => {\n cacheService.setInCache(scenarioId, { domain: domain.id, variables: variables || {} }, obj, scenarioTtl)\n })\n }\n\n return obj\n }\n\n async loadSubscenario(step, scenarioConfig, context) {\n var { name: stepName, params } = step\n var { preventErrorPropagation } = params || {}\n\n debug('load-subscenario', this.instanceName, stepName, scenarioConfig.name)\n\n context.data[stepName] = {}\n\n let subContext = {\n ...context,\n data: context.data[stepName],\n closures: [],\n state: ScenarioInstanceStatus.READY\n }\n\n if (!scenarioConfig.domain) {\n scenarioConfig.domain = context.domain\n }\n\n var subScenarioInstance = new ScenarioInstance(`${this.instanceName}$${stepName}`, scenarioConfig, subContext)\n this.addSubScenarioInstance(subScenarioInstance)\n await subScenarioInstance.run()\n\n if (!preventErrorPropagation && subScenarioInstance.getState() == ScenarioInstanceStatus.HALTED) {\n throw new Error(`Sub-scenario[${this.instanceName}$${stepName}] is halted.`)\n }\n\n return subContext\n }\n\n publishData(tag, data) {\n pubsub.publish('data', {\n data: {\n domain: this.context.domain,\n tag,\n data\n }\n })\n }\n\n publishState() {\n const {\n instanceName,\n scenarioName,\n steps,\n domain,\n message,\n context: { data, variables, state }\n } = this\n\n pubsub.publish('scenario-instance-state', {\n scenarioInstanceState: {\n domain,\n instanceName,\n scenarioName,\n state,\n variables,\n progress: this.calcProgress(),\n data,\n message,\n timestamp: new Date()\n }\n })\n\n this.context.logger.info(this.message)\n }\n\n calcProgress(): ScenarioInstanceProgress {\n var steps = this.steps.length\n var step = Math.max(this.lastStep, 0)\n\n return {\n rounds: this.rounds,\n rate: steps ? Math.round(100 * (step / steps)) : 0,\n steps,\n step\n }\n }\n\n setNextStep(step) {\n this.lastStep = this.nextStep + 1\n this.nextStep = step\n }\n\n getState(): ScenarioInstanceStatus {\n return this.context.state\n }\n\n setState(state, message?) {\n if (this.context.state == state) {\n return\n }\n\n this.message = `${this.instanceName}:[state changed] ${ScenarioInstanceStatus[this.getState()]} => ${ScenarioInstanceStatus[state]}${\n message ? ' caused by ' + util.inspect(message, false, 2, true) : ''\n }`\n\n this.context.state = state\n\n if (state == ScenarioInstanceStatus.STOPPED || state == ScenarioInstanceStatus.HALTED) {\n this.setNextStep(-1)\n this.setState(ScenarioInstanceStatus.UNLOADED)\n } else if (state == ScenarioInstanceStatus.UNLOADED) {\n this.setNextStep(-1)\n this.dispose()\n }\n\n this.publishState()\n }\n\n async start() {\n await this.run()\n }\n\n stop() {\n if (this.getState() !== ScenarioInstanceStatus.HALTED) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n }\n }\n\n unload() {\n this.setState(ScenarioInstanceStatus.UNLOADED)\n }\n\n async dispose() {\n await this.stopSubScenarios()\n\n this.unload()\n\n var closure = this.context?.closures?.pop()\n while (closure) {\n closure.call(this)\n closure = this.context?.closures?.pop()\n }\n\n if (this.disposer) {\n await this.disposer.call(this)\n }\n\n // {{ CHECKPOINT 본 인스턴스를 위해서 생성된 logger를 닫는다.\n if (this.context?.logger) {\n this.context.logger.close()\n }\n // }}\n }\n\n async process(step, context): Promise<{ next: string; state: ScenarioInstanceStatus; data: object }> {\n this.context.logger.info(`Step '${step.name}'(${step.id}) started.`)\n\n step = {\n ...step\n } // copy step\n\n try {\n step.params = JSON.parse(step.params)\n } catch (ex) {\n this.context.logger.error(`params(${step.params}) parsing error. params must be a JSON.`)\n }\n step.params = step.params || {}\n\n const connection =\n step.connection && ConnectionManager.getConnectionInstanceEntityByName(this.domain, step.connection)\n\n if (!connection || !connection.edgeId) {\n var handler = TaskRegistry.getTaskHandler(step.task)\n if (!handler) {\n throw new Error(`no task handler for step '${step.name}'(${step.id})`)\n }\n\n var retval: any = await handler(step, context)\n } else {\n var retval: any = await edgeHandler(step, context)\n }\n\n if (step.log) {\n var { data } = retval || {}\n this.context.logger.info(`returns ${typeof data == 'string' ? data : JSON.stringify(data, null, 2)}`)\n }\n\n this.context.logger.info(`Step done.`)\n return retval\n }\n}\n\n@ObjectType()\nexport class ScenarioInstanceList {\n @Field(type => [ScenarioInstance])\n items: ScenarioInstance[]\n\n @Field(type => Int)\n total: number\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { ScenarioQueueSubscription } from './scenario-queue-subscription';
2
+ export declare const entities: any[];
3
+ export declare const resolvers: (typeof ScenarioQueueSubscription)[];
@@ -0,0 +1,6 @@
1
+ import { ScenarioQueueState } from './scenario-queue-type';
2
+ export declare class ScenarioQueueSubscription {
3
+ scenarioQueueState(payload: {
4
+ scenarioQueueState: ScenarioQueueState;
5
+ }): ScenarioQueueState;
6
+ }
@@ -13,6 +13,7 @@ let ScenarioQueueSubscription = class ScenarioQueueSubscription {
13
13
  return payload.scenarioQueueState;
14
14
  }
15
15
  };
16
+ exports.ScenarioQueueSubscription = ScenarioQueueSubscription;
16
17
  tslib_1.__decorate([
17
18
  (0, type_graphql_1.Subscription)({
18
19
  subscribe: ({ args, context, info }) => {
@@ -51,8 +52,7 @@ tslib_1.__decorate([
51
52
  tslib_1.__metadata("design:paramtypes", [Object]),
52
53
  tslib_1.__metadata("design:returntype", scenario_queue_type_1.ScenarioQueueState)
53
54
  ], ScenarioQueueSubscription.prototype, "scenarioQueueState", null);
54
- ScenarioQueueSubscription = tslib_1.__decorate([
55
+ exports.ScenarioQueueSubscription = ScenarioQueueSubscription = tslib_1.__decorate([
55
56
  (0, type_graphql_1.Resolver)()
56
57
  ], ScenarioQueueSubscription);
57
- exports.ScenarioQueueSubscription = ScenarioQueueSubscription;
58
58
  //# sourceMappingURL=scenario-queue-subscription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-queue-subscription.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAChE,+DAA0D;AAC1D,iDAA8C;AAC9C,+CAA2C;AAC3C,yCAA6C;AAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,oDAAoD,CAAC,CAAA;AAG7E,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IA0CpC,kBAAkB,CAAS,OAAmD;QAC5E,OAAO,OAAO,CAAC,kBAAkB,CAAA;IACnC,CAAC;CACF,CAAA;AA5CC;IAAC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;YAEnC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;YAE7B,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;aACpC;YAED,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAClG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;aAChF;YAED,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC1B,IAAI,KAAK,GAAG,uBAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,EAAE;oBACT,cAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE;wBACrC,kBAAkB,EAAE;4BAClB,MAAM;4BACN,KAAK,EAAE,KAAK,CAAC,KAAK;yBACnB;qBACF,CAAC,CAAA;iBACH;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EACxC,IAAA,qBAAM,EAAC,CAAC,OAAmD,EAAE,EAAE;gBAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAA;gBAEtD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,MAAK,SAAS,EAAE;oBACpC,OAAO,KAAK,CAAA;iBACb;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACkB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAAuD,wCAAkB;mEAElG;AA5CU,yBAAyB;IADrC,IAAA,uBAAQ,GAAE;GACE,yBAAyB,CA6CrC;AA7CY,8DAAyB","sourcesContent":["import { Resolver, Subscription, Root, Arg } from 'type-graphql'\nimport { ScenarioQueueState } from './scenario-queue-type'\nimport { pubsub } from '@things-factory/shell'\nimport { filter, pipe } from 'graphql-yoga'\nimport { ScenarioEngine } from '../../engine'\n\nconst debug = require('debug')('things-factory:integration:connection-subscription')\n\n@Resolver()\nexport class ScenarioQueueSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n debug('subscribe', subdomain)\n\n if (!domain) {\n throw new Error('domain required.')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n process.nextTick(async () => {\n var queue = ScenarioEngine.getPendingQueue(domain)\n if (queue) {\n pubsub.publish('scenario-queue-state', {\n scenarioQueueState: {\n domain,\n queue: queue.queue\n }\n })\n }\n })\n\n return pipe(\n pubsub.subscribe('scenario-queue-state'),\n filter((payload: { scenarioQueueState: ScenarioQueueState }) => {\n const { domain: pdomain } = payload.scenarioQueueState\n\n if (pdomain?.subdomain !== subdomain) {\n return false\n }\n\n return true\n })\n )\n }\n })\n scenarioQueueState(@Root() payload: { scenarioQueueState: ScenarioQueueState }): ScenarioQueueState {\n return payload.scenarioQueueState\n }\n}\n"]}
1
+ {"version":3,"file":"scenario-queue-subscription.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAChE,+DAA0D;AAC1D,iDAA8C;AAC9C,+CAA2C;AAC3C,yCAA6C;AAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,oDAAoD,CAAC,CAAA;AAG7E,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IA0CpC,kBAAkB,CAAS,OAAmD;QAC5E,OAAO,OAAO,CAAC,kBAAkB,CAAA;IACnC,CAAC;CACF,CAAA;AA7CY,8DAAyB;AA0CpC;IAzCC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;YAEnC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;YAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;YACrC,CAAC;YAED,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC1B,IAAI,KAAK,GAAG,uBAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACV,cAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE;wBACrC,kBAAkB,EAAE;4BAClB,MAAM;4BACN,KAAK,EAAE,KAAK,CAAC,KAAK;yBACnB;qBACF,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EACxC,IAAA,qBAAM,EAAC,CAAC,OAAmD,EAAE,EAAE;gBAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAA;gBAEtD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,MAAK,SAAS,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACkB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAAuD,wCAAkB;mEAElG;oCA5CU,yBAAyB;IADrC,IAAA,uBAAQ,GAAE;GACE,yBAAyB,CA6CrC","sourcesContent":["import { Resolver, Subscription, Root, Arg } from 'type-graphql'\nimport { ScenarioQueueState } from './scenario-queue-type'\nimport { pubsub } from '@things-factory/shell'\nimport { filter, pipe } from 'graphql-yoga'\nimport { ScenarioEngine } from '../../engine'\n\nconst debug = require('debug')('things-factory:integration:connection-subscription')\n\n@Resolver()\nexport class ScenarioQueueSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n debug('subscribe', subdomain)\n\n if (!domain) {\n throw new Error('domain required.')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n process.nextTick(async () => {\n var queue = ScenarioEngine.getPendingQueue(domain)\n if (queue) {\n pubsub.publish('scenario-queue-state', {\n scenarioQueueState: {\n domain,\n queue: queue.queue\n }\n })\n }\n })\n\n return pipe(\n pubsub.subscribe('scenario-queue-state'),\n filter((payload: { scenarioQueueState: ScenarioQueueState }) => {\n const { domain: pdomain } = payload.scenarioQueueState\n\n if (pdomain?.subdomain !== subdomain) {\n return false\n }\n\n return true\n })\n )\n }\n })\n scenarioQueueState(@Root() payload: { scenarioQueueState: ScenarioQueueState }): ScenarioQueueState {\n return payload.scenarioQueueState\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { Domain } from '@things-factory/shell';
2
+ export declare class PendingObject {
3
+ stuff: any;
4
+ due: string;
5
+ priority: number;
6
+ tag: String;
7
+ }
8
+ export declare class ScenarioQueueState {
9
+ domain: Domain;
10
+ queue: PendingObject[];
11
+ }
@@ -6,6 +6,7 @@ const type_graphql_1 = require("type-graphql");
6
6
  const shell_1 = require("@things-factory/shell");
7
7
  let PendingObject = class PendingObject {
8
8
  };
9
+ exports.PendingObject = PendingObject;
9
10
  tslib_1.__decorate([
10
11
  (0, type_graphql_1.Field)(type => shell_1.ScalarObject),
11
12
  tslib_1.__metadata("design:type", Object)
@@ -22,12 +23,12 @@ tslib_1.__decorate([
22
23
  (0, type_graphql_1.Field)({ nullable: true }),
23
24
  tslib_1.__metadata("design:type", String)
24
25
  ], PendingObject.prototype, "tag", void 0);
25
- PendingObject = tslib_1.__decorate([
26
+ exports.PendingObject = PendingObject = tslib_1.__decorate([
26
27
  (0, type_graphql_1.ObjectType)()
27
28
  ], PendingObject);
28
- exports.PendingObject = PendingObject;
29
29
  let ScenarioQueueState = class ScenarioQueueState {
30
30
  };
31
+ exports.ScenarioQueueState = ScenarioQueueState;
31
32
  tslib_1.__decorate([
32
33
  (0, type_graphql_1.Field)(),
33
34
  tslib_1.__metadata("design:type", shell_1.Domain)
@@ -36,8 +37,7 @@ tslib_1.__decorate([
36
37
  (0, type_graphql_1.Field)(type => [PendingObject]),
37
38
  tslib_1.__metadata("design:type", Array)
38
39
  ], ScenarioQueueState.prototype, "queue", void 0);
39
- ScenarioQueueState = tslib_1.__decorate([
40
+ exports.ScenarioQueueState = ScenarioQueueState = tslib_1.__decorate([
40
41
  (0, type_graphql_1.ObjectType)()
41
42
  ], ScenarioQueueState);
42
- exports.ScenarioQueueState = ScenarioQueueState;
43
43
  //# sourceMappingURL=scenario-queue-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-queue-type.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAqD;AAErD,iDAA4D;AAGrD,IAAM,aAAa,GAAnB,MAAM,aAAa;CAYzB,CAAA;AAXC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,CAAC;;4CAClB;AAEV;IAAC,IAAA,oBAAK,GAAE;;0CACG;AAEX;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;+CACH;AAEhB;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACrB,MAAM;0CAAA;AAXA,aAAa;IADzB,IAAA,yBAAU,GAAE;GACA,aAAa,CAYzB;AAZY,sCAAa;AAenB,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAM9B,CAAA;AALC;IAAC,IAAA,oBAAK,GAAE;sCACA,cAAM;kDAAA;AAEd;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;;iDACT;AALX,kBAAkB;IAD9B,IAAA,yBAAU,GAAE;GACA,kBAAkB,CAM9B;AANY,gDAAkB","sourcesContent":["import { Field, Int, ObjectType } from 'type-graphql'\n\nimport { Domain, ScalarObject } from '@things-factory/shell'\n\n@ObjectType()\nexport class PendingObject {\n @Field(type => ScalarObject)\n stuff: any\n\n @Field()\n due: string\n\n @Field(type => Int)\n priority: number\n\n @Field({ nullable: true })\n tag: String\n}\n\n@ObjectType()\nexport class ScenarioQueueState {\n @Field()\n domain: Domain\n\n @Field(type => [PendingObject])\n queue: PendingObject[]\n}\n"]}
1
+ {"version":3,"file":"scenario-queue-type.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAqD;AAErD,iDAA4D;AAGrD,IAAM,aAAa,GAAnB,MAAM,aAAa;CAYzB,CAAA;AAZY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,CAAC;;4CAClB;AAGV;IADC,IAAA,oBAAK,GAAE;;0CACG;AAGX;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;+CACH;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACrB,MAAM;0CAAA;wBAXA,aAAa;IADzB,IAAA,yBAAU,GAAE;GACA,aAAa,CAYzB;AAGM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAM9B,CAAA;AANY,gDAAkB;AAE7B;IADC,IAAA,oBAAK,GAAE;sCACA,cAAM;kDAAA;AAGd;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;;iDACT;6BALX,kBAAkB;IAD9B,IAAA,yBAAU,GAAE;GACA,kBAAkB,CAM9B","sourcesContent":["import { Field, Int, ObjectType } from 'type-graphql'\n\nimport { Domain, ScalarObject } from '@things-factory/shell'\n\n@ObjectType()\nexport class PendingObject {\n @Field(type => ScalarObject)\n stuff: any\n\n @Field()\n due: string\n\n @Field(type => Int)\n priority: number\n\n @Field({ nullable: true })\n tag: String\n}\n\n@ObjectType()\nexport class ScenarioQueueState {\n @Field()\n domain: Domain\n\n @Field(type => [PendingObject])\n queue: PendingObject[]\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { StateRegister } from './state-register';
2
+ import { StateRegisterQuery } from './state-register-query';
3
+ import { StateRegisterMutation } from './state-register-mutation';
4
+ export declare const entities: (typeof StateRegister)[];
5
+ export declare const resolvers: (typeof StateRegisterQuery | typeof StateRegisterMutation)[];
6
+ export declare const subscribers: any[];
@@ -0,0 +1,11 @@
1
+ import { StateRegister } from './state-register';
2
+ import { NewStateRegister, StateRegisterPatch } from './state-register-type';
3
+ export declare class StateRegisterMutation {
4
+ createStateRegister(stateRegister: NewStateRegister, context: ResolverContext): Promise<StateRegister>;
5
+ updateStateRegister(id: string, patch: StateRegisterPatch, context: ResolverContext): Promise<StateRegister>;
6
+ updateMultipleStateRegister(patches: StateRegisterPatch[], context: ResolverContext): Promise<StateRegister[]>;
7
+ updateStateRegisterByName(name: string, state: any, context: ResolverContext): Promise<StateRegister>;
8
+ deleteStateRegister(id: string, context: ResolverContext): Promise<boolean>;
9
+ deleteStateRegisters(ids: string[], context: ResolverContext): Promise<boolean>;
10
+ importStateRegisters(stateRegisters: StateRegisterPatch[], context: ResolverContext): Promise<boolean>;
11
+ }
@@ -74,6 +74,7 @@ let StateRegisterMutation = class StateRegisterMutation {
74
74
  return true;
75
75
  }
76
76
  };
77
+ exports.StateRegisterMutation = StateRegisterMutation;
77
78
  tslib_1.__decorate([
78
79
  (0, type_graphql_1.Directive)('@transaction'),
79
80
  (0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
@@ -146,8 +147,7 @@ tslib_1.__decorate([
146
147
  tslib_1.__metadata("design:paramtypes", [Array, Object]),
147
148
  tslib_1.__metadata("design:returntype", Promise)
148
149
  ], StateRegisterMutation.prototype, "importStateRegisters", null);
149
- StateRegisterMutation = tslib_1.__decorate([
150
+ exports.StateRegisterMutation = StateRegisterMutation = tslib_1.__decorate([
150
151
  (0, type_graphql_1.Resolver)(state_register_1.StateRegister)
151
152
  ], StateRegisterMutation);
152
- exports.StateRegisterMutation = StateRegisterMutation;
153
153
  //# sourceMappingURL=state-register-mutation.js.map