@things-factory/integration-base 7.0.1-rc.1 → 7.0.1-rc.11
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/engine/connection-manager.js +17 -11
- 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/graphql-connector.js +2 -2
- package/dist-server/engine/connector/graphql-connector.js.map +1 -1
- package/dist-server/engine/connector/mqtt-connector.js +1 -1
- package/dist-server/engine/connector/mqtt-connector.js.map +1 -1
- package/dist-server/engine/connector/mssql-connector.js +1 -1
- package/dist-server/engine/connector/mssql-connector.js.map +1 -1
- package/dist-server/engine/connector/operato-connector.js +1 -1
- package/dist-server/engine/connector/operato-connector.js.map +1 -1
- package/dist-server/engine/connector/oracle-connector.js +1 -1
- package/dist-server/engine/connector/oracle-connector.js.map +1 -1
- package/dist-server/engine/connector/postgresql-connector.js +2 -2
- package/dist-server/engine/connector/postgresql-connector.js.map +1 -1
- 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 +2 -2
- package/dist-server/engine/connector/sqlite-connector.js.map +1 -1
- package/dist-server/engine/task/database-query.d.ts +1 -1
- package/dist-server/engine/task/database-query.js +16 -11
- package/dist-server/engine/task/database-query.js.map +1 -1
- package/dist-server/engine/task/graphql-mutate.d.ts +1 -1
- package/dist-server/engine/task/graphql-mutate.js +16 -11
- package/dist-server/engine/task/graphql-mutate.js.map +1 -1
- package/dist-server/engine/task/graphql-query.d.ts +1 -1
- package/dist-server/engine/task/graphql-query.js +16 -11
- package/dist-server/engine/task/graphql-query.js.map +1 -1
- package/dist-server/engine/task/http-get.d.ts +1 -1
- package/dist-server/engine/task/http-get.js +28 -12
- package/dist-server/engine/task/http-get.js.map +1 -1
- package/dist-server/engine/task/http-post.d.ts +1 -1
- package/dist-server/engine/task/http-post.js +22 -11
- package/dist-server/engine/task/http-post.js.map +1 -1
- package/dist-server/engine/task/local-graphql-mutate.d.ts +1 -1
- package/dist-server/engine/task/local-graphql-mutate.js +16 -10
- package/dist-server/engine/task/local-graphql-mutate.js.map +1 -1
- package/dist-server/engine/task/local-graphql-query.d.ts +1 -1
- package/dist-server/engine/task/local-graphql-query.js +16 -10
- package/dist-server/engine/task/local-graphql-query.js.map +1 -1
- package/dist-server/engine/task/log.d.ts +1 -1
- package/dist-server/engine/task/log.js +15 -11
- package/dist-server/engine/task/log.js.map +1 -1
- package/dist-server/engine/task/oracle-procedure.d.ts +1 -1
- package/dist-server/engine/task/oracle-procedure.js +19 -13
- package/dist-server/engine/task/oracle-procedure.js.map +1 -1
- package/dist-server/engine/task/script.d.ts +1 -1
- package/dist-server/engine/task/script.js +30 -18
- package/dist-server/engine/task/script.js.map +1 -1
- package/dist-server/index.js +1 -2
- package/dist-server/index.js.map +1 -1
- package/dist-server/service/payload-log/payload-log-mutation.js +1 -1
- package/dist-server/service/payload-log/payload-log-mutation.js.map +1 -1
- package/dist-server/service/scenario/scenario.d.ts +11 -2
- package/dist-server/service/scenario/scenario.js +8 -4
- package/dist-server/service/scenario/scenario.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-type.js +6 -6
- package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/server/engine/connection-manager.ts +17 -10
- package/server/engine/connector/echo-back-connector.ts +2 -1
- package/server/engine/connector/graphql-connector.ts +8 -3
- package/server/engine/connector/mqtt-connector.ts +2 -1
- package/server/engine/connector/mssql-connector.ts +1 -1
- package/server/engine/connector/operato-connector.ts +10 -4
- package/server/engine/connector/oracle-connector.ts +5 -8
- package/server/engine/connector/postgresql-connector.ts +3 -2
- package/server/engine/connector/socket-server.ts +1 -1
- package/server/engine/connector/sqlite-connector.ts +2 -5
- package/server/engine/task/database-query.ts +16 -11
- package/server/engine/task/graphql-mutate.ts +16 -12
- package/server/engine/task/graphql-query.ts +15 -12
- package/server/engine/task/http-get.ts +26 -12
- package/server/engine/task/http-post.ts +22 -11
- package/server/engine/task/local-graphql-mutate.ts +16 -10
- package/server/engine/task/local-graphql-query.ts +16 -10
- package/server/engine/task/log.ts +14 -11
- package/server/engine/task/oracle-procedure.ts +24 -18
- package/server/engine/task/script.ts +28 -18
- package/server/index.ts +1 -2
- package/server/service/payload-log/payload-log-mutation.ts +1 -1
- package/server/service/scenario/scenario.ts +19 -4
- package/server/service/scenario-instance/scenario-instance-type.ts +6 -6
@@ -1,5 +1,5 @@
|
|
1
1
|
import { access, hasTemplateExpression } from '@things-factory/utils'
|
2
|
-
import
|
2
|
+
import 'ses'
|
3
3
|
import { TaskRegistry } from '../task-registry'
|
4
4
|
import { InputStep } from '../../service/step/step-type'
|
5
5
|
import { Context } from '../types'
|
@@ -10,23 +10,26 @@ async function Log(step: InputStep, { logger, data, variables, domain, user, lng
|
|
10
10
|
} = step
|
11
11
|
|
12
12
|
if (hasTemplateExpression(message)) {
|
13
|
-
const
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
}
|
13
|
+
const compartment = new Compartment({
|
14
|
+
domain,
|
15
|
+
user,
|
16
|
+
lng,
|
17
|
+
data,
|
18
|
+
variables,
|
19
|
+
console
|
21
20
|
})
|
22
21
|
|
23
|
-
|
22
|
+
try {
|
23
|
+
message = compartment.evaluate('`' + message + '`')
|
24
|
+
} catch (err) {
|
25
|
+
throw new Error(`Failed to evaluate message: ${err.message}`)
|
26
|
+
}
|
24
27
|
}
|
25
28
|
|
26
29
|
accessor = access(accessor, data)
|
27
30
|
|
28
31
|
if (accessor) {
|
29
|
-
if (accessor !== 'string') {
|
32
|
+
if (typeof accessor !== 'string') {
|
30
33
|
accessor = JSON.stringify(accessor, null, 2)
|
31
34
|
}
|
32
35
|
message += ': ' + accessor
|
@@ -1,15 +1,15 @@
|
|
1
|
-
import { VM } from 'vm2'
|
2
1
|
import { logger } from '@things-factory/env'
|
3
2
|
import { access } from '@things-factory/utils'
|
4
3
|
import { ConnectionManager } from '../connection-manager'
|
5
4
|
import { TaskRegistry } from '../task-registry'
|
6
5
|
import { InputStep } from '../../service/step/step-type'
|
7
6
|
import { Context } from '../types'
|
7
|
+
import 'ses'
|
8
8
|
|
9
9
|
try {
|
10
10
|
var oracledb = require('oracledb')
|
11
11
|
} catch (err) {
|
12
|
-
logger.error('oracledb module loading failed')
|
12
|
+
logger.error('oracledb module loading failed', err)
|
13
13
|
}
|
14
14
|
|
15
15
|
type ProcedureParameterType = {
|
@@ -51,21 +51,27 @@ async function OracleProcedure(step: InputStep, context: Context) {
|
|
51
51
|
|
52
52
|
var dbconnection = ConnectionManager.getConnectionInstanceByName(domain, connectionName)
|
53
53
|
|
54
|
-
const vm = new VM({
|
55
|
-
sandbox: {
|
56
|
-
domain,
|
57
|
-
user,
|
58
|
-
lng,
|
59
|
-
data,
|
60
|
-
variables
|
61
|
-
}
|
62
|
-
})
|
63
|
-
|
64
54
|
if (!code) {
|
65
55
|
throw 'procedure code not defined'
|
66
56
|
}
|
67
57
|
|
68
|
-
|
58
|
+
const compartment = new Compartment({
|
59
|
+
domain,
|
60
|
+
user,
|
61
|
+
lng,
|
62
|
+
data,
|
63
|
+
variables,
|
64
|
+
console
|
65
|
+
})
|
66
|
+
|
67
|
+
let evalCode
|
68
|
+
try {
|
69
|
+
evalCode = compartment.evaluate('`' + code + '`')
|
70
|
+
} catch (err) {
|
71
|
+
throw new Error(`Failed to evaluate code: ${err.message}`)
|
72
|
+
}
|
73
|
+
|
74
|
+
code = evalCode
|
69
75
|
|
70
76
|
const procedureParameters =
|
71
77
|
parameters &&
|
@@ -79,13 +85,13 @@ async function OracleProcedure(step: InputStep, context: Context) {
|
|
79
85
|
|
80
86
|
if (calculated !== undefined) {
|
81
87
|
sum[name].val =
|
82
|
-
type
|
88
|
+
type === 'Date'
|
83
89
|
? new Date(calculated)
|
84
90
|
: type == 'Number'
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
91
|
+
? Number(calculated)
|
92
|
+
: type == 'String'
|
93
|
+
? String(calculated)
|
94
|
+
: calculated
|
89
95
|
}
|
90
96
|
|
91
97
|
if (maxSize) {
|
@@ -1,34 +1,44 @@
|
|
1
1
|
import { TaskRegistry } from '../task-registry'
|
2
|
-
import { NodeVM } from 'vm2'
|
3
|
-
|
4
2
|
import { InputStep } from '../../service/step/step-type'
|
5
3
|
import { Context } from '../types'
|
4
|
+
import 'ses'
|
6
5
|
|
7
6
|
async function Script(step: InputStep, context: Context) {
|
8
|
-
|
7
|
+
const {
|
9
8
|
params: { script }
|
10
9
|
} = step
|
11
10
|
|
12
11
|
const { domain, user, data, variables, lng, logger } = context
|
13
12
|
|
14
|
-
const
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
13
|
+
const compartment = new Compartment({
|
14
|
+
domain,
|
15
|
+
user,
|
16
|
+
data,
|
17
|
+
variables,
|
18
|
+
logger,
|
19
|
+
lng,
|
20
|
+
console,
|
21
|
+
Math,
|
22
|
+
JSON,
|
23
|
+
Date,
|
24
|
+
setTimeout,
|
25
|
+
setInterval,
|
26
|
+
clearTimeout,
|
27
|
+
clearInterval
|
26
28
|
})
|
27
29
|
|
28
|
-
|
30
|
+
const scriptSource = `
|
31
|
+
(async () => {
|
32
|
+
${script}
|
33
|
+
})();
|
34
|
+
`
|
29
35
|
|
30
|
-
|
31
|
-
|
36
|
+
try {
|
37
|
+
return {
|
38
|
+
data: await compartment.evaluate(scriptSource)
|
39
|
+
}
|
40
|
+
} catch (err) {
|
41
|
+
throw new Error(`Script execution failed: ${err.message}`)
|
32
42
|
}
|
33
43
|
}
|
34
44
|
|
package/server/index.ts
CHANGED
@@ -15,7 +15,6 @@ process.on('bootstrap-module-start' as any, async ({ app, config, client }: any)
|
|
15
15
|
|
16
16
|
console.log('Scenario Engine has just started.')
|
17
17
|
} catch (ex) {
|
18
|
-
ConnectionManager.logger.error(ex)
|
19
|
-
console.log('Just has failed to start Scenario Engine.')
|
18
|
+
ConnectionManager.logger.error('Just has failed to start Scenario Engine.', ex)
|
20
19
|
}
|
21
20
|
})
|
@@ -98,15 +98,30 @@ export class Scenario {
|
|
98
98
|
@RelationId((scenario: Scenario) => scenario.updater)
|
99
99
|
updaterId?: string
|
100
100
|
|
101
|
-
async start(
|
101
|
+
async start(options?: {
|
102
|
+
instanceName?: string;
|
103
|
+
domain?: Domain;
|
104
|
+
user?: User;
|
105
|
+
variables?: any;
|
106
|
+
}) {
|
102
107
|
try {
|
103
|
-
await ScenarioEngine.load(instanceName || this.name,
|
108
|
+
await ScenarioEngine.load(options?.instanceName || this.name,
|
109
|
+
this,
|
110
|
+
{
|
111
|
+
domain: options?.domain || this.domain,
|
112
|
+
user: options?.user || this.updater,
|
113
|
+
variables: options?.variables
|
114
|
+
})
|
104
115
|
} catch (ex) {}
|
105
116
|
}
|
106
117
|
|
107
|
-
async stop(
|
118
|
+
async stop(options?: {
|
119
|
+
instanceName?: string;
|
120
|
+
domain?: Domain,
|
121
|
+
user?: User
|
122
|
+
}) {
|
108
123
|
try {
|
109
|
-
await ScenarioEngine.unload(this.domain, instanceName || this.name)
|
124
|
+
await ScenarioEngine.unload(options?.domain || this.domain, options?.instanceName || this.name)
|
110
125
|
} finally {
|
111
126
|
}
|
112
127
|
}
|
@@ -18,10 +18,10 @@ import { Step } from '../step/step-type'
|
|
18
18
|
import { handler as edgeHandler } from '../../engine/edge-client'
|
19
19
|
|
20
20
|
const debug = require('debug')('things-factory:integration-base:scenario-instance')
|
21
|
-
const { combine,
|
21
|
+
const { combine, errors, splat, printf } = format
|
22
22
|
|
23
|
-
const LOGFORMAT = printf(({ level, message, timestamp }) => {
|
24
|
-
return `${timestamp} ${level}: ${message}`
|
23
|
+
const LOGFORMAT = printf(({ level, message, timestamp, stack }) => {
|
24
|
+
return `${timestamp} ${level}: ${stack || message}`
|
25
25
|
})
|
26
26
|
|
27
27
|
const SYSTEM_TZ = Intl.DateTimeFormat().resolvedOptions().timeZone
|
@@ -228,7 +228,7 @@ export class ScenarioInstance {
|
|
228
228
|
logger:
|
229
229
|
context?.logger ||
|
230
230
|
createLogger({
|
231
|
-
format: combine(systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),
|
231
|
+
format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),
|
232
232
|
transports: [
|
233
233
|
new (transports as any).DailyRotateFile({
|
234
234
|
filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,
|
@@ -320,7 +320,7 @@ export class ScenarioInstance {
|
|
320
320
|
const message = ex.stack ? ex.stack : ex
|
321
321
|
const { scenarioName, domain } = this
|
322
322
|
|
323
|
-
this.context.logger.error(ex
|
323
|
+
this.context.logger.error(ex)
|
324
324
|
|
325
325
|
debug('failed to run ', `[ Domain: ${domain.name}, Scenario: ${scenarioName} ]\n`, ex)
|
326
326
|
this.setState(
|
@@ -515,7 +515,7 @@ export class ScenarioInstance {
|
|
515
515
|
try {
|
516
516
|
step.params = JSON.parse(step.params)
|
517
517
|
} catch (ex) {
|
518
|
-
this.context.logger.error(`params(${step.params}) parsing error. params must be a JSON
|
518
|
+
this.context.logger.error(`params(${step.params}) parsing error. params must be a JSON.`, ex)
|
519
519
|
}
|
520
520
|
step.params = step.params || {}
|
521
521
|
|