@things-factory/integration-base 8.0.0-alpha.8 → 8.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist-server/controllers/scenario-controller.d.ts +2 -0
  2. package/dist-server/controllers/scenario-controller.js +16 -19
  3. package/dist-server/controllers/scenario-controller.js.map +1 -1
  4. package/dist-server/engine/connection-manager.js.map +1 -1
  5. package/dist-server/engine/connector/headless-connector.d.ts +23 -0
  6. package/dist-server/engine/connector/headless-connector.js +283 -0
  7. package/dist-server/engine/connector/headless-connector.js.map +1 -0
  8. package/dist-server/engine/connector/http-connector.js +1 -1
  9. package/dist-server/engine/connector/http-connector.js.map +1 -1
  10. package/dist-server/engine/connector/index.d.ts +1 -0
  11. package/dist-server/engine/connector/index.js +1 -0
  12. package/dist-server/engine/connector/index.js.map +1 -1
  13. package/dist-server/engine/connector/operato-connector.js +3 -4
  14. package/dist-server/engine/connector/operato-connector.js.map +1 -1
  15. package/dist-server/engine/index.d.ts +1 -0
  16. package/dist-server/engine/index.js +1 -0
  17. package/dist-server/engine/index.js.map +1 -1
  18. package/dist-server/engine/resource-pool/headless-pool.d.ts +1 -0
  19. package/dist-server/engine/resource-pool/headless-pool.js +121 -0
  20. package/dist-server/engine/resource-pool/headless-pool.js.map +1 -0
  21. package/dist-server/engine/resource-pool/index.d.ts +1 -0
  22. package/dist-server/engine/resource-pool/index.js +5 -0
  23. package/dist-server/engine/resource-pool/index.js.map +1 -0
  24. package/dist-server/engine/task/headless-post.js +19 -33
  25. package/dist-server/engine/task/headless-post.js.map +1 -1
  26. package/dist-server/engine/task/headless-scrap.js +20 -13
  27. package/dist-server/engine/task/headless-scrap.js.map +1 -1
  28. package/dist-server/engine/task/utils/headless-pool-for-scenario.js +1 -1
  29. package/dist-server/engine/task/utils/headless-pool-for-scenario.js.map +1 -1
  30. package/dist-server/service/payload-log/payload-log.js +7 -4
  31. package/dist-server/service/payload-log/payload-log.js.map +1 -1
  32. package/dist-server/service/scenario/scenario-query.d.ts +2 -1
  33. package/dist-server/service/scenario/scenario-query.js +10 -0
  34. package/dist-server/service/scenario/scenario-query.js.map +1 -1
  35. package/dist-server/service/scenario/scenario-type.d.ts +3 -3
  36. package/dist-server/service/scenario/scenario-type.js +7 -7
  37. package/dist-server/service/scenario/scenario-type.js.map +1 -1
  38. package/dist-server/service/scenario/scenario.d.ts +3 -1
  39. package/dist-server/service/scenario/scenario.js +9 -0
  40. package/dist-server/service/scenario/scenario.js.map +1 -1
  41. package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
  42. package/dist-server/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +12 -11
  44. package/server/controllers/scenario-controller.ts +27 -36
  45. package/server/engine/connection-manager.ts +1 -1
  46. package/server/engine/connector/headless-connector.ts +341 -0
  47. package/server/engine/connector/http-connector.ts +1 -1
  48. package/server/engine/connector/index.ts +1 -0
  49. package/server/engine/connector/operato-connector.ts +4 -7
  50. package/server/engine/index.ts +1 -0
  51. package/server/engine/resource-pool/headless-pool.ts +136 -0
  52. package/server/engine/resource-pool/index.ts +1 -0
  53. package/server/engine/task/headless-post.ts +21 -40
  54. package/server/engine/task/headless-scrap.ts +21 -18
  55. package/server/engine/task/utils/headless-pool-for-scenario.ts +1 -1
  56. package/server/service/payload-log/payload-log.ts +8 -4
  57. package/server/service/scenario/scenario-query.ts +6 -1
  58. package/server/service/scenario/scenario-type.ts +5 -5
  59. package/server/service/scenario/scenario.ts +15 -19
  60. package/server/service/scenario-instance/scenario-instance-type.ts +1 -1
  61. package/translations/en.json +12 -5
  62. package/translations/ja.json +12 -5
  63. package/translations/ko.json +12 -5
  64. package/translations/ms.json +12 -5
  65. package/translations/zh.json +12 -5
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-query.js","sourceRoot":"","sources":["../../../server/service/scenario/scenario-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { Not, IsNull } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ScenarioEngine } from '../../engine'\nimport { ScenarioInstance, ScenarioInstanceStatus } from '../scenario-instance/scenario-instance-type'\nimport { Step } from '../step/step-type'\nimport { Scenario } from './scenario'\nimport { ScenarioList } from './scenario-type'\nimport { Connection } from '../connection/connection-type'\n\n@Resolver(Scenario)\nexport class ScenarioQuery {\n @Directive('@privilege(category: \"scenario\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Scenario, { description: 'To fetch a scenario' })\n async scenario(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Scenario> {\n const { domain } = context.state\n\n const scenario = await getRepository(Scenario).findOne({ where: { id } })\n if (domain.id == scenario.domainId || domain.parentId == scenario.domainId) {\n return scenario\n }\n }\n\n @Directive('@privilege(category: \"scenario\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ScenarioList, { description: 'To fetch multiple scenarios' })\n async scenarios(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<ScenarioList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Scenario),\n params,\n domain,\n searchables: ['name', 'description', 'type']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() scenario: Scenario) {\n return await getRepository(Domain).findOneBy({ id: scenario.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() scenario: Scenario): Promise<User> {\n return await getRepository(User).findOneBy({ id: scenario.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() scenario: Scenario): Promise<User> {\n return await getRepository(User).findOneBy({ id: scenario.creatorId })\n }\n\n @FieldResolver(type => [Step])\n async steps(@Root() scenario: Scenario, @Ctx() context: ResolverContext): Promise<Step[]> {\n const { domain } = context.state\n\n return await getRepository(Step).find({\n where: { domain: { id: domain.id }, scenario: { id: scenario.id } }\n })\n }\n\n @FieldResolver(type => [Connection])\n async connectionNames(@Root() scenario: Scenario, @Ctx() context: ResolverContext) {\n const { domain } = context.state\n\n const steps = await getRepository(Step).find({\n where: { domain: { id: domain.id }, scenario: { id: scenario.id }, connection: Not(IsNull()) }\n })\n\n return steps.map(step => step.connection).filter(Boolean)\n }\n\n @FieldResolver(type => [Connection])\n async publishTags(@Root() scenario: Scenario, @Ctx() context: ResolverContext) {\n const { domain } = context.state\n\n const steps = await getRepository(Step).find({\n where: { domain: { id: domain.id }, scenario: { id: scenario.id }, task: 'publish' }\n })\n\n return steps.map(step => JSON.parse(step.params)?.tag).filter(Boolean)\n }\n\n @FieldResolver(type => String, { nullable: true })\n async state(@Root() scenario: Scenario, @Ctx() context: ResolverContext): Promise<string> {\n const { domain } = context.state\n\n var instance = ScenarioEngine.getScenarioInstance(domain, scenario.name)\n return instance && ScenarioInstanceStatus[instance.context?.state]\n }\n\n @FieldResolver(type => [ScenarioInstance], { nullable: true })\n async instances(@Root() scenario: Scenario, @Ctx() context: ResolverContext): Promise<ScenarioInstance[]> {\n const { domain } = context.state\n\n return ScenarioEngine.getScenarioInstances(domain, scenario.name)\n }\n}\n"]}
1
+ {"version":3,"file":"scenario-query.js","sourceRoot":"","sources":["../../../server/service/scenario/scenario-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { Not, IsNull } from 'typeorm'\n\nimport { User, Role } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ScenarioEngine } from '../../engine'\nimport { ScenarioInstance, ScenarioInstanceStatus } from '../scenario-instance/scenario-instance-type'\nimport { Step } from '../step/step-type'\nimport { Scenario } from './scenario'\nimport { ScenarioList } from './scenario-type'\nimport { Connection } from '../connection/connection-type'\n\n@Resolver(Scenario)\nexport class ScenarioQuery {\n @Directive('@privilege(category: \"scenario\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Scenario, { description: 'To fetch a scenario' })\n async scenario(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Scenario> {\n const { domain } = context.state\n\n const scenario = await getRepository(Scenario).findOne({ where: { id } })\n if (domain.id == scenario.domainId || domain.parentId == scenario.domainId) {\n return scenario\n }\n }\n\n @Directive('@privilege(category: \"scenario\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ScenarioList, { description: 'To fetch multiple scenarios' })\n async scenarios(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<ScenarioList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Scenario),\n params,\n domain,\n searchables: ['name', 'description', 'type']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() scenario: Scenario) {\n return await getRepository(Domain).findOneBy({ id: scenario.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() scenario: Scenario): Promise<User> {\n return await getRepository(User).findOneBy({ id: scenario.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() scenario: Scenario): Promise<User> {\n return await getRepository(User).findOneBy({ id: scenario.creatorId })\n }\n\n @FieldResolver(type => [Step])\n async steps(@Root() scenario: Scenario, @Ctx() context: ResolverContext): Promise<Step[]> {\n const { domain } = context.state\n\n return await getRepository(Step).find({\n where: { domain: { id: domain.id }, scenario: { id: scenario.id } }\n })\n }\n\n @FieldResolver(type => [Connection])\n async connectionNames(@Root() scenario: Scenario, @Ctx() context: ResolverContext) {\n const { domain } = context.state\n\n const steps = await getRepository(Step).find({\n where: { domain: { id: domain.id }, scenario: { id: scenario.id }, connection: Not(IsNull()) }\n })\n\n return steps.map(step => step.connection).filter(Boolean)\n }\n\n @FieldResolver(type => [Connection])\n async publishTags(@Root() scenario: Scenario, @Ctx() context: ResolverContext) {\n const { domain } = context.state\n\n const steps = await getRepository(Step).find({\n where: { domain: { id: domain.id }, scenario: { id: scenario.id }, task: 'publish' }\n })\n\n return steps.map(step => JSON.parse(step.params)?.tag).filter(Boolean)\n }\n\n @FieldResolver(type => String, { nullable: true })\n async state(@Root() scenario: Scenario, @Ctx() context: ResolverContext): Promise<string> {\n const { domain } = context.state\n\n var instance = ScenarioEngine.getScenarioInstance(domain, scenario.name)\n return instance && ScenarioInstanceStatus[instance.context?.state]\n }\n\n @FieldResolver(type => [ScenarioInstance], { nullable: true })\n async instances(@Root() scenario: Scenario, @Ctx() context: ResolverContext): Promise<ScenarioInstance[]> {\n const { domain } = context.state\n\n return ScenarioEngine.getScenarioInstances(domain, scenario.name)\n }\n\n @FieldResolver(type => Role)\n async role(@Root() scenario: Scenario) {\n return scenario.roleId && (await getRepository(Role).findOneBy({ id: scenario.roleId }))\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { PrivilegeInput } from '@things-factory/auth-base';
1
+ import { ObjectRef } from '@things-factory/shell';
2
2
  import { Scenario } from './scenario';
3
3
  import { StepPatch } from '../step/step-type';
4
4
  export declare class NewScenario {
@@ -9,7 +9,7 @@ export declare class NewScenario {
9
9
  timezone?: string;
10
10
  ttl?: number;
11
11
  active?: boolean;
12
- privilege?: PrivilegeInput;
12
+ role?: ObjectRef;
13
13
  }
14
14
  export declare class ScenarioPatch {
15
15
  id?: string;
@@ -21,7 +21,7 @@ export declare class ScenarioPatch {
21
21
  ttl?: number;
22
22
  active?: boolean;
23
23
  steps?: StepPatch[];
24
- privilege?: PrivilegeInput;
24
+ role?: ObjectRef;
25
25
  cuFlag?: string;
26
26
  }
27
27
  export declare class ScenarioList {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ScenarioList = exports.ScenarioPatch = exports.NewScenario = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const type_graphql_1 = require("type-graphql");
6
- const auth_base_1 = require("@things-factory/auth-base");
6
+ const shell_1 = require("@things-factory/shell");
7
7
  const scenario_1 = require("./scenario");
8
8
  const step_type_1 = require("../step/step-type");
9
9
  let NewScenario = class NewScenario {
@@ -38,9 +38,9 @@ tslib_1.__decorate([
38
38
  tslib_1.__metadata("design:type", Boolean)
39
39
  ], NewScenario.prototype, "active", void 0);
40
40
  tslib_1.__decorate([
41
- (0, type_graphql_1.Field)({ nullable: true }),
42
- tslib_1.__metadata("design:type", auth_base_1.PrivilegeInput)
43
- ], NewScenario.prototype, "privilege", void 0);
41
+ (0, type_graphql_1.Field)(type => shell_1.ObjectRef, { nullable: true }),
42
+ tslib_1.__metadata("design:type", shell_1.ObjectRef)
43
+ ], NewScenario.prototype, "role", void 0);
44
44
  exports.NewScenario = NewScenario = tslib_1.__decorate([
45
45
  (0, type_graphql_1.InputType)()
46
46
  ], NewScenario);
@@ -84,9 +84,9 @@ tslib_1.__decorate([
84
84
  tslib_1.__metadata("design:type", Array)
85
85
  ], ScenarioPatch.prototype, "steps", void 0);
86
86
  tslib_1.__decorate([
87
- (0, type_graphql_1.Field)({ nullable: true }),
88
- tslib_1.__metadata("design:type", auth_base_1.PrivilegeInput)
89
- ], ScenarioPatch.prototype, "privilege", void 0);
87
+ (0, type_graphql_1.Field)(type => shell_1.ObjectRef, { nullable: true }),
88
+ tslib_1.__metadata("design:type", shell_1.ObjectRef)
89
+ ], ScenarioPatch.prototype, "role", void 0);
90
90
  tslib_1.__decorate([
91
91
  (0, type_graphql_1.Field)({ nullable: true }),
92
92
  tslib_1.__metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-type.js","sourceRoot":"","sources":["../../../server/service/scenario/scenario-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,yDAA0D;AAE1D,yCAAqC;AACrC,iDAA6C;AAGtC,IAAM,WAAW,GAAjB,MAAM,WAAW;CAwBvB,CAAA;AAxBY,kCAAW;AAEtB;IADC,IAAA,oBAAK,GAAE;;yCACI;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACd;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,0BAAc;8CAAA;sBAvBf,WAAW;IADvB,IAAA,wBAAS,GAAE;GACC,WAAW,CAwBvB;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;CAiCzB,CAAA;AAjCY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCAC3B;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACd;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAC5B;AAGnB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,0BAAc;gDAAA;AAG1B;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACX;wBAhCJ,aAAa;IADzB,IAAA,wBAAS,GAAE;GACC,aAAa,CAiCzB;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAY;CAMxB,CAAA;AANY,oCAAY;AAEvB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAQ,CAAC,CAAC;;2CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;2CACN;uBALF,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAMxB","sourcesContent":["import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'\n\nimport { PrivilegeInput } from '@things-factory/auth-base'\n\nimport { Scenario } from './scenario'\nimport { StepPatch } from '../step/step-type'\n\n@InputType()\nexport class NewScenario {\n @Field()\n name: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field({ nullable: true })\n type?: string\n\n @Field({ nullable: true })\n schedule?: string\n\n @Field({ nullable: true })\n timezone?: string\n\n @Field({ nullable: true })\n ttl?: number\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field({ nullable: true })\n privilege?: PrivilegeInput\n}\n\n@InputType()\nexport class ScenarioPatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n name?: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field({ nullable: true })\n type?: string\n\n @Field({ nullable: true })\n schedule?: string\n\n @Field({ nullable: true })\n timezone?: string\n\n @Field({ nullable: true })\n ttl?: number\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field(type => [StepPatch], { nullable: true })\n steps?: StepPatch[]\n\n @Field({ nullable: true })\n privilege?: PrivilegeInput\n\n @Field({ nullable: true })\n cuFlag?: string\n}\n\n@ObjectType()\nexport class ScenarioList {\n @Field(type => [Scenario])\n items: Scenario[]\n\n @Field(type => Int)\n total: number\n}\n"]}
1
+ {"version":3,"file":"scenario-type.js","sourceRoot":"","sources":["../../../server/service/scenario/scenario-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,iDAAiD;AAEjD,yCAAqC;AACrC,iDAA6C;AAGtC,IAAM,WAAW,GAAjB,MAAM,WAAW;CAwBvB,CAAA;AAxBY,kCAAW;AAEtB;IADC,IAAA,oBAAK,GAAE;;yCACI;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACd;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACtC,iBAAS;yCAAA;sBAvBL,WAAW;IADvB,IAAA,wBAAS,GAAE;GACC,WAAW,CAwBvB;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;CAiCzB,CAAA;AAjCY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yCAC3B;AAGX;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACN;AAGpB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACb;AAGb;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACd;AAGZ;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACV;AAGhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAC5B;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACtC,iBAAS;2CAAA;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACX;wBAhCJ,aAAa;IADzB,IAAA,wBAAS,GAAE;GACC,aAAa,CAiCzB;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAY;CAMxB,CAAA;AANY,oCAAY;AAEvB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAQ,CAAC,CAAC;;2CACT;AAGjB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;2CACN;uBALF,YAAY;IADxB,IAAA,yBAAU,GAAE;GACA,YAAY,CAMxB","sourcesContent":["import { Field, ID, InputType, Int, ObjectType } from 'type-graphql'\n\nimport { ObjectRef } from '@things-factory/shell'\n\nimport { Scenario } from './scenario'\nimport { StepPatch } from '../step/step-type'\n\n@InputType()\nexport class NewScenario {\n @Field()\n name: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field({ nullable: true })\n type?: string\n\n @Field({ nullable: true })\n schedule?: string\n\n @Field({ nullable: true })\n timezone?: string\n\n @Field({ nullable: true })\n ttl?: number\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field(type => ObjectRef, { nullable: true })\n role?: ObjectRef\n}\n\n@InputType()\nexport class ScenarioPatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n name?: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field({ nullable: true })\n type?: string\n\n @Field({ nullable: true })\n schedule?: string\n\n @Field({ nullable: true })\n timezone?: string\n\n @Field({ nullable: true })\n ttl?: number\n\n @Field({ nullable: true })\n active?: boolean\n\n @Field(type => [StepPatch], { nullable: true })\n steps?: StepPatch[]\n\n @Field(type => ObjectRef, { nullable: true })\n role?: ObjectRef\n\n @Field({ nullable: true })\n cuFlag?: string\n}\n\n@ObjectType()\nexport class ScenarioList {\n @Field(type => [Scenario])\n items: Scenario[]\n\n @Field(type => Int)\n total: number\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { PrivilegeObject, User } from '@things-factory/auth-base';
1
+ import { PrivilegeObject, Role, User } from '@things-factory/auth-base';
2
2
  import { Domain } from '@things-factory/shell';
3
3
  import { Step } from '../step/step-type';
4
4
  export declare class Scenario {
@@ -16,6 +16,8 @@ export declare class Scenario {
16
16
  ttl?: number;
17
17
  steps?: Step[];
18
18
  privilege?: PrivilegeObject;
19
+ role?: Role;
20
+ roleId?: string;
19
21
  createdAt?: Date;
20
22
  updatedAt?: Date;
21
23
  creator?: User;
@@ -97,6 +97,15 @@ tslib_1.__decorate([
97
97
  (0, type_graphql_1.Field)(type => auth_base_1.PrivilegeObject, { nullable: true }),
98
98
  tslib_1.__metadata("design:type", auth_base_1.PrivilegeObject)
99
99
  ], Scenario.prototype, "privilege", void 0);
100
+ tslib_1.__decorate([
101
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.Role),
102
+ (0, type_graphql_1.Field)(type => auth_base_1.Role, { nullable: true }),
103
+ tslib_1.__metadata("design:type", auth_base_1.Role)
104
+ ], Scenario.prototype, "role", void 0);
105
+ tslib_1.__decorate([
106
+ (0, typeorm_1.RelationId)((scenario) => scenario.role),
107
+ tslib_1.__metadata("design:type", String)
108
+ ], Scenario.prototype, "roleId", void 0);
100
109
  tslib_1.__decorate([
101
110
  (0, typeorm_1.CreateDateColumn)(),
102
111
  (0, type_graphql_1.Field)({ nullable: true }),
@@ -1 +1 @@
1
- {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../../server/service/scenario/scenario.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AACpE,qCAUgB;AAEhB,yDAAiF;AACjF,iDAA8C;AAE9C,yCAA6C;AAC7C,iDAAwC;AAKjC,IAAM,QAAQ,GAAd,MAAM,QAAQ;IA8EnB,KAAK,CAAC,KAAK,CAAC,OAKX;QACC,IAAI,CAAC;YACH,MAAM,uBAAc,CAAC,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAI,IAAI,CAAC,IAAI,EAC1D,IAAI,EACJ;gBACE,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM;gBACtC,IAAI,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,IAAI,CAAC,OAAO;gBACnC,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS;aAC9B,CAAC,CAAA;QACN,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAIV;QACC,IAAI,CAAC;YACH,MAAM,uBAAc,CAAC,MAAM,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,KAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QACjG,CAAC;gBAAS,CAAC;QACX,CAAC;IACH,CAAC;CACF,CAAA;AAzGY,4BAAQ;AAGnB;IAFC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;oCACP;AAIX;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;sCACb,cAAM;wCAAA;AAGf;IADC,IAAA,oBAAU,EAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;;0CACnC;AAIjB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;sCACK;AAIb;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACN;AAIpB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCACb;AAIb;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;;wCAChE;AAIhB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,sEAAsE,EAAE,CAAC;;wCAC/F;AAIhB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACT;AAIjB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CACP;AAInB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACT;AAIjB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qCACd;AAIZ;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC9C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;uCAC5B;AAId;IAFC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,2BAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACvC,2BAAe;2CAAA;AAI3B;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;2CAAA;AAIhB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;2CAAA;AAIhB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;yCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;;2CACnC;AAIlB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;yCAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;;2CACnC;mBA5EP,QAAQ;IAHpB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,eAAe,EAAE,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClG,IAAA,yBAAU,GAAE;GACA,QAAQ,CAyGpB","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, PrivilegeInput, 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 @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?: {\n instanceName?: string;\n domain?: Domain;\n user?: User;\n variables?: any;\n }) {\n try {\n await ScenarioEngine.load(options?.instanceName || this.name, \n this, \n { \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?: {\n instanceName?: string;\n domain?: Domain,\n user?: User\n }) {\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()\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 +1 @@
1
- {"version":3,"file":"scenario-instance-type.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-type.ts"],"names":[],"mappings":"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","sourcesContent":["import 'winston-daily-rotate-file'\n\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment-timezone'\nimport { Field, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport util from 'util'\nimport { createLogger, format, transports } from 'winston'\n\nimport { Domain, pubsub, PubSubLogTransport, ScalarObject } from '@things-factory/shell'\nimport { cacheService } from '@things-factory/cache-service'\nimport { User } from '@things-factory/auth-base'\nimport { sleep } from '@things-factory/utils'\n\nimport { publishData } from '../../controllers/publish-data'\nimport { ConnectionManager } from '../../engine/connection-manager'\nimport { TaskRegistry } from '../../engine'\nimport { Context } from '../../engine/types'\nimport { Step } from '../step/step-type'\nimport { handler as edgeHandler } from '../../engine/edge-client'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-instance')\nconst { combine, errors, splat, printf } = format\n\nconst LOGFORMAT = printf(({ level, message, timestamp, stack }) => {\n return `${timestamp} ${level}: ${stack || message}`\n})\n\nfunction getSystemTimeZone() {\n try {\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\n if (!timeZone) {\n throw new Error('Unable to resolve timeZone')\n }\n return timeZone\n } catch (e) {\n console.warn('Failed to get system timeZone, falling back to UTC.', e)\n return 'UTC'\n }\n}\n\nconst SYSTEM_TZ = getSystemTimeZone()\nconst systemTimestamp = format((info, opts) => {\n if (opts.tz) info.timestamp = moment().tz(opts.tz).format()\n return info\n})\n\nexport enum ScenarioInstanceStatus {\n READY = 'READY',\n STARTED = 'STARTED',\n STOPPED = 'STOPPED',\n HALTED = 'HALTED',\n UNLOADED = 'UNLOADED'\n}\n\nregisterEnumType(ScenarioInstanceStatus, {\n name: 'ScenarioInstanceStatus',\n description: 'state enumeration of a scenario-instance'\n})\n\n@ObjectType()\nexport class ScenarioInstanceProgress {\n @Field(type => Int)\n rounds: number\n\n @Field(type => Int)\n rate: number\n\n @Field(type => Int)\n steps: number\n\n @Field(type => Int)\n step: number\n}\n\n@ObjectType()\nexport class ScenarioInstanceState {\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field(type => ScenarioInstanceStatus, { nullable: true })\n public state: ScenarioInstanceStatus\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n public progress: ScenarioInstanceProgress\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public timestamp: Date\n}\n\n@ObjectType()\nexport class ScenarioInstanceRunResult {\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScalarObject, { nullable: true })\n public result: any\n\n @Field({ nullable: true })\n public timestamp: Date\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public state: ScenarioInstanceStatus\n}\n\n@ObjectType()\nexport class ScenarioInstance {\n private subScenarioInstances: ScenarioInstance[] = [] // TODO Imple by WeakSet\n\n public context: Context\n\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public user: User\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n get root(): ScenarioInstance {\n return this.context?.root\n }\n\n @Field({ nullable: true })\n get state(): ScenarioInstanceStatus {\n return this.context?.state\n }\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n get progress(): ScenarioInstanceProgress {\n return this.calcProgress()\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get variables(): any {\n return this.context?.variables\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get data(): any {\n return this.context?.data\n }\n\n @Field(type => ScalarObject, { nullable: true })\n result: any\n\n @Field({ nullable: true })\n get timestamp(): Date {\n return new Date()\n }\n\n @Field({ nullable: true })\n public message: string\n\n private scenarioId: string\n private scenarioTtl: number\n private steps: Step[]\n private rounds: number = 0\n\n private lastStep: number = -1\n private nextStep: number = -1\n private disposer: any\n public addSubScenarioInstance(instance: ScenarioInstance): ScenarioInstance[] {\n this.subScenarioInstances.push(instance)\n return this.subScenarioInstances\n }\n\n public getSubScenarioInstances(): ScenarioInstance[] {\n return this.subScenarioInstances\n }\n\n public async stopSubScenarios() {\n var subScenarioInstances = this.getSubScenarioInstances()\n\n var subInstance = subScenarioInstances.pop()\n while (subInstance) {\n await subInstance.dispose()\n subInstance = subScenarioInstances.pop()\n }\n }\n\n constructor(\n instanceName,\n {\n id: scenarioId,\n ttl: scenarioTtl,\n name: scenarioName,\n steps,\n domain: scenarioDomain\n }: { id: string; ttl?: number; name: string; steps: Step[]; domain: Domain },\n context?\n ) {\n var { domain, user, lng, unsafeIP, prohibitedPrivileges } = context || {}\n domain ||= scenarioDomain\n\n this.scenarioId = scenarioId\n this.scenarioTtl = scenarioTtl\n this.instanceName = instanceName\n this.scenarioName = scenarioName\n this.steps = orderBy(steps || [], step => step.sequence)\n this.domain = domain\n this.user = user\n this.disposer = context?.disposer\n\n this.context = {\n domain,\n user,\n lng,\n unsafeIP,\n prohibitedPrivileges,\n logger:\n context?.logger ||\n createLogger({\n format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),\n transports: [\n new (transports as any).DailyRotateFile({\n filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,\n datePattern: 'YYYY-MM-DD-HH',\n zippedArchive: false,\n maxSize: '5m',\n maxFiles: '14d',\n level: 'info'\n }),\n new PubSubLogTransport({\n topic: 'scenario-instance-log',\n source: { domain, scenarioName, instanceName }\n })\n ]\n }),\n publish: context?.publish || this.publishData.bind(this),\n load: context?.load || this.loadSubscenario.bind(this),\n data: context?.data || {},\n variables: context?.variables || {},\n client: context?.client,\n state: ScenarioInstanceStatus.STOPPED,\n root: context?.root || this,\n closures: [],\n checkState(state = ScenarioInstanceStatus.STARTED) {\n return this.state == state\n }\n }\n\n this.setState(ScenarioInstanceStatus.READY)\n }\n\n async run() {\n var state = this.getState()\n if (state == ScenarioInstanceStatus.STARTED || this.steps.length == 0) {\n return\n }\n\n this.setState(ScenarioInstanceStatus.STARTED)\n var context = this.context\n\n try {\n while (this.getState() == ScenarioInstanceStatus.STARTED) {\n if (this.nextStep == -1) {\n this.setNextStep(0)\n }\n\n if (this.nextStep == 0) {\n this.rounds++\n this.context.logger.info(`Start ${this.rounds} Rounds #######`)\n }\n\n var step = this.steps[this.nextStep]\n var next, data\n\n if (!step.skip) {\n // @ts-ignore: Initializer provides no value for this binding element and the binding element has no default value.\n var { next, state: stepState, data } = (await this.process(step, context)) || {}\n context.data[step.name] = data\n } else {\n next = ''\n stepState = undefined\n }\n\n this.publishState()\n\n await sleep(1)\n\n if (next) {\n this.setNextStep(\n this.steps.findIndex(step => {\n return step.name == next\n })\n )\n if (this.nextStep == -1) {\n throw 'Not Found Next Step'\n }\n } else if (this.nextStep == this.steps.length - 1) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n } else {\n this.setNextStep(this.nextStep + 1)\n }\n\n /* last step 에 의해서 시나리오 state를 변경할 수 있도록 함. */\n if (stepState !== undefined) {\n this.setState(stepState)\n }\n }\n } catch (ex) {\n const message = ex.stack ? ex.stack : ex\n const { scenarioName, domain } = this\n\n this.context.logger.error(ex)\n\n debug('failed to run ', `[ Domain: ${domain.name}, Scenario: ${scenarioName} ]\\n`, ex)\n this.setState(\n ScenarioInstanceStatus.HALTED,\n typeof message == 'object' ? JSON.stringify(message, null, 2) : message\n )\n\n throw ex\n }\n\n this.result = this.steps\n .filter(step => !!step.result)\n .reduce((sum, step) => {\n sum[step.name] = this.context.data[step.name]\n return sum\n }, {})\n\n const { scenarioId, scenarioTtl, variables, message, scenarioName, instanceName, result, domain } = this\n const obj = {\n scenarioName,\n instanceName,\n variables,\n data: this.data,\n result,\n timestamp: new Date(),\n message,\n state: ScenarioInstanceStatus.STOPPED /* redundent, no meaning */\n }\n\n if (this.scenarioTtl && this.scenarioId) {\n setTimeout(() => {\n cacheService.setInCache(scenarioId, { domain: domain.id, variables: variables || {} }, obj, scenarioTtl)\n })\n }\n\n return obj\n }\n\n async loadSubscenario(step, scenarioConfig, context) {\n var { name: stepName, params } = step\n var { preventErrorPropagation } = params || {}\n\n debug('load-subscenario', this.instanceName, stepName, scenarioConfig.name)\n\n context.data[stepName] = {}\n\n let subContext = {\n ...context,\n data: context.data[stepName],\n closures: [],\n state: ScenarioInstanceStatus.READY\n }\n\n if (!scenarioConfig.domain) {\n scenarioConfig.domain = context.domain\n }\n\n var subScenarioInstance = new ScenarioInstance(`${this.instanceName}$${stepName}`, scenarioConfig, subContext)\n this.addSubScenarioInstance(subScenarioInstance)\n await subScenarioInstance.run()\n\n if (!preventErrorPropagation && subScenarioInstance.getState() == ScenarioInstanceStatus.HALTED) {\n throw new Error(`Sub-scenario[${this.instanceName}$${stepName}] is halted.`)\n }\n\n return subContext\n }\n\n publishData(tag, data) {\n publishData(tag, data, this.context)\n }\n\n publishState() {\n const {\n instanceName,\n scenarioName,\n steps,\n domain,\n message,\n context: { data, variables, state }\n } = this\n\n pubsub.publish('scenario-instance-state', {\n scenarioInstanceState: {\n domain,\n instanceName,\n scenarioName,\n state,\n variables,\n progress: this.calcProgress(),\n data,\n message,\n timestamp: new Date()\n }\n })\n\n this.context.logger.info(this.message)\n }\n\n calcProgress(): ScenarioInstanceProgress {\n var steps = this.steps.length\n var step = Math.max(this.lastStep, 0)\n\n return {\n rounds: this.rounds,\n rate: steps ? Math.round(100 * (step / steps)) : 0,\n steps,\n step\n }\n }\n\n setNextStep(step) {\n this.lastStep = this.nextStep + 1\n this.nextStep = step\n }\n\n getState(): ScenarioInstanceStatus {\n return this.context.state\n }\n\n setState(state, message?) {\n if (this.context.state == state) {\n return\n }\n\n this.message = `${this.instanceName}:[state changed] ${ScenarioInstanceStatus[this.getState()]} => ${ScenarioInstanceStatus[state]}${\n message ? ' caused by ' + util.inspect(message, false, 2, true) : ''\n }`\n\n this.context.state = state\n\n if (state == ScenarioInstanceStatus.STOPPED || state == ScenarioInstanceStatus.HALTED) {\n this.setNextStep(-1)\n this.setState(ScenarioInstanceStatus.UNLOADED)\n } else if (state == ScenarioInstanceStatus.UNLOADED) {\n this.setNextStep(-1)\n this.dispose()\n }\n\n this.publishState()\n }\n\n async start() {\n await this.run()\n }\n\n stop() {\n if (this.getState() !== ScenarioInstanceStatus.HALTED) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n }\n }\n\n unload() {\n this.setState(ScenarioInstanceStatus.UNLOADED)\n }\n\n async dispose() {\n await this.stopSubScenarios()\n\n this.unload()\n\n var closure = this.context?.closures?.pop()\n while (closure) {\n closure.call(this)\n closure = this.context?.closures?.pop()\n }\n\n if (this.disposer) {\n await this.disposer.call(this)\n }\n\n // {{ CHECKPOINT 본 인스턴스를 위해서 생성된 logger를 닫는다. 사용을 완료하고 닫기위해서 지연해서 수행한다.\n if (this.context?.logger) {\n setTimeout(() => {\n this.context.logger.close()\n }, 300)\n }\n // }}\n }\n\n async process(step, context): Promise<{ next: string; state: ScenarioInstanceStatus; data: object }> {\n this.context.logger.info(`Step '${step.name}'(${step.id}) started.`)\n\n step = {\n ...step\n } // copy step\n\n try {\n step.params = JSON.parse(step.params)\n } catch (ex) {\n this.context.logger.error(`params(${step.params}) parsing error. params must be a JSON.`, ex)\n }\n step.params = step.params || {}\n\n const connection =\n step.connection && ConnectionManager.getConnectionInstanceEntityByName(this.domain, step.connection)\n\n if (!connection || !connection.edgeId) {\n var handler = TaskRegistry.getTaskHandler(step.task)\n if (!handler) {\n throw new Error(`no task handler for step '${step.name}'(${step.id})`)\n }\n\n var retval: any = await handler(step, context)\n } else {\n var retval: any = await edgeHandler(step, context)\n }\n\n if (step.log) {\n var { data } = retval || {}\n this.context.logger.info(`returns ${typeof data == 'string' ? data : JSON.stringify(data, null, 2)}`)\n }\n\n this.context.logger.info(`Step done.`)\n return retval\n }\n}\n\n@ObjectType()\nexport class ScenarioInstanceList {\n @Field(type => [ScenarioInstance])\n items: ScenarioInstance[]\n\n @Field(type => Int)\n total: number\n}\n"]}
1
+ {"version":3,"file":"scenario-instance-type.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-type.ts"],"names":[],"mappings":"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","sourcesContent":["import 'winston-daily-rotate-file'\n\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment-timezone'\nimport { Field, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport util from 'util'\nimport { createLogger, format, transports } from 'winston'\n\nimport { Domain, pubsub, PubSubLogTransport, ScalarObject } from '@things-factory/shell'\nimport { cacheService } from '@things-factory/cache-service'\nimport { User } from '@things-factory/auth-base'\nimport { sleep } from '@things-factory/utils'\n\nimport { publishData } from '../../controllers/publish-data'\nimport { ConnectionManager } from '../../engine/connection-manager'\nimport { TaskRegistry } from '../../engine'\nimport { Context } from '../../engine/types'\nimport { Step } from '../step/step-type'\nimport { handler as edgeHandler } from '../../engine/edge-client'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-instance')\nconst { combine, errors, splat, printf } = format\n\nconst LOGFORMAT = printf(({ level, message, timestamp, stack }) => {\n return `${timestamp} ${level}: ${stack || message}`\n})\n\nfunction getSystemTimeZone() {\n try {\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\n if (!timeZone) {\n throw new Error('Unable to resolve timeZone')\n }\n return timeZone\n } catch (e) {\n console.warn('Failed to get system timeZone, falling back to UTC.', e)\n return 'UTC'\n }\n}\n\nconst SYSTEM_TZ = getSystemTimeZone()\nconst systemTimestamp = format((info, opts: { tz?: string }) => {\n if (opts.tz) info.timestamp = moment().tz(opts.tz).format()\n return info\n})\n\nexport enum ScenarioInstanceStatus {\n READY = 'READY',\n STARTED = 'STARTED',\n STOPPED = 'STOPPED',\n HALTED = 'HALTED',\n UNLOADED = 'UNLOADED'\n}\n\nregisterEnumType(ScenarioInstanceStatus, {\n name: 'ScenarioInstanceStatus',\n description: 'state enumeration of a scenario-instance'\n})\n\n@ObjectType()\nexport class ScenarioInstanceProgress {\n @Field(type => Int)\n rounds: number\n\n @Field(type => Int)\n rate: number\n\n @Field(type => Int)\n steps: number\n\n @Field(type => Int)\n step: number\n}\n\n@ObjectType()\nexport class ScenarioInstanceState {\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field(type => ScenarioInstanceStatus, { nullable: true })\n public state: ScenarioInstanceStatus\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n public progress: ScenarioInstanceProgress\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public timestamp: Date\n}\n\n@ObjectType()\nexport class ScenarioInstanceRunResult {\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScalarObject, { nullable: true })\n public result: any\n\n @Field({ nullable: true })\n public timestamp: Date\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public state: ScenarioInstanceStatus\n}\n\n@ObjectType()\nexport class ScenarioInstance {\n private subScenarioInstances: ScenarioInstance[] = [] // TODO Imple by WeakSet\n\n public context: Context\n\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public user: User\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n get root(): ScenarioInstance {\n return this.context?.root\n }\n\n @Field({ nullable: true })\n get state(): ScenarioInstanceStatus {\n return this.context?.state\n }\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n get progress(): ScenarioInstanceProgress {\n return this.calcProgress()\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get variables(): any {\n return this.context?.variables\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get data(): any {\n return this.context?.data\n }\n\n @Field(type => ScalarObject, { nullable: true })\n result: any\n\n @Field({ nullable: true })\n get timestamp(): Date {\n return new Date()\n }\n\n @Field({ nullable: true })\n public message: string\n\n private scenarioId: string\n private scenarioTtl: number\n private steps: Step[]\n private rounds: number = 0\n\n private lastStep: number = -1\n private nextStep: number = -1\n private disposer: any\n public addSubScenarioInstance(instance: ScenarioInstance): ScenarioInstance[] {\n this.subScenarioInstances.push(instance)\n return this.subScenarioInstances\n }\n\n public getSubScenarioInstances(): ScenarioInstance[] {\n return this.subScenarioInstances\n }\n\n public async stopSubScenarios() {\n var subScenarioInstances = this.getSubScenarioInstances()\n\n var subInstance = subScenarioInstances.pop()\n while (subInstance) {\n await subInstance.dispose()\n subInstance = subScenarioInstances.pop()\n }\n }\n\n constructor(\n instanceName,\n {\n id: scenarioId,\n ttl: scenarioTtl,\n name: scenarioName,\n steps,\n domain: scenarioDomain\n }: { id: string; ttl?: number; name: string; steps: Step[]; domain: Domain },\n context?\n ) {\n var { domain, user, lng, unsafeIP, prohibitedPrivileges } = context || {}\n domain ||= scenarioDomain\n\n this.scenarioId = scenarioId\n this.scenarioTtl = scenarioTtl\n this.instanceName = instanceName\n this.scenarioName = scenarioName\n this.steps = orderBy(steps || [], step => step.sequence)\n this.domain = domain\n this.user = user\n this.disposer = context?.disposer\n\n this.context = {\n domain,\n user,\n lng,\n unsafeIP,\n prohibitedPrivileges,\n logger:\n context?.logger ||\n createLogger({\n format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),\n transports: [\n new (transports as any).DailyRotateFile({\n filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,\n datePattern: 'YYYY-MM-DD-HH',\n zippedArchive: false,\n maxSize: '5m',\n maxFiles: '14d',\n level: 'info'\n }),\n new PubSubLogTransport({\n topic: 'scenario-instance-log',\n source: { domain, scenarioName, instanceName }\n })\n ]\n }),\n publish: context?.publish || this.publishData.bind(this),\n load: context?.load || this.loadSubscenario.bind(this),\n data: context?.data || {},\n variables: context?.variables || {},\n client: context?.client,\n state: ScenarioInstanceStatus.STOPPED,\n root: context?.root || this,\n closures: [],\n checkState(state = ScenarioInstanceStatus.STARTED) {\n return this.state == state\n }\n }\n\n this.setState(ScenarioInstanceStatus.READY)\n }\n\n async run() {\n var state = this.getState()\n if (state == ScenarioInstanceStatus.STARTED || this.steps.length == 0) {\n return\n }\n\n this.setState(ScenarioInstanceStatus.STARTED)\n var context = this.context\n\n try {\n while (this.getState() == ScenarioInstanceStatus.STARTED) {\n if (this.nextStep == -1) {\n this.setNextStep(0)\n }\n\n if (this.nextStep == 0) {\n this.rounds++\n this.context.logger.info(`Start ${this.rounds} Rounds #######`)\n }\n\n var step = this.steps[this.nextStep]\n var next, data\n\n if (!step.skip) {\n // @ts-ignore: Initializer provides no value for this binding element and the binding element has no default value.\n var { next, state: stepState, data } = (await this.process(step, context)) || {}\n context.data[step.name] = data\n } else {\n next = ''\n stepState = undefined\n }\n\n this.publishState()\n\n await sleep(1)\n\n if (next) {\n this.setNextStep(\n this.steps.findIndex(step => {\n return step.name == next\n })\n )\n if (this.nextStep == -1) {\n throw 'Not Found Next Step'\n }\n } else if (this.nextStep == this.steps.length - 1) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n } else {\n this.setNextStep(this.nextStep + 1)\n }\n\n /* last step 에 의해서 시나리오 state를 변경할 수 있도록 함. */\n if (stepState !== undefined) {\n this.setState(stepState)\n }\n }\n } catch (ex) {\n const message = ex.stack ? ex.stack : ex\n const { scenarioName, domain } = this\n\n this.context.logger.error(ex)\n\n debug('failed to run ', `[ Domain: ${domain.name}, Scenario: ${scenarioName} ]\\n`, ex)\n this.setState(\n ScenarioInstanceStatus.HALTED,\n typeof message == 'object' ? JSON.stringify(message, null, 2) : message\n )\n\n throw ex\n }\n\n this.result = this.steps\n .filter(step => !!step.result)\n .reduce((sum, step) => {\n sum[step.name] = this.context.data[step.name]\n return sum\n }, {})\n\n const { scenarioId, scenarioTtl, variables, message, scenarioName, instanceName, result, domain } = this\n const obj = {\n scenarioName,\n instanceName,\n variables,\n data: this.data,\n result,\n timestamp: new Date(),\n message,\n state: ScenarioInstanceStatus.STOPPED /* redundent, no meaning */\n }\n\n if (this.scenarioTtl && this.scenarioId) {\n setTimeout(() => {\n cacheService.setInCache(scenarioId, { domain: domain.id, variables: variables || {} }, obj, scenarioTtl)\n })\n }\n\n return obj\n }\n\n async loadSubscenario(step, scenarioConfig, context) {\n var { name: stepName, params } = step\n var { preventErrorPropagation } = params || {}\n\n debug('load-subscenario', this.instanceName, stepName, scenarioConfig.name)\n\n context.data[stepName] = {}\n\n let subContext = {\n ...context,\n data: context.data[stepName],\n closures: [],\n state: ScenarioInstanceStatus.READY\n }\n\n if (!scenarioConfig.domain) {\n scenarioConfig.domain = context.domain\n }\n\n var subScenarioInstance = new ScenarioInstance(`${this.instanceName}$${stepName}`, scenarioConfig, subContext)\n this.addSubScenarioInstance(subScenarioInstance)\n await subScenarioInstance.run()\n\n if (!preventErrorPropagation && subScenarioInstance.getState() == ScenarioInstanceStatus.HALTED) {\n throw new Error(`Sub-scenario[${this.instanceName}$${stepName}] is halted.`)\n }\n\n return subContext\n }\n\n publishData(tag, data) {\n publishData(tag, data, this.context)\n }\n\n publishState() {\n const {\n instanceName,\n scenarioName,\n steps,\n domain,\n message,\n context: { data, variables, state }\n } = this\n\n pubsub.publish('scenario-instance-state', {\n scenarioInstanceState: {\n domain,\n instanceName,\n scenarioName,\n state,\n variables,\n progress: this.calcProgress(),\n data,\n message,\n timestamp: new Date()\n }\n })\n\n this.context.logger.info(this.message)\n }\n\n calcProgress(): ScenarioInstanceProgress {\n var steps = this.steps.length\n var step = Math.max(this.lastStep, 0)\n\n return {\n rounds: this.rounds,\n rate: steps ? Math.round(100 * (step / steps)) : 0,\n steps,\n step\n }\n }\n\n setNextStep(step) {\n this.lastStep = this.nextStep + 1\n this.nextStep = step\n }\n\n getState(): ScenarioInstanceStatus {\n return this.context.state\n }\n\n setState(state, message?) {\n if (this.context.state == state) {\n return\n }\n\n this.message = `${this.instanceName}:[state changed] ${ScenarioInstanceStatus[this.getState()]} => ${ScenarioInstanceStatus[state]}${\n message ? ' caused by ' + util.inspect(message, false, 2, true) : ''\n }`\n\n this.context.state = state\n\n if (state == ScenarioInstanceStatus.STOPPED || state == ScenarioInstanceStatus.HALTED) {\n this.setNextStep(-1)\n this.setState(ScenarioInstanceStatus.UNLOADED)\n } else if (state == ScenarioInstanceStatus.UNLOADED) {\n this.setNextStep(-1)\n this.dispose()\n }\n\n this.publishState()\n }\n\n async start() {\n await this.run()\n }\n\n stop() {\n if (this.getState() !== ScenarioInstanceStatus.HALTED) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n }\n }\n\n unload() {\n this.setState(ScenarioInstanceStatus.UNLOADED)\n }\n\n async dispose() {\n await this.stopSubScenarios()\n\n this.unload()\n\n var closure = this.context?.closures?.pop()\n while (closure) {\n closure.call(this)\n closure = this.context?.closures?.pop()\n }\n\n if (this.disposer) {\n await this.disposer.call(this)\n }\n\n // {{ CHECKPOINT 본 인스턴스를 위해서 생성된 logger를 닫는다. 사용을 완료하고 닫기위해서 지연해서 수행한다.\n if (this.context?.logger) {\n setTimeout(() => {\n this.context.logger.close()\n }, 300)\n }\n // }}\n }\n\n async process(step, context): Promise<{ next: string; state: ScenarioInstanceStatus; data: object }> {\n this.context.logger.info(`Step '${step.name}'(${step.id}) started.`)\n\n step = {\n ...step\n } // copy step\n\n try {\n step.params = JSON.parse(step.params)\n } catch (ex) {\n this.context.logger.error(`params(${step.params}) parsing error. params must be a JSON.`, ex)\n }\n step.params = step.params || {}\n\n const connection =\n step.connection && ConnectionManager.getConnectionInstanceEntityByName(this.domain, step.connection)\n\n if (!connection || !connection.edgeId) {\n var handler = TaskRegistry.getTaskHandler(step.task)\n if (!handler) {\n throw new Error(`no task handler for step '${step.name}'(${step.id})`)\n }\n\n var retval: any = await handler(step, context)\n } else {\n var retval: any = await edgeHandler(step, context)\n }\n\n if (step.log) {\n var { data } = retval || {}\n this.context.logger.info(`returns ${typeof data == 'string' ? data : JSON.stringify(data, null, 2)}`)\n }\n\n this.context.logger.info(`Step done.`)\n return retval\n }\n}\n\n@ObjectType()\nexport class ScenarioInstanceList {\n @Field(type => [ScenarioInstance])\n items: ScenarioInstance[]\n\n @Field(type => Int)\n total: number\n}\n"]}