@things-factory/integration-base 6.2.70 → 6.2.75

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 (62) hide show
  1. package/dist-server/engine/analyzer/analyze-integration.js +2 -2
  2. package/dist-server/engine/analyzer/analyze-integration.js.map +1 -1
  3. package/dist-server/engine/connector/operato-connector.js +4 -3
  4. package/dist-server/engine/connector/operato-connector.js.map +1 -1
  5. package/dist-server/engine/scenario-engine.js +4 -3
  6. package/dist-server/engine/scenario-engine.js.map +1 -1
  7. package/dist-server/engine/task/pick-pending-scenario.js +2 -2
  8. package/dist-server/engine/task/pick-pending-scenario.js.map +1 -1
  9. package/dist-server/engine/task/stop-scenario.js +2 -2
  10. package/dist-server/engine/task/stop-scenario.js.map +1 -1
  11. package/dist-server/engine/task/sub-scenario.js +2 -2
  12. package/dist-server/engine/task/sub-scenario.js.map +1 -1
  13. package/dist-server/engine/task/switch-range-scenario.js +2 -2
  14. package/dist-server/engine/task/switch-range-scenario.js.map +1 -1
  15. package/dist-server/engine/task/switch-scenario.js +2 -2
  16. package/dist-server/engine/task/switch-scenario.js.map +1 -1
  17. package/dist-server/routers/scenario-schedule-callback-router.js +2 -2
  18. package/dist-server/routers/scenario-schedule-callback-router.js.map +1 -1
  19. package/dist-server/routers/scenario-view-router.js +2 -2
  20. package/dist-server/routers/scenario-view-router.js.map +1 -1
  21. package/dist-server/service/index.js +1 -1
  22. package/dist-server/service/index.js.map +1 -1
  23. package/dist-server/service/scenario/index.js +2 -2
  24. package/dist-server/service/scenario/index.js.map +1 -1
  25. package/dist-server/service/scenario/scenario-mutation.js +18 -18
  26. package/dist-server/service/scenario/scenario-mutation.js.map +1 -1
  27. package/dist-server/service/scenario/scenario-query.js +13 -12
  28. package/dist-server/service/scenario/scenario-query.js.map +1 -1
  29. package/dist-server/service/scenario/scenario-type.js +3 -118
  30. package/dist-server/service/scenario/scenario-type.js.map +1 -1
  31. package/dist-server/service/scenario/scenario.js +124 -0
  32. package/dist-server/service/scenario/scenario.js.map +1 -0
  33. package/dist-server/service/scenario-instance/scenario-instance-mutation.js +2 -2
  34. package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -1
  35. package/dist-server/service/step/step-mutation.js +2 -2
  36. package/dist-server/service/step/step-mutation.js.map +1 -1
  37. package/dist-server/service/step/step-query.js +3 -3
  38. package/dist-server/service/step/step-query.js.map +1 -1
  39. package/dist-server/service/step/step-type.js +4 -4
  40. package/dist-server/service/step/step-type.js.map +1 -1
  41. package/dist-server/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +2 -2
  43. package/server/engine/analyzer/analyze-integration.ts +1 -1
  44. package/server/engine/connector/operato-connector.ts +4 -3
  45. package/server/engine/scenario-engine.ts +3 -1
  46. package/server/engine/task/pick-pending-scenario.ts +1 -1
  47. package/server/engine/task/stop-scenario.ts +1 -1
  48. package/server/engine/task/sub-scenario.ts +1 -1
  49. package/server/engine/task/switch-range-scenario.ts +1 -1
  50. package/server/engine/task/switch-scenario.ts +1 -1
  51. package/server/routers/scenario-schedule-callback-router.ts +1 -1
  52. package/server/routers/scenario-view-router.ts +2 -1
  53. package/server/service/index.ts +1 -1
  54. package/server/service/scenario/index.ts +1 -1
  55. package/server/service/scenario/scenario-mutation.ts +3 -5
  56. package/server/service/scenario/scenario-query.ts +2 -1
  57. package/server/service/scenario/scenario-type.ts +3 -106
  58. package/server/service/scenario/scenario.ts +109 -0
  59. package/server/service/scenario-instance/scenario-instance-mutation.ts +1 -1
  60. package/server/service/step/step-mutation.ts +1 -1
  61. package/server/service/step/step-query.ts +1 -1
  62. package/server/service/step/step-type.ts +1 -1
@@ -4,7 +4,7 @@ exports.analyzeIntegration = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const uniq_1 = tslib_1.__importDefault(require("lodash/uniq"));
6
6
  const shell_1 = require("@things-factory/shell");
7
- const scenario_type_1 = require("../../service/scenario/scenario-type");
7
+ const scenario_1 = require("../../service/scenario/scenario");
8
8
  const connection_type_1 = require("../../service/connection/connection-type");
