@things-factory/integration-base 4.0.21 → 4.0.22

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 (175) hide show
  1. package/dist-server/engine/connector/socket-client.js +47 -0
  2. package/dist-server/engine/connector/socket-client.js.map +1 -0
  3. package/dist-server/engine/scenario-instance.js +283 -0
  4. package/dist-server/engine/scenario-instance.js.map +1 -0
  5. package/dist-server/entities/connection.js +102 -0
  6. package/dist-server/entities/connection.js.map +1 -0
  7. package/dist-server/entities/index.js +11 -0
  8. package/dist-server/entities/index.js.map +1 -0
  9. package/dist-server/entities/scenario-flow.js +37 -0
  10. package/dist-server/entities/scenario-flow.js.map +1 -0
  11. package/dist-server/entities/scenario.js +105 -0
  12. package/dist-server/entities/scenario.js.map +1 -0
  13. package/dist-server/entities/step.js +101 -0
  14. package/dist-server/entities/step.js.map +1 -0
  15. package/dist-server/graphql/index.js +30 -0
  16. package/dist-server/graphql/index.js.map +1 -0
  17. package/dist-server/graphql/resolvers/connection/connect-connection.js +19 -0
  18. package/dist-server/graphql/resolvers/connection/connect-connection.js.map +1 -0
  19. package/dist-server/graphql/resolvers/connection/connection-log.js +36 -0
  20. package/dist-server/graphql/resolvers/connection/connection-log.js.map +1 -0
  21. package/dist-server/graphql/resolvers/connection/connection-query.js +34 -0
  22. package/dist-server/graphql/resolvers/connection/connection-query.js.map +1 -0
  23. package/dist-server/graphql/resolvers/connection/connection-state.js +52 -0
  24. package/dist-server/graphql/resolvers/connection/connection-state.js.map +1 -0
  25. package/dist-server/graphql/resolvers/connection/create-connection.js +11 -0
  26. package/dist-server/graphql/resolvers/connection/create-connection.js.map +1 -0
  27. package/dist-server/graphql/resolvers/connection/delete-connection.js +12 -0
  28. package/dist-server/graphql/resolvers/connection/delete-connection.js.map +1 -0
  29. package/dist-server/graphql/resolvers/connection/delete-connections.js +16 -0
  30. package/dist-server/graphql/resolvers/connection/delete-connections.js.map +1 -0
  31. package/dist-server/graphql/resolvers/connection/disconnect-connection.js +20 -0
  32. package/dist-server/graphql/resolvers/connection/disconnect-connection.js.map +1 -0
  33. package/dist-server/graphql/resolvers/connection/fetch-connection-state.js +18 -0
  34. package/dist-server/graphql/resolvers/connection/fetch-connection-state.js.map +1 -0
  35. package/dist-server/graphql/resolvers/connection/index.js +36 -0
  36. package/dist-server/graphql/resolvers/connection/index.js.map +1 -0
  37. package/dist-server/graphql/resolvers/connection/update-connection.js +15 -0
  38. package/dist-server/graphql/resolvers/connection/update-connection.js.map +1 -0
  39. package/dist-server/graphql/resolvers/connection/update-multiple-connection.js +30 -0
  40. package/dist-server/graphql/resolvers/connection/update-multiple-connection.js.map +1 -0
  41. package/dist-server/graphql/resolvers/connector/connector.js +27 -0
  42. package/dist-server/graphql/resolvers/connector/connector.js.map +1 -0
  43. package/dist-server/graphql/resolvers/connector/connectors.js +28 -0
  44. package/dist-server/graphql/resolvers/connector/connectors.js.map +1 -0
  45. package/dist-server/graphql/resolvers/connector/index.js +27 -0
  46. package/dist-server/graphql/resolvers/connector/index.js.map +1 -0
  47. package/dist-server/graphql/resolvers/data/index.js +25 -0
  48. package/dist-server/graphql/resolvers/data/index.js.map +1 -0
  49. package/dist-server/graphql/resolvers/data/subscribe-data.js +34 -0
  50. package/dist-server/graphql/resolvers/data/subscribe-data.js.map +1 -0
  51. package/dist-server/graphql/resolvers/index.js +18 -0
  52. package/dist-server/graphql/resolvers/index.js.map +1 -0
  53. package/dist-server/graphql/resolvers/scenario/copy-scenarios.js +62 -0
  54. package/dist-server/graphql/resolvers/scenario/copy-scenarios.js.map +1 -0
  55. package/dist-server/graphql/resolvers/scenario/create-scenario.js +14 -0
  56. package/dist-server/graphql/resolvers/scenario/create-scenario.js.map +1 -0
  57. package/dist-server/graphql/resolvers/scenario/delete-scenario.js +12 -0
  58. package/dist-server/graphql/resolvers/scenario/delete-scenario.js.map +1 -0
  59. package/dist-server/graphql/resolvers/scenario/delete-scenarios.js +16 -0
  60. package/dist-server/graphql/resolvers/scenario/delete-scenarios.js.map +1 -0
  61. package/dist-server/graphql/resolvers/scenario/index.js +39 -0
  62. package/dist-server/graphql/resolvers/scenario/index.js.map +1 -0
  63. package/dist-server/graphql/resolvers/scenario/run-scenario.js +37 -0
  64. package/dist-server/graphql/resolvers/scenario/run-scenario.js.map +1 -0
  65. package/dist-server/graphql/resolvers/scenario/scenario-instance-log.js +41 -0
  66. package/dist-server/graphql/resolvers/scenario/scenario-instance-log.js.map +1 -0
  67. package/dist-server/graphql/resolvers/scenario/scenario-instance-query.js +44 -0
  68. package/dist-server/graphql/resolvers/scenario/scenario-instance-query.js.map +1 -0
  69. package/dist-server/graphql/resolvers/scenario/scenario-instance-state.js +50 -0
  70. package/dist-server/graphql/resolvers/scenario/scenario-instance-state.js.map +1 -0
  71. package/dist-server/graphql/resolvers/scenario/scenario-query.js +46 -0
  72. package/dist-server/graphql/resolvers/scenario/scenario-query.js.map +1 -0
  73. package/dist-server/graphql/resolvers/scenario/scenario-queue-state.js +42 -0
  74. package/dist-server/graphql/resolvers/scenario/scenario-queue-state.js.map +1 -0
  75. package/dist-server/graphql/resolvers/scenario/start-scenario.js +26 -0
  76. package/dist-server/graphql/resolvers/scenario/start-scenario.js.map +1 -0
  77. package/dist-server/graphql/resolvers/scenario/stop-scenario.js +26 -0
  78. package/dist-server/graphql/resolvers/scenario/stop-scenario.js.map +1 -0
  79. package/dist-server/graphql/resolvers/scenario/update-multiple-scenario.js +30 -0
  80. package/dist-server/graphql/resolvers/scenario/update-multiple-scenario.js.map +1 -0
  81. package/dist-server/graphql/resolvers/scenario/update-scenario.js +20 -0
  82. package/dist-server/graphql/resolvers/scenario/update-scenario.js.map +1 -0
  83. package/dist-server/graphql/resolvers/step/create-step.js +14 -0
  84. package/dist-server/graphql/resolvers/step/create-step.js.map +1 -0
  85. package/dist-server/graphql/resolvers/step/delete-step.js +12 -0
  86. package/dist-server/graphql/resolvers/step/delete-step.js.map +1 -0
  87. package/dist-server/graphql/resolvers/step/delete-steps.js +16 -0
  88. package/dist-server/graphql/resolvers/step/delete-steps.js.map +1 -0
  89. package/dist-server/graphql/resolvers/step/index.js +31 -0
  90. package/dist-server/graphql/resolvers/step/index.js.map +1 -0
  91. package/dist-server/graphql/resolvers/step/step-query.js +25 -0
  92. package/dist-server/graphql/resolvers/step/step-query.js.map +1 -0
  93. package/dist-server/graphql/resolvers/step/update-multiple-step.js +20 -0
  94. package/dist-server/graphql/resolvers/step/update-multiple-step.js.map +1 -0
  95. package/dist-server/graphql/resolvers/step/update-step.js +15 -0
  96. package/dist-server/graphql/resolvers/step/update-step.js.map +1 -0
  97. package/dist-server/graphql/resolvers/task-type/index.js +27 -0
  98. package/dist-server/graphql/resolvers/task-type/index.js.map +1 -0
  99. package/dist-server/graphql/resolvers/task-type/task-type.js +17 -0
  100. package/dist-server/graphql/resolvers/task-type/task-type.js.map +1 -0
  101. package/dist-server/graphql/resolvers/task-type/task-types.js +68 -0
  102. package/dist-server/graphql/resolvers/task-type/task-types.js.map +1 -0
  103. package/dist-server/graphql/resolvers/video/index.js +25 -0
  104. package/dist-server/graphql/resolvers/video/index.js.map +1 -0
  105. package/dist-server/graphql/resolvers/video/subscribe-video.js +20 -0
  106. package/dist-server/graphql/resolvers/video/subscribe-video.js.map +1 -0
  107. package/dist-server/graphql/types/connection/connection-list.js +14 -0
  108. package/dist-server/graphql/types/connection/connection-list.js.map +1 -0
  109. package/dist-server/graphql/types/connection/connection-patch.js +20 -0
  110. package/dist-server/graphql/types/connection/connection-patch.js.map +1 -0
  111. package/dist-server/graphql/types/connection/connection-state.js +24 -0
  112. package/dist-server/graphql/types/connection/connection-state.js.map +1 -0
  113. package/dist-server/graphql/types/connection/connection.js +25 -0
  114. package/dist-server/graphql/types/connection/connection.js.map +1 -0
  115. package/dist-server/graphql/types/connection/domain-connection.js +13 -0
  116. package/dist-server/graphql/types/connection/domain-connection.js.map +1 -0
  117. package/dist-server/graphql/types/connection/index.js +46 -0
  118. package/dist-server/graphql/types/connection/index.js.map +1 -0
  119. package/dist-server/graphql/types/connection/new-connection.js +17 -0
  120. package/dist-server/graphql/types/connection/new-connection.js.map +1 -0
  121. package/dist-server/graphql/types/connector/connector-list.js +14 -0
  122. package/dist-server/graphql/types/connector/connector-list.js.map +1 -0
  123. package/dist-server/graphql/types/connector/connector.js +17 -0
  124. package/dist-server/graphql/types/connector/connector.js.map +1 -0
  125. package/dist-server/graphql/types/connector/index.js +27 -0
  126. package/dist-server/graphql/types/connector/index.js.map +1 -0
  127. package/dist-server/graphql/types/data/data.js +15 -0
  128. package/dist-server/graphql/types/data/data.js.map +1 -0
  129. package/dist-server/graphql/types/data/index.js +24 -0
  130. package/dist-server/graphql/types/data/index.js.map +1 -0
  131. package/dist-server/graphql/types/index.js +19 -0
  132. package/dist-server/graphql/types/index.js.map +1 -0
  133. package/dist-server/graphql/types/property-spec.js +17 -0
  134. package/dist-server/graphql/types/property-spec.js.map +1 -0
  135. package/dist-server/graphql/types/scenario/domain-scenario.js +14 -0
  136. package/dist-server/graphql/types/scenario/domain-scenario.js.map +1 -0
  137. package/dist-server/graphql/types/scenario/index.js +53 -0
  138. package/dist-server/graphql/types/scenario/index.js.map +1 -0
  139. package/dist-server/graphql/types/scenario/new-scenario.js +18 -0
  140. package/dist-server/graphql/types/scenario/new-scenario.js.map +1 -0
  141. package/dist-server/graphql/types/scenario/pending-object.js +16 -0
  142. package/dist-server/graphql/types/scenario/pending-object.js.map +1 -0
  143. package/dist-server/graphql/types/scenario/scenario-instance-list.js +14 -0
  144. package/dist-server/graphql/types/scenario/scenario-instance-list.js.map +1 -0
  145. package/dist-server/graphql/types/scenario/scenario-instance.js +37 -0
  146. package/dist-server/graphql/types/scenario/scenario-instance.js.map +1 -0
  147. package/dist-server/graphql/types/scenario/scenario-list.js +14 -0
  148. package/dist-server/graphql/types/scenario/scenario-list.js.map +1 -0
  149. package/dist-server/graphql/types/scenario/scenario-patch.js +20 -0
  150. package/dist-server/graphql/types/scenario/scenario-patch.js.map +1 -0
  151. package/dist-server/graphql/types/scenario/scenario-queue-state.js +14 -0
  152. package/dist-server/graphql/types/scenario/scenario-queue-state.js.map +1 -0
  153. package/dist-server/graphql/types/scenario/scenario.js +27 -0
  154. package/dist-server/graphql/types/scenario/scenario.js.map +1 -0
  155. package/dist-server/graphql/types/step/index.js +36 -0
  156. package/dist-server/graphql/types/step/index.js.map +1 -0
  157. package/dist-server/graphql/types/step/new-step.js +20 -0
  158. package/dist-server/graphql/types/step/new-step.js.map +1 -0
  159. package/dist-server/graphql/types/step/step-list.js +14 -0
  160. package/dist-server/graphql/types/step/step-list.js.map +1 -0
  161. package/dist-server/graphql/types/step/step-patch.js +22 -0
  162. package/dist-server/graphql/types/step/step-patch.js.map +1 -0
  163. package/dist-server/graphql/types/step/step.js +27 -0
  164. package/dist-server/graphql/types/step/step.js.map +1 -0
  165. package/dist-server/graphql/types/task-type/index.js +27 -0
  166. package/dist-server/graphql/types/task-type/index.js.map +1 -0
  167. package/dist-server/graphql/types/task-type/task-type-list.js +14 -0
  168. package/dist-server/graphql/types/task-type/task-type-list.js.map +1 -0
  169. package/dist-server/graphql/types/task-type/task-type.js +17 -0
  170. package/dist-server/graphql/types/task-type/task-type.js.map +1 -0
  171. package/dist-server/graphql/types/video/index.js +24 -0
  172. package/dist-server/graphql/types/video/index.js.map +1 -0
  173. package/dist-server/graphql/types/video/video.js +17 -0
  174. package/dist-server/graphql/types/video/video.js.map +1 -0
  175. package/package.json +6 -6
