@things-factory/integration-base 9.0.0-beta.8 → 9.0.0

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 (157) hide show
  1. package/dist-server/controllers/publish-data.js +7 -2
  2. package/dist-server/controllers/publish-data.js.map +1 -1
  3. package/dist-server/engine/analyzer/analyze-integration.js +1 -1
  4. package/dist-server/engine/analyzer/analyze-integration.js.map +1 -1
  5. package/dist-server/engine/connection-manager.js +41 -40
  6. package/dist-server/engine/connection-manager.js.map +1 -1
  7. package/dist-server/engine/connector/graphql-connector.js +4 -1
  8. package/dist-server/engine/connector/graphql-connector.js.map +1 -1
  9. package/dist-server/engine/connector/headless-connector.js +1 -2
  10. package/dist-server/engine/connector/headless-connector.js.map +1 -1
  11. package/dist-server/engine/connector/http-connector.js +5 -1
  12. package/dist-server/engine/connector/http-connector.js.map +1 -1
  13. package/dist-server/engine/connector/operato-connector.js +10 -8
  14. package/dist-server/engine/connector/operato-connector.js.map +1 -1
  15. package/dist-server/engine/connector/oracle-connector.js +2 -2
  16. package/dist-server/engine/connector/oracle-connector.js.map +1 -1
  17. package/dist-server/engine/connector/postgresql-connector.js +3 -3
  18. package/dist-server/engine/connector/postgresql-connector.js.map +1 -1
  19. package/dist-server/engine/connector/proxy-connector.js +1 -1
  20. package/dist-server/engine/connector/proxy-connector.js.map +1 -1
  21. package/dist-server/engine/index.d.ts +2 -2
  22. package/dist-server/engine/index.js +2 -2
  23. package/dist-server/engine/index.js.map +1 -1
  24. package/dist-server/engine/scenario-engine.js +10 -7
  25. package/dist-server/engine/scenario-engine.js.map +1 -1
  26. package/dist-server/engine/task/headless-post.js +3 -1
  27. package/dist-server/engine/task/headless-post.js.map +1 -1
  28. package/dist-server/engine/task/headless-scrap.js +36 -4
  29. package/dist-server/engine/task/headless-scrap.js.map +1 -1
  30. package/dist-server/engine/task/http-get.js +4 -1
  31. package/dist-server/engine/task/http-get.js.map +1 -1
  32. package/dist-server/engine/task/http-post.js +4 -1
  33. package/dist-server/engine/task/http-post.js.map +1 -1
  34. package/dist-server/engine/task/mqtt-publish.js +29 -6
  35. package/dist-server/engine/task/mqtt-publish.js.map +1 -1
  36. package/dist-server/engine/task/mqtt-subscribe.d.ts +84 -0
  37. package/dist-server/engine/task/mqtt-subscribe.js +197 -79
  38. package/dist-server/engine/task/mqtt-subscribe.js.map +1 -1
  39. package/dist-server/engine/task/mssql-procedure.js +1 -1
  40. package/dist-server/engine/task/mssql-procedure.js.map +1 -1
  41. package/dist-server/engine/task/oracle-procedure.js +10 -10
  42. package/dist-server/engine/task/oracle-procedure.js.map +1 -1
  43. package/dist-server/engine/task/pick-pending-scenario.js +5 -1
  44. package/dist-server/engine/task/pick-pending-scenario.js.map +1 -1
  45. package/dist-server/engine/task/state-group-read.js +1 -2
  46. package/dist-server/engine/task/state-group-read.js.map +1 -1
  47. package/dist-server/engine/task/state-read.js +1 -2
  48. package/dist-server/engine/task/state-read.js.map +1 -1
  49. package/dist-server/engine/task/state-write.js +1 -2
  50. package/dist-server/engine/task/state-write.js.map +1 -1
  51. package/dist-server/engine/task/stop-scenario.js +3 -3
  52. package/dist-server/engine/task/stop-scenario.js.map +1 -1
  53. package/dist-server/engine/task/sub-scenario.js +5 -2
  54. package/dist-server/engine/task/sub-scenario.js.map +1 -1
  55. package/dist-server/engine/task/switch-range-scenario.js +5 -2
  56. package/dist-server/engine/task/switch-range-scenario.js.map +1 -1
  57. package/dist-server/engine/task/switch-scenario.js +5 -2
  58. package/dist-server/engine/task/switch-scenario.js.map +1 -1
  59. package/dist-server/engine/task/variables.js +1 -1
  60. package/dist-server/engine/task/variables.js.map +1 -1
  61. package/dist-server/engine/task-registry.js +4 -2
  62. package/dist-server/engine/task-registry.js.map +1 -1
  63. package/dist-server/index.d.ts +6 -6
  64. package/dist-server/index.js +10 -10
  65. package/dist-server/index.js.map +1 -1
  66. package/dist-server/routers/scenario-schedule-callback-router.js +2 -2
  67. package/dist-server/routers/scenario-schedule-callback-router.js.map +1 -1
  68. package/dist-server/routes.js +8 -7
  69. package/dist-server/routes.js.map +1 -1
  70. package/dist-server/service/analysis/analysis-query.d.ts +3 -0
  71. package/dist-server/service/analysis/analysis-query.js +6 -1
  72. package/dist-server/service/analysis/analysis-query.js.map +1 -1
  73. package/dist-server/service/connection/connection-mutation.d.ts +3 -1
  74. package/dist-server/service/connection/connection-mutation.js +69 -21
  75. package/dist-server/service/connection/connection-mutation.js.map +1 -1
  76. package/dist-server/service/connection/connection-query.d.ts +3 -0
  77. package/dist-server/service/connection/connection-query.js +22 -6
  78. package/dist-server/service/connection/connection-query.js.map +1 -1
  79. package/dist-server/service/connection/connection-subscription.js +14 -8
  80. package/dist-server/service/connection/connection-subscription.js.map +1 -1
  81. package/dist-server/service/connection/connection-type.d.ts +15 -4
  82. package/dist-server/service/connection/connection-type.js +78 -58
  83. package/dist-server/service/connection/connection-type.js.map +1 -1
  84. package/dist-server/service/connector/connector-query.d.ts +4 -1
  85. package/dist-server/service/connector/connector-query.js +8 -5
  86. package/dist-server/service/connector/connector-query.js.map +1 -1
  87. package/dist-server/service/connector/connector-type.js +12 -9
  88. package/dist-server/service/connector/connector-type.js.map +1 -1
  89. package/dist-server/service/payload-log/payload-log-mutation.js +30 -12
  90. package/dist-server/service/payload-log/payload-log-mutation.js.map +1 -1
  91. package/dist-server/service/payload-log/payload-log-query.d.ts +3 -0
  92. package/dist-server/service/payload-log/payload-log-query.js +5 -2
  93. package/dist-server/service/payload-log/payload-log-query.js.map +1 -1
  94. package/dist-server/service/payload-log/payload-log-type.js +11 -11
  95. package/dist-server/service/payload-log/payload-log-type.js.map +1 -1
  96. package/dist-server/service/payload-log/payload-log.d.ts +1 -1
  97. package/dist-server/service/payload-log/payload-log.js +18 -14
  98. package/dist-server/service/payload-log/payload-log.js.map +1 -1
  99. package/dist-server/service/property-spec.js +12 -7
  100. package/dist-server/service/property-spec.js.map +1 -1
  101. package/dist-server/service/scenario/scenario-mutation.js +71 -26
  102. package/dist-server/service/scenario/scenario-mutation.js.map +1 -1
  103. package/dist-server/service/scenario/scenario-query.d.ts +3 -0
  104. package/dist-server/service/scenario/scenario-query.js +7 -5
  105. package/dist-server/service/scenario/scenario-query.js.map +1 -1
  106. package/dist-server/service/scenario/scenario-type.js +27 -24
  107. package/dist-server/service/scenario/scenario-type.js.map +1 -1
  108. package/dist-server/service/scenario/scenario.js +27 -24
  109. package/dist-server/service/scenario/scenario.js.map +1 -1
  110. package/dist-server/service/scenario-instance/scenario-instance-mutation.js +8 -3
  111. package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -1
  112. package/dist-server/service/scenario-instance/scenario-instance-query.d.ts +3 -0
  113. package/dist-server/service/scenario-instance/scenario-instance-query.js +5 -2
  114. package/dist-server/service/scenario-instance/scenario-instance-query.js.map +1 -1
  115. package/dist-server/service/scenario-instance/scenario-instance-subscription.js +10 -9
  116. package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +1 -1
  117. package/dist-server/service/scenario-instance/scenario-instance-type.js +76 -71
  118. package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
  119. package/dist-server/service/scenario-queue/scenario-queue-subscription.js +4 -4
  120. package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +1 -1
  121. package/dist-server/service/scenario-queue/scenario-queue-type.js +8 -8
  122. package/dist-server/service/scenario-queue/scenario-queue-type.js.map +1 -1
  123. package/dist-server/service/state-register/data-resolver.js +3 -4
  124. package/dist-server/service/state-register/data-resolver.js.map +1 -1
  125. package/dist-server/service/state-register/state-register-mutation.js +41 -16
  126. package/dist-server/service/state-register/state-register-mutation.js.map +1 -1
  127. package/dist-server/service/state-register/state-register-query.d.ts +3 -0
  128. package/dist-server/service/state-register/state-register-query.js +7 -4
  129. package/dist-server/service/state-register/state-register-query.js.map +1 -1
  130. package/dist-server/service/state-register/state-register-type.js +3 -3
  131. package/dist-server/service/state-register/state-register-type.js.map +1 -1
  132. package/dist-server/service/state-register/state-register.js +4 -2
  133. package/dist-server/service/state-register/state-register.js.map +1 -1
  134. package/dist-server/service/step/step-mutation.js +13 -5
  135. package/dist-server/service/step/step-mutation.js.map +1 -1
  136. package/dist-server/service/step/step-query.d.ts +3 -0
  137. package/dist-server/service/step/step-query.js +5 -2
  138. package/dist-server/service/step/step-query.js.map +1 -1
  139. package/dist-server/service/step/step-type.d.ts +11 -3
  140. package/dist-server/service/step/step-type.js +54 -35
  141. package/dist-server/service/step/step-type.js.map +1 -1
  142. package/dist-server/service/task-type/task-type-query.js +5 -3
  143. package/dist-server/service/task-type/task-type-query.js.map +1 -1
  144. package/dist-server/service/task-type/task-type-type.js +12 -9
  145. package/dist-server/service/task-type/task-type-type.js.map +1 -1
  146. package/dist-server/tsconfig.tsbuildinfo +1 -1
  147. package/helps/integration/task/headless-scrap.ja.md +11 -4
  148. package/helps/integration/task/headless-scrap.ko.md +12 -5
  149. package/helps/integration/task/headless-scrap.md +10 -3
  150. package/helps/integration/task/headless-scrap.ms.md +9 -2
  151. package/helps/integration/task/headless-scrap.zh.md +9 -2
  152. package/package.json +12 -12
  153. package/translations/en.json +6 -1
  154. package/translations/ja.json +6 -1
  155. package/translations/ko.json +6 -1
  156. package/translations/ms.json +6 -1
  157. package/translations/zh.json +6 -1