9
9
  async function analyzeIntegration(domain) {
10
10
  const tagNames = [];
@@ -13,7 +13,7 @@ async function analyzeIntegration(domain) {
13
13
  relationships: []
14
14
  };
15
15
  var id = 0;
16
- const scenarios = await (0, shell_1.getRepository)(scenario_type_1.Scenario).find({
16
+ const scenarios = await (0, shell_1.getRepository)(scenario_1.Scenario).find({
17
17
  where: { domain: { id: domain.id } },
18
18
  relations: ['steps']
19
19
  });
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-integration.js","sourceRoot":"","sources":["../../../server/engine/analyzer/analyze-integration.ts"],"names":[],"mappings":"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","sourcesContent":["import uniq from 'lodash/uniq'\n\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { Scenario } from '../../service/scenario/scenario-type'\nimport { Connection } from '../../service/connection/connection-type'\n\nexport async function analyzeIntegration(domain: Domain) {\n const tagNames = []\n\n const model = {\n nodes: [],\n relationships: []\n }\n\n var id = 0\n\n const scenarios = await getRepository(Scenario).find({\n where: { domain: { id: domain.id } },\n relations: ['steps']\n })\n\n const connections = await getRepository(Connection).find({\n where: { domain: { id: domain.id } }\n })\n\n model.nodes = model.nodes.concat(\n scenarios.map(scenario => {\n return {\n id: scenario.id,\n labels: ['Scenario'],\n text: scenario.name,\n icon: 'settings',\n properties: {\n name: scenario.name,\n description: scenario.description\n }\n }\n })\n )\n\n model.nodes = model.nodes.concat(\n connections.map(connection => {\n return {\n id: connection.id,\n labels: ['Connection'],\n text: connection.name,\n icon: 'link',\n properties: {\n name: connection.name,\n description: connection.description\n }\n }\n })\n )\n\n scenarios.forEach(scenario => {\n const connectionNames = uniq(scenario.steps.map(step => step.connection).filter(Boolean))\n const connectionList = connectionNames\n .map(connectionName => connections.find(connection => connection.name == connectionName))\n .filter(Boolean)\n\n const relationships = connectionList.map(connection => {\n return {\n id: ++id,\n type: 'using',\n startNode: scenario.id,\n endNode: connection.id,\n properties: {}\n }\n })\n\n model.relationships = model.relationships.concat(relationships)\n })\n\n scenarios.forEach(scenario => {\n const tags = uniq(\n scenario.steps\n .filter(step => !step.connection && step.task == 'publish')\n .map(step => JSON.parse(step.params)?.tag)\n .filter(Boolean)\n )\n\n for (const tag of tags) {\n if (tagNames.includes(tag)) {\n continue\n }\n\n model.nodes.push({\n id: `tag-${tag}`,\n labels: ['Tag'],\n text: tag,\n icon: 'label',\n properties: {\n tag\n }\n })\n\n tagNames.push(tag)\n }\n\n const relationships = tags.map(tag => {\n return {\n id: ++id,\n type: 'publish',\n startNode: scenario.id,\n endNode: `tag-${tag}`,\n properties: {}\n }\n })\n\n model.relationships = model.relationships.concat(relationships)\n })\n\n return model\n}\n"]}
1
+ {"version":3,"file":"analyze-integration.js","sourceRoot":"","sources":["../../../server/engine/analyzer/analyze-integration.ts"],"names":[],"mappings":"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","sourcesContent":["import uniq from 'lodash/uniq'\n\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { Scenario } from '../../service/scenario/scenario'\nimport { Connection } from '../../service/connection/connection-type'\n\nexport async function analyzeIntegration(domain: Domain) {\n const tagNames = []\n\n const model = {\n nodes: [],\n relationships: []\n }\n\n var id = 0\n\n const scenarios = await getRepository(Scenario).find({\n where: { domain: { id: domain.id } },\n relations: ['steps']\n })\n\n const connections = await getRepository(Connection).find({\n where: { domain: { id: domain.id } }\n })\n\n model.nodes = model.nodes.concat(\n scenarios.map(scenario => {\n return {\n id: scenario.id,\n labels: ['Scenario'],\n text: scenario.name,\n icon: 'settings',\n properties: {\n name: scenario.name,\n description: scenario.description\n }\n }\n })\n )\n\n model.nodes = model.nodes.concat(\n connections.map(connection => {\n return {\n id: connection.id,\n labels: ['Connection'],\n text: connection.name,\n icon: 'link',\n properties: {\n name: connection.name,\n description: connection.description\n }\n }\n })\n )\n\n scenarios.forEach(scenario => {\n const connectionNames = uniq(scenario.steps.map(step => step.connection).filter(Boolean))\n const connectionList = connectionNames\n .map(connectionName => connections.find(connection => connection.name == connectionName))\n .filter(Boolean)\n\n const relationships = connectionList.map(connection => {\n return {\n id: ++id,\n type: 'using',\n startNode: scenario.id,\n endNode: connection.id,\n properties: {}\n }\n })\n\n model.relationships = model.relationships.concat(relationships)\n })\n\n scenarios.forEach(scenario => {\n const tags = uniq(\n scenario.steps\n .filter(step => !step.connection && step.task == 'publish')\n .map(step => JSON.parse(step.params)?.tag)\n .filter(Boolean)\n )\n\n for (const tag of tags) {\n if (tagNames.includes(tag)) {\n continue\n }\n\n model.nodes.push({\n id: `tag-${tag}`,\n labels: ['Tag'],\n text: tag,\n icon: 'label',\n properties: {\n tag\n }\n })\n\n tagNames.push(tag)\n }\n\n const relationships = tags.map(tag => {\n return {\n id: ++id,\n type: 'publish',\n startNode: scenario.id,\n endNode: `tag-${tag}`,\n properties: {}\n }\n })\n\n model.relationships = model.relationships.concat(relationships)\n })\n\n return model\n}\n"]}
@@ -12,7 +12,8 @@ const subscriptions_1 = require("@apollo/client/link/subscriptions");
12
12
  const utilities_1 = require("@apollo/client/utilities");
13
13
  const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
14
14
  const connection_manager_1 = require("../connection-manager");
15
- const service_1 = require("../../service");
15
+ const scenario_1 = require("../../service/scenario/scenario");
16
+ const scenario_instance_type_1 = require("../../service/scenario-instance/scenario-instance-type");
16
17
  const shell_1 = require("@things-factory/shell");
17
18
  const auth_base_1 = require("@things-factory/auth-base");
18
19
  const debug = require('debug')('things-factory:integration-base:operato-connector-subscription');
@@ -98,7 +99,7 @@ class OperatoConnector {
98
99
  return;
99
100
  let scenarioName = subscriptionHandlers[tag];
100
101
  // fetch a scenario
101
- var selectedScenario = await (0, shell_1.getRepository)(service_1.Scenario).findOne({
102
+ var selectedScenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
102
103
  where: {
103
104
  name: scenarioName
104
105
  },
@@ -164,7 +165,7 @@ class OperatoConnector {
164
165
  }
165
166
  /* create a scenario instance */
166
167
  let instanceName = scenario.name + '-' + String(Date.now());
167
- var instance = new service_1.ScenarioInstance(instanceName, scenario, {
168
+ var instance = new scenario_instance_type_1.ScenarioInstance(instanceName, scenario, {
168
169
  user,
169
170
  domain,
170
171
  variables,
@@ -1 +1 @@
1
- {"version":3,"file":"operato-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/operato-connector.ts"],"names":[],"mappings":"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","sourcesContent":["import 'cross-fetch/polyfill'\n\nimport { ApolloClient, InMemoryCache, createHttpLink, split } from '@apollo/client/core'\nimport { setContext } from '@apollo/client/link/context'\n\n// for subscription\nimport WebSocket from 'ws'\nimport { createClient } from 'graphql-ws'\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions'\nimport { Observable, getMainDefinition } from '@apollo/client/utilities'\nimport gql from 'graphql-tag'\n\nimport { ConnectionManager } from '../connection-manager'\nimport { Connector } from '../types'\nimport { Scenario, ScenarioInstance } from '../../service'\n\nimport { getRepository, GraphqlLocalClient, Domain } from '@things-factory/shell'\nimport { PrivilegeObject, User, checkPermission } from '@things-factory/auth-base'\n\nconst debug = require('debug')('things-factory:integration-base:operato-connector-subscription')\n\nconst defaultOptions: any = {\n watchQuery: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'ignore'\n },\n query: {\n fetchPolicy: 'no-cache', //'network-only'\n errorPolicy: 'all'\n },\n mutate: {\n errorPolicy: 'all'\n }\n}\n\nconst cache = new InMemoryCache({\n addTypename: false\n})\n\nexport const GRAPHQL_URI = '/graphql'\nexport const SUBSCRIPTION_URI = GRAPHQL_URI\n\ninterface SubscriberData {\n tag: string\n scenario: any\n subscriptionObserver: any\n}\n;``\n\nexport class OperatoConnector implements Connector {\n private context: any\n\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('graphql-connector connections are ready')\n }\n\n async connect(connection) {\n var {\n endpoint: uri,\n params: { authKey, domain, subscriptionHandlers = {} }\n } = connection\n\n if (!authKey || !domain) {\n throw new Error('some connection paramter missing.')\n }\n\n var domainOwner = await getRepository(User).findOne({\n where: {\n id: connection.domain.owner\n }\n })\n\n this.context = {\n domain: connection.domain,\n user: domainOwner\n /* TODO: domainOwner 대신 특정 유저를 지정할 수 있도록 개선해야함. 모든 커넥션에 유저를 지정하는 기능으로 일반화할 필요가 있는 지 고민해야함 */\n }\n\n const httpLink = createHttpLink({\n uri: uri\n })\n\n /* \n CHECKPOINT: \n 1. GraphqQLWsLink를 사용하면 setContext를 통한 추가 헤더 설정이 무시됩니다.\n 따라서, GraphQLWsLink를 사용하려면, connectionParams를 통해 헤더를 설정해야 합니다.\n \n 2. 서버에서 실행시, webSocketImpl을 명시적으로 지정해야 합니다.\n */\n const wsLink = new GraphQLWsLink(\n createClient({\n url: uri.replace(/^http/, 'ws'),\n keepAlive: 10_000,\n retryAttempts: 1_000_000,\n shouldRetry: e => true,\n webSocketImpl: WebSocket,\n connectionParams: {\n headers: {\n 'x-things-factory-domain': domain,\n authorization: authKey ? `Bearer ${authKey}` : ''\n }\n }\n })\n )\n\n const splitLink = split(\n ({ query }) => {\n const def = getMainDefinition(query)\n return def.kind === 'OperationDefinition' && def.operation === 'subscription'\n },\n wsLink,\n setContext((_, { headers }) => {\n return {\n headers: {\n ...headers,\n 'x-things-factory-domain': domain,\n authorization: authKey ? `Bearer ${authKey}` : ''\n }\n }\n }).concat(httpLink)\n )\n\n var client = new ApolloClient({\n defaultOptions,\n cache,\n link: splitLink\n })\n\n var subscriptions: SubscriberData[] = []\n Object.keys(subscriptionHandlers).forEach(async tag => {\n if (!tag || !subscriptionHandlers[tag]) return\n\n let scenarioName = subscriptionHandlers[tag]\n\n // fetch a scenario\n var selectedScenario = await getRepository(Scenario).findOne({\n where: {\n name: scenarioName\n },\n relations: ['steps', 'domain']\n })\n\n const subscription = client.subscribe({\n query: gql`\n subscription {\n data(tag: \"${tag}\") {\n tag\n data\n }\n }\n `\n })\n\n var subscriptionObserver = subscription.subscribe({\n next: async data => {\n debug('received pubsub msg.:', data?.data)\n await this.runScenario(subscriptions, data?.data?.data)\n },\n error: error => {\n ConnectionManager.logger.error(`(${connection.name}:${connection.endpoint}) subscription error: ${error}`)\n },\n complete: () => {\n ConnectionManager.logger.info(`(${connection.name}:${connection.endpoint}) subscription complete`)\n }\n })\n\n ConnectionManager.logger.info(\n `(${connection.name}:${connection.endpoint}) subscription closed flag: ${subscriptionObserver.closed}`\n )\n\n subscriptions.push({\n tag,\n scenario: selectedScenario,\n subscriptionObserver\n })\n ConnectionManager.logger.info(`(${tag}:${scenarioName}) subscription closed flag: ${subscriptionObserver.closed}`)\n })\n\n client['subscriptions'] = subscriptions\n ConnectionManager.addConnectionInstance(connection, client)\n\n ConnectionManager.logger.info(\n `graphql-connector connection(${connection.name}:${connection.endpoint}) is connected`\n )\n }\n\n async disconnect(connection) {\n var client = ConnectionManager.getConnectionInstance(connection)\n let subscriptions: SubscriberData[] = client['subscriptions']\n subscriptions.forEach(subscription => subscription.subscriptionObserver.unsubscribe())\n client.stop()\n ConnectionManager.removeConnectionInstance(connection)\n\n ConnectionManager.logger.info(`graphql-connector connection(${connection.name}) is disconnected`)\n }\n\n async runScenario(subscriptions: SubscriberData[], variables: any): Promise<ScenarioInstance> {\n const { domain, user, unsafeIP, prohibitedPrivileges } = this.context\n const { tag } = variables\n\n if (!tag) {\n throw new Error(`tag is invalid - ${tag}`)\n }\n\n var scenario = subscriptions.find(subscription => subscription.tag === tag)?.scenario\n if (!scenario) {\n throw new Error(`scenario is not found - ${tag}`)\n }\n\n if (!(await checkPermission(scenario.privilege, user, domain, unsafeIP, prohibitedPrivileges))) {\n const { category, privilege } = scenario.privilege || {}\n throw new Error(\n `Unauthorized! ${\n category && privilege ? category + ':' + privilege + ' privilege' : 'ownership granted'\n } required`\n )\n }\n\n /* create a scenario instance */\n let instanceName = scenario.name + '-' + String(Date.now())\n var instance = new ScenarioInstance(instanceName, scenario, {\n user,\n domain,\n variables,\n client: GraphqlLocalClient.client\n })\n\n // run scenario\n await instance.run()\n return instance\n }\n\n get parameterSpec() {\n return [\n {\n type: 'string',\n name: 'authKey',\n label: 'auth-key'\n },\n {\n type: 'string',\n name: 'domain',\n label: 'domain'\n },\n {\n type: 'tag-scenarios',\n name: 'subscriptionHandlers',\n label: 'subscription-handlers'\n }\n ]\n }\n\n get taskPrefixes() {\n return ['graphql']\n }\n\n get help() {\n return 'integration/connector/operato-connector'\n }\n\n get description() {\n return 'Operato Graphql Connector'\n }\n}\n\nConnectionManager.registerConnector('operato-connector', new OperatoConnector())\n"]}
1
+ {"version":3,"file":"operato-connector.js","sourceRoot":"","sources":["../../../server/engine/connector/operato-connector.ts"],"names":[],"mappings":"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","sourcesContent":["import 'cross-fetch/polyfill'\n\nimport { ApolloClient, InMemoryCache, createHttpLink, split } from '@apollo/client/core'\nimport { setContext } from '@apollo/client/link/context'\n\n// for subscription\nimport WebSocket from 'ws'\nimport { createClient } from 'graphql-ws'\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions'\nimport { getMainDefinition } from '@apollo/client/utilities'\nimport gql from 'graphql-tag'\n\nimport { ConnectionManager } from '../connection-manager'\nimport { Connector } from '../types'\nimport { Scenario } from '../../service/scenario/scenario'\nimport { ScenarioInstance } from '../../service/scenario-instance/scenario-instance-type'\n\nimport { getRepository, GraphqlLocalClient, Domain } from '@things-factory/shell'\nimport { User, checkPermission } from '@things-factory/auth-base'\n\nconst debug = require('debug')('things-factory:integration-base:operato-connector-subscription')\n\nconst defaultOptions: any = {\n watchQuery: {\n fetchPolicy: 'no-cache',\n errorPolicy: 'ignore'\n },\n query: {\n fetchPolicy: 'no-cache', //'network-only'\n errorPolicy: 'all'\n },\n mutate: {\n errorPolicy: 'all'\n }\n}\n\nconst cache = new InMemoryCache({\n addTypename: false\n})\n\nexport const GRAPHQL_URI = '/graphql'\nexport const SUBSCRIPTION_URI = GRAPHQL_URI\n\ninterface SubscriberData {\n tag: string\n scenario: any\n subscriptionObserver: any\n}\n;``\n\nexport class OperatoConnector implements Connector {\n private context: any\n\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('graphql-connector connections are ready')\n }\n\n async connect(connection) {\n var {\n endpoint: uri,\n params: { authKey, domain, subscriptionHandlers = {} }\n } = connection\n\n if (!authKey || !domain) {\n throw new Error('some connection paramter missing.')\n }\n\n var domainOwner = await getRepository(User).findOne({\n where: {\n id: connection.domain.owner\n }\n })\n\n this.context = {\n domain: connection.domain,\n user: domainOwner\n /* TODO: domainOwner 대신 특정 유저를 지정할 수 있도록 개선해야함. 모든 커넥션에 유저를 지정하는 기능으로 일반화할 필요가 있는 지 고민해야함 */\n }\n\n const httpLink = createHttpLink({\n uri: uri\n })\n\n /* \n CHECKPOINT: \n 1. GraphqQLWsLink를 사용하면 setContext를 통한 추가 헤더 설정이 무시됩니다.\n 따라서, GraphQLWsLink를 사용하려면, connectionParams를 통해 헤더를 설정해야 합니다.\n \n 2. 서버에서 실행시, webSocketImpl을 명시적으로 지정해야 합니다.\n */\n const wsLink = new GraphQLWsLink(\n createClient({\n url: uri.replace(/^http/, 'ws'),\n keepAlive: 10_000,\n retryAttempts: 1_000_000,\n shouldRetry: e => true,\n webSocketImpl: WebSocket,\n connectionParams: {\n headers: {\n 'x-things-factory-domain': domain,\n authorization: authKey ? `Bearer ${authKey}` : ''\n }\n }\n })\n )\n\n const splitLink = split(\n ({ query }) => {\n const def = getMainDefinition(query)\n return def.kind === 'OperationDefinition' && def.operation === 'subscription'\n },\n wsLink,\n setContext((_, { headers }) => {\n return {\n headers: {\n ...headers,\n 'x-things-factory-domain': domain,\n authorization: authKey ? `Bearer ${authKey}` : ''\n }\n }\n }).concat(httpLink)\n )\n\n var client = new ApolloClient({\n defaultOptions,\n cache,\n link: splitLink\n })\n\n var subscriptions: SubscriberData[] = []\n Object.keys(subscriptionHandlers).forEach(async tag => {\n if (!tag || !subscriptionHandlers[tag]) return\n\n let scenarioName = subscriptionHandlers[tag]\n\n // fetch a scenario\n var selectedScenario = await getRepository(Scenario).findOne({\n where: {\n name: scenarioName\n },\n relations: ['steps', 'domain']\n })\n\n const subscription = client.subscribe({\n query: gql`\n subscription {\n data(tag: \"${tag}\") {\n tag\n data\n }\n }\n `\n })\n\n var subscriptionObserver = subscription.subscribe({\n next: async data => {\n debug('received pubsub msg.:', data?.data)\n await this.runScenario(subscriptions, data?.data?.data)\n },\n error: error => {\n ConnectionManager.logger.error(`(${connection.name}:${connection.endpoint}) subscription error: ${error}`)\n },\n complete: () => {\n ConnectionManager.logger.info(`(${connection.name}:${connection.endpoint}) subscription complete`)\n }\n })\n\n ConnectionManager.logger.info(\n `(${connection.name}:${connection.endpoint}) subscription closed flag: ${subscriptionObserver.closed}`\n )\n\n subscriptions.push({\n tag,\n scenario: selectedScenario,\n subscriptionObserver\n })\n ConnectionManager.logger.info(`(${tag}:${scenarioName}) subscription closed flag: ${subscriptionObserver.closed}`)\n })\n\n client['subscriptions'] = subscriptions\n ConnectionManager.addConnectionInstance(connection, client)\n\n ConnectionManager.logger.info(\n `graphql-connector connection(${connection.name}:${connection.endpoint}) is connected`\n )\n }\n\n async disconnect(connection) {\n var client = ConnectionManager.getConnectionInstance(connection)\n let subscriptions: SubscriberData[] = client['subscriptions']\n subscriptions.forEach(subscription => subscription.subscriptionObserver.unsubscribe())\n client.stop()\n ConnectionManager.removeConnectionInstance(connection)\n\n ConnectionManager.logger.info(`graphql-connector connection(${connection.name}) is disconnected`)\n }\n\n async runScenario(subscriptions: SubscriberData[], variables: any): Promise<ScenarioInstance> {\n const { domain, user, unsafeIP, prohibitedPrivileges } = this.context\n const { tag } = variables\n\n if (!tag) {\n throw new Error(`tag is invalid - ${tag}`)\n }\n\n var scenario = subscriptions.find(subscription => subscription.tag === tag)?.scenario\n if (!scenario) {\n throw new Error(`scenario is not found - ${tag}`)\n }\n\n if (!(await checkPermission(scenario.privilege, user, domain, unsafeIP, prohibitedPrivileges))) {\n const { category, privilege } = scenario.privilege || {}\n throw new Error(\n `Unauthorized! ${\n category && privilege ? category + ':' + privilege + ' privilege' : 'ownership granted'\n } required`\n )\n }\n\n /* create a scenario instance */\n let instanceName = scenario.name + '-' + String(Date.now())\n var instance = new ScenarioInstance(instanceName, scenario, {\n user,\n domain,\n variables,\n client: GraphqlLocalClient.client\n })\n\n // run scenario\n await instance.run()\n return instance\n }\n\n get parameterSpec() {\n return [\n {\n type: 'string',\n name: 'authKey',\n label: 'auth-key'\n },\n {\n type: 'string',\n name: 'domain',\n label: 'domain'\n },\n {\n type: 'tag-scenarios',\n name: 'subscriptionHandlers',\n label: 'subscription-handlers'\n }\n ]\n }\n\n get taskPrefixes() {\n return ['graphql']\n }\n\n get help() {\n return 'integration/connector/operato-connector'\n }\n\n get description() {\n return 'Operato Graphql Connector'\n }\n}\n\nConnectionManager.registerConnector('operato-connector', new OperatoConnector())\n"]}
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ScenarioEngine = void 0;
4
4
  const shell_1 = require("@things-factory/shell");
5
- const service_1 = require("../service");
5
+ const scenario_1 = require("../service/scenario/scenario");
6
+ const scenario_instance_type_1 = require("../service/scenario-instance/scenario-instance-type");
6
7
  const pending_queue_1 = require("./pending-queue");
7
8
  const debug = require('debug')('things-factory:integration-base:scenario-engine');
8
9
  class ScenarioEngine {
@@ -40,7 +41,7 @@ class ScenarioEngine {
40
41
  debug('load - duplicated', instanceName);
41
42
  return scenarioInstance;
42
43
  }
43
- var instance = new service_1.ScenarioInstance(instanceName, scenarioConfig, Object.assign(Object.assign({}, context), { client: shell_1.GraphqlLocalClient.client, disposer: () => {
44
+ var instance = new scenario_instance_type_1.ScenarioInstance(instanceName, scenarioConfig, Object.assign(Object.assign({}, context), { client: shell_1.GraphqlLocalClient.client, disposer: () => {
44
45
  this.unload(domain, instanceName);
45
46
  } }));
46
47
  instance.start().catch(err => {
@@ -64,7 +65,7 @@ class ScenarioEngine {
64
65
  }
65
66
  // will be deprecated soon
66
67
  static async loadAll() {
67
- const SCENARIOS = await (0, shell_1.getRepository)(service_1.Scenario).find({
68
+ const SCENARIOS = await (0, shell_1.getRepository)(scenario_1.Scenario).find({
68
69
  where: { active: true },
69
70
  relations: ['domain', 'steps']
70
71
  });
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-engine.js","sourceRoot":"","sources":["../../server/engine/scenario-engine.ts"],"names":[],"mappings":";;;AAAA,iDAAiF;AAEjF,wCAAuD;AACvD,mDAA8C;AAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,iDAAiD,CAAC,CAAA;AAEjF,MAAa,cAAc;IAIlB,MAAM,CAAC,eAAe,CAAC,MAAM;QAClC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAC5C,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,4BAAY,CAAC,KAAK,CAAC,EAAE;gBACjE,cAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE;oBACrC,kBAAkB,EAAE;wBAClB,MAAM;wBACN,KAAK;qBACN;iBACF,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;SACH;QAED,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY;;QACpD,OAAO,MAAA,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,0CAAG,YAAY,CAAC,CAAA;IACpE,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAa;QACtD,MAAM,SAAS,GAAuB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QAC5G,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,IAAI,YAAY,CAAC,CAAA;IAC7F,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,OAAQ;QAC7D,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAA;QACjD,MAAM,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,cAAc,CAAA;QAEhD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAE7C,IAAI,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACnE,IAAI,CAAC,iBAAiB,EAAE;YACtB,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;SACrE;QAED,IAAI,gBAAgB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;QACtD,IAAI,gBAAgB,EAAE;YACpB,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;YACxC,OAAO,gBAAgB,CAAA;SACxB;QAED,IAAI,QAAQ,GAAG,IAAI,0BAAgB,CAAC,YAAY,EAAE,cAAc,kCAC3D,OAAO,KACV,MAAM,EAAE,0BAAkB,CAAC,MAAM,EACjC,QAAQ,EAAE,GAAG,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YACnC,CAAC,IACD,CAAA;QAEF,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3B,wEAAwE;YACxE,OAAO,CAAC,KAAK,CACX,sEAAsE,YAAY,oBAAoB,MAAM,CAAC,IAAI,GAAG,EACpH,GAAG,CACJ,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,iBAAiB,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAA;QAE1C,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY;QAC7C,IAAI,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACnE,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAM;SACP;QAED,IAAI,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;SACP;QAED,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAEtC,QAAQ,CAAC,MAAM,EAAE,CAAA;IACnB,CAAC;IAED,0BAA0B;IACnB,MAAM,CAAC,KAAK,CAAC,OAAO;QACzB,MAAM,SAAS,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAQ,CAAC,CAAC,IAAI,CAAC;YACnD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;YACvB,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC/B,CAAC,CAAA;QAEF,KAAK,CACH,UAAU,EACV,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAC5E,CAAA;QAED,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7E,CAAC;;AA/FH,wCAgGC;AA/FgB,gCAAiB,GAAG,EAAE,CAAA,CAAC,wBAAwB;AAC/C,4BAAa,GAAG,EAAE,CAAA","sourcesContent":["import { getRepository, GraphqlLocalClient, pubsub } from '@things-factory/shell'\n\nimport { Scenario, ScenarioInstance } from '../service'\nimport { PendingQueue } from './pending-queue'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-engine')\n\nexport class ScenarioEngine {\n private static scenarioInstances = {} // TODO impl. by WeakMap\n private static pendingQueues = {}\n\n public static getPendingQueue(domain) {\n if (!ScenarioEngine.pendingQueues[domain.id]) {\n ScenarioEngine.pendingQueues[domain.id] = new PendingQueue(queue => {\n pubsub.publish('scenario-queue-state', {\n scenarioQueueState: {\n domain,\n queue\n }\n })\n })\n }\n\n return ScenarioEngine.pendingQueues[domain.id]\n }\n\n public static getScenarioInstance(domain, instanceName): ScenarioInstance {\n return ScenarioEngine.scenarioInstances[domain.id]?.[instanceName]\n }\n\n public static getScenarioInstances(domain, scenarioName?): ScenarioInstance[] {\n const instances: ScenarioInstance[] = Object.values(ScenarioEngine.scenarioInstances[domain.id] || {}) || []\n return instances.filter(instance => !scenarioName || instance.scenarioName == scenarioName)\n }\n\n public static async load(instanceName, scenarioConfig, context?) {\n const { domain: scenarioDomain } = scenarioConfig\n const domain = context?.domain || scenarioDomain\n\n debug('load', domain.subdomain, instanceName)\n\n var scenarioInstances = ScenarioEngine.scenarioInstances[domain.id]\n if (!scenarioInstances) {\n scenarioInstances = ScenarioEngine.scenarioInstances[domain.id] = {}\n }\n\n var scenarioInstance = scenarioInstances[instanceName]\n if (scenarioInstance) {\n debug('load - duplicated', instanceName)\n return scenarioInstance\n }\n\n var instance = new ScenarioInstance(instanceName, scenarioConfig, {\n ...context,\n client: GraphqlLocalClient.client,\n disposer: () => {\n this.unload(domain, instanceName)\n }\n })\n\n instance.start().catch(err => {\n /* IMPORTANT. if you didn't catch exception here, system will be exit */\n console.error(\n `An exception occurred while executing the scenario instance named \"${instanceName}\" on the domain \"${domain.name}\"`,\n err\n )\n })\n\n scenarioInstances[instanceName] = instance\n\n return instance\n }\n\n public static async unload(domain, instanceName) {\n var scenarioInstances = ScenarioEngine.scenarioInstances[domain.id]\n if (!scenarioInstances) {\n return\n }\n\n var instance = scenarioInstances[instanceName]\n if (!instance) {\n return\n }\n\n delete scenarioInstances[instanceName]\n\n instance.unload()\n }\n\n // will be deprecated soon\n public static async loadAll() {\n const SCENARIOS = await getRepository(Scenario).find({\n where: { active: true },\n relations: ['domain', 'steps']\n })\n\n debug(\n 'load-all',\n SCENARIOS.map(scenario => `${scenario.domain.subdomain}: ${scenario.name}`)\n )\n\n SCENARIOS.forEach(scenario => ScenarioEngine.load(scenario.name, scenario))\n }\n}\n"]}
1
+ {"version":3,"file":"scenario-engine.js","sourceRoot":"","sources":["../../server/engine/scenario-engine.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository, GraphqlLocalClient, pubsub } from '@things-factory/shell'\n\nimport { Scenario } from '../service/scenario/scenario'\nimport { ScenarioInstance } from '../service/scenario-instance/scenario-instance-type'\n\nimport { PendingQueue } from './pending-queue'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-engine')\n\nexport class ScenarioEngine {\n private static scenarioInstances = {} // TODO impl. by WeakMap\n private static pendingQueues = {}\n\n public static getPendingQueue(domain) {\n if (!ScenarioEngine.pendingQueues[domain.id]) {\n ScenarioEngine.pendingQueues[domain.id] = new PendingQueue(queue => {\n pubsub.publish('scenario-queue-state', {\n scenarioQueueState: {\n domain,\n queue\n }\n })\n })\n }\n\n return ScenarioEngine.pendingQueues[domain.id]\n }\n\n public static getScenarioInstance(domain, instanceName): ScenarioInstance {\n return ScenarioEngine.scenarioInstances[domain.id]?.[instanceName]\n }\n\n public static getScenarioInstances(domain, scenarioName?): ScenarioInstance[] {\n const instances: ScenarioInstance[] = Object.values(ScenarioEngine.scenarioInstances[domain.id] || {}) || []\n return instances.filter(instance => !scenarioName || instance.scenarioName == scenarioName)\n }\n\n public static async load(instanceName, scenarioConfig, context?) {\n const { domain: scenarioDomain } = scenarioConfig\n const domain = context?.domain || scenarioDomain\n\n debug('load', domain.subdomain, instanceName)\n\n var scenarioInstances = ScenarioEngine.scenarioInstances[domain.id]\n if (!scenarioInstances) {\n scenarioInstances = ScenarioEngine.scenarioInstances[domain.id] = {}\n }\n\n var scenarioInstance = scenarioInstances[instanceName]\n if (scenarioInstance) {\n debug('load - duplicated', instanceName)\n return scenarioInstance\n }\n\n var instance = new ScenarioInstance(instanceName, scenarioConfig, {\n ...context,\n client: GraphqlLocalClient.client,\n disposer: () => {\n this.unload(domain, instanceName)\n }\n })\n\n instance.start().catch(err => {\n /* IMPORTANT. if you didn't catch exception here, system will be exit */\n console.error(\n `An exception occurred while executing the scenario instance named \"${instanceName}\" on the domain \"${domain.name}\"`,\n err\n )\n })\n\n scenarioInstances[instanceName] = instance\n\n return instance\n }\n\n public static async unload(domain, instanceName) {\n var scenarioInstances = ScenarioEngine.scenarioInstances[domain.id]\n if (!scenarioInstances) {\n return\n }\n\n var instance = scenarioInstances[instanceName]\n if (!instance) {\n return\n }\n\n delete scenarioInstances[instanceName]\n\n instance.unload()\n }\n\n // will be deprecated soon\n public static async loadAll() {\n const SCENARIOS = await getRepository(Scenario).find({\n where: { active: true },\n relations: ['domain', 'steps']\n })\n\n debug(\n 'load-all',\n SCENARIOS.map(scenario => `${scenario.domain.subdomain}: ${scenario.name}`)\n )\n\n SCENARIOS.forEach(scenario => ScenarioEngine.load(scenario.name, scenario))\n }\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const shell_1 = require("@things-factory/shell");
4
4
  const utils_1 = require("@things-factory/utils");
5
- const service_1 = require("../../service");
5
+ const scenario_1 = require("../../service/scenario/scenario");
6
6
  const scenario_engine_1 = require("../scenario-engine");
7
7
  const task_registry_1 = require("../task-registry");
8
8
  const debug = require('debug')('things-factory:integration-base:pick-pending-scenario');
@@ -29,7 +29,7 @@ async function PickPendingScenario(step, context) {
29
29
  return;
30
30
  }
31
31
  var { scenario, variables } = stuff;
32
- var subscenario = await (0, shell_1.getRepository)(service_1.Scenario).findOne({
32
+ var subscenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
33
33
  where: {
34
34
  id: scenario
35
35
  },
@@ -1 +1 @@
1
- {"version":3,"file":"pick-pending-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/pick-pending-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAA6C;AAE7C,2CAAwC;AACxC,wDAAmD;AACnD,oDAA+C;AAE/C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,uDAAuD,CAAC,CAAA;AAEvF,KAAK,UAAU,mBAAmB,CAAC,IAAI,EAAE,OAAO;IAC9C,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACtC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAE7C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;IAEjC,MAAM,YAAY,GAAG,gCAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IAE3D,2EAA2E;IAC3E,OAAO,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE;QACnC,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC5C,IAAI,KAAK,EAAE;YACT,MAAK;SACN;QAED,IAAI,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrD,IAAI,MAAM,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,CAAA;SACV;QAED,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;KACpC;IAED,IAAI,CAAC,KAAK,EAAE;QACV,OAAM;KACP;IAED,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAEnC,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,EAAE,EAAE,QAAQ;SACb;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IACtD,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE,EACR,SAAS,IACT,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEnD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,mBAAmB,CAAC,aAAa,GAAG;IAClC;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,eAAe;KAC7B;CACF,CAAA;AAED,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAA;AACxC,mBAAmB,CAAC,IAAI,GAAG,wCAAwC,CAAA;AAEnE,4BAAY,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { sleep } from '@things-factory/utils'\n\nimport { Scenario } from '../../service'\nimport { ScenarioEngine } from '../scenario-engine'\nimport { TaskRegistry } from '../task-registry'\n\nconst debug = require('debug')('things-factory:integration-base:pick-pending-scenario')\n\nasync function PickPendingScenario(step, context) {\n var { logger, load, domain } = context\n var { params } = step\n var { tag = '', waitFor = -1 } = params || {}\n\n waitFor = Number(waitFor) || -1\n const till = Date.now() + waitFor\n\n const pendingQueue = ScenarioEngine.getPendingQueue(domain)\n\n // long-term task need to check state whether this scenario is still going.\n while (true && context.checkState()) {\n var { stuff } = pendingQueue.pick(tag) || {}\n if (stuff) {\n break\n }\n\n let toTill = waitFor == -1 ? 1000 : till - Date.now()\n if (toTill <= 0) {\n return {}\n }\n\n await sleep(Math.min(1000, toTill))\n }\n\n if (!stuff) {\n return\n }\n\n var { scenario, variables } = stuff\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n id: scenario\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Scenario '${subscenario.name}' Started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n variables\n })\n logger.info(`Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nPickPendingScenario.parameterSpec = [\n {\n type: 'string',\n name: 'tag',\n label: 'tag'\n },\n {\n type: 'number',\n name: 'waitFor',\n label: 'wait-for',\n placeHolder: 'milli-seconds'\n }\n]\n\nPickPendingScenario.connectorFree = true\nPickPendingScenario.help = 'integration/task/pick-pending-scenario'\n\nTaskRegistry.registerTaskHandler('pick-pending-scenario', PickPendingScenario)\n"]}
1
+ {"version":3,"file":"pick-pending-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/pick-pending-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAA6C;AAE7C,8DAA0D;AAC1D,wDAAmD;AACnD,oDAA+C;AAE/C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,uDAAuD,CAAC,CAAA;AAEvF,KAAK,UAAU,mBAAmB,CAAC,IAAI,EAAE,OAAO;IAC9C,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACtC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAE7C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAA;IAEjC,MAAM,YAAY,GAAG,gCAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IAE3D,2EAA2E;IAC3E,OAAO,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE;QACnC,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC5C,IAAI,KAAK,EAAE;YACT,MAAK;SACN;QAED,IAAI,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrD,IAAI,MAAM,IAAI,CAAC,EAAE;YACf,OAAO,EAAE,CAAA;SACV;QAED,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;KACpC;IAED,IAAI,CAAC,KAAK,EAAE;QACV,OAAM;KACP;IAED,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAEnC,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,EAAE,EAAE,QAAQ;SACb;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IACtD,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE,EACR,SAAS,IACT,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEnD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,mBAAmB,CAAC,aAAa,GAAG;IAClC;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,eAAe;KAC7B;CACF,CAAA;AAED,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAA;AACxC,mBAAmB,CAAC,IAAI,GAAG,wCAAwC,CAAA;AAEnE,4BAAY,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { sleep } from '@things-factory/utils'\n\nimport { Scenario } from '../../service/scenario/scenario'\nimport { ScenarioEngine } from '../scenario-engine'\nimport { TaskRegistry } from '../task-registry'\n\nconst debug = require('debug')('things-factory:integration-base:pick-pending-scenario')\n\nasync function PickPendingScenario(step, context) {\n var { logger, load, domain } = context\n var { params } = step\n var { tag = '', waitFor = -1 } = params || {}\n\n waitFor = Number(waitFor) || -1\n const till = Date.now() + waitFor\n\n const pendingQueue = ScenarioEngine.getPendingQueue(domain)\n\n // long-term task need to check state whether this scenario is still going.\n while (true && context.checkState()) {\n var { stuff } = pendingQueue.pick(tag) || {}\n if (stuff) {\n break\n }\n\n let toTill = waitFor == -1 ? 1000 : till - Date.now()\n if (toTill <= 0) {\n return {}\n }\n\n await sleep(Math.min(1000, toTill))\n }\n\n if (!stuff) {\n return\n }\n\n var { scenario, variables } = stuff\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n id: scenario\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Scenario '${subscenario.name}' Started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n variables\n })\n logger.info(`Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nPickPendingScenario.parameterSpec = [\n {\n type: 'string',\n name: 'tag',\n label: 'tag'\n },\n {\n type: 'number',\n name: 'waitFor',\n label: 'wait-for',\n placeHolder: 'milli-seconds'\n }\n]\n\nPickPendingScenario.connectorFree = true\nPickPendingScenario.help = 'integration/task/pick-pending-scenario'\n\nTaskRegistry.registerTaskHandler('pick-pending-scenario', PickPendingScenario)\n"]}
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const shell_1 = require("@things-factory/shell");
4
- const service_1 = require("../../service");
4
+ const scenario_1 = require("../../service/scenario/scenario");
5
5
  const engine_1 = require("../../engine");
6
6
  const task_registry_1 = require("../task-registry");
7
7
  async function StopScenario(step, context) {
8
8
  var { logger, domain } = context;
9
9
  var { params: { scenario } } = step;
10
10
  // find the name of the input scenario
11
- var foundScenario = await (0, shell_1.getRepository)(service_1.Scenario).findOne({
11
+ var foundScenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
12
12
  where: {
13
13
  id: scenario
14
14
  },
@@ -1 +1 @@
1
- {"version":3,"file":"stop-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/stop-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AAErD,2CAAwC;AACxC,yCAA6C;AAC7C,oDAA+C;AAE/C,KAAK,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO;IACvC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAChC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,EACrB,GAAG,IAAI,CAAA;IAER,sCAAsC;IACtC,IAAI,aAAa,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAQ,CAAC,CAAC,OAAO,CAAC;QACxD,KAAK,EAAE;YACL,EAAE,EAAE,QAAQ;SACb;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,uBAAc,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,CAAA;IACxD,MAAM,CAAC,IAAI,CAAC,aAAa,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,2BAA2B,CAAC,CAAA;IAExE,OAAO;QACL,IAAI,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI;KAC1B,CAAA;AACH,CAAC;AAED,YAAY,CAAC,aAAa,GAAG;IAC3B;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE;YACR,SAAS,EAAE,WAAW;SACvB;KACF;CACF,CAAA;AAED,YAAY,CAAC,aAAa,GAAG,IAAI,CAAA;AAEjC,4BAAY,CAAC,mBAAmB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { Scenario } from '../../service'\nimport { ScenarioEngine } from '../../engine'\nimport { TaskRegistry } from '../task-registry'\n\nasync function StopScenario(step, context) {\n var { logger, domain } = context\n var {\n params: { scenario }\n } = step\n\n // find the name of the input scenario\n var foundScenario = await getRepository(Scenario).findOne({\n where: {\n id: scenario\n },\n relations: ['steps', 'domain']\n })\n\n await ScenarioEngine.unload(domain, foundScenario?.name)\n logger.info(`Scenario '${foundScenario?.name}' is about to be stopped.`)\n\n return {\n data: foundScenario?.name\n }\n}\n\nStopScenario.parameterSpec = [\n {\n type: 'entity-selector',\n name: 'scenario',\n label: 'scenario',\n property: {\n queryName: 'scenarios'\n }\n }\n]\n\nStopScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('scenario-stop', StopScenario)\n"]}
1
+ {"version":3,"file":"stop-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/stop-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AAErD,8DAA0D;AAC1D,yCAA6C;AAC7C,oDAA+C;AAE/C,KAAK,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO;IACvC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAChC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,EACrB,GAAG,IAAI,CAAA;IAER,sCAAsC;IACtC,IAAI,aAAa,GAAG,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACxD,KAAK,EAAE;YACL,EAAE,EAAE,QAAQ;SACb;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,uBAAc,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,CAAA;IACxD,MAAM,CAAC,IAAI,CAAC,aAAa,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,2BAA2B,CAAC,CAAA;IAExE,OAAO;QACL,IAAI,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI;KAC1B,CAAA;AACH,CAAC;AAED,YAAY,CAAC,aAAa,GAAG;IAC3B;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE;YACR,SAAS,EAAE,WAAW;SACvB;KACF;CACF,CAAA;AAED,YAAY,CAAC,aAAa,GAAG,IAAI,CAAA;AAEjC,4BAAY,CAAC,mBAAmB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { Scenario } from '../../service/scenario/scenario'\nimport { ScenarioEngine } from '../../engine'\nimport { TaskRegistry } from '../task-registry'\n\nasync function StopScenario(step, context) {\n var { logger, domain } = context\n var {\n params: { scenario }\n } = step\n\n // find the name of the input scenario\n var foundScenario = await getRepository(Scenario).findOne({\n where: {\n id: scenario\n },\n relations: ['steps', 'domain']\n })\n\n await ScenarioEngine.unload(domain, foundScenario?.name)\n logger.info(`Scenario '${foundScenario?.name}' is about to be stopped.`)\n\n return {\n data: foundScenario?.name\n }\n}\n\nStopScenario.parameterSpec = [\n {\n type: 'entity-selector',\n name: 'scenario',\n label: 'scenario',\n property: {\n queryName: 'scenarios'\n }\n }\n]\n\nStopScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('scenario-stop', StopScenario)\n"]}
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const shell_1 = require("@things-factory/shell");
4
4
  const utils_1 = require("@things-factory/utils");
5
- const service_1 = require("../../service");
5
+ const scenario_1 = require("../../service/scenario/scenario");
6
6
  const task_registry_1 = require("../task-registry");
7
7
  async function SubScenario(step, context) {
8
8
  var { logger, load, data } = context;
9
9
  var { params: { scenario, variables } } = step;
10
- var subscenario = await (0, shell_1.getRepository)(service_1.Scenario).findOne({
10
+ var subscenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
11
11
  where: {
12
12
  id: scenario
13
13
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sub-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/sub-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAAyD;AAEzD,2CAAwC;AACxC,oDAA+C;AAE/C,KAAK,UAAU,WAAW,CAAC,IAAI,EAAE,OAAO;IACtC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAChC,GAAG,IAAI,CAAA;IAER,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,EAAE,EAAE,QAAQ;SACb;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IAC1D,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE;QACR;;;UAGE;QACF,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,IAAA,cAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAC7E,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEvD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,WAAW,CAAC,aAAa,GAAG;IAC1B;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE;YACR,SAAS,EAAE,WAAW;SACvB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;KACnB;CACF,CAAA;AAED,WAAW,CAAC,aAAa,GAAG,IAAI,CAAA;AAEhC,4BAAY,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { access, deepClone } from '@things-factory/utils'\n\nimport { Scenario } from '../../service'\nimport { TaskRegistry } from '../task-registry'\n\nasync function SubScenario(step, context) {\n var { logger, load, data } = context\n var {\n params: { scenario, variables }\n } = step\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n id: scenario\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Sub Scenario '${subscenario.name}' Started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n /* \n FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만, \n 하위 호환성 유지를 위해서 부모의 variables를 사용함 \n */\n variables: variables ? deepClone(access(variables, data)) : context.variables\n })\n logger.info(`Sub Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nSubScenario.parameterSpec = [\n {\n type: 'entity-selector',\n name: 'scenario',\n label: 'scenario',\n property: {\n queryName: 'scenarios'\n }\n },\n {\n type: 'scenario-step-input',\n name: 'variables',\n label: 'variables'\n }\n]\n\nSubScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('scenario', SubScenario)\n"]}
1
+ {"version":3,"file":"sub-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/sub-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAAyD;AAEzD,8DAA0D;AAC1D,oDAA+C;AAE/C,KAAK,UAAU,WAAW,CAAC,IAAI,EAAE,OAAO;IACtC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAChC,GAAG,IAAI,CAAA;IAER,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,EAAE,EAAE,QAAQ;SACb;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IAC1D,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE;QACR;;;UAGE;QACF,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,IAAA,cAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAC7E,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEvD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,WAAW,CAAC,aAAa,GAAG;IAC1B;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE;YACR,SAAS,EAAE,WAAW;SACvB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;KACnB;CACF,CAAA;AAED,WAAW,CAAC,aAAa,GAAG,IAAI,CAAA;AAEhC,4BAAY,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { access, deepClone } from '@things-factory/utils'\n\nimport { Scenario } from '../../service/scenario/scenario'\nimport { TaskRegistry } from '../task-registry'\n\nasync function SubScenario(step, context) {\n var { logger, load, data } = context\n var {\n params: { scenario, variables }\n } = step\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n id: scenario\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Sub Scenario '${subscenario.name}' Started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n /* \n FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만, \n 하위 호환성 유지를 위해서 부모의 variables를 사용함 \n */\n variables: variables ? deepClone(access(variables, data)) : context.variables\n })\n logger.info(`Sub Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nSubScenario.parameterSpec = [\n {\n type: 'entity-selector',\n name: 'scenario',\n label: 'scenario',\n property: {\n queryName: 'scenarios'\n }\n },\n {\n type: 'scenario-step-input',\n name: 'variables',\n label: 'variables'\n }\n]\n\nSubScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('scenario', SubScenario)\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const shell_1 = require("@things-factory/shell");
4
4
  const utils_1 = require("@things-factory/utils");
5
- const service_1 = require("../../service");
5
+ const scenario_1 = require("../../service/scenario/scenario");
6
6
  const task_registry_1 = require("../task-registry");
7
7
  async function SwitchRangeScenario(step, context) {
8
8
  var { logger, data, load } = context;
@@ -17,7 +17,7 @@ async function SwitchRangeScenario(step, context) {
17
17
  }) || 'default';
18
18
  var scenarioName = cases[range];
19
19
  logger.info(`switch-range to scenario '${scenarioName}' by value '${value}' .`);
20
- var subscenario = await (0, shell_1.getRepository)(service_1.Scenario).findOne({
20
+ var subscenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
21
21
  where: {
22
22
  name: scenarioName
23
23
  },
@@ -1 +1 @@
1
- {"version":3,"file":"switch-range-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/switch-range-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAAyD;AAEzD,2CAAwC;AACxC,oDAA+C;AAE/C,KAAK,UAAU,mBAAmB,CAAC,IAAI,EAAE,OAAO;IAC9C,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EACvC,GAAG,IAAI,CAAA;IAER,IAAI,KAAK,GAAG,MAAM,CAAC,IAAA,cAAM,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IAE1C,IAAI,KAAK,GACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAI,GAAG,IAAI,SAAS,EAAE;YACpB,OAAM;SACP;QAED,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;IACpD,CAAC,CAAC,IAAI,SAAS,CAAA;IAEjB,IAAI,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAE/B,MAAM,CAAC,IAAI,CAAC,6BAA6B,YAAY,eAAe,KAAK,KAAK,CAAC,CAAA;IAE/E,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,IAAI,EAAE,YAAY;SACnB;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IAC1D,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE;QACR;;;UAGE;QACF,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,IAAA,cAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAC7E,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEvD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,mBAAmB,CAAC,aAAa,GAAG;IAClC;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE;YACR,SAAS,EAAE,gBAAgB;SAC5B;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;KACnB;CACF,CAAA;AAED,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAA;AAExC,4BAAY,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { access, deepClone } from '@things-factory/utils'\n\nimport { Scenario } from '../../service'\nimport { TaskRegistry } from '../task-registry'\n\nasync function SwitchRangeScenario(step, context) {\n var { logger, data, load } = context\n var {\n params: { accessor, cases, variables }\n } = step\n\n var value = Number(access(accessor, data))\n\n var range =\n Object.keys(cases).find(key => {\n if (key == 'default') {\n return\n }\n\n var [from, to] = key.split('~')\n\n return Number(from) <= value && Number(to) > value\n }) || 'default'\n\n var scenarioName = cases[range]\n\n logger.info(`switch-range to scenario '${scenarioName}' by value '${value}' .`)\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n name: scenarioName\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Sub Scenario '${subscenario.name}' started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n /* \n FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만, \n 하위 호환성 유지를 위해서 부모의 variables를 사용함 \n */\n variables: variables ? deepClone(access(variables, data)) : context.variables\n })\n logger.info(`Sub Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nSwitchRangeScenario.parameterSpec = [\n {\n type: 'scenario-step-input',\n name: 'accessor',\n label: 'accessor'\n },\n {\n type: 'range',\n name: 'cases',\n label: 'cases',\n property: {\n valuetype: 'scenario-input'\n }\n },\n {\n type: 'scenario-step-input',\n name: 'variables',\n label: 'variables'\n }\n]\n\nSwitchRangeScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('switch-range-scenario', SwitchRangeScenario)\n"]}
1
+ {"version":3,"file":"switch-range-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/switch-range-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAAyD;AAEzD,8DAA0D;AAC1D,oDAA+C;AAE/C,KAAK,UAAU,mBAAmB,CAAC,IAAI,EAAE,OAAO;IAC9C,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EACvC,GAAG,IAAI,CAAA;IAER,IAAI,KAAK,GAAG,MAAM,CAAC,IAAA,cAAM,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IAE1C,IAAI,KAAK,GACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAI,GAAG,IAAI,SAAS,EAAE;YACpB,OAAM;SACP;QAED,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;IACpD,CAAC,CAAC,IAAI,SAAS,CAAA;IAEjB,IAAI,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAE/B,MAAM,CAAC,IAAI,CAAC,6BAA6B,YAAY,eAAe,KAAK,KAAK,CAAC,CAAA;IAE/E,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,IAAI,EAAE,YAAY;SACnB;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IAC1D,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE;QACR;;;UAGE;QACF,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,IAAA,cAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAC7E,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEvD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,mBAAmB,CAAC,aAAa,GAAG;IAClC;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE;YACR,SAAS,EAAE,gBAAgB;SAC5B;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;KACnB;CACF,CAAA;AAED,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAA;AAExC,4BAAY,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { access, deepClone } from '@things-factory/utils'\n\nimport { Scenario } from '../../service/scenario/scenario'\nimport { TaskRegistry } from '../task-registry'\n\nasync function SwitchRangeScenario(step, context) {\n var { logger, data, load } = context\n var {\n params: { accessor, cases, variables }\n } = step\n\n var value = Number(access(accessor, data))\n\n var range =\n Object.keys(cases).find(key => {\n if (key == 'default') {\n return\n }\n\n var [from, to] = key.split('~')\n\n return Number(from) <= value && Number(to) > value\n }) || 'default'\n\n var scenarioName = cases[range]\n\n logger.info(`switch-range to scenario '${scenarioName}' by value '${value}' .`)\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n name: scenarioName\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Sub Scenario '${subscenario.name}' started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n /* \n FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만, \n 하위 호환성 유지를 위해서 부모의 variables를 사용함 \n */\n variables: variables ? deepClone(access(variables, data)) : context.variables\n })\n logger.info(`Sub Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nSwitchRangeScenario.parameterSpec = [\n {\n type: 'scenario-step-input',\n name: 'accessor',\n label: 'accessor'\n },\n {\n type: 'range',\n name: 'cases',\n label: 'cases',\n property: {\n valuetype: 'scenario-input'\n }\n },\n {\n type: 'scenario-step-input',\n name: 'variables',\n label: 'variables'\n }\n]\n\nSwitchRangeScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('switch-range-scenario', SwitchRangeScenario)\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const shell_1 = require("@things-factory/shell");
4
4
  const utils_1 = require("@things-factory/utils");
5
- const service_1 = require("../../service");
5
+ const scenario_1 = require("../../service/scenario/scenario");
6
6
  const task_registry_1 = require("../task-registry");
7
7
  async function SwitchScenario(step, context) {
8
8
  var { logger, data, load } = context;
@@ -10,7 +10,7 @@ async function SwitchScenario(step, context) {
10
10
  var value = (0, utils_1.access)(accessor, data);
11
11
  var scenarioName = cases[value] || cases['default'];
12
12
  logger.info(`switch to scenario '${scenarioName}' by value '${value}' .`);
13
- var subscenario = await (0, shell_1.getRepository)(service_1.Scenario).findOne({
13
+ var subscenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
14
14
  where: {
15
15
  name: scenarioName
16
16
  },
@@ -1 +1 @@
1
- {"version":3,"file":"switch-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/switch-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAAyD;AAEzD,2CAAwC;AACxC,oDAA+C;AAE/C,KAAK,UAAU,cAAc,CAAC,IAAI,EAAE,OAAO;IACzC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EACvC,GAAG,IAAI,CAAA;IAER,IAAI,KAAK,GAAG,IAAA,cAAM,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAElC,IAAI,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;IACnD,MAAM,CAAC,IAAI,CAAC,uBAAuB,YAAY,eAAe,KAAK,KAAK,CAAC,CAAA;IAEzE,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,IAAI,EAAE,YAAY;SACnB;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IAC1D,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE;QACR;;;UAGE;QACF,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,IAAA,cAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAC7E,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEvD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,cAAc,CAAC,aAAa,GAAG;IAC7B;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE;YACR,SAAS,EAAE,gBAAgB;SAC5B;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;KACnB;CACF,CAAA;AAED,cAAc,CAAC,aAAa,GAAG,IAAI,CAAA;AAEnC,4BAAY,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { access, deepClone } from '@things-factory/utils'\n\nimport { Scenario } from '../../service'\nimport { TaskRegistry } from '../task-registry'\n\nasync function SwitchScenario(step, context) {\n var { logger, data, load } = context\n var {\n params: { accessor, cases, variables }\n } = step\n\n var value = access(accessor, data)\n\n var scenarioName = cases[value] || cases['default']\n logger.info(`switch to scenario '${scenarioName}' by value '${value}' .`)\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n name: scenarioName\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Sub Scenario '${subscenario.name}' started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n /* \n FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만, \n 하위 호환성 유지를 위해서 부모의 variables를 사용함 \n */\n variables: variables ? deepClone(access(variables, data)) : context.variables\n })\n logger.info(`Sub Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nSwitchScenario.parameterSpec = [\n {\n type: 'scenario-step-input',\n name: 'accessor',\n label: 'accessor'\n },\n {\n type: 'map',\n name: 'cases',\n label: 'cases',\n property: {\n valuetype: 'scenario-input'\n }\n },\n {\n type: 'scenario-step-input',\n name: 'variables',\n label: 'variables'\n }\n]\n\nSwitchScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('switch-scenario', SwitchScenario)\n"]}
1
+ {"version":3,"file":"switch-scenario.js","sourceRoot":"","sources":["../../../server/engine/task/switch-scenario.ts"],"names":[],"mappings":";;AAAA,iDAAqD;AACrD,iDAAyD;AAEzD,8DAA0D;AAC1D,oDAA+C;AAE/C,KAAK,UAAU,cAAc,CAAC,IAAI,EAAE,OAAO;IACzC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,EACF,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EACvC,GAAG,IAAI,CAAA;IAER,IAAI,KAAK,GAAG,IAAA,cAAM,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAElC,IAAI,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;IACnD,MAAM,CAAC,IAAI,CAAC,uBAAuB,YAAY,eAAe,KAAK,KAAK,CAAC,CAAA;IAEzE,IAAI,WAAW,GAAG,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACtD,KAAK,EAAE;YACL,IAAI,EAAE,YAAY;SACnB;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,YAAY,CAAC,CAAA;IAC1D,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,kCACxC,OAAO,KACV,IAAI,EAAE,EAAE;QACR;;;UAGE;QACF,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,IAAA,cAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAC7E,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,SAAS,CAAC,CAAA;IAEvD,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAA;AACH,CAAC;AAED,cAAc,CAAC,aAAa,GAAG;IAC7B;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE;YACR,SAAS,EAAE,gBAAgB;SAC5B;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;KACnB;CACF,CAAA;AAED,cAAc,CAAC,aAAa,GAAG,IAAI,CAAA;AAEnC,4BAAY,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA","sourcesContent":["import { getRepository } from '@things-factory/shell'\nimport { access, deepClone } from '@things-factory/utils'\n\nimport { Scenario } from '../../service/scenario/scenario'\nimport { TaskRegistry } from '../task-registry'\n\nasync function SwitchScenario(step, context) {\n var { logger, data, load } = context\n var {\n params: { accessor, cases, variables }\n } = step\n\n var value = access(accessor, data)\n\n var scenarioName = cases[value] || cases['default']\n logger.info(`switch to scenario '${scenarioName}' by value '${value}' .`)\n\n var subscenario = await getRepository(Scenario).findOne({\n where: {\n name: scenarioName\n },\n relations: ['steps', 'domain']\n })\n\n logger.info(`Sub Scenario '${subscenario.name}' started.`)\n var subContext = await load(step, subscenario, {\n ...context,\n data: {},\n /* \n FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만, \n 하위 호환성 유지를 위해서 부모의 variables를 사용함 \n */\n variables: variables ? deepClone(access(variables, data)) : context.variables\n })\n logger.info(`Sub Scenario '${subscenario.name}' done.`)\n\n return {\n data: subContext.data\n }\n}\n\nSwitchScenario.parameterSpec = [\n {\n type: 'scenario-step-input',\n name: 'accessor',\n label: 'accessor'\n },\n {\n type: 'map',\n name: 'cases',\n label: 'cases',\n property: {\n valuetype: 'scenario-input'\n }\n },\n {\n type: 'scenario-step-input',\n name: 'variables',\n label: 'variables'\n }\n]\n\nSwitchScenario.connectorFree = true\n\nTaskRegistry.registerTaskHandler('switch-scenario', SwitchScenario)\n"]}
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
6
  const shell_1 = require("@things-factory/shell");
7
7
  const auth_base_1 = require("@things-factory/auth-base");
8
- const scenario_type_1 = require("../service/scenario/scenario-type");
8
+ const scenario_1 = require("../service/scenario/scenario");
9
9
  const scenario_engine_1 = require("../engine/scenario-engine");
10
10
  exports.scenarioScheduleCallbackRouter = new koa_router_1.default();
11
11
  /* When a callback occurs from the scheduler when a scheduled scenario is on schedule. */
@@ -38,7 +38,7 @@ exports.scenarioScheduleCallbackRouter.post('/callback-schedule-for-scenario', a
38
38
  if (operation != 'start') {
39
39
  throw new Error('client property(operation) is not matched with the required value.');
40
40
  }
41
- const scenario = await (0, shell_1.getRepository)(scenario_type_1.Scenario).findOne({
41
+ const scenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
42
42
  where: { domain: { id: domainId }, id: scenarioId },
43
43
  relations: ['domain', 'steps', 'creator']
44
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-schedule-callback-router.js","sourceRoot":"","sources":["../../server/routers/scenario-schedule-callback-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,iDAAqD;AACrD,yDAAgD;AAGhD,qEAA4D;AAC5D,+DAA0D;AAE7C,QAAA,8BAA8B,GAAG,IAAI,oBAAM,EAAE,CAAA;AAE1D,yFAAyF;AACzF,sCAA8B,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;;IAC7F,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAA+B,CAAA;IACxE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA;IAE7B,4BAA4B;IAC5B,yBAAyB;IACzB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IAErB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAEhC,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;KACvD;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;KACtE;IAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;IAEpE,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,aAAa,UAAU,kCAAkC,CAAC,CAAA;KAC5F;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;KAClF;IAED,IAAI,IAAI,IAAI,UAAU,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;KACjF;IAED,IAAI,SAAS,IAAI,OAAO,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;KACtF;IAED,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAa,EAAC,wBAAQ,CAAC,CAAC,OAAO,CAAC;QACrD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;QACnD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;KAC1C,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,IAAI,UAAU,aAAa,CAAC,CAAA;KAClG;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAA;IAE3G,gCAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC3C,MAAM;QACN,IAAI;QACJ,SAAS,EAAE,MAAA,MAAM,CAAC,IAAI,0CAAE,IAAI;KAC7B,CAAC,CAAA;IAEF,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;AACtB,CAAC,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\n\nimport { getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { ScheduleRegisterRequest } from '@things-factory/scheduler-client'\n\nimport { Scenario } from '../service/scenario/scenario-type'\nimport { ScenarioEngine } from '../engine/scenario-engine'\n\nexport const scenarioScheduleCallbackRouter = new Router()\n\n/* When a callback occurs from the scheduler when a scheduled scenario is on schedule. */\nscenarioScheduleCallbackRouter.post('/callback-schedule-for-scenario', async (context, next) => {\n const { client, task } = context.request.body as ScheduleRegisterRequest\n const { userId } = task?.data\n\n // application: Application,\n // group: `${domain.id}`,\n // type: 'scenario',\n // key: scenario.id,\n // operation: 'start'\n\n const { domain } = context.state\n\n if (!domain) {\n throw new Error('cannot identify the current domain.')\n }\n\n if (!client || typeof client !== 'object') {\n throw new Error('client property should be a part of callback body.')\n }\n\n const { group: domainId, key: scenarioId, operation, type } = client\n\n if (!domainId || !scenarioId) {\n throw new Error(`group(${domainId}) and key(${scenarioId}) properties should not be empty`)\n }\n\n if (domainId != domain.id) {\n throw new Error('client property(group) is not matched with the current domain.')\n }\n\n if (type != 'scenario') {\n throw new Error('client property(type) is not matched with the required value.')\n }\n\n if (operation != 'start') {\n throw new Error('client property(operation) is not matched with the required value.')\n }\n\n const scenario = await getRepository(Scenario).findOne({\n where: { domain: { id: domainId }, id: scenarioId },\n relations: ['domain', 'steps', 'creator']\n })\n\n if (!scenario) {\n throw new Error(`Scenario having given scenarioId(${domain?.subdomain}:${scenarioId}) not found`)\n }\n\n const user = (userId && (await getRepository(User).findOne({ where: { id: userId } }))) || scenario.creator\n\n ScenarioEngine.load(scenario.name, scenario, {\n domain,\n user,\n variables: client.task?.data\n })\n\n context.status = 200\n})\n"]}
1
+ {"version":3,"file":"scenario-schedule-callback-router.js","sourceRoot":"","sources":["../../server/routers/scenario-schedule-callback-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,iDAAqD;AACrD,yDAAgD;AAGhD,2DAAuD;AACvD,+DAA0D;AAE7C,QAAA,8BAA8B,GAAG,IAAI,oBAAM,EAAE,CAAA;AAE1D,yFAAyF;AACzF,sCAA8B,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;;IAC7F,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAA+B,CAAA;IACxE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA;IAE7B,4BAA4B;IAC5B,yBAAyB;IACzB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IAErB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAEhC,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;KACvD;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;KACtE;IAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;IAEpE,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,aAAa,UAAU,kCAAkC,CAAC,CAAA;KAC5F;IAED,IAAI,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;KAClF;IAED,IAAI,IAAI,IAAI,UAAU,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;KACjF;IAED,IAAI,SAAS,IAAI,OAAO,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;KACtF;IAED,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACrD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;QACnD,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;KAC1C,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,IAAI,UAAU,aAAa,CAAC,CAAA;KAClG;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAA;IAE3G,gCAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC3C,MAAM;QACN,IAAI;QACJ,SAAS,EAAE,MAAA,MAAM,CAAC,IAAI,0CAAE,IAAI;KAC7B,CAAC,CAAA;IAEF,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;AACtB,CAAC,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\n\nimport { getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { ScheduleRegisterRequest } from '@things-factory/scheduler-client'\n\nimport { Scenario } from '../service/scenario/scenario'\nimport { ScenarioEngine } from '../engine/scenario-engine'\n\nexport const scenarioScheduleCallbackRouter = new Router()\n\n/* When a callback occurs from the scheduler when a scheduled scenario is on schedule. */\nscenarioScheduleCallbackRouter.post('/callback-schedule-for-scenario', async (context, next) => {\n const { client, task } = context.request.body as ScheduleRegisterRequest\n const { userId } = task?.data\n\n // application: Application,\n // group: `${domain.id}`,\n // type: 'scenario',\n // key: scenario.id,\n // operation: 'start'\n\n const { domain } = context.state\n\n if (!domain) {\n throw new Error('cannot identify the current domain.')\n }\n\n if (!client || typeof client !== 'object') {\n throw new Error('client property should be a part of callback body.')\n }\n\n const { group: domainId, key: scenarioId, operation, type } = client\n\n if (!domainId || !scenarioId) {\n throw new Error(`group(${domainId}) and key(${scenarioId}) properties should not be empty`)\n }\n\n if (domainId != domain.id) {\n throw new Error('client property(group) is not matched with the current domain.')\n }\n\n if (type != 'scenario') {\n throw new Error('client property(type) is not matched with the required value.')\n }\n\n if (operation != 'start') {\n throw new Error('client property(operation) is not matched with the required value.')\n }\n\n const scenario = await getRepository(Scenario).findOne({\n where: { domain: { id: domainId }, id: scenarioId },\n relations: ['domain', 'steps', 'creator']\n })\n\n if (!scenario) {\n throw new Error(`Scenario having given scenarioId(${domain?.subdomain}:${scenarioId}) not found`)\n }\n\n const user = (userId && (await getRepository(User).findOne({ where: { id: userId } }))) || scenario.creator\n\n ScenarioEngine.load(scenario.name, scenario, {\n domain,\n user,\n variables: client.task?.data\n })\n\n context.status = 200\n})\n"]}
@@ -4,12 +4,12 @@ exports.scenarioViewRouter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
6
  const shell_1 = require("@things-factory/shell");
7
- const service_1 = require("../service");
7
+ const scenario_1 = require("../service/scenario/scenario");
8
8
  exports.scenarioViewRouter = new koa_router_1.default();
9
9
  exports.scenarioViewRouter.get('/scenario-view/:name', async (context, next) => {
10
10
  const { domain } = context.state;
11
11
  const { name } = context.params;
12
- const scenario = await (0, shell_1.getRepository)(service_1.Scenario).findOne({
12
+ const scenario = await (0, shell_1.getRepository)(scenario_1.Scenario).findOne({
13
13
  where: {
14
14
  domain: { id: domain.id },
15
15
  name
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-view-router.js","sourceRoot":"","sources":["../../server/routers/scenario-view-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,iDAAqD;AAErD,wCAA2C;AAE9B,QAAA,kBAAkB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAE9C,0BAAkB,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACrE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAChC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;IAE/B,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAa,EAAC,kBAAQ,CAAC,CAAC,OAAO,CAAC;QACrD,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACzB,IAAI;SACL;QACD,SAAS,EAAE,CAAC,OAAO,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,KAAK,GAAW,QAAQ,CAAC,KAAK,CAAA;IACpC,MAAM,KAAK,GAAG,EAAE,CAAA;IAChB,MAAM,KAAK,GAAG,EAAE,CAAA;IAEhB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC7B,KAAK,CAAC,EAAE,CAAC,GAAG;YACV,EAAE;YACF,IAAI;SACL,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACnB,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;SACxB,CAAC,CAAA;KACH;IAED,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;QACpC,KAAK,EAAE;YACL,KAAK;YACL,KAAK;SACN;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\n\nimport { getRepository } from '@things-factory/shell'\n\nimport { Scenario, Step } from '../service'\n\nexport const scenarioViewRouter = new Router()\n\nscenarioViewRouter.get('/scenario-view/:name', async (context, next) => {\n const { domain } = context.state\n const { name } = context.params\n\n const scenario = await getRepository(Scenario).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: ['steps']\n })\n\n const steps: Step[] = scenario.steps\n const nodes = {}\n const edges = []\n\n steps.forEach(({ id, name }) => {\n nodes[id] = {\n id,\n name\n }\n })\n\n for (let i = 0; i < steps.length - 1; i++) {\n edges.push({\n source: steps[i].id,\n target: steps[i + 1].id\n })\n }\n\n await context.render('scenario-view', {\n model: {\n nodes,\n edges\n }\n })\n})\n"]}
1
+ {"version":3,"file":"scenario-view-router.js","sourceRoot":"","sources":["../../server/routers/scenario-view-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,iDAAqD;AAErD,2DAAuD;AAG1C,QAAA,kBAAkB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAE9C,0BAAkB,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACrE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAChC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;IAE/B,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAa,EAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC;QACrD,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACzB,IAAI;SACL;QACD,SAAS,EAAE,CAAC,OAAO,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,KAAK,GAAW,QAAQ,CAAC,KAAK,CAAA;IACpC,MAAM,KAAK,GAAG,EAAE,CAAA;IAChB,MAAM,KAAK,GAAG,EAAE,CAAA;IAEhB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC7B,KAAK,CAAC,EAAE,CAAC,GAAG;YACV,EAAE;YACF,IAAI;SACL,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACnB,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;SACxB,CAAC,CAAA;KACH;IAED,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;QACpC,KAAK,EAAE;YACL,KAAK;YACL,KAAK;SACN;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\n\nimport { getRepository } from '@things-factory/shell'\n\nimport { Scenario } from '../service/scenario/scenario'\nimport { Step } from '../service/step/step-type'\n\nexport const scenarioViewRouter = new Router()\n\nscenarioViewRouter.get('/scenario-view/:name', async (context, next) => {\n const { domain } = context.state\n const { name } = context.params\n\n const scenario = await getRepository(Scenario).findOne({\n where: {\n domain: { id: domain.id },\n name\n },\n relations: ['steps']\n })\n\n const steps: Step[] = scenario.steps\n const nodes = {}\n const edges = []\n\n steps.forEach(({ id, name }) => {\n nodes[id] = {\n id,\n name\n }\n })\n\n for (let i = 0; i < steps.length - 1; i++) {\n edges.push({\n source: steps[i].id,\n target: steps[i + 1].id\n })\n }\n\n await context.render('scenario-view', {\n model: {\n nodes,\n edges\n }\n })\n})\n"]}
@@ -16,7 +16,7 @@ tslib_1.__exportStar(require("./property-spec"), exports);
16
16
  tslib_1.__exportStar(require("./task-type/task-type-type"), exports);
17
17
  tslib_1.__exportStar(require("./connector/connector-type"), exports);
18
18
  tslib_1.__exportStar(require("./connection/connection-type"), exports);
19
- tslib_1.__exportStar(require("./scenario/scenario-type"), exports);
19
+ tslib_1.__exportStar(require("./scenario/scenario"), exports);
20
20
  tslib_1.__exportStar(require("./scenario-instance/scenario-instance-type"), exports);
21
21
  tslib_1.__exportStar(require("./scenario-queue/scenario-queue-type"), exports);
22
22
  tslib_1.__exportStar(require("./step/step-type"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,6CAA+F;AAC/F,2CAA4F;AAC5F,yCAAyF;AACzF,2DAAkH;AAClH,qDAAyG;AACzG,iCAA6E;AAC7E,2CAA0F;AAC1F,+CAAgG;AAChG,qDAAyG;AACzG,yCAAkE;AAElE,0DAA+B;AAC/B,qEAA0C;AAC1C,qEAA0C;AAC1C,uEAA4C;AAC5C,mEAAwC;AACxC,qFAA0D;AAC1D,+EAAoD;AACpD,2DAAgC;AAChC,wEAA6C;AAC7C,oEAAyC;AACzC,0EAA+C;AAElC,QAAA,QAAQ,GAAG;IACtB,GAAG,oBAAgB;IACnB,GAAG,oBAAiB;IACpB,GAAG,qBAAkB;IACrB,GAAG,mBAAgB;IACnB,GAAG,4BAAwB;IAC3B,GAAG,yBAAqB;IACxB,GAAG,eAAY;IACf,GAAG,sBAAkB;IACrB,GAAG,yBAAqB;CACzB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,GAAG,qBAAiB;QACpB,GAAG,qBAAkB;QACrB,GAAG,sBAAmB;QACtB,GAAG,oBAAiB;QACpB,GAAG,6BAAyB;QAC5B,GAAG,0BAAsB;QACzB,GAAG,gBAAa;QAChB,GAAG,uBAAmB;QACtB,GAAG,oBAAwB;QAC3B,GAAG,0BAAsB;KAC1B;CACF,CAAA;AAED,yDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,2EAAqE;AAA5D,wHAAA,gBAAgB,OAAA","sourcesContent":["import { entities as ConnectionEntities, resolvers as ConnectionResolvers } from './connection'\nimport { entities as ConnectorEntities, resolvers as ConnectorResolvers } from './connector'\nimport { entities as ScenarioEntities, resolvers as ScenarioResolvers } from './scenario'\nimport { entities as ScenarioInstanceEntities, resolvers as ScenarioInstanceResolvers } from './scenario-instance'\nimport { entities as ScenarioQueueEntities, resolvers as ScenarioQueueResolvers } from './scenario-queue'\nimport { entities as StepEntities, resolvers as StepResolvers } from './step'\nimport { entities as TaskTypeEntities, resolvers as TaskTypeResolvers } from './task-type'\nimport { entities as PayloadLogEntities, resolvers as PayloadLogResolvers } from './payload-log'\nimport { entities as StateRegisterEntities, resolvers as StateRegisterResolvers } from './state-register'\nimport { resolvers as IntegrationAnalysisQuery } from './analysis'\n\nexport * from './property-spec'\nexport * from './task-type/task-type-type'\nexport * from './connector/connector-type'\nexport * from './connection/connection-type'\nexport * from './scenario/scenario-type'\nexport * from './scenario-instance/scenario-instance-type'\nexport * from './scenario-queue/scenario-queue-type'\nexport * from './step/step-type'\nexport * from './scenario-flow/scenario-flow'\nexport * from './payload-log/payload-log'\nexport * from './state-register/state-register'\n\nexport const entities = [\n ...TaskTypeEntities,\n ...ConnectorEntities,\n ...ConnectionEntities,\n ...ScenarioEntities,\n ...ScenarioInstanceEntities,\n ...ScenarioQueueEntities,\n ...StepEntities,\n ...PayloadLogEntities,\n ...StateRegisterEntities\n]\n\nexport const schema = {\n resolverClasses: [\n ...TaskTypeResolvers,\n ...ConnectorResolvers,\n ...ConnectionResolvers,\n ...ScenarioResolvers,\n ...ScenarioInstanceResolvers,\n ...ScenarioQueueResolvers,\n ...StepResolvers,\n ...PayloadLogResolvers,\n ...IntegrationAnalysisQuery,\n ...StateRegisterResolvers\n ]\n}\n\nexport { PayloadType } from './payload-log/payload-log'\nexport { createPayloadLog } from './payload-log/payload-log-mutation'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,6CAA+F;AAC/F,2CAA4F;AAC5F,yCAAyF;AACzF,2DAAkH;AAClH,qDAAyG;AACzG,iCAA6E;AAC7E,2CAA0F;AAC1F,+CAAgG;AAChG,qDAAyG;AACzG,yCAAkE;AAElE,0DAA+B;AAC/B,qEAA0C;AAC1C,qEAA0C;AAC1C,uEAA4C;AAC5C,8DAAmC;AACnC,qFAA0D;AAC1D,+EAAoD;AACpD,2DAAgC;AAChC,wEAA6C;AAC7C,oEAAyC;AACzC,0EAA+C;AAElC,QAAA,QAAQ,GAAG;IACtB,GAAG,oBAAgB;IACnB,GAAG,oBAAiB;IACpB,GAAG,qBAAkB;IACrB,GAAG,mBAAgB;IACnB,GAAG,4BAAwB;IAC3B,GAAG,yBAAqB;IACxB,GAAG,eAAY;IACf,GAAG,sBAAkB;IACrB,GAAG,yBAAqB;CACzB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,GAAG,qBAAiB;QACpB,GAAG,qBAAkB;QACrB,GAAG,sBAAmB;QACtB,GAAG,oBAAiB;QACpB,GAAG,6BAAyB;QAC5B,GAAG,0BAAsB;QACzB,GAAG,gBAAa;QAChB,GAAG,uBAAmB;QACtB,GAAG,oBAAwB;QAC3B,GAAG,0BAAsB;KAC1B;CACF,CAAA;AAED,yDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,2EAAqE;AAA5D,wHAAA,gBAAgB,OAAA","sourcesContent":["import { entities as ConnectionEntities, resolvers as ConnectionResolvers } from './connection'\nimport { entities as ConnectorEntities, resolvers as ConnectorResolvers } from './connector'\nimport { entities as ScenarioEntities, resolvers as ScenarioResolvers } from './scenario'\nimport { entities as ScenarioInstanceEntities, resolvers as ScenarioInstanceResolvers } from './scenario-instance'\nimport { entities as ScenarioQueueEntities, resolvers as ScenarioQueueResolvers } from './scenario-queue'\nimport { entities as StepEntities, resolvers as StepResolvers } from './step'\nimport { entities as TaskTypeEntities, resolvers as TaskTypeResolvers } from './task-type'\nimport { entities as PayloadLogEntities, resolvers as PayloadLogResolvers } from './payload-log'\nimport { entities as StateRegisterEntities, resolvers as StateRegisterResolvers } from './state-register'\nimport { resolvers as IntegrationAnalysisQuery } from './analysis'\n\nexport * from './property-spec'\nexport * from './task-type/task-type-type'\nexport * from './connector/connector-type'\nexport * from './connection/connection-type'\nexport * from './scenario/scenario'\nexport * from './scenario-instance/scenario-instance-type'\nexport * from './scenario-queue/scenario-queue-type'\nexport * from './step/step-type'\nexport * from './scenario-flow/scenario-flow'\nexport * from './payload-log/payload-log'\nexport * from './state-register/state-register'\n\nexport const entities = [\n ...TaskTypeEntities,\n ...ConnectorEntities,\n ...ConnectionEntities,\n ...ScenarioEntities,\n ...ScenarioInstanceEntities,\n ...ScenarioQueueEntities,\n ...StepEntities,\n ...PayloadLogEntities,\n ...StateRegisterEntities\n]\n\nexport const schema = {\n resolverClasses: [\n ...TaskTypeResolvers,\n ...ConnectorResolvers,\n ...ConnectionResolvers,\n ...ScenarioResolvers,\n ...ScenarioInstanceResolvers,\n ...ScenarioQueueResolvers,\n ...StepResolvers,\n ...PayloadLogResolvers,\n ...IntegrationAnalysisQuery,\n ...StateRegisterResolvers\n ]\n}\n\nexport { PayloadType } from './payload-log/payload-log'\nexport { createPayloadLog } from './payload-log/payload-log-mutation'\n"]}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolvers = exports.entities = void 0;
4
- const scenario_type_1 = require("./scenario-type");
4
+ const scenario_1 = require("./scenario");
5
5
  const scenario_query_1 = require("./scenario-query");
6
6
  const scenario_mutation_1 = require("./scenario-mutation");
7
- exports.entities = [scenario_type_1.Scenario];
7
+ exports.entities = [scenario_1.Scenario];
8
8
  exports.resolvers = [scenario_query_1.ScenarioQuery, scenario_mutation_1.ScenarioMutation];
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/scenario/index.ts"],"names":[],"mappings":";;;AAAA,mDAA0C;AAC1C,qDAAgD;AAChD,2DAAsD;AAEzC,QAAA,QAAQ,GAAG,CAAC,wBAAQ,CAAC,CAAA;AACrB,QAAA,SAAS,GAAG,CAAC,8BAAa,EAAE,oCAAgB,CAAC,CAAA","sourcesContent":["import { Scenario } from './scenario-type'\nimport { ScenarioQuery } from './scenario-query'\nimport { ScenarioMutation } from './scenario-mutation'\n\nexport const entities = [Scenario]\nexport const resolvers = [ScenarioQuery, ScenarioMutation]\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/scenario/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,qDAAgD;AAChD,2DAAsD;AAEzC,QAAA,QAAQ,GAAG,CAAC,mBAAQ,CAAC,CAAA;AACrB,QAAA,SAAS,GAAG,CAAC,8BAAa,EAAE,oCAAgB,CAAC,CAAA","sourcesContent":["import { Scenario } from './scenario'\nimport { ScenarioQuery } from './scenario-query'\nimport { ScenarioMutation } from './scenario-mutation'\n\nexport const entities = [Scenario]\nexport const resolvers = [ScenarioQuery, ScenarioMutation]\n"]}