@things-factory/integration-base 8.0.5 → 9.0.0-beta.12

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 (160) hide show
  1. package/dist-server/engine/connector/headless-connector.d.ts +23 -0
  2. package/dist-server/engine/connector/headless-connector.js +357 -0
  3. package/dist-server/engine/connector/headless-connector.js.map +1 -0
  4. package/dist-server/engine/connector/http-connector.js +1 -1
  5. package/dist-server/engine/connector/http-connector.js.map +1 -1
  6. package/dist-server/engine/connector/index.d.ts +1 -0
  7. package/dist-server/engine/connector/index.js +1 -0
  8. package/dist-server/engine/connector/index.js.map +1 -1
  9. package/dist-server/engine/index.d.ts +1 -0
  10. package/dist-server/engine/index.js +1 -0
  11. package/dist-server/engine/index.js.map +1 -1
  12. package/dist-server/engine/resource-pool/headless-pool.d.ts +1 -0
  13. package/dist-server/engine/resource-pool/headless-pool.js +62 -0
  14. package/dist-server/engine/resource-pool/headless-pool.js.map +1 -0
  15. package/dist-server/engine/resource-pool/index.d.ts +1 -0
  16. package/dist-server/engine/resource-pool/index.js +5 -0
  17. package/dist-server/engine/resource-pool/index.js.map +1 -0
  18. package/dist-server/engine/task/headless-post.js +19 -33
  19. package/dist-server/engine/task/headless-post.js.map +1 -1
  20. package/dist-server/engine/task/headless-scrap.js +20 -13
  21. package/dist-server/engine/task/headless-scrap.js.map +1 -1
  22. package/dist-server/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +12 -11
  24. package/translations/en.json +12 -4
  25. package/translations/ja.json +12 -4
  26. package/translations/ko.json +12 -4
  27. package/translations/ms.json +12 -4
  28. package/translations/zh.json +12 -4
  29. package/server/controllers/index.ts +0 -2
  30. package/server/controllers/publish-data.ts +0 -29
  31. package/server/controllers/scenario-controller.ts +0 -154
  32. package/server/engine/analyzer/analyze-integration.ts +0 -115
  33. package/server/engine/connection-manager.ts +0 -239
  34. package/server/engine/connector/echo-back-connector.ts +0 -51
  35. package/server/engine/connector/echo-back-server.ts +0 -72
  36. package/server/engine/connector/graphql-connector.ts +0 -126
  37. package/server/engine/connector/http-connector.ts +0 -65
  38. package/server/engine/connector/index.ts +0 -12
  39. package/server/engine/connector/mqtt-connector.ts +0 -78
  40. package/server/engine/connector/mssql-connector.ts +0 -152
  41. package/server/engine/connector/mysql-connector.ts +0 -94
  42. package/server/engine/connector/operato-connector.ts +0 -264
  43. package/server/engine/connector/oracle-connector.ts +0 -218
  44. package/server/engine/connector/postgresql-connector.ts +0 -152
  45. package/server/engine/connector/proxy-connector.ts +0 -53
  46. package/server/engine/connector/socket-server.ts +0 -86
  47. package/server/engine/connector/sqlite-connector.ts +0 -69
  48. package/server/engine/edge-client.ts +0 -45
  49. package/server/engine/index.ts +0 -10
  50. package/server/engine/pending-queue.ts +0 -97
  51. package/server/engine/scenario-engine.ts +0 -106
  52. package/server/engine/task/book-up-scenario.ts +0 -73
  53. package/server/engine/task/csv-readline.ts +0 -127
  54. package/server/engine/task/data-accessor.ts +0 -36
  55. package/server/engine/task/data-mapper.ts +0 -47
  56. package/server/engine/task/database-query.ts +0 -56
  57. package/server/engine/task/echo-receive.ts +0 -21
  58. package/server/engine/task/echo-send.ts +0 -32
  59. package/server/engine/task/empty-check.ts +0 -38
  60. package/server/engine/task/end.ts +0 -18
  61. package/server/engine/task/floating-point.ts +0 -71
  62. package/server/engine/task/goto.ts +0 -27
  63. package/server/engine/task/graphql-mutate.ts +0 -79
  64. package/server/engine/task/graphql-query.ts +0 -78
  65. package/server/engine/task/headless-post.ts +0 -147
  66. package/server/engine/task/headless-scrap.ts +0 -80
  67. package/server/engine/task/http-get.ts +0 -117
  68. package/server/engine/task/http-post.ts +0 -148
  69. package/server/engine/task/index.ts +0 -45
  70. package/server/engine/task/jsonata.ts +0 -45
  71. package/server/engine/task/local-graphql-mutate.ts +0 -100
  72. package/server/engine/task/local-graphql-query.ts +0 -100
  73. package/server/engine/task/log.ts +0 -78
  74. package/server/engine/task/mqtt-publish.ts +0 -45
  75. package/server/engine/task/mqtt-subscribe.ts +0 -139
  76. package/server/engine/task/mssql-procedure.ts +0 -128
  77. package/server/engine/task/oracle-procedure.ts +0 -124
  78. package/server/engine/task/pick-pending-scenario.ts +0 -80
  79. package/server/engine/task/publish.ts +0 -40
  80. package/server/engine/task/random.ts +0 -53
  81. package/server/engine/task/reset-pending-queue.ts +0 -17
  82. package/server/engine/task/script.ts +0 -63
  83. package/server/engine/task/set-domain.ts +0 -37
  84. package/server/engine/task/sleep.ts +0 -34
  85. package/server/engine/task/socket-listener.ts +0 -96
  86. package/server/engine/task/state-group-read.ts +0 -69
  87. package/server/engine/task/state-read.ts +0 -56
  88. package/server/engine/task/state-write.ts +0 -65
  89. package/server/engine/task/stop-scenario.ts +0 -44
  90. package/server/engine/task/sub-scenario.ts +0 -57
  91. package/server/engine/task/switch-goto.ts +0 -43
  92. package/server/engine/task/switch-range-goto.ts +0 -53
  93. package/server/engine/task/switch-range-scenario.ts +0 -79
  94. package/server/engine/task/switch-range-set.ts +0 -48
  95. package/server/engine/task/switch-scenario.ts +0 -67
  96. package/server/engine/task/switch-set.ts +0 -37
  97. package/server/engine/task/throw.ts +0 -27
  98. package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
  99. package/server/engine/task/utils/substitute.ts +0 -44
  100. package/server/engine/task/variables.ts +0 -17
  101. package/server/engine/task-registry.ts +0 -23
  102. package/server/engine/types.ts +0 -114
  103. package/server/index.ts +0 -20
  104. package/server/migrations/index.ts +0 -9
  105. package/server/restful/index.ts +0 -1
  106. package/server/restful/unstable/index.ts +0 -7
  107. package/server/restful/unstable/run-scenario.ts +0 -51
  108. package/server/restful/unstable/scenario-instance.ts +0 -52
  109. package/server/restful/unstable/scenario-instances.ts +0 -80
  110. package/server/restful/unstable/scenario.ts +0 -41
  111. package/server/restful/unstable/scenarios.ts +0 -69
  112. package/server/restful/unstable/start-scenario.ts +0 -33
  113. package/server/restful/unstable/stop-scenario.ts +0 -30
  114. package/server/routers/scenario-schedule-callback-router.ts +0 -69
  115. package/server/routers/scenario-view-router.ts +0 -46
  116. package/server/routes.ts +0 -30
  117. package/server/service/analysis/analysis-query.ts +0 -13
  118. package/server/service/analysis/index.ts +0 -3
  119. package/server/service/connection/connection-mutation.ts +0 -190
  120. package/server/service/connection/connection-query.ts +0 -87
  121. package/server/service/connection/connection-subscription.ts +0 -104
  122. package/server/service/connection/connection-type.ts +0 -288
  123. package/server/service/connection/index.ts +0 -7
  124. package/server/service/connector/connector-query.ts +0 -62
  125. package/server/service/connector/connector-type.ts +0 -29
  126. package/server/service/connector/index.ts +0 -4
  127. package/server/service/index.ts +0 -52
  128. package/server/service/payload-log/index.ts +0 -7
  129. package/server/service/payload-log/payload-log-mutation.ts +0 -151
  130. package/server/service/payload-log/payload-log-query.ts +0 -49
  131. package/server/service/payload-log/payload-log-type.ts +0 -36
  132. package/server/service/payload-log/payload-log.ts +0 -100
  133. package/server/service/property-spec.ts +0 -24
  134. package/server/service/scenario/index.ts +0 -6
  135. package/server/service/scenario/scenario-mutation.ts +0 -396
  136. package/server/service/scenario/scenario-query.ts +0 -109
  137. package/server/service/scenario/scenario-type.ts +0 -78
  138. package/server/service/scenario/scenario.ts +0 -124
  139. package/server/service/scenario-flow/scenario-flow.ts +0 -17
  140. package/server/service/scenario-instance/index.ts +0 -6
  141. package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
  142. package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
  143. package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
  144. package/server/service/scenario-instance/scenario-instance-type.ts +0 -563
  145. package/server/service/scenario-queue/index.ts +0 -4
  146. package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
  147. package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
  148. package/server/service/state-register/data-resolver.ts +0 -56
  149. package/server/service/state-register/index.ts +0 -8
  150. package/server/service/state-register/state-register-mutation.ts +0 -166
  151. package/server/service/state-register/state-register-query.ts +0 -80
  152. package/server/service/state-register/state-register-type.ts +0 -80
  153. package/server/service/state-register/state-register.ts +0 -113
  154. package/server/service/step/index.ts +0 -6
  155. package/server/service/step/step-mutation.ts +0 -52
  156. package/server/service/step/step-query.ts +0 -55
  157. package/server/service/step/step-type.ts +0 -215
  158. package/server/service/task-type/index.ts +0 -4
  159. package/server/service/task-type/task-type-query.ts +0 -95
  160. package/server/service/task-type/task-type-type.ts +0 -29
