@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.
- package/dist-server/controllers/publish-data.js +7 -2
- package/dist-server/controllers/publish-data.js.map +1 -1
- package/dist-server/engine/analyzer/analyze-integration.js +1 -1
- package/dist-server/engine/analyzer/analyze-integration.js.map +1 -1
- package/dist-server/engine/connection-manager.js +41 -40
- package/dist-server/engine/connection-manager.js.map +1 -1
- package/dist-server/engine/connector/graphql-connector.js +4 -1
- package/dist-server/engine/connector/graphql-connector.js.map +1 -1
- package/dist-server/engine/connector/headless-connector.js +1 -2
- package/dist-server/engine/connector/headless-connector.js.map +1 -1
- package/dist-server/engine/connector/http-connector.js +5 -1
- package/dist-server/engine/connector/http-connector.js.map +1 -1
- package/dist-server/engine/connector/operato-connector.js +10 -8
- package/dist-server/engine/connector/operato-connector.js.map +1 -1
- package/dist-server/engine/connector/oracle-connector.js +2 -2
- package/dist-server/engine/connector/oracle-connector.js.map +1 -1
- package/dist-server/engine/connector/postgresql-connector.js +3 -3
- package/dist-server/engine/connector/postgresql-connector.js.map +1 -1
- package/dist-server/engine/connector/proxy-connector.js +1 -1
- package/dist-server/engine/connector/proxy-connector.js.map +1 -1
- package/dist-server/engine/index.d.ts +2 -2
- package/dist-server/engine/index.js +2 -2
- package/dist-server/engine/index.js.map +1 -1
- package/dist-server/engine/scenario-engine.js +10 -7
- package/dist-server/engine/scenario-engine.js.map +1 -1
- package/dist-server/engine/task/headless-post.js +3 -1
- package/dist-server/engine/task/headless-post.js.map +1 -1
- package/dist-server/engine/task/headless-scrap.js +36 -4
- package/dist-server/engine/task/headless-scrap.js.map +1 -1
- package/dist-server/engine/task/http-get.js +4 -1
- package/dist-server/engine/task/http-get.js.map +1 -1
- package/dist-server/engine/task/http-post.js +4 -1
- package/dist-server/engine/task/http-post.js.map +1 -1
- package/dist-server/engine/task/mqtt-publish.js +29 -6
- package/dist-server/engine/task/mqtt-publish.js.map +1 -1
- package/dist-server/engine/task/mqtt-subscribe.d.ts +84 -0
- package/dist-server/engine/task/mqtt-subscribe.js +197 -79
- package/dist-server/engine/task/mqtt-subscribe.js.map +1 -1
- package/dist-server/engine/task/mssql-procedure.js +1 -1
- package/dist-server/engine/task/mssql-procedure.js.map +1 -1
- package/dist-server/engine/task/oracle-procedure.js +10 -10
- package/dist-server/engine/task/oracle-procedure.js.map +1 -1
- package/dist-server/engine/task/pick-pending-scenario.js +5 -1
- package/dist-server/engine/task/pick-pending-scenario.js.map +1 -1
- package/dist-server/engine/task/state-group-read.js +1 -2
- package/dist-server/engine/task/state-group-read.js.map +1 -1
- package/dist-server/engine/task/state-read.js +1 -2
- package/dist-server/engine/task/state-read.js.map +1 -1
- package/dist-server/engine/task/state-write.js +1 -2
- package/dist-server/engine/task/state-write.js.map +1 -1
- package/dist-server/engine/task/stop-scenario.js +3 -3
- package/dist-server/engine/task/stop-scenario.js.map +1 -1
- package/dist-server/engine/task/sub-scenario.js +5 -2
- package/dist-server/engine/task/sub-scenario.js.map +1 -1
- package/dist-server/engine/task/switch-range-scenario.js +5 -2
- package/dist-server/engine/task/switch-range-scenario.js.map +1 -1
- package/dist-server/engine/task/switch-scenario.js +5 -2
- package/dist-server/engine/task/switch-scenario.js.map +1 -1
- package/dist-server/engine/task/variables.js +1 -1
- package/dist-server/engine/task/variables.js.map +1 -1
- package/dist-server/engine/task-registry.js +4 -2
- package/dist-server/engine/task-registry.js.map +1 -1
- package/dist-server/index.d.ts +6 -6
- package/dist-server/index.js +10 -10
- package/dist-server/index.js.map +1 -1
- package/dist-server/routers/scenario-schedule-callback-router.js +2 -2
- package/dist-server/routers/scenario-schedule-callback-router.js.map +1 -1
- package/dist-server/routes.js +8 -7
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/analysis/analysis-query.d.ts +3 -0
- package/dist-server/service/analysis/analysis-query.js +6 -1
- package/dist-server/service/analysis/analysis-query.js.map +1 -1
- package/dist-server/service/connection/connection-mutation.d.ts +3 -1
- package/dist-server/service/connection/connection-mutation.js +69 -21
- package/dist-server/service/connection/connection-mutation.js.map +1 -1
- package/dist-server/service/connection/connection-query.d.ts +3 -0
- package/dist-server/service/connection/connection-query.js +22 -6
- package/dist-server/service/connection/connection-query.js.map +1 -1
- package/dist-server/service/connection/connection-subscription.js +14 -8
- package/dist-server/service/connection/connection-subscription.js.map +1 -1
- package/dist-server/service/connection/connection-type.d.ts +15 -4
- package/dist-server/service/connection/connection-type.js +78 -58
- package/dist-server/service/connection/connection-type.js.map +1 -1
- package/dist-server/service/connector/connector-query.d.ts +4 -1
- package/dist-server/service/connector/connector-query.js +8 -5
- package/dist-server/service/connector/connector-query.js.map +1 -1
- package/dist-server/service/connector/connector-type.js +12 -9
- package/dist-server/service/connector/connector-type.js.map +1 -1
- package/dist-server/service/payload-log/payload-log-mutation.js +30 -12
- package/dist-server/service/payload-log/payload-log-mutation.js.map +1 -1
- package/dist-server/service/payload-log/payload-log-query.d.ts +3 -0
- package/dist-server/service/payload-log/payload-log-query.js +5 -2
- package/dist-server/service/payload-log/payload-log-query.js.map +1 -1
- package/dist-server/service/payload-log/payload-log-type.js +11 -11
- package/dist-server/service/payload-log/payload-log-type.js.map +1 -1
- package/dist-server/service/payload-log/payload-log.d.ts +1 -1
- package/dist-server/service/payload-log/payload-log.js +18 -14
- package/dist-server/service/payload-log/payload-log.js.map +1 -1
- package/dist-server/service/property-spec.js +12 -7
- package/dist-server/service/property-spec.js.map +1 -1
- package/dist-server/service/scenario/scenario-mutation.js +71 -26
- package/dist-server/service/scenario/scenario-mutation.js.map +1 -1
- package/dist-server/service/scenario/scenario-query.d.ts +3 -0
- package/dist-server/service/scenario/scenario-query.js +7 -5
- package/dist-server/service/scenario/scenario-query.js.map +1 -1
- package/dist-server/service/scenario/scenario-type.js +27 -24
- package/dist-server/service/scenario/scenario-type.js.map +1 -1
- package/dist-server/service/scenario/scenario.js +27 -24
- package/dist-server/service/scenario/scenario.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-mutation.js +8 -3
- package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-query.d.ts +3 -0
- package/dist-server/service/scenario-instance/scenario-instance-query.js +5 -2
- package/dist-server/service/scenario-instance/scenario-instance-query.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-subscription.js +10 -9
- package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-type.js +76 -71
- package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
- package/dist-server/service/scenario-queue/scenario-queue-subscription.js +4 -4
- package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +1 -1
- package/dist-server/service/scenario-queue/scenario-queue-type.js +8 -8
- package/dist-server/service/scenario-queue/scenario-queue-type.js.map +1 -1
- package/dist-server/service/state-register/data-resolver.js +3 -4
- package/dist-server/service/state-register/data-resolver.js.map +1 -1
- package/dist-server/service/state-register/state-register-mutation.js +41 -16
- package/dist-server/service/state-register/state-register-mutation.js.map +1 -1
- package/dist-server/service/state-register/state-register-query.d.ts +3 -0
- package/dist-server/service/state-register/state-register-query.js +7 -4
- package/dist-server/service/state-register/state-register-query.js.map +1 -1
- package/dist-server/service/state-register/state-register-type.js +3 -3
- package/dist-server/service/state-register/state-register-type.js.map +1 -1
- package/dist-server/service/state-register/state-register.js +4 -2
- package/dist-server/service/state-register/state-register.js.map +1 -1
- package/dist-server/service/step/step-mutation.js +13 -5
- package/dist-server/service/step/step-mutation.js.map +1 -1
- package/dist-server/service/step/step-query.d.ts +3 -0
- package/dist-server/service/step/step-query.js +5 -2
- package/dist-server/service/step/step-query.js.map +1 -1
- package/dist-server/service/step/step-type.d.ts +11 -3
- package/dist-server/service/step/step-type.js +54 -35
- package/dist-server/service/step/step-type.js.map +1 -1
- package/dist-server/service/task-type/task-type-query.js +5 -3
- package/dist-server/service/task-type/task-type-query.js.map +1 -1
- package/dist-server/service/task-type/task-type-type.js +12 -9
- package/dist-server/service/task-type/task-type-type.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/integration/task/headless-scrap.ja.md +11 -4
- package/helps/integration/task/headless-scrap.ko.md +12 -5
- package/helps/integration/task/headless-scrap.md +10 -3
- package/helps/integration/task/headless-scrap.ms.md +9 -2
- package/helps/integration/task/headless-scrap.zh.md +9 -2
- package/package.json +12 -12
- package/translations/en.json +6 -1
- package/translations/ja.json +6 -1
- package/translations/ko.json +6 -1
- package/translations/ms.json +6 -1
- 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(
|
15
|
-
domain:
|
16
|
-
user:
|
17
|
-
variables: options
|
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(
|
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)({
|
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":";;;;AAAA,+CAAoE;AACpE,qCAUgB;AAEhB,yDAAuE;AACvE,iDAA8C;AAE9C,yCAA6C;AAC7C,iDAAwC;AAKjC,IAAM,QAAQ,GAAd,MAAM,QAAQ;
|
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: '
|
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, {
|
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, {
|
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;
|
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: '
|
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: '
|
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;
|
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
|
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 (!
|
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 !==
|
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
|
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 (!
|
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) &&
|
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 !==
|
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":";;;;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;
|
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 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"]}
|