@@ -11,17 +11,17 @@ const step_type_1 = require("../step/step-type");
11
11
  let Scenario = class Scenario {
12
12
  async start(options) {
13
13
  try {
14
- await engine_1.ScenarioEngine.load((options === null || options === void 0 ? void 0 : options.instanceName) || this.name, this, {
15
- domain: (options === null || options === void 0 ? void 0 : options.domain) || this.domain,
16
- user: (options === null || options === void 0 ? void 0 : options.user) || this.updater,
17
- variables: options === null || options === void 0 ? void 0 : options.variables
14
+ await engine_1.ScenarioEngine.load(options?.instanceName || this.name, this, {
15
+ domain: options?.domain || this.domain,
16
+ user: options?.user || this.updater,
17
+ variables: options?.variables
18
18
  });
19
19
  }
20
20
  catch (ex) { }
21
21
  }
22
22
  async stop(options) {
23
23
  try {
24
- await engine_1.ScenarioEngine.unload((options === null || options === void 0 ? void 0 : options.domain) || this.domain, (options === null || options === void 0 ? void 0 : options.instanceName) || this.name);
24
+ await engine_1.ScenarioEngine.unload(options?.domain || this.domain, options?.instanceName || this.name);
25
25
  }
26
26
  finally {
27
27
  }
@@ -30,12 +30,12 @@ let Scenario = class Scenario {
30
30
  exports.Scenario = Scenario;
31
31
  tslib_1.__decorate([
32
32
  (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
33
- (0, type_graphql_1.Field)(type => type_graphql_1.ID),
33
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'Unique identifier for the scenario.' }),
34
34
  tslib_1.__metadata("design:type", String)
35
35
  ], Scenario.prototype, "id", void 0);
36
36
  tslib_1.__decorate([
37
37
  (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
38
- (0, type_graphql_1.Field)(type => shell_1.Domain),
38
+ (0, type_graphql_1.Field)(type => shell_1.Domain, { description: 'The domain to which this scenario belongs.' }),
39
39
  tslib_1.__metadata("design:type", shell_1.Domain)
40
40
  ], Scenario.prototype, "domain", void 0);
41
41
  tslib_1.__decorate([
@@ -44,62 +44,65 @@ tslib_1.__decorate([
44
44
  ], Scenario.prototype, "domainId", void 0);
45
45
  tslib_1.__decorate([
46
46
  (0, typeorm_1.Column)(),
47
- (0, type_graphql_1.Field)(),
47
+ (0, type_graphql_1.Field)({ description: 'The name of the scenario.' }),
48
48
  tslib_1.__metadata("design:type", String)
49
49
  ], Scenario.prototype, "name", void 0);
50
50
  tslib_1.__decorate([
51
51
  (0, typeorm_1.Column)({ nullable: true }),
52
- (0, type_graphql_1.Field)({ nullable: true }),
52
+ (0, type_graphql_1.Field)({ nullable: true, description: 'A detailed description of the scenario.' }),
53
53
  tslib_1.__metadata("design:type", String)
54
54
  ], Scenario.prototype, "description", void 0);
55
55
  tslib_1.__decorate([
56
56
  (0, typeorm_1.Column)({ nullable: true }),
57
- (0, type_graphql_1.Field)({ nullable: true }),
57
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The type of the scenario, used for categorization.' }),
58
58
  tslib_1.__metadata("design:type", String)
59
59
  ], Scenario.prototype, "type", void 0);
60
60
  tslib_1.__decorate([
61
61
  (0, typeorm_1.Column)({ nullable: true }),
62
- (0, type_graphql_1.Field)({ nullable: true, description: 'accessible and executable system-wide' }),
62
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Indicates if the scenario is accessible and executable system-wide.' }),
63
63
  tslib_1.__metadata("design:type", Boolean)
64
64
  ], Scenario.prototype, "public", void 0);
65
65
  tslib_1.__decorate([
66
66
  (0, typeorm_1.Column)({ nullable: true }),
67
- (0, type_graphql_1.Field)({ nullable: true, description: '[will be deprecated] automatically be started when this server start' }),
67
+ (0, type_graphql_1.Field)({
68
+ nullable: true,
69
+ description: 'Indicates if the scenario should be automatically started when the server starts. [will be deprecated]'
70
+ }),
68
71
  tslib_1.__metadata("design:type", Boolean)
69
72
  ], Scenario.prototype, "active", void 0);
70
73
  tslib_1.__decorate([
71
74
  (0, typeorm_1.Column)({ nullable: true }),
72
- (0, type_graphql_1.Field)({ nullable: true }),
75
+ (0, type_graphql_1.Field)({ nullable: true, description: 'A cron-style schedule for running the scenario automatically.' }),
73
76
  tslib_1.__metadata("design:type", String)
74
77
  ], Scenario.prototype, "schedule", void 0);
75
78
  tslib_1.__decorate([
76
79
  (0, typeorm_1.Column)({ nullable: true }),
77
- (0, type_graphql_1.Field)({ nullable: true }),
80
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The ID of the scheduled job, if any.' }),
78
81
  tslib_1.__metadata("design:type", String)
79
82
  ], Scenario.prototype, "scheduleId", void 0);
80
83
  tslib_1.__decorate([
81
84
  (0, typeorm_1.Column)({ nullable: true }),
82
- (0, type_graphql_1.Field)({ nullable: true }),
85
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The timezone for the schedule.' }),
83
86
  tslib_1.__metadata("design:type", String)
84
87
  ], Scenario.prototype, "timezone", void 0);
85
88
  tslib_1.__decorate([
86
89
  (0, typeorm_1.Column)({ nullable: true }),
87
- (0, type_graphql_1.Field)({ nullable: true }),
90
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Time-to-live in seconds for scenario instances.' }),
88
91
  tslib_1.__metadata("design:type", Number)
89
92
  ], Scenario.prototype, "ttl", void 0);
90
93
  tslib_1.__decorate([
91
94
  (0, typeorm_1.OneToMany)(type => step_type_1.Step, step => step.scenario),
92
- (0, type_graphql_1.Field)(type => [step_type_1.Step], { nullable: true }),
95
+ (0, type_graphql_1.Field)(type => [step_type_1.Step], { nullable: true, description: 'The sequence of steps that make up the scenario.' }),
93
96
  tslib_1.__metadata("design:type", Array)
94
97
  ], Scenario.prototype, "steps", void 0);
95
98
  tslib_1.__decorate([
96
99
  (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
97
- (0, type_graphql_1.Field)(type => auth_base_1.PrivilegeObject, { nullable: true }),
100
+ (0, type_graphql_1.Field)(type => auth_base_1.PrivilegeObject, { nullable: true, description: 'Privilege required to execute the scenario.' }),
98
101
  tslib_1.__metadata("design:type", auth_base_1.PrivilegeObject)
99
102
  ], Scenario.prototype, "privilege", void 0);
100
103
  tslib_1.__decorate([
101
104
  (0, typeorm_1.ManyToOne)(type => auth_base_1.Role),
102
- (0, type_graphql_1.Field)(type => auth_base_1.Role, { nullable: true }),
105
+ (0, type_graphql_1.Field)(type => auth_base_1.Role, { nullable: true, description: 'Role required to execute the scenario.' }),
103
106
  tslib_1.__metadata("design:type", auth_base_1.Role)
104
107
  ], Scenario.prototype, "role", void 0);
105
108
  tslib_1.__decorate([
@@ -108,17 +111,17 @@ tslib_1.__decorate([
108
111
  ], Scenario.prototype, "roleId", void 0);
109
112
  tslib_1.__decorate([
110
113
  (0, typeorm_1.CreateDateColumn)(),
111
- (0, type_graphql_1.Field)({ nullable: true }),
114
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The timestamp when the scenario was created.' }),
112
115
  tslib_1.__metadata("design:type", Date)
113
116
  ], Scenario.prototype, "createdAt", void 0);
114
117
  tslib_1.__decorate([
115
118
  (0, typeorm_1.UpdateDateColumn)(),
116
- (0, type_graphql_1.Field)({ nullable: true }),
119
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The timestamp when the scenario was last updated.' }),
117
120
  tslib_1.__metadata("design:type", Date)
118
121
  ], Scenario.prototype, "updatedAt", void 0);
119
122
  tslib_1.__decorate([
120
123
  (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
121
- (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
124
+ (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'The user who created the scenario.' }),
122
125
  tslib_1.__metadata("design:type", auth_base_1.User)
123
126
  ], Scenario.prototype, "creator", void 0);
124
127
  tslib_1.__decorate([
@@ -127,7 +130,7 @@ tslib_1.__decorate([
127
130
  ], Scenario.prototype, "creatorId", void 0);
128
131
  tslib_1.__decorate([
129
132
  (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
130
- (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
133
+ (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'The user who last updated the scenario.' }),
131
134
  tslib_1.__metadata("design:type", auth_base_1.User)
132
135
  ], Scenario.prototype, "updater", void 0);
133
136
  tslib_1.__decorate([
@@ -137,6 +140,6 @@ tslib_1.__decorate([
137
140
  exports.Scenario = Scenario = tslib_1.__decorate([
138
141
  (0, typeorm_1.Entity)(),
139
142
  (0, typeorm_1.Index)('ix_scenario_0', (scenario) => [scenario.domain, scenario.name], { unique: true }),
140
- (0, type_graphql_1.ObjectType)()
143
+ (0, type_graphql_1.ObjectType)({ description: 'Represents a sequence of steps designed to automate a task or process.' })
141
144
  ], Scenario);
142
145
  //# sourceMappingURL=scenario.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../../server/service/scenario/scenario.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'\nimport {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn,\n RelationId,\n UpdateDateColumn\n} from 'typeorm'\n\nimport { PrivilegeObject, Role, User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { ScenarioEngine } from '../../engine'\nimport { Step } from '../step/step-type'\n\n@Entity()\n@Index('ix_scenario_0', (scenario: Scenario) => [scenario.domain, scenario.name], { unique: true })\n@ObjectType()\nexport class Scenario {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n id?: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain)\n domain?: Domain\n\n @RelationId((scenario: Scenario) => scenario.domain)\n domainId?: string\n\n @Column()\n @Field()\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n type?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'accessible and executable system-wide' })\n public?: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: '[will be deprecated] automatically be started when this server start' })\n active?: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n schedule?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n scheduleId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n timezone?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n ttl?: number\n\n @OneToMany(type => Step, step => step.scenario)\n @Field(type => [Step], { nullable: true })\n steps?: Step[]\n\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => PrivilegeObject, { nullable: true })\n privilege?: PrivilegeObject\n\n @ManyToOne(type => Role)\n @Field(type => Role, { nullable: true })\n role?: Role\n\n @RelationId((scenario: Scenario) => scenario.role)\n roleId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((scenario: Scenario) => scenario.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((scenario: Scenario) => scenario.updater)\n updaterId?: string\n\n async start(options?: { instanceName?: string; domain?: Domain; user?: User; variables?: any }) {\n try {\n await ScenarioEngine.load(options?.instanceName || this.name, this, {\n domain: options?.domain || this.domain,\n user: options?.user || this.updater,\n variables: options?.variables\n })\n } catch (ex) {}\n }\n\n async stop(options?: { instanceName?: string; domain?: Domain; user?: User }) {\n try {\n await ScenarioEngine.unload(options?.domain || this.domain, options?.instanceName || this.name)\n } finally {\n }\n }\n}\n"]}
1
+ {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../../server/service/scenario/scenario.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'\nimport {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn,\n RelationId,\n UpdateDateColumn\n} from 'typeorm'\n\nimport { PrivilegeObject, Role, User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\nimport { ScenarioEngine } from '../../engine'\nimport { Step } from '../step/step-type'\n\n@Entity()\n@Index('ix_scenario_0', (scenario: Scenario) => [scenario.domain, scenario.name], { unique: true })\n@ObjectType({ description: 'Represents a sequence of steps designed to automate a task or process.' })\nexport class Scenario {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Unique identifier for the scenario.' })\n id?: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { description: 'The domain to which this scenario belongs.' })\n domain?: Domain\n\n @RelationId((scenario: Scenario) => scenario.domain)\n domainId?: string\n\n @Column()\n @Field({ description: 'The name of the scenario.' })\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'A detailed description of the scenario.' })\n description?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The type of the scenario, used for categorization.' })\n type?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Indicates if the scenario is accessible and executable system-wide.' })\n public?: boolean\n\n @Column({ nullable: true })\n @Field({\n nullable: true,\n description:\n 'Indicates if the scenario should be automatically started when the server starts. [will be deprecated]'\n })\n active?: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'A cron-style schedule for running the scenario automatically.' })\n schedule?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The ID of the scheduled job, if any.' })\n scheduleId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The timezone for the schedule.' })\n timezone?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Time-to-live in seconds for scenario instances.' })\n ttl?: number\n\n @OneToMany(type => Step, step => step.scenario)\n @Field(type => [Step], { nullable: true, description: 'The sequence of steps that make up the scenario.' })\n steps?: Step[]\n\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => PrivilegeObject, { nullable: true, description: 'Privilege required to execute the scenario.' })\n privilege?: PrivilegeObject\n\n @ManyToOne(type => Role)\n @Field(type => Role, { nullable: true, description: 'Role required to execute the scenario.' })\n role?: Role\n\n @RelationId((scenario: Scenario) => scenario.role)\n roleId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'The timestamp when the scenario was created.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'The timestamp when the scenario was last updated.' })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'The user who created the scenario.' })\n creator?: User\n\n @RelationId((scenario: Scenario) => scenario.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'The user who last updated the scenario.' })\n updater?: User\n\n @RelationId((scenario: Scenario) => scenario.updater)\n updaterId?: string\n\n async start(options?: { instanceName?: string; domain?: Domain; user?: User; variables?: any }) {\n try {\n await ScenarioEngine.load(options?.instanceName || this.name, this, {\n domain: options?.domain || this.domain,\n user: options?.user || this.updater,\n variables: options?.variables\n })\n } catch (ex) {}\n }\n\n async stop(options?: { instanceName?: string; domain?: Domain; user?: User }) {\n try {\n await ScenarioEngine.unload(options?.domain || this.domain, options?.instanceName || this.name)\n } finally {\n }\n }\n}\n"]}
@@ -20,7 +20,7 @@ let ScenarioInstanceMutation = class ScenarioInstanceMutation {
20
20
  exports.ScenarioInstanceMutation = ScenarioInstanceMutation;
21
21
  tslib_1.__decorate([
22
22
  (0, type_graphql_1.Mutation)(returns => scenario_instance_type_1.ScenarioInstanceRunResult, {
23
- description: 'To run new scenario instance and will return the result after the scenario stop.'
23
+ description: 'Runs a new scenario instance once and returns the result after it finishes.'
24
24
  }),
25
25
  tslib_1.__param(0, (0, type_graphql_1.Arg)('instanceName', { nullable: true })),
26
26
  tslib_1.__param(1, (0, type_graphql_1.Arg)('scenarioName')),
@@ -31,7 +31,9 @@ tslib_1.__decorate([
31
31
  tslib_1.__metadata("design:returntype", Promise)
32
32
  ], ScenarioInstanceMutation.prototype, "runScenario", null);
33
33
  tslib_1.__decorate([
34
- (0, type_graphql_1.Mutation)(returns => scenario_instance_type_1.ScenarioInstance, { description: 'To start new scenario instance' }),
34
+ (0, type_graphql_1.Mutation)(returns => scenario_instance_type_1.ScenarioInstance, {
35
+ description: 'Starts a new scenario instance, which will run in the background.'
36
+ }),
35
37
  tslib_1.__param(0, (0, type_graphql_1.Arg)('instanceName', { nullable: true })),
36
38
  tslib_1.__param(1, (0, type_graphql_1.Arg)('scenarioName')),
37
39
  tslib_1.__param(2, (0, type_graphql_1.Arg)('variables', type => shell_1.ScalarObject, { nullable: true })),
@@ -41,7 +43,10 @@ tslib_1.__decorate([
41
43
  tslib_1.__metadata("design:returntype", Promise)
42
44
  ], ScenarioInstanceMutation.prototype, "startScenario", null);
43
45
  tslib_1.__decorate([
44
- (0, type_graphql_1.Mutation)(returns => scenario_instance_type_1.ScenarioInstance, { nullable: true, description: 'To start new scenario instance' }),
46
+ (0, type_graphql_1.Mutation)(returns => scenario_instance_type_1.ScenarioInstance, {
47
+ nullable: true,
48
+ description: 'Stops a running scenario instance by its name.'
49
+ }),
45
50
  tslib_1.__param(0, (0, type_graphql_1.Arg)('instanceName', { nullable: true })),
46
51
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
47
52
  tslib_1.__metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-instance-mutation.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAA2D;AAE3D,iDAAoD;AAEpD,qEAAsF;AAEtF,+EAI8C;AAGvC,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAI7B,AAAN,KAAK,CAAC,WAAW,CAC0B,YAAoB,EACxC,YAAoB,EACmB,SAAc,EACnE,OAAwB;QAE/B,OAAO,MAAM,IAAA,iCAAqB,EAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpF,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa,CACwB,YAAoB,EACxC,YAAoB,EACmB,SAAc,EACnE,OAAwB;QAE/B,OAAO,MAAM,IAAA,mCAAuB,EAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACtF,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY,CACyB,YAAoB,EACtD,OAAwB;QAE/B,OAAO,MAAM,IAAA,kCAAsB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC5D,CAAC;CACF,CAAA;AA9BY,4DAAwB;AAI7B;IAHL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,kDAAyB,EAAE;QAC9C,WAAW,EAAE,kFAAkF;KAChG,CAAC;IAEC,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,EAAC,cAAc,CAAC,CAAA;IACnB,mBAAA,IAAA,kBAAG,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;2DAGP;AAGK;IADL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,yCAAgB,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IAEtF,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,EAAC,cAAc,CAAC,CAAA;IACnB,mBAAA,IAAA,kBAAG,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;6DAGP;AAGK;IADL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,yCAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IAEtG,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;4DAGP;mCA7BU,wBAAwB;IADpC,IAAA,uBAAQ,EAAC,yCAAgB,CAAC;GACd,wBAAwB,CA8BpC","sourcesContent":["import { Arg, Ctx, Mutation, Resolver } from 'type-graphql'\n\nimport { ScalarObject } from '@things-factory/shell'\n\nimport { ScenarioInstance, ScenarioInstanceRunResult } from './scenario-instance-type'\n\nimport {\n runScenario as controllerRunScenario,\n startScenario as controllerStartScenario,\n stopScenario as controllerStopScenario\n} from '../../controllers/scenario-controller'\n\n@Resolver(ScenarioInstance)\nexport class ScenarioInstanceMutation {\n @Mutation(returns => ScenarioInstanceRunResult, {\n description: 'To run new scenario instance and will return the result after the scenario stop.'\n })\n async runScenario(\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Arg('scenarioName') scenarioName: string,\n @Arg('variables', type => ScalarObject, { nullable: true }) variables: any,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstanceRunResult> {\n return await controllerRunScenario(instanceName, scenarioName, variables, context)\n }\n\n @Mutation(returns => ScenarioInstance, { description: 'To start new scenario instance' })\n async startScenario(\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Arg('scenarioName') scenarioName: string,\n @Arg('variables', type => ScalarObject, { nullable: true }) variables: any,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstance> {\n return await controllerStartScenario(instanceName, scenarioName, variables, context)\n }\n\n @Mutation(returns => ScenarioInstance, { nullable: true, description: 'To start new scenario instance' })\n async stopScenario(\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstance | undefined> {\n return await controllerStopScenario(instanceName, context)\n }\n}\n"]}
1
+ {"version":3,"file":"scenario-instance-mutation.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAA2D;AAE3D,iDAAoD;AAEpD,qEAAsF;AAEtF,+EAI8C;AAGvC,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAI7B,AAAN,KAAK,CAAC,WAAW,CAC0B,YAAoB,EACxC,YAAoB,EACmB,SAAc,EACnE,OAAwB;QAE/B,OAAO,MAAM,IAAA,iCAAqB,EAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpF,CAAC;IAKK,AAAN,KAAK,CAAC,aAAa,CACwB,YAAoB,EACxC,YAAoB,EACmB,SAAc,EACnE,OAAwB;QAE/B,OAAO,MAAM,IAAA,mCAAuB,EAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACtF,CAAC;IAMK,AAAN,KAAK,CAAC,YAAY,CACyB,YAAoB,EACtD,OAAwB;QAE/B,OAAO,MAAM,IAAA,kCAAsB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC5D,CAAC;CACF,CAAA;AAnCY,4DAAwB;AAI7B;IAHL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,kDAAyB,EAAE;QAC9C,WAAW,EAAE,6EAA6E;KAC3F,CAAC;IAEC,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,EAAC,cAAc,CAAC,CAAA;IACnB,mBAAA,IAAA,kBAAG,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;2DAGP;AAKK;IAHL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,yCAAgB,EAAE;QACrC,WAAW,EAAE,mEAAmE;KACjF,CAAC;IAEC,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,EAAC,cAAc,CAAC,CAAA;IACnB,mBAAA,IAAA,kBAAG,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;6DAGP;AAMK;IAJL,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,yCAAgB,EAAE;QACrC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,gDAAgD;KAC9D,CAAC;IAEC,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;4DAGP;mCAlCU,wBAAwB;IADpC,IAAA,uBAAQ,EAAC,yCAAgB,CAAC;GACd,wBAAwB,CAmCpC","sourcesContent":["import { Arg, Ctx, Mutation, Resolver } from 'type-graphql'\n\nimport { ScalarObject } from '@things-factory/shell'\n\nimport { ScenarioInstance, ScenarioInstanceRunResult } from './scenario-instance-type'\n\nimport {\n runScenario as controllerRunScenario,\n startScenario as controllerStartScenario,\n stopScenario as controllerStopScenario\n} from '../../controllers/scenario-controller'\n\n@Resolver(ScenarioInstance)\nexport class ScenarioInstanceMutation {\n @Mutation(returns => ScenarioInstanceRunResult, {\n description: 'Runs a new scenario instance once and returns the result after it finishes.'\n })\n async runScenario(\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Arg('scenarioName') scenarioName: string,\n @Arg('variables', type => ScalarObject, { nullable: true }) variables: any,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstanceRunResult> {\n return await controllerRunScenario(instanceName, scenarioName, variables, context)\n }\n\n @Mutation(returns => ScenarioInstance, {\n description: 'Starts a new scenario instance, which will run in the background.'\n })\n async startScenario(\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Arg('scenarioName') scenarioName: string,\n @Arg('variables', type => ScalarObject, { nullable: true }) variables: any,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstance> {\n return await controllerStartScenario(instanceName, scenarioName, variables, context)\n }\n\n @Mutation(returns => ScenarioInstance, {\n nullable: true,\n description: 'Stops a running scenario instance by its name.'\n })\n async stopScenario(\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstance | undefined> {\n return await controllerStopScenario(instanceName, context)\n }\n}\n"]}
@@ -1,5 +1,8 @@
1
1
  import { ListParam } from '@things-factory/shell';
2
2
  import { ScenarioInstance, ScenarioInstanceList } from './scenario-instance-type';
3
+ /**
4
+ * @description Provides GraphQL resolvers for scenario instances.
5
+ */
3
6
  export declare class ScenarioInstanceQuery {
4
7
  scenarioInstance(instanceName: string, context: ResolverContext): Promise<ScenarioInstance>;
5
8
  scenarioInstances(params: ListParam, context: ResolverContext): Promise<ScenarioInstanceList>;
@@ -6,6 +6,9 @@ const type_graphql_1 = require("type-graphql");
6
6
  const shell_1 = require("@things-factory/shell");
7
7
  const engine_1 = require("../../engine");
8
8
  const scenario_instance_type_1 = require("./scenario-instance-type");
9
+ /**
10
+ * @description Provides GraphQL resolvers for scenario instances.
11
+ */
9
12
  let ScenarioInstanceQuery = class ScenarioInstanceQuery {
10
13
  async scenarioInstance(instanceName, context) {
11
14
  const { domain } = context.state;
@@ -24,7 +27,7 @@ let ScenarioInstanceQuery = class ScenarioInstanceQuery {
24
27
  };
25
28
  exports.ScenarioInstanceQuery = ScenarioInstanceQuery;
26
29
  tslib_1.__decorate([
27
- (0, type_graphql_1.Query)(returns => scenario_instance_type_1.ScenarioInstance, { description: 'To fetch a scenario instance' }),
30
+ (0, type_graphql_1.Query)(returns => scenario_instance_type_1.ScenarioInstance, { description: 'Fetches a single scenario instance by its name.' }),
28
31
  tslib_1.__param(0, (0, type_graphql_1.Arg)('instanceName')),
29
32
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
30
33
  tslib_1.__metadata("design:type", Function),
@@ -32,7 +35,7 @@ tslib_1.__decorate([
32
35
  tslib_1.__metadata("design:returntype", Promise)
33
36
  ], ScenarioInstanceQuery.prototype, "scenarioInstance", null);
34
37
  tslib_1.__decorate([
35
- (0, type_graphql_1.Query)(returns => scenario_instance_type_1.ScenarioInstanceList, { description: 'To fetch multiple scenario instances' }),
38
+ (0, type_graphql_1.Query)(returns => scenario_instance_type_1.ScenarioInstanceList, { description: 'Fetches a list of all active scenario instances.' }),
36
39
  tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
37
40
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
38
41
  tslib_1.__metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-instance-query.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAmF;AAEnF,iDAA+D;AAE/D,yCAA6C;AAC7C,qEAKiC;AAG1B,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAE1B,AAAN,KAAK,CAAC,gBAAgB,CACC,YAAoB,EAClC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,uBAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACjE,CAAC;IAGK,AAAN,KAAK,CAAC,iBAAiB,CACI,MAAiB,EACnC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,IAAI,iBAAiB,GAAG,uBAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAEnE,0BAA0B;QAC1B,IAAI,KAAK,GAAG,iBAAiB,CAAA;QAE7B,OAAO;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;SACpB,CAAA;IACH,CAAC;CACF,CAAA;AA5BY,sDAAqB;AAE1B;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,yCAAgB,EAAE,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;IAEjF,mBAAA,IAAA,kBAAG,EAAC,cAAc,CAAC,CAAA;IACnB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;6DAKP;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,6CAAoB,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;IAE7F,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IACvB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAD2B,iBAAS;;8DAc3C;gCA3BU,qBAAqB;IADjC,IAAA,uBAAQ,EAAC,yCAAgB,CAAC;GACd,qBAAqB,CA4BjC","sourcesContent":["import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { ListParam, ScalarObject } from '@things-factory/shell'\n\nimport { ScenarioEngine } from '../../engine'\nimport {\n ScenarioInstance,\n ScenarioInstanceList,\n ScenarioInstanceProgress,\n ScenarioInstanceStatus\n} from './scenario-instance-type'\n\n@Resolver(ScenarioInstance)\nexport class ScenarioInstanceQuery {\n @Query(returns => ScenarioInstance, { description: 'To fetch a scenario instance' })\n async scenarioInstance(\n @Arg('instanceName') instanceName: string,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstance> {\n const { domain } = context.state\n\n return ScenarioEngine.getScenarioInstance(domain, instanceName)\n }\n\n @Query(returns => ScenarioInstanceList, { description: 'To fetch multiple scenario instances' })\n async scenarioInstances(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstanceList> {\n const { domain } = context.state\n\n var scenarioInstances = ScenarioEngine.getScenarioInstances(domain)\n\n /* IMPLEMENT-ME 검색 기능.. */\n var items = scenarioInstances\n\n return {\n items,\n total: items.length\n }\n }\n}\n"]}
1
+ {"version":3,"file":"scenario-instance-query.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAmF;AAEnF,iDAA+D;AAE/D,yCAA6C;AAC7C,qEAKiC;AAEjC;;GAEG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAE1B,AAAN,KAAK,CAAC,gBAAgB,CACC,YAAoB,EAClC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,uBAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACjE,CAAC;IAGK,AAAN,KAAK,CAAC,iBAAiB,CACI,MAAiB,EACnC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,IAAI,iBAAiB,GAAG,uBAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAEnE,0BAA0B;QAC1B,IAAI,KAAK,GAAG,iBAAiB,CAAA;QAE7B,OAAO;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;SACpB,CAAA;IACH,CAAC;CACF,CAAA;AA5BY,sDAAqB;AAE1B;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,yCAAgB,EAAE,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC;IAEpG,mBAAA,IAAA,kBAAG,EAAC,cAAc,CAAC,CAAA;IACnB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;6DAKP;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,6CAAoB,EAAE,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;IAEzG,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IACvB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAD2B,iBAAS;;8DAc3C;gCA3BU,qBAAqB;IADjC,IAAA,uBAAQ,EAAC,yCAAgB,CAAC;GACd,qBAAqB,CA4BjC","sourcesContent":["import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { ListParam, ScalarObject } from '@things-factory/shell'\n\nimport { ScenarioEngine } from '../../engine'\nimport {\n ScenarioInstance,\n ScenarioInstanceList,\n ScenarioInstanceProgress,\n ScenarioInstanceStatus\n} from './scenario-instance-type'\n\n/**\n * @description Provides GraphQL resolvers for scenario instances.\n */\n@Resolver(ScenarioInstance)\nexport class ScenarioInstanceQuery {\n @Query(returns => ScenarioInstance, { description: 'Fetches a single scenario instance by its name.' })\n async scenarioInstance(\n @Arg('instanceName') instanceName: string,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstance> {\n const { domain } = context.state\n\n return ScenarioEngine.getScenarioInstance(domain, instanceName)\n }\n\n @Query(returns => ScenarioInstanceList, { description: 'Fetches a list of all active scenario instances.' })\n async scenarioInstances(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ScenarioInstanceList> {\n const { domain } = context.state\n\n var scenarioInstances = ScenarioEngine.getScenarioInstances(domain)\n\n /* IMPLEMENT-ME 검색 기능.. */\n var items = scenarioInstances\n\n return {\n items,\n total: items.length\n }\n }\n}\n"]}
@@ -19,22 +19,22 @@ let ScenarioInstanceSubscription = class ScenarioInstanceSubscription {
19
19
  exports.ScenarioInstanceSubscription = ScenarioInstanceSubscription;
20
20
  tslib_1.__decorate([
21
21
  (0, type_graphql_1.Subscription)({
22
+ description: 'Subscribes to log messages from scenario instances.',
22
23
  subscribe: ({ args, context, info }) => {
23
- var _a;
24
24
  const { domain, user } = context.state;
25
25
  const { instanceName, scenarioName, level } = args;
26
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
26
+ const subdomain = domain?.subdomain;
27
27
  debug('subscribe', subdomain, scenarioName, instanceName);
28
28
  if (!domain) {
29
29
  throw new Error('domain required');
30
30
  }
31
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
31
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
32
32
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
33
33
  }
34
34
  return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('scenario-instance-log'), (0, graphql_yoga_1.filter)((payload) => {
35
35
  const { source, level: plevel } = payload.scenarioInstanceLog;
36
36
  const { domain: pdomain, scenarioName: pscenarioName, instanceName: pinstanceName } = source;
37
- if (subdomain !== (pdomain === null || pdomain === void 0 ? void 0 : pdomain.subdomain)) {
37
+ if (subdomain !== pdomain?.subdomain) {
38
38
  return false;
39
39
  }
40
40
  if (scenarioName && pscenarioName !== scenarioName) {
@@ -60,22 +60,23 @@ tslib_1.__decorate([
60
60
  ], ScenarioInstanceSubscription.prototype, "scenarioInstanceLog", null);
61
61
  tslib_1.__decorate([
62
62
  (0, type_graphql_1.Subscription)({
63
+ description: 'Subscribes to state changes from scenario instances.',
63
64
  subscribe: ({ args, context, info }) => {
64
- var _a;
65
65
  const { domain, user } = context.state;
66
66
  const { instanceName, scenarioName } = args;
67
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
67
+ const subdomain = domain?.subdomain;
68
68
  debug('subscribe', subdomain, scenarioName, instanceName);
69
69
  if (!domain) {
70
70
  throw new Error('domain required');
71
71
  }
72
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
72
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
73
73
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
74
74
  }
75
75
  process.nextTick(() => {
76
76
  engine_1.ScenarioEngine.getScenarioInstances(domain)
77
77
  .filter(instance => {
78
- return (!instanceName || instance.instanceName === instanceName) && (!scenarioName || instance.scenarioName === scenarioName);
78
+ return ((!instanceName || instance.instanceName === instanceName) &&
79
+ (!scenarioName || instance.scenarioName === scenarioName));
79
80
  })
80
81
  .forEach(instance => {
81
82
  instance.publishState();
@@ -83,7 +84,7 @@ tslib_1.__decorate([
83
84
  });
84
85
  return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('scenario-instance-state'), (0, graphql_yoga_1.filter)((payload) => {
85
86
  const { domain: pdomain, scenarioName: pscenarioName, instanceName: pinstanceName } = payload.scenarioInstanceState;
86
- if (subdomain !== (pdomain === null || pdomain === void 0 ? void 0 : pdomain.subdomain)) {
87
+ if (subdomain !== pdomain?.subdomain) {
87
88
  return false;
88
89
  }
89
90
  if (scenarioName && pscenarioName !== scenarioName) {
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-instance-subscription.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Subscription, Root, Arg } from 'type-graphql'\nimport { filter, pipe } from 'graphql-yoga'\nimport { pubsub, Log } from '@things-factory/shell'\nimport { ScenarioInstance, ScenarioInstanceState } from './scenario-instance-type'\nimport { ScenarioEngine } from '../../engine'\n\nconst debug = require('debug')('things-factory:integration:scenario-instance-subscription')\n\n@Resolver(ScenarioInstance)\nexport class ScenarioInstanceSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const { instanceName, scenarioName, level } = args\n const subdomain = domain?.subdomain\n\n debug('subscribe', subdomain, scenarioName, instanceName)\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 return pipe(\n pubsub.subscribe('scenario-instance-log'),\n filter((payload: { scenarioInstanceLog: Log }) => {\n const { source, level: plevel } = payload.scenarioInstanceLog\n const { domain: pdomain, scenarioName: pscenarioName, instanceName: pinstanceName } = source as any\n\n if (subdomain !== pdomain?.subdomain) {\n return false\n }\n\n if (scenarioName && pscenarioName !== scenarioName) {\n return false\n }\n\n if (instanceName && pinstanceName !== instanceName) {\n return false\n }\n\n if (level && level !== plevel) {\n return false\n }\n\n return true\n })\n )\n }\n })\n scenarioInstanceLog(\n @Root() payload: { scenarioInstanceLog: Log },\n @Arg('scenarioName', { nullable: true }) scenarioName: string,\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Arg('level', { nullable: true }) level: string\n ): Log {\n return payload.scenarioInstanceLog\n }\n\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const { instanceName, scenarioName } = args\n const subdomain = domain?.subdomain\n\n debug('subscribe', subdomain, scenarioName, instanceName)\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(() => {\n ScenarioEngine.getScenarioInstances(domain)\n .filter(instance => {\n return (!instanceName || instance.instanceName === instanceName) && (!scenarioName || instance.scenarioName === scenarioName)\n })\n .forEach(instance => {\n instance.publishState()\n })\n })\n\n return pipe(\n pubsub.subscribe('scenario-instance-state'),\n filter((payload: { scenarioInstanceState: ScenarioInstanceState }) => {\n const { domain: pdomain, scenarioName: pscenarioName, instanceName: pinstanceName } = payload.scenarioInstanceState\n\n if (subdomain !== pdomain?.subdomain) {\n return false\n }\n\n if (scenarioName && pscenarioName !== scenarioName) {\n return false\n }\n\n if (instanceName && pinstanceName !== instanceName) {\n return false\n }\n\n return true\n })\n )\n }\n })\n scenarioInstanceState(\n @Root() payload: { scenarioInstanceState: ScenarioInstanceState },\n @Arg('scenarioName', { nullable: true }) scenarioName: string,\n @Arg('instanceName', { nullable: true }) instanceName: string\n ): ScenarioInstanceState {\n return payload.scenarioInstanceState\n }\n}\n"]}
1
+ {"version":3,"file":"scenario-instance-subscription.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAChE,+CAA2C;AAC3C,iDAAmD;AACnD,qEAAkF;AAClF,yCAA6C;AAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,2DAA2D,CAAC,CAAA;AAGpF,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IA6CvC,mBAAmB,CACT,OAAqC,EACJ,YAAoB,EACpB,YAAoB,EAC3B,KAAa;QAE/C,OAAO,OAAO,CAAC,mBAAmB,CAAA;IACpC,CAAC;IA0DD,qBAAqB,CACX,OAAyD,EACxB,YAAoB,EACpB,YAAoB;QAE7D,OAAO,OAAO,CAAC,qBAAqB,CAAA;IACtC,CAAC;CACF,CAAA;AArHY,oEAA4B;AA6CvC;IA5CC,IAAA,2BAAY,EAAC;QACZ,WAAW,EAAE,qDAAqD;QAClE,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,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;YAClD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;YAEzD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,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,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,EACzC,IAAA,qBAAM,EAAC,CAAC,OAAqC,EAAE,EAAE;gBAC/C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAA;gBAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAa,CAAA;gBAEnG,IAAI,SAAS,KAAK,OAAO,EAAE,SAAS,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,YAAY,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;oBACnD,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,YAAY,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;oBACnD,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IAEC,mBAAA,IAAA,mBAAI,GAAE,CAAA;IACN,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;;4CAChC,WAAG;uEAEL;AA0DD;IAxDC,IAAA,2BAAY,EAAC;QACZ,WAAW,EAAE,sDAAsD;QACnE,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,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;YAC3C,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;YAEzD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,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,GAAG,EAAE;gBACpB,uBAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC;qBACxC,MAAM,CAAC,QAAQ,CAAC,EAAE;oBACjB,OAAO,CACL,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC;wBACzD,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,CAC1D,CAAA;gBACH,CAAC,CAAC;qBACD,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAClB,QAAQ,CAAC,YAAY,EAAE,CAAA;gBACzB,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAC3C,IAAA,qBAAM,EAAC,CAAC,OAAyD,EAAE,EAAE;gBACnE,MAAM,EACJ,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,aAAa,EAC5B,GAAG,OAAO,CAAC,qBAAqB,CAAA;gBAEjC,IAAI,SAAS,KAAK,OAAO,EAAE,SAAS,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,YAAY,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;oBACnD,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,YAAY,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;oBACnD,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IAEC,mBAAA,IAAA,mBAAI,GAAE,CAAA;IACN,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,mBAAA,IAAA,kBAAG,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;;4CACvC,8CAAqB;yEAEvB;uCApHU,4BAA4B;IADxC,IAAA,uBAAQ,EAAC,yCAAgB,CAAC;GACd,4BAA4B,CAqHxC","sourcesContent":["import { Resolver, Subscription, Root, Arg } from 'type-graphql'\nimport { filter, pipe } from 'graphql-yoga'\nimport { pubsub, Log } from '@things-factory/shell'\nimport { ScenarioInstance, ScenarioInstanceState } from './scenario-instance-type'\nimport { ScenarioEngine } from '../../engine'\n\nconst debug = require('debug')('things-factory:integration:scenario-instance-subscription')\n\n@Resolver(ScenarioInstance)\nexport class ScenarioInstanceSubscription {\n @Subscription({\n description: 'Subscribes to log messages from scenario instances.',\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const { instanceName, scenarioName, level } = args\n const subdomain = domain?.subdomain\n\n debug('subscribe', subdomain, scenarioName, instanceName)\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 return pipe(\n pubsub.subscribe('scenario-instance-log'),\n filter((payload: { scenarioInstanceLog: Log }) => {\n const { source, level: plevel } = payload.scenarioInstanceLog\n const { domain: pdomain, scenarioName: pscenarioName, instanceName: pinstanceName } = source as any\n\n if (subdomain !== pdomain?.subdomain) {\n return false\n }\n\n if (scenarioName && pscenarioName !== scenarioName) {\n return false\n }\n\n if (instanceName && pinstanceName !== instanceName) {\n return false\n }\n\n if (level && level !== plevel) {\n return false\n }\n\n return true\n })\n )\n }\n })\n scenarioInstanceLog(\n @Root() payload: { scenarioInstanceLog: Log },\n @Arg('scenarioName', { nullable: true }) scenarioName: string,\n @Arg('instanceName', { nullable: true }) instanceName: string,\n @Arg('level', { nullable: true }) level: string\n ): Log {\n return payload.scenarioInstanceLog\n }\n\n @Subscription({\n description: 'Subscribes to state changes from scenario instances.',\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const { instanceName, scenarioName } = args\n const subdomain = domain?.subdomain\n\n debug('subscribe', subdomain, scenarioName, instanceName)\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(() => {\n ScenarioEngine.getScenarioInstances(domain)\n .filter(instance => {\n return (\n (!instanceName || instance.instanceName === instanceName) &&\n (!scenarioName || instance.scenarioName === scenarioName)\n )\n })\n .forEach(instance => {\n instance.publishState()\n })\n })\n\n return pipe(\n pubsub.subscribe('scenario-instance-state'),\n filter((payload: { scenarioInstanceState: ScenarioInstanceState }) => {\n const {\n domain: pdomain,\n scenarioName: pscenarioName,\n instanceName: pinstanceName\n } = payload.scenarioInstanceState\n\n if (subdomain !== pdomain?.subdomain) {\n return false\n }\n\n if (scenarioName && pscenarioName !== scenarioName) {\n return false\n }\n\n if (instanceName && pinstanceName !== instanceName) {\n return false\n }\n\n return true\n })\n )\n }\n })\n scenarioInstanceState(\n @Root() payload: { scenarioInstanceState: ScenarioInstanceState },\n @Arg('scenarioName', { nullable: true }) scenarioName: string,\n @Arg('instanceName', { nullable: true }) instanceName: string\n ): ScenarioInstanceState {\n return payload.scenarioInstanceState\n }\n}\n"]}