@things-factory/integration-base 7.0.0-alpha.0 → 7.0.0-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/controllers/index.js +5 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/controllers/scenario-controller.js +87 -0
- package/dist-server/controllers/scenario-controller.js.map +1 -0
- package/dist-server/engine/connection-manager.js +37 -6
- package/dist-server/engine/connection-manager.js.map +1 -1
- package/dist-server/engine/connector/echo-back-connector.js +1 -1
- package/dist-server/engine/connector/echo-back-connector.js.map +1 -1
- package/dist-server/engine/connector/echo-back-server.js +1 -1
- package/dist-server/engine/connector/echo-back-server.js.map +1 -1
- package/dist-server/engine/connector/graphql-connector.js +6 -6
- package/dist-server/engine/connector/graphql-connector.js.map +1 -1
- package/dist-server/engine/connector/http-connector.js.map +1 -1
- package/dist-server/engine/connector/mqtt-connector.js.map +1 -1
- package/dist-server/engine/connector/mssql-connector.js.map +1 -1
- package/dist-server/engine/connector/mysql-connector.js +3 -3
- package/dist-server/engine/connector/mysql-connector.js.map +1 -1
- package/dist-server/engine/connector/operato-connector.js +19 -22
- package/dist-server/engine/connector/operato-connector.js.map +1 -1
- package/dist-server/engine/connector/oracle-connector.js +113 -17
- package/dist-server/engine/connector/oracle-connector.js.map +1 -1
- package/dist-server/engine/connector/postgresql-connector.js.map +1 -1
- package/dist-server/engine/connector/proxy-connector.js +44 -0
- package/dist-server/engine/connector/proxy-connector.js.map +1 -0
- package/dist-server/engine/connector/socket-server.js +1 -1
- package/dist-server/engine/connector/socket-server.js.map +1 -1
- package/dist-server/engine/connector/sqlite-connector.js.map +1 -1
- package/dist-server/engine/edge-client.js +38 -0
- package/dist-server/engine/edge-client.js.map +1 -0
- package/dist-server/engine/index.js +1 -0
- package/dist-server/engine/index.js.map +1 -1
- package/dist-server/engine/task/book-up-scenario.js.map +1 -1
- package/dist-server/engine/task/csv-readline.js.map +1 -1
- package/dist-server/engine/task/data-accessor.js.map +1 -1
- package/dist-server/engine/task/data-mapper.js.map +1 -1
- package/dist-server/engine/task/database-query.js.map +1 -1
- package/dist-server/engine/task/echo-receive.js.map +1 -1
- package/dist-server/engine/task/echo-send.js.map +1 -1
- package/dist-server/engine/task/empty-check.js.map +1 -1
- package/dist-server/engine/task/end.js.map +1 -1
- package/dist-server/engine/task/floating-point.js.map +1 -1
- package/dist-server/engine/task/goto.js.map +1 -1
- package/dist-server/engine/task/graphql-mutate.js.map +1 -1
- package/dist-server/engine/task/graphql-query.js.map +1 -1
- package/dist-server/engine/task/headless-post.js.map +1 -1
- package/dist-server/engine/task/headless-scrap.js.map +1 -1
- package/dist-server/engine/task/http-get.js.map +1 -1
- package/dist-server/engine/task/http-post.js.map +1 -1
- package/dist-server/engine/task/jsonata.js +1 -1
- package/dist-server/engine/task/jsonata.js.map +1 -1
- package/dist-server/engine/task/local-graphql-mutate.js.map +1 -1
- package/dist-server/engine/task/local-graphql-query.js.map +1 -1
- package/dist-server/engine/task/log.js.map +1 -1
- package/dist-server/engine/task/mqtt-publish.js.map +1 -1
- package/dist-server/engine/task/mqtt-subscribe.js.map +1 -1
- package/dist-server/engine/task/oracle-procedure.js +1 -15
- package/dist-server/engine/task/oracle-procedure.js.map +1 -1
- package/dist-server/engine/task/pick-pending-scenario.js.map +1 -1
- package/dist-server/engine/task/publish.js.map +1 -1
- package/dist-server/engine/task/random.js.map +1 -1
- package/dist-server/engine/task/reset-pending-queue.js.map +1 -1
- package/dist-server/engine/task/script.js +1 -0
- package/dist-server/engine/task/script.js.map +1 -1
- package/dist-server/engine/task/set-domain.js.map +1 -1
- package/dist-server/engine/task/sleep.js.map +1 -1
- package/dist-server/engine/task/socket-listener.js.map +1 -1
- package/dist-server/engine/task/state-read.js.map +1 -1
- package/dist-server/engine/task/state-write.js.map +1 -1
- package/dist-server/engine/task/stop-scenario.js.map +1 -1
- package/dist-server/engine/task/sub-scenario.js.map +1 -1
- package/dist-server/engine/task/switch-goto.js.map +1 -1
- package/dist-server/engine/task/switch-range-goto.js.map +1 -1
- package/dist-server/engine/task/switch-range-scenario.js.map +1 -1
- package/dist-server/engine/task/switch-range-set.js.map +1 -1
- package/dist-server/engine/task/switch-scenario.js.map +1 -1
- package/dist-server/engine/task/switch-set.js.map +1 -1
- package/dist-server/engine/task/throw.js.map +1 -1
- package/dist-server/engine/task/utils/headless-pool-for-scenario.js +1 -1
- package/dist-server/engine/task/utils/headless-pool-for-scenario.js.map +1 -1
- package/dist-server/engine/task/variables.js.map +1 -1
- package/dist-server/engine/types.js.map +1 -1
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/restful/unstable/run-scenario.js.map +1 -1
- package/dist-server/restful/unstable/start-scenario.js +1 -1
- package/dist-server/restful/unstable/start-scenario.js.map +1 -1
- package/dist-server/restful/unstable/stop-scenario.js +1 -1
- package/dist-server/restful/unstable/stop-scenario.js.map +1 -1
- package/dist-server/service/connection/connection-mutation.js +4 -8
- package/dist-server/service/connection/connection-mutation.js.map +1 -1
- package/dist-server/service/connection/connection-query.js +17 -14
- package/dist-server/service/connection/connection-query.js.map +1 -1
- package/dist-server/service/connection/connection-subscription.js +11 -14
- package/dist-server/service/connection/connection-subscription.js.map +1 -1
- package/dist-server/service/connection/connection-type.js +66 -13
- package/dist-server/service/connection/connection-type.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-mutation.js +4 -71
- package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-subscription.js +8 -9
- package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-type.js +18 -5
- package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
- package/dist-server/service/scenario-queue/scenario-queue-subscription.js +4 -4
- package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +1 -1
- package/dist-server/service/step/step-type.js +41 -28
- package/dist-server/service/step/step-type.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/integration/concept/script-internal-variables.ja.md +21 -1
- package/helps/integration/concept/script-internal-variables.ko.md +17 -0
- package/helps/integration/concept/script-internal-variables.md +18 -0
- package/helps/integration/concept/script-internal-variables.ms.md +19 -1
- package/helps/integration/concept/script-internal-variables.zh.md +18 -0
- package/helps/integration/connector/oracle-connector.ja.md +90 -0
- package/helps/integration/connector/oracle-connector.ko.md +87 -0
- package/helps/integration/connector/oracle-connector.md +46 -25
- package/helps/integration/connector/oracle-connector.ms.md +87 -0
- package/helps/integration/connector/oracle-connector.zh.md +87 -0
- package/helps/integration/task/script.ja.md +1 -1
- package/helps/integration/task/script.ko.md +1 -1
- package/helps/integration/task/script.md +1 -1
- package/helps/integration/task/script.ms.md +1 -1
- package/helps/integration/task/script.zh.md +1 -1
- package/openapi/unstable/scenario.yaml +100 -100
- package/openapi/unstable.yaml +11 -11
- package/package.json +8 -11
- package/server/controllers/index.ts +1 -0
- package/server/controllers/scenario-controller.ts +116 -0
- package/server/engine/connection-manager.ts +49 -7
- package/server/engine/connector/echo-back-connector.ts +4 -3
- package/server/engine/connector/echo-back-server.ts +5 -4
- package/server/engine/connector/graphql-connector.ts +12 -13
- package/server/engine/connector/http-connector.ts +4 -3
- package/server/engine/connector/mqtt-connector.ts +4 -3
- package/server/engine/connector/mssql-connector.ts +4 -3
- package/server/engine/connector/mysql-connector.ts +8 -6
- package/server/engine/connector/operato-connector.ts +27 -35
- package/server/engine/connector/oracle-connector.ts +136 -23
- package/server/engine/connector/postgresql-connector.ts +4 -3
- package/server/engine/connector/proxy-connector.ts +53 -0
- package/server/engine/connector/socket-server.ts +5 -4
- package/server/engine/connector/sqlite-connector.ts +5 -3
- package/server/engine/edge-client.ts +45 -0
- package/server/engine/index.ts +1 -0
- package/server/engine/task/book-up-scenario.ts +3 -1
- package/server/engine/task/csv-readline.ts +4 -1
- package/server/engine/task/data-accessor.ts +4 -1
- package/server/engine/task/data-mapper.ts +4 -1
- package/server/engine/task/database-query.ts +3 -1
- package/server/engine/task/echo-receive.ts +4 -1
- package/server/engine/task/echo-send.ts +3 -1
- package/server/engine/task/empty-check.ts +4 -1
- package/server/engine/task/end.ts +4 -1
- package/server/engine/task/floating-point.ts +4 -1
- package/server/engine/task/goto.ts +4 -1
- package/server/engine/task/graphql-mutate.ts +3 -1
- package/server/engine/task/graphql-query.ts +3 -1
- package/server/engine/task/headless-post.ts +4 -1
- package/server/engine/task/headless-scrap.ts +3 -1
- package/server/engine/task/http-get.ts +3 -1
- package/server/engine/task/http-post.ts +3 -1
- package/server/engine/task/jsonata.ts +5 -2
- package/server/engine/task/local-graphql-mutate.ts +5 -1
- package/server/engine/task/local-graphql-query.ts +3 -1
- package/server/engine/task/log.ts +3 -1
- package/server/engine/task/mqtt-publish.ts +3 -1
- package/server/engine/task/mqtt-subscribe.ts +3 -1
- package/server/engine/task/oracle-procedure.ts +4 -17
- package/server/engine/task/pick-pending-scenario.ts +3 -1
- package/server/engine/task/publish.ts +3 -1
- package/server/engine/task/random.ts +4 -1
- package/server/engine/task/reset-pending-queue.ts +3 -1
- package/server/engine/task/script.ts +5 -1
- package/server/engine/task/set-domain.ts +4 -1
- package/server/engine/task/sleep.ts +3 -1
- package/server/engine/task/socket-listener.ts +3 -1
- package/server/engine/task/state-read.ts +3 -1
- package/server/engine/task/state-write.ts +3 -1
- package/server/engine/task/stop-scenario.ts +3 -1
- package/server/engine/task/sub-scenario.ts +3 -1
- package/server/engine/task/switch-goto.ts +4 -1
- package/server/engine/task/switch-range-goto.ts +3 -1
- package/server/engine/task/switch-range-scenario.ts +3 -1
- package/server/engine/task/switch-range-set.ts +3 -1
- package/server/engine/task/switch-scenario.ts +3 -1
- package/server/engine/task/switch-set.ts +3 -1
- package/server/engine/task/throw.ts +3 -1
- package/server/engine/task/utils/headless-pool-for-scenario.ts +1 -1
- package/server/engine/task/variables.ts +3 -1
- package/server/engine/types.ts +80 -4
- package/server/index.ts +1 -0
- package/server/restful/unstable/run-scenario.ts +0 -1
- package/server/restful/unstable/start-scenario.ts +1 -1
- package/server/restful/unstable/stop-scenario.ts +1 -1
- package/server/service/connection/connection-mutation.ts +9 -29
- package/server/service/connection/connection-query.ts +13 -12
- package/server/service/connection/connection-subscription.ts +18 -24
- package/server/service/connection/connection-type.ts +100 -21
- package/server/service/scenario-instance/scenario-instance-mutation.ts +10 -121
- package/server/service/scenario-instance/scenario-instance-subscription.ts +16 -23
- package/server/service/scenario-instance/scenario-instance-type.ts +24 -13
- package/server/service/scenario-queue/scenario-queue-subscription.ts +7 -7
- package/server/service/step/step-type.ts +78 -22
@@ -1,6 +1,8 @@
|
|
1
1
|
import { sleep } from '@things-factory/utils'
|
2
2
|
import { TaskRegistry } from '../task-registry'
|
3
3
|
import { ConnectionManager } from '../connection-manager'
|
4
|
+
import { InputStep } from '../../service/step/step-type'
|
5
|
+
import { Context } from '../types'
|
4
6
|
|
5
7
|
function convertDataFormat(data, format) {
|
6
8
|
try {
|
@@ -16,7 +18,7 @@ function convertDataFormat(data, format) {
|
|
16
18
|
return data
|
17
19
|
}
|
18
20
|
|
19
|
-
async function SocketListener(step, context) {
|
21
|
+
async function SocketListener(step: InputStep, context: Context) {
|
20
22
|
//get connection data
|
21
23
|
const {
|
22
24
|
connection: connectionName,
|
@@ -1,7 +1,9 @@
|
|
1
1
|
import gql from 'graphql-tag'
|
2
2
|
import { TaskRegistry } from '../task-registry'
|
3
|
+
import { InputStep } from '../../service/step/step-type'
|
4
|
+
import { Context } from '../types'
|
3
5
|
|
4
|
-
async function StateRead(step, { logger, publish, data, domain, user, client }) {
|
6
|
+
async function StateRead(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
|
5
7
|
var {
|
6
8
|
params: { name }
|
7
9
|
} = step
|
@@ -1,8 +1,10 @@
|
|
1
1
|
import gql from 'graphql-tag'
|
2
2
|
import { access } from '@things-factory/utils'
|
3
3
|
import { TaskRegistry } from '../task-registry'
|
4
|
+
import { InputStep } from '../../service/step/step-type'
|
5
|
+
import { Context } from '../types'
|
4
6
|
|
5
|
-
async function StateWrite(step, { logger, publish, data, domain, user, client }) {
|
7
|
+
async function StateWrite(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
|
6
8
|
var {
|
7
9
|
params: { name, accessor }
|
8
10
|
} = step
|
@@ -3,8 +3,10 @@ import { getRepository } from '@things-factory/shell'
|
|
3
3
|
import { Scenario } from '../../service/scenario/scenario'
|
4
4
|
import { ScenarioEngine } from '../../engine'
|
5
5
|
import { TaskRegistry } from '../task-registry'
|
6
|
+
import { InputStep } from '../../service/step/step-type'
|
7
|
+
import { Context } from '../types'
|
6
8
|
|
7
|
-
async function StopScenario(step, context) {
|
9
|
+
async function StopScenario(step: InputStep, context: Context) {
|
8
10
|
var { logger, domain } = context
|
9
11
|
var {
|
10
12
|
params: { scenario }
|
@@ -3,8 +3,10 @@ import { access, deepClone } from '@things-factory/utils'
|
|
3
3
|
|
4
4
|
import { Scenario } from '../../service/scenario/scenario'
|
5
5
|
import { TaskRegistry } from '../task-registry'
|
6
|
+
import { InputStep } from '../../service/step/step-type'
|
7
|
+
import { Context } from '../types'
|
6
8
|
|
7
|
-
async function SubScenario(step, context) {
|
9
|
+
async function SubScenario(step: InputStep, context: Context) {
|
8
10
|
var { logger, load, data } = context
|
9
11
|
var {
|
10
12
|
params: { scenario, variables }
|
@@ -2,7 +2,10 @@ import { access } from '@things-factory/utils'
|
|
2
2
|
|
3
3
|
import { TaskRegistry } from '../task-registry'
|
4
4
|
|
5
|
-
|
5
|
+
import { InputStep } from '../../service/step/step-type'
|
6
|
+
import { Context } from '../types'
|
7
|
+
|
8
|
+
async function SwitchGoTo(step: InputStep, { logger, data }: Context) {
|
6
9
|
var {
|
7
10
|
params: { accessor, cases }
|
8
11
|
} = step
|
@@ -1,8 +1,10 @@
|
|
1
1
|
import { access } from '@things-factory/utils'
|
2
2
|
|
3
3
|
import { TaskRegistry } from '../task-registry'
|
4
|
+
import { InputStep } from '../../service/step/step-type'
|
5
|
+
import { Context } from '../types'
|
4
6
|
|
5
|
-
async function SwitchRangeGoTo(step, { logger, data }) {
|
7
|
+
async function SwitchRangeGoTo(step: InputStep, { logger, data }: Context) {
|
6
8
|
var {
|
7
9
|
params: { accessor, cases }
|
8
10
|
} = step
|
@@ -3,8 +3,10 @@ import { access, deepClone } from '@things-factory/utils'
|
|
3
3
|
|
4
4
|
import { Scenario } from '../../service/scenario/scenario'
|
5
5
|
import { TaskRegistry } from '../task-registry'
|
6
|
+
import { InputStep } from '../../service/step/step-type'
|
7
|
+
import { Context } from '../types'
|
6
8
|
|
7
|
-
async function SwitchRangeScenario(step, context) {
|
9
|
+
async function SwitchRangeScenario(step: InputStep, context: Context) {
|
8
10
|
var { logger, data, load } = context
|
9
11
|
var {
|
10
12
|
params: { accessor, cases, variables }
|
@@ -1,7 +1,9 @@
|
|
1
1
|
import { access } from '@things-factory/utils'
|
2
2
|
import { TaskRegistry } from '../task-registry'
|
3
|
+
import { InputStep } from '../../service/step/step-type'
|
4
|
+
import { Context } from '../types'
|
3
5
|
|
4
|
-
async function SwitchRangeSet(step, { logger, data }) {
|
6
|
+
async function SwitchRangeSet(step: InputStep, { logger, data }: Context) {
|
5
7
|
var {
|
6
8
|
params: { accessor, cases }
|
7
9
|
} = step
|
@@ -3,8 +3,10 @@ import { access, deepClone } from '@things-factory/utils'
|
|
3
3
|
|
4
4
|
import { Scenario } from '../../service/scenario/scenario'
|
5
5
|
import { TaskRegistry } from '../task-registry'
|
6
|
+
import { InputStep } from '../../service/step/step-type'
|
7
|
+
import { Context } from '../types'
|
6
8
|
|
7
|
-
async function SwitchScenario(step, context) {
|
9
|
+
async function SwitchScenario(step: InputStep, context: Context) {
|
8
10
|
var { logger, data, load } = context
|
9
11
|
var {
|
10
12
|
params: { accessor, cases, variables }
|
@@ -1,7 +1,9 @@
|
|
1
1
|
import { access } from '@things-factory/utils'
|
2
2
|
import { TaskRegistry } from '../task-registry'
|
3
|
+
import { InputStep } from '../../service/step/step-type'
|
4
|
+
import { Context } from '../types'
|
3
5
|
|
4
|
-
async function SwitchSet(step, { logger, data }) {
|
6
|
+
async function SwitchSet(step: InputStep, { logger, data }: Context) {
|
5
7
|
var {
|
6
8
|
params: { accessor, cases }
|
7
9
|
} = step
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { TaskRegistry } from '../task-registry'
|
2
|
+
import { InputStep } from '../../service/step/step-type'
|
3
|
+
import { Context } from '../types'
|
2
4
|
|
3
|
-
async function Throw(step, { logger }) {
|
5
|
+
async function Throw(step: InputStep, { logger }: Context) {
|
4
6
|
var {
|
5
7
|
name,
|
6
8
|
params: { message }
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { TaskRegistry } from '../task-registry'
|
2
|
+
import { InputStep } from '../../service/step/step-type'
|
3
|
+
import { Context } from '../types'
|
2
4
|
|
3
|
-
async function Variables(step, { variables }) {
|
5
|
+
async function Variables(step: InputStep, { variables }: Context) {
|
4
6
|
return {
|
5
7
|
data: variables instanceof Array ? [...variables] : typeof variables == 'object' ? { ...variables } : variables
|
6
8
|
}
|
package/server/engine/types.ts
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
import { Connection, PropertySpec, ScenarioInstanceStatus, Step } from '../service'
|
2
|
+
import { Domain } from '@things-factory/shell'
|
3
|
+
import { User } from '@things-factory/auth-base'
|
2
4
|
|
3
5
|
export interface Connector {
|
4
6
|
ready(connections: Connection[]): Promise<any>
|
@@ -11,21 +13,95 @@ export interface Connector {
|
|
11
13
|
}
|
12
14
|
|
13
15
|
export type Context = {
|
14
|
-
|
15
|
-
|
16
|
+
/**
|
17
|
+
* Represents the domain context.
|
18
|
+
*/
|
19
|
+
domain: Domain
|
20
|
+
|
21
|
+
/**
|
22
|
+
* User information.
|
23
|
+
*/
|
24
|
+
user: User
|
25
|
+
|
26
|
+
/**
|
27
|
+
* Language code, for example 'en', 'ko'.
|
28
|
+
*/
|
16
29
|
lng: string
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Flag to indicate if the IP is unsafe, can be undefined.
|
33
|
+
*/
|
17
34
|
unsafeIP: boolean | undefined
|
35
|
+
|
36
|
+
/**
|
37
|
+
* List of prohibited privileges, can be undefined.
|
38
|
+
*/
|
18
39
|
prohibitedPrivileges: { category: string; privilege: string }[] | undefined
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Logger for logging purposes.
|
43
|
+
*/
|
19
44
|
logger: any
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Function to publish events or messages.
|
48
|
+
*/
|
20
49
|
publish: Function
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Function to load resources or data.
|
53
|
+
*/
|
21
54
|
load: Function
|
55
|
+
|
56
|
+
/**
|
57
|
+
* Current status of the scenario instance.
|
58
|
+
*/
|
22
59
|
state: ScenarioInstanceStatus
|
23
|
-
|
60
|
+
|
61
|
+
/**
|
62
|
+
* General data storage object.
|
63
|
+
*/
|
64
|
+
data: any
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Variables related to the context.
|
68
|
+
*/
|
24
69
|
variables: Object
|
25
|
-
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Local GraphQL client object.
|
73
|
+
*/
|
74
|
+
client: any /* graphql local client */
|
75
|
+
|
76
|
+
/**
|
77
|
+
* Root object, can be used for various purposes.
|
78
|
+
*/
|
26
79
|
root: Object
|
80
|
+
|
81
|
+
/**
|
82
|
+
* Array of function closures.
|
83
|
+
*/
|
27
84
|
closures: Function[]
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Function to check the state.
|
88
|
+
*/
|
28
89
|
checkState: Function
|
90
|
+
|
91
|
+
/**
|
92
|
+
* MQTT subscriber context object.
|
93
|
+
*/
|
94
|
+
__mqtt_subscriber?: any
|
95
|
+
|
96
|
+
/**
|
97
|
+
* socket listener context object.
|
98
|
+
*/
|
99
|
+
__socket_listener?: any
|
100
|
+
|
101
|
+
/**
|
102
|
+
* csv readline context object.
|
103
|
+
*/
|
104
|
+
__csv_resources?: any
|
29
105
|
}
|
30
106
|
|
31
107
|
export type TaskHandler = (
|
package/server/index.ts
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
import gql from 'graphql-tag'
|
2
2
|
|
3
3
|
import { restfulApiRouter as router } from '@things-factory/api'
|
4
|
-
import { ScenarioInstanceStatus } from '../../service/scenario-instance/scenario-instance-type'
|
5
4
|
|
6
5
|
const debug = require('debug')('things-factory:integration-base:restful:unstable:run-scenario')
|
7
6
|
|
@@ -12,7 +12,7 @@ router.post('/unstable/start-scenario/:scenarioName', async (context, next) => {
|
|
12
12
|
|
13
13
|
context.body = await client.mutate({
|
14
14
|
mutation: gql`
|
15
|
-
mutation($instanceName: String, $scenarioName: String!, $variables: Object) {
|
15
|
+
mutation ($instanceName: String, $scenarioName: String!, $variables: Object) {
|
16
16
|
startScenario(instanceName: $instanceName, scenarioName: $scenarioName, variables: $variables) {
|
17
17
|
instanceName
|
18
18
|
scenarioName
|
@@ -11,7 +11,7 @@ router.post('/unstable/stop-scenario/:instanceName', async (context, next) => {
|
|
11
11
|
|
12
12
|
context.body = await client.mutate({
|
13
13
|
mutation: gql`
|
14
|
-
mutation($instanceName: String!) {
|
14
|
+
mutation ($instanceName: String!) {
|
15
15
|
stopScenario(instanceName: $instanceName) {
|
16
16
|
instanceName
|
17
17
|
scenarioName
|
@@ -10,10 +10,7 @@ import { Connection, ConnectionPatch, ConnectionStatus, NewConnection } from './
|
|
10
10
|
export class ConnectionMutation {
|
11
11
|
@Directive('@transaction')
|
12
12
|
@Mutation(returns => Connection, { description: 'To create new connection' })
|
13
|
-
async createConnection(
|
14
|
-
@Arg('connection') connection: NewConnection,
|
15
|
-
@Ctx() context: ResolverContext
|
16
|
-
): Promise<Connection> {
|
13
|
+
async createConnection(@Arg('connection') connection: NewConnection, @Ctx() context: ResolverContext): Promise<Connection> {
|
17
14
|
const { domain, user, tx } = context.state
|
18
15
|
|
19
16
|
return await tx.getRepository(Connection).save({
|
@@ -26,11 +23,7 @@ export class ConnectionMutation {
|
|
26
23
|
|
27
24
|
@Directive('@transaction')
|
28
25
|
@Mutation(returns => Connection, { description: 'To modify connection information' })
|
29
|
-
async updateConnection(
|
30
|
-
@Arg('name') name: string,
|
31
|
-
@Arg('patch') patch: ConnectionPatch,
|
32
|
-
@Ctx() context: ResolverContext
|
33
|
-
): Promise<Connection> {
|
26
|
+
async updateConnection(@Arg('name') name: string, @Arg('patch') patch: ConnectionPatch, @Ctx() context: ResolverContext): Promise<Connection> {
|
34
27
|
const { domain, user, tx } = context.state
|
35
28
|
|
36
29
|
const repository = tx.getRepository(Connection)
|
@@ -47,10 +40,7 @@ export class ConnectionMutation {
|
|
47
40
|
|
48
41
|
@Directive('@transaction')
|
49
42
|
@Mutation(returns => [Connection], { description: "To modify multiple connections' information" })
|
50
|
-
async updateMultipleConnection(
|
51
|
-
@Arg('patches', type => [ConnectionPatch]) patches: ConnectionPatch[],
|
52
|
-
@Ctx() context: ResolverContext
|
53
|
-
): Promise<Connection[]> {
|
43
|
+
async updateMultipleConnection(@Arg('patches', type => [ConnectionPatch]) patches: ConnectionPatch[], @Ctx() context: ResolverContext): Promise<Connection[]> {
|
54
44
|
const { domain, user, tx } = context.state
|
55
45
|
|
56
46
|
let results = []
|
@@ -102,10 +92,7 @@ export class ConnectionMutation {
|
|
102
92
|
|
103
93
|
@Directive('@transaction')
|
104
94
|
@Mutation(returns => Boolean, { description: 'To delete multiple connections' })
|
105
|
-
async deleteConnections(
|
106
|
-
@Arg('names', type => [String]) names: string[],
|
107
|
-
@Ctx() context: ResolverContext
|
108
|
-
): Promise<boolean> {
|
95
|
+
async deleteConnections(@Arg('names', type => [String]) names: string[], @Ctx() context: ResolverContext): Promise<boolean> {
|
109
96
|
const { domain, tx } = context.state
|
110
97
|
|
111
98
|
await tx.getRepository(Connection).delete({
|
@@ -122,7 +109,7 @@ export class ConnectionMutation {
|
|
122
109
|
var repository = getRepository(Connection)
|
123
110
|
var connection = await repository.findOne({
|
124
111
|
where: { domain: { id: domain.id }, name },
|
125
|
-
relations: ['domain']
|
112
|
+
relations: ['domain', 'edge']
|
126
113
|
})
|
127
114
|
|
128
115
|
await connection.connect()
|
@@ -130,9 +117,7 @@ export class ConnectionMutation {
|
|
130
117
|
|
131
118
|
return {
|
132
119
|
...connection,
|
133
|
-
state: ConnectionManager.getConnectionInstance(connection)
|
134
|
-
? ConnectionStatus.CONNECTED
|
135
|
-
: ConnectionStatus.DISCONNECTED
|
120
|
+
state: ConnectionManager.getConnectionInstance(connection) ? ConnectionStatus.CONNECTED : ConnectionStatus.DISCONNECTED
|
136
121
|
} as Connection
|
137
122
|
}
|
138
123
|
|
@@ -143,7 +128,7 @@ export class ConnectionMutation {
|
|
143
128
|
var repository = getRepository(Connection)
|
144
129
|
var connection = await repository.findOne({
|
145
130
|
where: { domain: { id: domain.id }, name },
|
146
|
-
relations: ['domain']
|
131
|
+
relations: ['domain', 'edge']
|
147
132
|
})
|
148
133
|
|
149
134
|
await connection.disconnect()
|
@@ -151,19 +136,14 @@ export class ConnectionMutation {
|
|
151
136
|
|
152
137
|
return {
|
153
138
|
...connection,
|
154
|
-
state: ConnectionManager.getConnectionInstance(connection)
|
155
|
-
? ConnectionStatus.CONNECTED
|
156
|
-
: ConnectionStatus.DISCONNECTED
|
139
|
+
state: ConnectionManager.getConnectionInstance(connection) ? ConnectionStatus.CONNECTED : ConnectionStatus.DISCONNECTED
|
157
140
|
}
|
158
141
|
}
|
159
142
|
|
160
143
|
@Directive('@transaction')
|
161
144
|
// @Directive('@privilege(category: "connection", privilege: "mutation", domainOwnerGranted: true)')
|
162
145
|
@Mutation(returns => Boolean, { description: 'To import multiple connections' })
|
163
|
-
async importConnections(
|
164
|
-
@Arg('connections', type => [ConnectionPatch]) connections: Connection[],
|
165
|
-
@Ctx() context: ResolverContext
|
166
|
-
): Promise<boolean> {
|
146
|
+
async importConnections(@Arg('connections', type => [ConnectionPatch]) connections: Connection[], @Ctx() context: ResolverContext): Promise<boolean> {
|
167
147
|
const { tx, domain, user } = context.state
|
168
148
|
|
169
149
|
const repository = tx.getRepository(Connection)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
2
2
|
|
3
|
-
import { User } from '@things-factory/auth-base'
|
3
|
+
import { Appliance, User } from '@things-factory/auth-base'
|
4
4
|
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
|
5
5
|
|
6
6
|
import { ConnectionManager } from '../../engine/connection-manager'
|
@@ -19,9 +19,7 @@ export class ConnectionQuery {
|
|
19
19
|
|
20
20
|
return {
|
21
21
|
...connection,
|
22
|
-
state: ConnectionManager.getConnectionInstance(connection)
|
23
|
-
? ConnectionStatus.CONNECTED
|
24
|
-
: ConnectionStatus.DISCONNECTED
|
22
|
+
state: ConnectionManager.getConnectionInstance(connection) ? ConnectionStatus.CONNECTED : ConnectionStatus.DISCONNECTED
|
25
23
|
} as Connection
|
26
24
|
}
|
27
25
|
|
@@ -40,9 +38,7 @@ export class ConnectionQuery {
|
|
40
38
|
const [items, total] = await queryBuilder.leftJoinAndSelect('connection.domain', 'domain').getManyAndCount()
|
41
39
|
|
42
40
|
items.forEach(connection => {
|
43
|
-
connection['state'] = ConnectionManager.getConnectionInstance(connection)
|
44
|
-
? ConnectionStatus.CONNECTED
|
45
|
-
: ConnectionStatus.DISCONNECTED
|
41
|
+
connection['state'] = ConnectionManager.getConnectionInstance(connection) ? ConnectionStatus.CONNECTED : ConnectionStatus.DISCONNECTED
|
46
42
|
})
|
47
43
|
|
48
44
|
return { items, total }
|
@@ -52,26 +48,31 @@ export class ConnectionQuery {
|
|
52
48
|
fetchConnectionState(@Arg('name') name: string, @Ctx() context: ResolverContext): ConnectionState {
|
53
49
|
const { domain } = context.state
|
54
50
|
|
55
|
-
|
51
|
+
const connection = ConnectionManager.getConnectionInstanceEntityByName(domain, name)
|
56
52
|
|
57
53
|
return {
|
58
|
-
|
54
|
+
...connection,
|
59
55
|
state: connection ? ConnectionStatus.CONNECTED : ConnectionStatus.DISCONNECTED
|
60
56
|
}
|
61
57
|
}
|
62
58
|
|
59
|
+
@FieldResolver(type => Domain)
|
60
|
+
async edge(@Root() connection: Connection) {
|
61
|
+
return connection.edgeId && (await getRepository(Appliance).findOneBy({ id: connection.edgeId }))
|
62
|
+
}
|
63
|
+
|
63
64
|
@FieldResolver(type => Domain)
|
64
65
|
async domain(@Root() connection: Connection) {
|
65
|
-
return connection.domain || (await getRepository(Domain).findOneBy({ id: connection.domainId }))
|
66
|
+
return connection.domain || (connection.domainId && (await getRepository(Domain).findOneBy({ id: connection.domainId })))
|
66
67
|
}
|
67
68
|
|
68
69
|
@FieldResolver(type => User)
|
69
70
|
async updater(@Root() connection: Connection): Promise<User> {
|
70
|
-
return await getRepository(User).findOneBy({ id: connection.updaterId })
|
71
|
+
return connection.updaterId && (await getRepository(User).findOneBy({ id: connection.updaterId }))
|
71
72
|
}
|
72
73
|
|
73
74
|
@FieldResolver(type => User)
|
74
75
|
async creator(@Root() connection: Connection): Promise<User> {
|
75
|
-
return await getRepository(User).findOneBy({ id: connection.creatorId })
|
76
|
+
return connection.creatorId && (await getRepository(User).findOneBy({ id: connection.creatorId }))
|
76
77
|
}
|
77
78
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { filter, pipe } from 'graphql-yoga'
|
2
2
|
import { Arg, Resolver, Root, Subscription } from 'type-graphql'
|
3
3
|
|
4
4
|
import { getRepository, Log, pubsub } from '@things-factory/shell'
|
@@ -11,7 +11,7 @@ const debug = require('debug')('things-factory:integration:connection-subscripti
|
|
11
11
|
@Resolver(Connection)
|
12
12
|
export class ConnectionSubscription {
|
13
13
|
@Subscription({
|
14
|
-
subscribe: (
|
14
|
+
subscribe: ({ args, context, info }) => {
|
15
15
|
const { domain, user } = context.state
|
16
16
|
const { name } = args
|
17
17
|
const subdomain = domain?.subdomain
|
@@ -26,49 +26,43 @@ export class ConnectionSubscription {
|
|
26
26
|
}
|
27
27
|
|
28
28
|
process.nextTick(async () => {
|
29
|
-
var where = { domain }
|
29
|
+
var where = { domain: { id: domain.id } }
|
30
30
|
if (name) {
|
31
31
|
where['name'] = name
|
32
32
|
}
|
33
33
|
|
34
34
|
var connections = await getRepository(Connection).find({
|
35
35
|
where,
|
36
|
-
relations: ['domain']
|
36
|
+
relations: ['domain', 'edge']
|
37
37
|
})
|
38
38
|
|
39
39
|
connections.forEach(connection => {
|
40
40
|
pubsub.publish('connection-state', {
|
41
41
|
connectionState: {
|
42
42
|
...connection,
|
43
|
-
state: ConnectionManager.getConnectionInstance(connection)
|
44
|
-
? ConnectionStatus.CONNECTED
|
45
|
-
: ConnectionStatus.DISCONNECTED,
|
43
|
+
state: ConnectionManager.getConnectionInstance(connection) ? ConnectionStatus.CONNECTED : ConnectionStatus.DISCONNECTED,
|
46
44
|
timestamp: new Date()
|
47
45
|
}
|
48
46
|
})
|
49
47
|
})
|
50
48
|
})
|
51
49
|
|
52
|
-
return
|
53
|
-
|
54
|
-
(payload
|
50
|
+
return pipe(
|
51
|
+
pubsub.subscribe('connection-state'),
|
52
|
+
filter(async (payload: { connectionState: ConnectionState }) => {
|
55
53
|
const { domain: pdomain, name: pname } = payload.connectionState
|
56
|
-
const { name } = variables
|
57
54
|
|
58
55
|
return (!name || name === pname) && subdomain === pdomain?.subdomain
|
59
|
-
}
|
60
|
-
)
|
56
|
+
})
|
57
|
+
)
|
61
58
|
}
|
62
59
|
})
|
63
|
-
connectionState(
|
64
|
-
@Root() payload: { connectionState: ConnectionState },
|
65
|
-
@Arg('name', { nullable: true }) name: string
|
66
|
-
): ConnectionState {
|
60
|
+
connectionState(@Root() payload: { connectionState: ConnectionState }, @Arg('name', { nullable: true }) name: string): ConnectionState {
|
67
61
|
return payload.connectionState
|
68
62
|
}
|
69
63
|
|
70
64
|
@Subscription({
|
71
|
-
subscribe: (
|
65
|
+
subscribe: ({ args, context, info }) => {
|
72
66
|
const { domain, user } = context.state
|
73
67
|
const { level } = args
|
74
68
|
|
@@ -84,11 +78,11 @@ export class ConnectionSubscription {
|
|
84
78
|
throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)
|
85
79
|
}
|
86
80
|
|
87
|
-
return
|
88
|
-
|
89
|
-
(payload
|
81
|
+
return pipe(
|
82
|
+
pubsub.subscribe('connection-log'),
|
83
|
+
filter(async (payload: { log: Log }) => {
|
90
84
|
// TODO support domain filtering
|
91
|
-
const { /* source, */ level: plevel } = payload.
|
85
|
+
const { /* source, */ level: plevel } = payload.log
|
92
86
|
// const { domain: pdomain } = source
|
93
87
|
|
94
88
|
// if (subdomain !== pdomain?.subdomain) {
|
@@ -100,8 +94,8 @@ export class ConnectionSubscription {
|
|
100
94
|
}
|
101
95
|
|
102
96
|
return true
|
103
|
-
}
|
104
|
-
)
|
97
|
+
})
|
98
|
+
)
|
105
99
|
}
|
106
100
|
})
|
107
101
|
connectionLog(@Root() payload: { log: Log }, @Arg('level', { nullable: true }) level: string): Log {
|