@@ -0,0 +1,47 @@
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.SocketClient = 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 SocketClient {
11
+ async ready(connectionConfigs) {
12
+ await Promise.all(connectionConfigs.map(this.connect));
13
+ connection_manager_1.ConnectionManager.logger.info('socket client are ready');
14
+ }
15
+ async connect(connection) {
16
+ var em = new events_1.EventEmitter();
17
+ const [host, port] = connection.endpoint.split(':');
18
+ return new Promise((resolve, reject) => {
19
+ var client = net_1.default.connect(port, host, () => {
20
+ connection_manager_1.ConnectionManager.addConnectionInstance(connection, net_1.default);
21
+ connection_manager_1.ConnectionManager.logger.info('Client connected');
22
+ });
23
+ client.on('data', (data) => {
24
+ var message = String.fromCharCode(data);
25
+ em.emit('socket-message-arrive', message);
26
+ connection_manager_1.ConnectionManager.logger.info(`socket ${message}`);
27
+ });
28
+ client.on('close', () => {
29
+ connection_manager_1.ConnectionManager.logger.info(`[client] connection closed`);
30
+ });
31
+ });
32
+ }
33
+ async disconnect(connection) {
34
+ let socket = connection_manager_1.ConnectionManager.removeConnectionInstance(connection);
35
+ await socket.destroy();
36
+ connection_manager_1.ConnectionManager.logger.info(`socket-client connection(${connection.name}) is disconnected`);
37
+ }
38
+ get parameterSpec() {
39
+ return [];
40
+ }
41
+ get taskPrefixes() {
42
+ return ['socket-client'];
43
+ }
44
+ }
45
+ exports.SocketClient = SocketClient;
46
+ connection_manager_1.ConnectionManager.registerConnector('socket-client', new SocketClient());
47
+ //# sourceMappingURL=socket-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../../server/engine/connector/socket-client.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAqB;AAErB,8DAAyD;AACzD,mCAAqC;AAErC,MAAa,YAAY;IACvB,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACtD,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,IAAI,EAAE,GAAG,IAAI,qBAAY,EAAE,CAAA;QAC3B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;gBACxC,sCAAiB,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAG,CAAC,CAAA;gBACxD,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;gBAC9B,IAAI,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBACvC,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAA;gBACzC,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;YACpD,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAU;QACzB,IAAI,MAAM,GAAG,sCAAiB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;QAEnE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QAEtB,sCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,UAAU,CAAC,IAAI,mBAAmB,CAAC,CAAA;IAC/F,CAAC;IAED,IAAI,aAAa;QACf,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1B,CAAC;CACF;AA3CD,oCA2CC;AAED,sCAAiB,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,YAAY,EAAE,CAAC,CAAA"}
@@ -0,0 +1,283 @@
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.ScenarioInstance = exports.ScenarioInstanceStatus = void 0;
7
+ const util_1 = __importDefault(require("util"));
8
+ const winston_1 = require("winston");
9
+ require("winston-daily-rotate-file");
10
+ const shell_1 = require("@things-factory/shell");
11
+ const utils_1 = require("@things-factory/utils");
12
+ const task_registry_1 = require("./task-registry");
13
+ const types_1 = require("./types");
14
+ const cron_1 = require("cron");
15
+ const orderBy_1 = __importDefault(require("lodash/orderBy"));
16
+ const debug = require('debug')('things-factory:integration-base:scenario-instance');
17
+ const { combine, timestamp, splat, printf } = winston_1.format;
18
+ const LOGFORMAT = printf(({ level, message, timestamp }) => {
19
+ return `${timestamp} ${level}: ${message}`;
20
+ });
21
+ exports.ScenarioInstanceStatus = ['READY', 'STARTED', 'STOPPED', 'HALTED', 'UNLOADED'];
22
+ class ScenarioInstance {
23
+ constructor(instanceName, { name: scenarioName, steps, schedule = '', timezone = 'Asia/Seoul', domain }, context) {
24
+ this.subScenarioInstances = []; // TODO Imple by WeakSet
25
+ this.rounds = 0;
26
+ this.lastStep = -1;
27
+ this.nextStep = -1;
28
+ this.instanceName = instanceName;
29
+ this.scenarioName = scenarioName;
30
+ this.schedule = schedule;
31
+ this.timezone = timezone;
32
+ this.steps = orderBy_1.default(steps || [], step => step.sequence);
33
+ this.domain = domain;
34
+ this.disposer = context === null || context === void 0 ? void 0 : context.disposer;
35
+ this.context = {
36
+ domain,
37
+ logger: (context === null || context === void 0 ? void 0 : context.logger) ||
38
+ winston_1.createLogger({
39
+ format: combine(timestamp(), splat(), LOGFORMAT),
40
+ transports: [
41
+ new winston_1.transports.DailyRotateFile({
42
+ filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,
43
+ datePattern: 'YYYY-MM-DD-HH',
44
+ zippedArchive: false,
45
+ maxSize: '5m',
46
+ maxFiles: '14d',
47
+ level: 'info'
48
+ }),
49
+ new shell_1.PubSubLogTransport({
50
+ topic: 'scenario-instance-log',
51
+ source: { domain, scenarioName, instanceName }
52
+ })
53
+ ]
54
+ }),
55
+ publish: (context === null || context === void 0 ? void 0 : context.publish) || this.publishData.bind(this),
56
+ load: (context === null || context === void 0 ? void 0 : context.load) || this.loadSubscenario.bind(this),
57
+ data: (context === null || context === void 0 ? void 0 : context.data) || {},
58
+ variables: (context === null || context === void 0 ? void 0 : context.variables) || {},
59
+ client: context === null || context === void 0 ? void 0 : context.client,
60
+ state: types_1.SCENARIO_STATE.STOPPED,
61
+ root: (context === null || context === void 0 ? void 0 : context.root) || this,
62
+ closures: [],
63
+ checkState(state = types_1.SCENARIO_STATE.STARTED) {
64
+ return this.state == state;
65
+ }
66
+ };
67
+ this.setState(types_1.SCENARIO_STATE.READY);
68
+ }
69
+ addSubScenarioInstance(instance) {
70
+ this.subScenarioInstances.push(instance);
71
+ return this.subScenarioInstances;
72
+ }
73
+ getSubScenarioInstances() {
74
+ return this.subScenarioInstances;
75
+ }
76
+ async stopSubScenarios() {
77
+ var subScenarioInstances = this.getSubScenarioInstances();
78
+ var subInstance = subScenarioInstances.pop();
79
+ while (subInstance) {
80
+ await subInstance.dispose();
81
+ subInstance = subScenarioInstances.pop();
82
+ }
83
+ }
84
+ serialize() {
85
+ const { instanceName, scenarioName, schedule, timezone, steps, domain, context: { data, variables, client, state } } = this;
86
+ return {
87
+ instanceName,
88
+ scenarioName,
89
+ schedule,
90
+ timezone,
91
+ steps,
92
+ domain,
93
+ context: {
94
+ domain,
95
+ data,
96
+ variables,
97
+ client,
98
+ state
99
+ }
100
+ };
101
+ }
102
+ async run() {
103
+ var state = this.getState();
104
+ if (state == types_1.SCENARIO_STATE.STARTED || this.steps.length == 0) {
105
+ return;
106
+ }
107
+ this.setState(types_1.SCENARIO_STATE.STARTED);
108
+ var context = this.context;
109
+ try {
110
+ while (this.getState() == types_1.SCENARIO_STATE.STARTED) {
111
+ if (this.nextStep == -1) {
112
+ this.setNextStep(0);
113
+ }
114
+ if (this.nextStep == 0) {
115
+ this.rounds++;
116
+ this.context.logger.info(`Start ${this.rounds} Rounds #######`);
117
+ }
118
+ var step = this.steps[this.nextStep];
119
+ var next, data;
120
+ if (!step.skip) {
121
+ // @ts-ignore: Initializer provides no value for this binding element and the binding element has no default value.
122
+ var { next, state: stepState, data } = (await this.process(step, context)) || {};
123
+ context.data[step.name] = data;
124
+ }
125
+ else {
126
+ next = '';
127
+ stepState = undefined;
128
+ }
129
+ this.publishState();
130
+ await utils_1.sleep(1);
131
+ if (next) {
132
+ this.setNextStep(this.steps.findIndex(step => {
133
+ return step.name == next;
134
+ }));
135
+ if (this.nextStep == -1) {
136
+ throw 'Not Found Next Step';
137
+ }
138
+ }
139
+ else if (this.nextStep == this.steps.length - 1) {
140
+ this.setState(types_1.SCENARIO_STATE.STOPPED);
141
+ }
142
+ else {
143
+ this.setNextStep(this.nextStep + 1);
144
+ }
145
+ /* last step 에 의해서 시나리오 state를 변경할 수 있도록 함. */
146
+ if (stepState !== undefined) {
147
+ this.setState(stepState);
148
+ }
149
+ }
150
+ }
151
+ catch (ex) {
152
+ let message = ex.stack ? ex.stack : ex;
153
+ debug('run', ex);
154
+ this.setState(types_1.SCENARIO_STATE.HALTED, typeof message == 'object' ? JSON.stringify(message, null, 2) : message);
155
+ }
156
+ }
157
+ async loadSubscenario(step, scenarioConfig, context) {
158
+ var { name: stepName, params } = step;
159
+ var { preventErrorPropagation } = params || {};
160
+ debug('load-subscenario', this.instanceName, stepName, scenarioConfig.name);
161
+ context.data[stepName] = {};
162
+ let subContext = Object.assign(Object.assign({}, context), { data: context.data[stepName], closures: [], state: types_1.SCENARIO_STATE.READY });
163
+ if (!scenarioConfig.domain) {
164
+ scenarioConfig.domain = context.domain;
165
+ }
166
+ var subScenarioInstance = new ScenarioInstance(`${this.instanceName}$${stepName}`, scenarioConfig, subContext);
167
+ this.addSubScenarioInstance(subScenarioInstance);
168
+ await subScenarioInstance.run();
169
+ if (!preventErrorPropagation && subScenarioInstance.getState() == types_1.SCENARIO_STATE.HALTED) {
170
+ throw new Error(`Sub-scenario[${this.instanceName}$${stepName}] is halted.`);
171
+ }
172
+ return subContext;
173
+ }
174
+ publishData(tag, data) {
175
+ shell_1.pubsub.publish('data', {
176
+ data: {
177
+ domain: this.context.domain,
178
+ tag,
179
+ data
180
+ }
181
+ });
182
+ }
183
+ publishState() {
184
+ shell_1.pubsub.publish('scenario-instance-state', {
185
+ scenarioInstanceState: this.serialize()
186
+ });
187
+ this.context.logger.info(this.message);
188
+ }
189
+ get progress() {
190
+ var steps = this.steps.length;
191
+ var step = Math.max(this.lastStep, 0);
192
+ return {
193
+ rounds: this.rounds,
194
+ rate: steps ? Math.round(100 * (step / steps)) : 0,
195
+ steps,
196
+ step
197
+ };
198
+ }
199
+ setNextStep(step) {
200
+ this.lastStep = this.nextStep + 1;
201
+ this.nextStep = step;
202
+ }
203
+ getState() {
204
+ return this.context.state;
205
+ }
206
+ setState(state, message) {
207
+ if (this.context.state == state) {
208
+ return;
209
+ }
210
+ this.message = `${this.instanceName}:[state changed] ${exports.ScenarioInstanceStatus[this.getState()]} => ${exports.ScenarioInstanceStatus[state]}${message ? ' caused by ' + util_1.default.inspect(message, false, 2, true) : ''}`;
211
+ this.context.state = state;
212
+ if (state == types_1.SCENARIO_STATE.STOPPED || state == types_1.SCENARIO_STATE.HALTED) {
213
+ this.setNextStep(-1);
214
+ if (!this.cronjob) {
215
+ this.setState(types_1.SCENARIO_STATE.UNLOADED);
216
+ }
217
+ }
218
+ else if (state == types_1.SCENARIO_STATE.UNLOADED) {
219
+ this.setNextStep(-1);
220
+ this.dispose();
221
+ }
222
+ this.publishState();
223
+ }
224
+ start() {
225
+ if (this.schedule) {
226
+ if (!this.cronjob) {
227
+ this.cronjob = new cron_1.CronJob(this.schedule, this.run.bind(this), null, true, this.timezone);
228
+ }
229
+ }
230
+ else {
231
+ this.run();
232
+ }
233
+ }
234
+ stop() {
235
+ if (this.getState() !== types_1.SCENARIO_STATE.HALTED) {
236
+ this.setState(types_1.SCENARIO_STATE.STOPPED);
237
+ }
238
+ }
239
+ unload() {
240
+ this.setState(types_1.SCENARIO_STATE.UNLOADED);
241
+ }
242
+ async dispose() {
243
+ var _a, _b, _c, _d;
244
+ if (this.cronjob) {
245
+ this.cronjob.stop();
246
+ delete this.cronjob;
247
+ }
248
+ await this.stopSubScenarios();
249
+ this.unload();
250
+ var closure = (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.closures) === null || _b === void 0 ? void 0 : _b.pop();
251
+ while (closure) {
252
+ closure.call(this);
253
+ closure = (_d = (_c = this.context) === null || _c === void 0 ? void 0 : _c.closures) === null || _d === void 0 ? void 0 : _d.pop();
254
+ }
255
+ if (this.disposer) {
256
+ await this.disposer.call(this);
257
+ }
258
+ }
259
+ async process(step, context) {
260
+ this.context.logger.info(`Step '${step.name}'(${step.id}) started.`);
261
+ step = Object.assign({}, step); // copy step
262
+ try {
263
+ step.params = JSON.parse(step.params);
264
+ }
265
+ catch (ex) {
266
+ this.context.logger.error(`params(${step.params}) parsing error. params must be a JSON.`);
267
+ }
268
+ step.params = step.params || {};
269
+ var handler = task_registry_1.TaskRegistry.getTaskHandler(step.task);
270
+ if (!handler) {
271
+ throw new Error(`no task handler for step '${step.name}'(${step.id})`);
272
+ }
273
+ var retval = await handler(step, context);
274
+ if (step.log) {
275
+ var { data } = retval || {};
276
+ this.context.logger.info(`returns ${typeof data == 'string' ? data : JSON.stringify(data, null, 2)}`);
277
+ }
278
+ this.context.logger.info(`Step done.`);
279
+ return retval;
280
+ }
281
+ }
282
+ exports.ScenarioInstance = ScenarioInstance;
283
+ //# sourceMappingURL=scenario-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-instance.js","sourceRoot":"","sources":["../../server/engine/scenario-instance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var _a, _b, _c;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.Connection = void 0;
14
+ const typeorm_1 = require("typeorm");
15
+ const shell_1 = require("@things-factory/shell");
16
+ const auth_base_1 = require("@things-factory/auth-base");
17
+ const engine_1 = require("../engine");
18
+ let Connection = class Connection {
19
+ async connect() {
20
+ var connector = engine_1.ConnectionManager.getConnector(this.type);
21
+ var params = {};
22
+ try {
23
+ params = JSON.parse(this.params || '{}');
24
+ }
25
+ catch (ex) {
26
+ console.error(`connection '${this.name}' params should be JSON format`, ex);
27
+ }
28
+ await connector.connect(Object.assign(Object.assign({}, this), { params }));
29
+ }
30
+ async disconnect() {
31
+ try {
32
+ var connector = engine_1.ConnectionManager.getConnector(this.type);
33
+ await connector.disconnect(this);
34
+ }
35
+ finally {
36
+ }
37
+ }
38
+ };
39
+ __decorate([
40
+ typeorm_1.PrimaryGeneratedColumn('uuid'),
41
+ __metadata("design:type", String)
42
+ ], Connection.prototype, "id", void 0);
43
+ __decorate([
44
+ typeorm_1.ManyToOne(type => shell_1.Domain),
45
+ __metadata("design:type", typeof (_a = typeof shell_1.Domain !== "undefined" && shell_1.Domain) === "function" ? _a : Object)
46
+ ], Connection.prototype, "domain", void 0);
47
+ __decorate([
48
+ typeorm_1.Column(),
49
+ __metadata("design:type", String)
50
+ ], Connection.prototype, "name", void 0);
51
+ __decorate([
52
+ typeorm_1.Column({
53
+ nullable: true
54
+ }),
55
+ __metadata("design:type", String)
56
+ ], Connection.prototype, "description", void 0);
57
+ __decorate([
58
+ typeorm_1.Column(),
59
+ __metadata("design:type", String)
60
+ ], Connection.prototype, "type", void 0);
61
+ __decorate([
62
+ typeorm_1.Column(),
63
+ __metadata("design:type", String)
64
+ ], Connection.prototype, "endpoint", void 0);
65
+ __decorate([
66
+ typeorm_1.Column({
67
+ nullable: true
68
+ }),
69
+ __metadata("design:type", Boolean)
70
+ ], Connection.prototype, "active", void 0);
71
+ __decorate([
72
+ typeorm_1.Column({
73
+ nullable: true
74
+ }),
75
+ __metadata("design:type", String)
76
+ ], Connection.prototype, "params", void 0);
77
+ __decorate([
78
+ typeorm_1.CreateDateColumn(),
79
+ __metadata("design:type", Date)
80
+ ], Connection.prototype, "createdAt", void 0);
81
+ __decorate([
82
+ typeorm_1.UpdateDateColumn(),
83
+ __metadata("design:type", Date)
84
+ ], Connection.prototype, "updatedAt", void 0);
85
+ __decorate([
86
+ typeorm_1.ManyToOne(type => auth_base_1.User, {
87
+ nullable: true
88
+ }),
89
+ __metadata("design:type", typeof (_b = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _b : Object)
90
+ ], Connection.prototype, "creator", void 0);
91
+ __decorate([
92
+ typeorm_1.ManyToOne(type => auth_base_1.User, {
93
+ nullable: true
94
+ }),
95
+ __metadata("design:type", typeof (_c = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _c : Object)
96
+ ], Connection.prototype, "updater", void 0);
97
+ Connection = __decorate([
98
+ typeorm_1.Entity(),
99
+ typeorm_1.Index('ix_connection_0', (connection) => [connection.domain, connection.name], { unique: true })
100
+ ], Connection);
101
+ exports.Connection = Connection;
102
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../server/entities/connection.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCASgB;AAChB,iDAA8C;AAC9C,yDAAgD;AAEhD,sCAA6C;AAI7C,IAAa,UAAU,GAAvB,MAAa,UAAU;IA+CrB,KAAK,CAAC,OAAO;QACX,IAAI,SAAS,GAAG,0BAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzD,IAAI,MAAM,GAAG,EAAE,CAAA;QAEf,IAAI;YACF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAA;SACzC;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,IAAI,gCAAgC,EAAE,EAAE,CAAC,CAAA;SAC5E;QAED,MAAM,SAAS,CAAC,OAAO,iCAClB,IAAI,KACP,MAAM,IACN,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI;YACF,IAAI,SAAS,GAAG,0BAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzD,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;SACjC;gBAAS;SACT;IACH,CAAC;CACF,CAAA;AApEC;IADC,gCAAsB,CAAC,MAAM,CAAC;;sCACrB;AAGV;IADC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;kDAClB,cAAM,oBAAN,cAAM;0CAAA;AAGd;IADC,gBAAM,EAAE;;wCACG;AAKZ;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;+CACiB;AAGnB;IADC,gBAAM,EAAE;;wCACG;AAGZ;IADC,gBAAM,EAAE;;4CACO;AAKhB;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;0CACa;AAKf;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;0CACY;AAGd;IADC,0BAAgB,EAAE;8BACR,IAAI;6CAAA;AAGf;IADC,0BAAgB,EAAE;8BACR,IAAI;6CAAA;AAKf;IAHC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;2CAAA;AAKb;IAHC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;2CAAA;AA7CF,UAAU;IAFtB,gBAAM,EAAE;IACR,eAAK,CAAC,iBAAiB,EAAE,CAAC,UAAsB,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GAChG,UAAU,CAsEtB;AAtEY,gCAAU"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Step = exports.Scenario = exports.Connection = exports.entities = void 0;
4
+ const connection_1 = require("./connection");
5
+ Object.defineProperty(exports, "Connection", { enumerable: true, get: function () { return connection_1.Connection; } });
6
+ const scenario_1 = require("./scenario");
7
+ Object.defineProperty(exports, "Scenario", { enumerable: true, get: function () { return scenario_1.Scenario; } });
8
+ const step_1 = require("./step");
9
+ Object.defineProperty(exports, "Step", { enumerable: true, get: function () { return step_1.Step; } });
10
+ exports.entities = [connection_1.Connection, scenario_1.Scenario, step_1.Step];
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/entities/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAMhC,2FANA,uBAAU,OAMA;AALnB,yCAAqC;AAKhB,yFALZ,mBAAQ,OAKY;AAJ7B,iCAA6B;AAIE,qFAJtB,WAAI,OAIsB;AAFtB,QAAA,QAAQ,GAAG,CAAC,uBAAU,EAAE,mBAAQ,EAAE,WAAI,CAAC,CAAA"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var _a;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ScenarioFlow = void 0;
14
+ const shell_1 = require("@things-factory/shell");
15
+ const typeorm_1 = require("typeorm");
16
+ let ScenarioFlow = class ScenarioFlow {
17
+ };
18
+ __decorate([
19
+ typeorm_1.PrimaryGeneratedColumn('uuid'),
20
+ __metadata("design:type", String)
21
+ ], ScenarioFlow.prototype, "id", void 0);
22
+ __decorate([
23
+ typeorm_1.ManyToOne(type => shell_1.Domain),
24
+ __metadata("design:type", typeof (_a = typeof shell_1.Domain !== "undefined" && shell_1.Domain) === "function" ? _a : Object)
25
+ ], ScenarioFlow.prototype, "domain", void 0);
26
+ __decorate([
27
+ typeorm_1.Column({
28
+ nullable: true
29
+ }),
30
+ __metadata("design:type", String)
31
+ ], ScenarioFlow.prototype, "flow", void 0);
32
+ ScenarioFlow = __decorate([
33
+ typeorm_1.Entity(),
34
+ typeorm_1.Index('ix_scenario_flows_0', (scenarioFlow) => [scenarioFlow.domain], { unique: true })
35
+ ], ScenarioFlow);
36
+ exports.ScenarioFlow = ScenarioFlow;
37
+ //# sourceMappingURL=scenario-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-flow.js","sourceRoot":"","sources":["../../server/entities/scenario-flow.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iDAA8C;AAC9C,qCAAkF;AAIlF,IAAa,YAAY,GAAzB,MAAa,YAAY;CAWxB,CAAA;AATC;IADC,gCAAsB,CAAC,MAAM,CAAC;;wCACrB;AAGV;IADC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;kDAClB,cAAM,oBAAN,cAAM;4CAAA;AAKd;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;0CACU;AAVD,YAAY;IAFxB,gBAAM,EAAE;IACR,eAAK,CAAC,qBAAqB,EAAE,CAAC,YAA0B,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GACzF,YAAY,CAWxB;AAXY,oCAAY"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var _a, _b, _c;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.Scenario = void 0;
14
+ const typeorm_1 = require("typeorm");
15
+ const shell_1 = require("@things-factory/shell");
16
+ const auth_base_1 = require("@things-factory/auth-base");
17
+ const step_1 = require("./step");
18
+ const engine_1 = require("../engine");
19
+ let Scenario = class Scenario {
20
+ async start(instanceName, variables) {
21
+ try {
22
+ await engine_1.ScenarioEngine.load(instanceName || this.name, this, { variables });
23
+ }
24
+ catch (ex) { }
25
+ }
26
+ async stop(instanceName) {
27
+ try {
28
+ await engine_1.ScenarioEngine.unload(this.domain, instanceName || this.name);
29
+ }
30
+ finally {
31
+ }
32
+ }
33
+ };
34
+ __decorate([
35
+ typeorm_1.PrimaryGeneratedColumn('uuid'),
36
+ __metadata("design:type", String)
37
+ ], Scenario.prototype, "id", void 0);
38
+ __decorate([
39
+ typeorm_1.ManyToOne(type => shell_1.Domain),
40
+ __metadata("design:type", typeof (_a = typeof shell_1.Domain !== "undefined" && shell_1.Domain) === "function" ? _a : Object)
41
+ ], Scenario.prototype, "domain", void 0);
42
+ __decorate([
43
+ typeorm_1.Column(),
44
+ __metadata("design:type", String)
45
+ ], Scenario.prototype, "name", void 0);
46
+ __decorate([
47
+ typeorm_1.Column({
48
+ nullable: true
49
+ }),
50
+ __metadata("design:type", String)
51
+ ], Scenario.prototype, "description", void 0);
52
+ __decorate([
53
+ typeorm_1.Column({
54
+ nullable: true
55
+ }),
56
+ __metadata("design:type", String)
57
+ ], Scenario.prototype, "type", void 0);
58
+ __decorate([
59
+ typeorm_1.Column({
60
+ nullable: true
61
+ }),
62
+ __metadata("design:type", Boolean)
63
+ ], Scenario.prototype, "active", void 0);
64
+ __decorate([
65
+ typeorm_1.Column({
66
+ nullable: true
67
+ }),
68
+ __metadata("design:type", String)
69
+ ], Scenario.prototype, "schedule", void 0);
70
+ __decorate([
71
+ typeorm_1.Column({
72
+ nullable: true
73
+ }),
74
+ __metadata("design:type", String)
75
+ ], Scenario.prototype, "timezone", void 0);
76
+ __decorate([
77
+ typeorm_1.OneToMany(type => step_1.Step, step => step.scenario),
78
+ __metadata("design:type", Array)
79
+ ], Scenario.prototype, "steps", void 0);
80
+ __decorate([
81
+ typeorm_1.CreateDateColumn(),
82
+ __metadata("design:type", Date)
83
+ ], Scenario.prototype, "createdAt", void 0);
84
+ __decorate([
85
+ typeorm_1.UpdateDateColumn(),
86
+ __metadata("design:type", Date)
87
+ ], Scenario.prototype, "updatedAt", void 0);
88
+ __decorate([
89
+ typeorm_1.ManyToOne(type => auth_base_1.User, {
90
+ nullable: true
91
+ }),
92
+ __metadata("design:type", typeof (_b = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _b : Object)
93
+ ], Scenario.prototype, "creator", void 0);
94
+ __decorate([
95
+ typeorm_1.ManyToOne(type => auth_base_1.User, {
96
+ nullable: true
97
+ }),
98
+ __metadata("design:type", typeof (_c = typeof auth_base_1.User !== "undefined" && auth_base_1.User) === "function" ? _c : Object)
99
+ ], Scenario.prototype, "updater", void 0);
100
+ Scenario = __decorate([
101
+ typeorm_1.Entity(),
102
+ typeorm_1.Index('ix_scenario_0', (scenario) => [scenario.domain, scenario.name], { unique: true })
103
+ ], Scenario);
104
+ exports.Scenario = Scenario;
105
+ //# sourceMappingURL=scenario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../server/entities/scenario.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCASgB;AAChB,iDAA8C;AAC9C,yDAAgD;AAChD,iCAA6B;AAE7B,sCAA0C;AAI1C,IAAa,QAAQ,GAArB,MAAa,QAAQ;IAsDnB,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,SAAe;QACvC,IAAI;YACF,MAAM,uBAAc,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;SAC1E;QAAC,OAAO,EAAE,EAAE,GAAE;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,YAAa;QACtB,IAAI;YACF,MAAM,uBAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;SACpE;gBAAS;SACT;IACH,CAAC;CACF,CAAA;AAhEC;IADC,gCAAsB,CAAC,MAAM,CAAC;;oCACrB;AAGV;IADC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;kDAClB,cAAM,oBAAN,cAAM;wCAAA;AAGd;IADC,gBAAM,EAAE;;sCACG;AAKZ;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;6CACiB;AAKnB;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;sCACU;AAKZ;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;wCACa;AAKf;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;0CACc;AAKhB;IAHC,gBAAM,CAAC;QACN,QAAQ,EAAE,IAAI;KACf,CAAC;;0CACc;AAGhB;IADC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,WAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;;uCAClC;AAGb;IADC,0BAAgB,EAAE;8BACR,IAAI;2CAAA;AAGf;IADC,0BAAgB,EAAE;8BACR,IAAI;2CAAA;AAKf;IAHC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;yCAAA;AAKb;IAHC,mBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;kDACO,gBAAI,oBAAJ,gBAAI;yCAAA;AApDF,QAAQ;IAFpB,gBAAM,EAAE;IACR,eAAK,CAAC,eAAe,EAAE,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GACtF,QAAQ,CAkEpB;AAlEY,4BAAQ"}