@@ -1,69 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import { TaskRegistry } from '../task-registry'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function StateGroupRead(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
7
- var {
8
- params: { group }
9
- } = step
10
-
11
- if (!group) {
12
- throw Error(`group should be defined: group - '${group}'`)
13
- }
14
-
15
- var { data: queryResult, errors } = await client.query({
16
- query: gql`
17
- query ($filters: [Filter!]) {
18
- stateRegisters(filters: $filters) {
19
- items {
20
- name
21
- state
22
- }
23
- }
24
- }
25
- `,
26
- variables: {
27
- filters: [
28
- {
29
- name: 'group',
30
- operator: 'eq',
31
- value: group
32
- }
33
- ]
34
- },
35
- context: {
36
- state: {
37
- domain,
38
- user
39
- }
40
- }
41
- })
42
-
43
- if (errors) {
44
- errors.forEach(error => {
45
- logger.error('GraphQL Error: %s', error)
46
- })
47
- }
48
-
49
- return {
50
- data: queryResult?.stateRegisters?.items.reduce((status, item) => {
51
- const { name, state } = item
52
- status[name] = state
53
- return status
54
- }, {})
55
- }
56
- }
57
-
58
- StateGroupRead.parameterSpec = [
59
- {
60
- type: 'string',
61
- name: 'group',
62
- label: 'group'
63
- }
64
- ]
65
-
66
- StateGroupRead.connectorFree = true
67
- StateGroupRead.help = 'integration/task/state-group-read'
68
-
69
- TaskRegistry.registerTaskHandler('state-group-read', StateGroupRead)
@@ -1,56 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import { TaskRegistry } from '../task-registry'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function StateRead(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
7
- var {
8
- params: { name }
9
- } = step
10
-
11
- if (!name) {
12
- throw Error(`name should be defined: name - '${name}'`)
13
- }
14
-
15
- var { data: queryResult, errors } = await client.query({
16
- query: gql`
17
- query ($name: String!) {
18
- stateRegisterByName(name: $name) {
19
- state
20
- }
21
- }
22
- `,
23
- variables: {
24
- name
25
- },
26
- context: {
27
- state: {
28
- domain,
29
- user
30
- }
31
- }
32
- })
33
-
34
- if (errors) {
35
- errors.forEach(error => {
36
- logger.error('GraphQL Error: %s', error)
37
- })
38
- }
39
-
40
- return {
41
- data: queryResult?.stateRegisterByName?.state
42
- }
43
- }
44
-
45
- StateRead.parameterSpec = [
46
- {
47
- type: 'string',
48
- name: 'name',
49
- label: 'name'
50
- }
51
- ]
52
-
53
- StateRead.connectorFree = true
54
- StateRead.help = 'integration/task/state-read'
55
-
56
- TaskRegistry.registerTaskHandler('state-read', StateRead)
@@ -1,65 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import { access } from '@things-factory/utils'
3
- import { TaskRegistry } from '../task-registry'
4
- import { InputStep } from '../../service/step/step-type'
5
- import { Context } from '../types'
6
-
7
- async function StateWrite(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
8
- var {
9
- params: { name, accessor }
10
- } = step
11
-
12
- if (!name || !accessor) {
13
- throw Error(`name and accessor should be defined: name - '${name}', accessor - '${accessor}'`)
14
- }
15
-
16
- var state = access(accessor, data)
17
-
18
- var { data: mutateResult, errors } = await client.mutate({
19
- mutation: gql`
20
- mutation ($state: Object!, $name: String!) {
21
- updateStateRegisterByName(state: $state, name: $name) {
22
- state
23
- }
24
- }
25
- `,
26
- variables: {
27
- name,
28
- state
29
- },
30
- context: {
31
- state: {
32
- domain,
33
- user
34
- }
35
- }
36
- })
37
-
38
- if (errors) {
39
- errors.forEach(error => {
40
- logger.error('GraphQL Error: %s', error)
41
- })
42
- }
43
-
44
- return {
45
- data: mutateResult?.updateStateRegisterByName?.state
46
- }
47
- }
48
-
49
- StateWrite.parameterSpec = [
50
- {
51
- type: 'string',
52
- name: 'name',
53
- label: 'name'
54
- },
55
- {
56
- type: 'scenario-step-input',
57
- name: 'accessor',
58
- label: 'accessor'
59
- }
60
- ]
61
-
62
- StateWrite.connectorFree = true
63
- StateWrite.help = 'integration/task/state-write'
64
-
65
- TaskRegistry.registerTaskHandler('state-write', StateWrite)
@@ -1,44 +0,0 @@
1
- import { getRepository } from '@things-factory/shell'
2
-
3
- import { Scenario } from '../../service/scenario/scenario'
4
- import { ScenarioEngine } from '../../engine'
5
- import { TaskRegistry } from '../task-registry'
6
- import { InputStep } from '../../service/step/step-type'
7
- import { Context } from '../types'
8
-
9
- async function StopScenario(step: InputStep, context: Context) {
10
- var { logger, domain } = context
11
- var {
12
- params: { scenario }
13
- } = step
14
-
15
- // find the name of the input scenario
16
- var foundScenario = await getRepository(Scenario).findOne({
17
- where: {
18
- id: scenario
19
- },
20
- relations: ['steps', 'domain']
21
- })
22
-
23
- await ScenarioEngine.unload(domain, foundScenario?.name)
24
- logger.info(`Scenario '${foundScenario?.name}' is about to be stopped.`)
25
-
26
- return {
27
- data: foundScenario?.name
28
- }
29
- }
30
-
31
- StopScenario.parameterSpec = [
32
- {
33
- type: 'entity-selector',
34
- name: 'scenario',
35
- label: 'scenario',
36
- property: {
37
- queryName: 'scenarios'
38
- }
39
- }
40
- ]
41
-
42
- StopScenario.connectorFree = true
43
-
44
- TaskRegistry.registerTaskHandler('scenario-stop', StopScenario)
@@ -1,57 +0,0 @@
1
- import { getRepository } from '@things-factory/shell'
2
- import { access, deepClone } from '@things-factory/utils'
3
-
4
- import { Scenario } from '../../service/scenario/scenario'
5
- import { TaskRegistry } from '../task-registry'
6
- import { InputStep } from '../../service/step/step-type'
7
- import { Context } from '../types'
8
-
9
- async function SubScenario(step: InputStep, context: Context) {
10
- var { logger, load, data } = context
11
- var {
12
- params: { scenario, variables }
13
- } = step
14
-
15
- var subscenario = await getRepository(Scenario).findOne({
16
- where: {
17
- id: scenario
18
- },
19
- relations: ['steps', 'domain']
20
- })
21
-
22
- logger.info(`Sub Scenario '${subscenario.name}' Started.`)
23
- var subContext = await load(step, subscenario, {
24
- ...context,
25
- data: {},
26
- /*
27
- FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만,
28
- 하위 호환성 유지를 위해서 부모의 variables를 사용함
29
- */
30
- variables: variables ? deepClone(access(variables, data)) : context.variables
31
- })
32
- logger.info(`Sub Scenario '${subscenario.name}' done.`)
33
-
34
- return {
35
- data: subContext.data
36
- }
37
- }
38
-
39
- SubScenario.parameterSpec = [
40
- {
41
- type: 'entity-selector',
42
- name: 'scenario',
43
- label: 'scenario',
44
- property: {
45
- queryName: 'scenarios'
46
- }
47
- },
48
- {
49
- type: 'scenario-step-input',
50
- name: 'variables',
51
- label: 'variables'
52
- }
53
- ]
54
-
55
- SubScenario.connectorFree = true
56
-
57
- TaskRegistry.registerTaskHandler('scenario', SubScenario)
@@ -1,43 +0,0 @@
1
- import { access } from '@things-factory/utils'
2
-
3
- import { TaskRegistry } from '../task-registry'
4
-
5
- import { InputStep } from '../../service/step/step-type'
6
- import { Context } from '../types'
7
-
8
- async function SwitchGoTo(step: InputStep, { logger, data }: Context) {
9
- var {
10
- params: { accessor, cases }
11
- } = step
12
-
13
- var value = access(accessor, data)
14
-
15
- var next = cases[value] || cases['default']
16
-
17
- logger.info(`switch to next '${next}' by value '${value}' .`)
18
-
19
- return {
20
- next
21
- }
22
- }
23
-
24
- SwitchGoTo.parameterSpec = [
25
- {
26
- type: 'scenario-step-input',
27
- name: 'accessor',
28
- label: 'accessor'
29
- },
30
- {
31
- type: 'map',
32
- name: 'cases',
33
- label: 'cases',
34
- property: {
35
- valuetype: 'scenario-step-input'
36
- }
37
- }
38
- ]
39
-
40
- SwitchGoTo.connectorFree = true
41
-
42
- TaskRegistry.registerTaskHandler('switch', SwitchGoTo)
43
- TaskRegistry.registerTaskHandler('switch-goto', SwitchGoTo)
@@ -1,53 +0,0 @@
1
- import { access } from '@things-factory/utils'
2
-
3
- import { TaskRegistry } from '../task-registry'
4
- import { InputStep } from '../../service/step/step-type'
5
- import { Context } from '../types'
6
-
7
- async function SwitchRangeGoTo(step: InputStep, { logger, data }: Context) {
8
- var {
9
- params: { accessor, cases }
10
- } = step
11
-
12
- var value = Number(access(accessor, data))
13
-
14
- var range =
15
- Object.keys(cases).find(key => {
16
- if (key == 'default') {
17
- return
18
- }
19
-
20
- var [from, to] = key.split('~')
21
-
22
- return Number(from) <= value && Number(to) > value
23
- }) || 'default'
24
-
25
- var next = cases[range]
26
-
27
- logger.info(`switch-range to next '${next}' by value '${value}' .`)
28
-
29
- return {
30
- next
31
- }
32
- }
33
-
34
- SwitchRangeGoTo.parameterSpec = [
35
- {
36
- type: 'scenario-step-input',
37
- name: 'accessor',
38
- label: 'accessor'
39
- },
40
- {
41
- type: 'range',
42
- name: 'cases',
43
- label: 'cases',
44
- property: {
45
- valuetype: 'scenario-step-input'
46
- }
47
- }
48
- ]
49
-
50
- SwitchRangeGoTo.connectorFree = true
51
-
52
- TaskRegistry.registerTaskHandler('switch-range', SwitchRangeGoTo)
53
- TaskRegistry.registerTaskHandler('switch-range-goto', SwitchRangeGoTo)
@@ -1,79 +0,0 @@
1
- import { getRepository } from '@things-factory/shell'
2
- import { access, deepClone } from '@things-factory/utils'
3
-
4
- import { Scenario } from '../../service/scenario/scenario'
5
- import { TaskRegistry } from '../task-registry'
6
- import { InputStep } from '../../service/step/step-type'
7
- import { Context } from '../types'
8
-
9
- async function SwitchRangeScenario(step: InputStep, context: Context) {
10
- var { logger, data, load } = context
11
- var {
12
- params: { accessor, cases, variables }
13
- } = step
14
-
15
- var value = Number(access(accessor, data))
16
-
17
- var range =
18
- Object.keys(cases).find(key => {
19
- if (key == 'default') {
20
- return
21
- }
22
-
23
- var [from, to] = key.split('~')
24
-
25
- return Number(from) <= value && Number(to) > value
26
- }) || 'default'
27
-
28
- var scenarioName = cases[range]
29
-
30
- logger.info(`switch-range to scenario '${scenarioName}' by value '${value}' .`)
31
-
32
- var subscenario = await getRepository(Scenario).findOne({
33
- where: {
34
- name: scenarioName
35
- },
36
- relations: ['steps', 'domain']
37
- })
38
-
39
- logger.info(`Sub Scenario '${subscenario.name}' started.`)
40
- var subContext = await load(step, subscenario, {
41
- ...context,
42
- data: {},
43
- /*
44
- FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만,
45
- 하위 호환성 유지를 위해서 부모의 variables를 사용함
46
- */
47
- variables: variables ? deepClone(access(variables, data)) : context.variables
48
- })
49
- logger.info(`Sub Scenario '${subscenario.name}' done.`)
50
-
51
- return {
52
- data: subContext.data
53
- }
54
- }
55
-
56
- SwitchRangeScenario.parameterSpec = [
57
- {
58
- type: 'scenario-step-input',
59
- name: 'accessor',
60
- label: 'accessor'
61
- },
62
- {
63
- type: 'range',
64
- name: 'cases',
65
- label: 'cases',
66
- property: {
67
- valuetype: 'scenario-input'
68
- }
69
- },
70
- {
71
- type: 'scenario-step-input',
72
- name: 'variables',
73
- label: 'variables'
74
- }
75
- ]
76
-
77
- SwitchRangeScenario.connectorFree = true
78
-
79
- TaskRegistry.registerTaskHandler('switch-range-scenario', SwitchRangeScenario)
@@ -1,48 +0,0 @@
1
- import { access } from '@things-factory/utils'
2
- import { TaskRegistry } from '../task-registry'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function SwitchRangeSet(step: InputStep, { logger, data }: Context) {
7
- var {
8
- params: { accessor, cases }
9
- } = step
10
-
11
- var value = Number(access(accessor, data))
12
-
13
- var range =
14
- Object.keys(cases).find(key => {
15
- if (key == 'default') {
16
- return
17
- }
18
-
19
- var [from, to] = key.split('~')
20
-
21
- return Number(from) <= value && Number(to) > value
22
- }) || 'default'
23
-
24
- var data = cases[range]
25
-
26
- logger.info(`switch-range to data '${data}' by value '${value}' .`)
27
-
28
- return {
29
- data
30
- }
31
- }
32
-
33
- SwitchRangeSet.parameterSpec = [
34
- {
35
- type: 'scenario-step-input',
36
- name: 'accessor',
37
- label: 'accessor'
38
- },
39
- {
40
- type: 'range',
41
- name: 'cases',
42
- label: 'cases'
43
- }
44
- ]
45
-
46
- SwitchRangeSet.connectorFree = true
47
-
48
- TaskRegistry.registerTaskHandler('switch-range-set', SwitchRangeSet)
@@ -1,67 +0,0 @@
1
- import { getRepository } from '@things-factory/shell'
2
- import { access, deepClone } from '@things-factory/utils'
3
-
4
- import { Scenario } from '../../service/scenario/scenario'
5
- import { TaskRegistry } from '../task-registry'
6
- import { InputStep } from '../../service/step/step-type'
7
- import { Context } from '../types'
8
-
9
- async function SwitchScenario(step: InputStep, context: Context) {
10
- var { logger, data, load } = context
11
- var {
12
- params: { accessor, cases, variables }
13
- } = step
14
-
15
- var value = access(accessor, data)
16
-
17
- var scenarioName = cases[value] || cases['default']
18
- logger.info(`switch to scenario '${scenarioName}' by value '${value}' .`)
19
-
20
- var subscenario = await getRepository(Scenario).findOne({
21
- where: {
22
- name: scenarioName
23
- },
24
- relations: ['steps', 'domain']
25
- })
26
-
27
- logger.info(`Sub Scenario '${subscenario.name}' started.`)
28
- var subContext = await load(step, subscenario, {
29
- ...context,
30
- data: {},
31
- /*
32
- FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만,
33
- 하위 호환성 유지를 위해서 부모의 variables를 사용함
34
- */
35
- variables: variables ? deepClone(access(variables, data)) : context.variables
36
- })
37
- logger.info(`Sub Scenario '${subscenario.name}' done.`)
38
-
39
- return {
40
- data: subContext.data
41
- }
42
- }
43
-
44
- SwitchScenario.parameterSpec = [
45
- {
46
- type: 'scenario-step-input',
47
- name: 'accessor',
48
- label: 'accessor'
49
- },
50
- {
51
- type: 'map',
52
- name: 'cases',
53
- label: 'cases',
54
- property: {
55
- valuetype: 'scenario-input'
56
- }
57
- },
58
- {
59
- type: 'scenario-step-input',
60
- name: 'variables',
61
- label: 'variables'
62
- }
63
- ]
64
-
65
- SwitchScenario.connectorFree = true
66
-
67
- TaskRegistry.registerTaskHandler('switch-scenario', SwitchScenario)
@@ -1,37 +0,0 @@
1
- import { access } from '@things-factory/utils'
2
- import { TaskRegistry } from '../task-registry'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function SwitchSet(step: InputStep, { logger, data }: Context) {
7
- var {
8
- params: { accessor, cases }
9
- } = step
10
-
11
- var value = access(accessor, data)
12
-
13
- var data = cases[value] || cases['default']
14
-
15
- logger.info(`switch to data '${data}' by value '${value}' .`)
16
-
17
- return {
18
- data
19
- }
20
- }
21
-
22
- SwitchSet.parameterSpec = [
23
- {
24
- type: 'scenario-step-input',
25
- name: 'accessor',
26
- label: 'accessor'
27
- },
28
- {
29
- type: 'map',
30
- name: 'cases',
31
- label: 'cases'
32
- }
33
- ]
34
-
35
- SwitchSet.connectorFree = true
36
-
37
- TaskRegistry.registerTaskHandler('switch-set', SwitchSet)
@@ -1,27 +0,0 @@
1
- import { TaskRegistry } from '../task-registry'
2
- import { InputStep } from '../../service/step/step-type'
3
- import { Context } from '../types'
4
-
5
- async function Throw(step: InputStep, { logger }: Context) {
6
- var {
7
- name,
8
- params: { message }
9
- } = step
10
-
11
- throw `'${message}' is thrown by step '${name}'`
12
-
13
- return {}
14
- }
15
-
16
- Throw.parameterSpec = [
17
- {
18
- type: 'string',
19
- name: 'message',
20
- label: 'message'
21
- }
22
- ]
23
-
24
- Throw.connectorFree = true
25
- Throw.help = 'integration/task/throw'
26
-
27
- TaskRegistry.registerTaskHandler('throw', Throw)