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

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 (136) hide show
  1. package/package.json +10 -10
  2. package/server/controllers/index.ts +0 -2
  3. package/server/controllers/publish-data.ts +0 -29
  4. package/server/controllers/scenario-controller.ts +0 -156
  5. package/server/engine/analyzer/analyze-integration.ts +0 -115
  6. package/server/engine/connection-manager.ts +0 -239
  7. package/server/engine/connector/echo-back-connector.ts +0 -51
  8. package/server/engine/connector/echo-back-server.ts +0 -72
  9. package/server/engine/connector/graphql-connector.ts +0 -126
  10. package/server/engine/connector/headless-connector.ts +0 -341
  11. package/server/engine/connector/http-connector.ts +0 -65
  12. package/server/engine/connector/index.ts +0 -13
  13. package/server/engine/connector/mqtt-connector.ts +0 -78
  14. package/server/engine/connector/mssql-connector.ts +0 -152
  15. package/server/engine/connector/mysql-connector.ts +0 -94
  16. package/server/engine/connector/operato-connector.ts +0 -264
  17. package/server/engine/connector/oracle-connector.ts +0 -218
  18. package/server/engine/connector/postgresql-connector.ts +0 -152
  19. package/server/engine/connector/proxy-connector.ts +0 -53
  20. package/server/engine/connector/socket-server.ts +0 -86
  21. package/server/engine/connector/sqlite-connector.ts +0 -69
  22. package/server/engine/edge-client.ts +0 -45
  23. package/server/engine/index.ts +0 -11
  24. package/server/engine/pending-queue.ts +0 -97
  25. package/server/engine/resource-pool/headless-pool.ts +0 -136
  26. package/server/engine/resource-pool/index.ts +0 -1
  27. package/server/engine/scenario-engine.ts +0 -106
  28. package/server/engine/task/book-up-scenario.ts +0 -73
  29. package/server/engine/task/csv-readline.ts +0 -127
  30. package/server/engine/task/data-accessor.ts +0 -36
  31. package/server/engine/task/data-mapper.ts +0 -47
  32. package/server/engine/task/database-query.ts +0 -56
  33. package/server/engine/task/echo-receive.ts +0 -21
  34. package/server/engine/task/echo-send.ts +0 -32
  35. package/server/engine/task/empty-check.ts +0 -38
  36. package/server/engine/task/end.ts +0 -18
  37. package/server/engine/task/floating-point.ts +0 -71
  38. package/server/engine/task/goto.ts +0 -27
  39. package/server/engine/task/graphql-mutate.ts +0 -79
  40. package/server/engine/task/graphql-query.ts +0 -78
  41. package/server/engine/task/headless-post.ts +0 -128
  42. package/server/engine/task/headless-scrap.ts +0 -83
  43. package/server/engine/task/http-get.ts +0 -117
  44. package/server/engine/task/http-post.ts +0 -148
  45. package/server/engine/task/index.ts +0 -45
  46. package/server/engine/task/jsonata.ts +0 -45
  47. package/server/engine/task/local-graphql-mutate.ts +0 -100
  48. package/server/engine/task/local-graphql-query.ts +0 -100
  49. package/server/engine/task/log.ts +0 -78
  50. package/server/engine/task/mqtt-publish.ts +0 -45
  51. package/server/engine/task/mqtt-subscribe.ts +0 -139
  52. package/server/engine/task/mssql-procedure.ts +0 -128
  53. package/server/engine/task/oracle-procedure.ts +0 -124
  54. package/server/engine/task/pick-pending-scenario.ts +0 -80
  55. package/server/engine/task/publish.ts +0 -40
  56. package/server/engine/task/random.ts +0 -53
  57. package/server/engine/task/reset-pending-queue.ts +0 -17
  58. package/server/engine/task/script.ts +0 -63
  59. package/server/engine/task/set-domain.ts +0 -37
  60. package/server/engine/task/sleep.ts +0 -34
  61. package/server/engine/task/socket-listener.ts +0 -96
  62. package/server/engine/task/state-group-read.ts +0 -69
  63. package/server/engine/task/state-read.ts +0 -56
  64. package/server/engine/task/state-write.ts +0 -65
  65. package/server/engine/task/stop-scenario.ts +0 -44
  66. package/server/engine/task/sub-scenario.ts +0 -57
  67. package/server/engine/task/switch-goto.ts +0 -43
  68. package/server/engine/task/switch-range-goto.ts +0 -53
  69. package/server/engine/task/switch-range-scenario.ts +0 -79
  70. package/server/engine/task/switch-range-set.ts +0 -48
  71. package/server/engine/task/switch-scenario.ts +0 -67
  72. package/server/engine/task/switch-set.ts +0 -37
  73. package/server/engine/task/throw.ts +0 -27
  74. package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
  75. package/server/engine/task/utils/substitute.ts +0 -44
  76. package/server/engine/task/variables.ts +0 -17
  77. package/server/engine/task-registry.ts +0 -23
  78. package/server/engine/types.ts +0 -114
  79. package/server/index.ts +0 -20
  80. package/server/migrations/index.ts +0 -9
  81. package/server/restful/index.ts +0 -1
  82. package/server/restful/unstable/index.ts +0 -7
  83. package/server/restful/unstable/run-scenario.ts +0 -51
  84. package/server/restful/unstable/scenario-instance.ts +0 -52
  85. package/server/restful/unstable/scenario-instances.ts +0 -80
  86. package/server/restful/unstable/scenario.ts +0 -41
  87. package/server/restful/unstable/scenarios.ts +0 -69
  88. package/server/restful/unstable/start-scenario.ts +0 -33
  89. package/server/restful/unstable/stop-scenario.ts +0 -30
  90. package/server/routers/scenario-schedule-callback-router.ts +0 -69
  91. package/server/routers/scenario-view-router.ts +0 -46
  92. package/server/routes.ts +0 -30
  93. package/server/service/analysis/analysis-query.ts +0 -13
  94. package/server/service/analysis/index.ts +0 -3
  95. package/server/service/connection/connection-mutation.ts +0 -190
  96. package/server/service/connection/connection-query.ts +0 -87
  97. package/server/service/connection/connection-subscription.ts +0 -104
  98. package/server/service/connection/connection-type.ts +0 -288
  99. package/server/service/connection/index.ts +0 -7
  100. package/server/service/connector/connector-query.ts +0 -62
  101. package/server/service/connector/connector-type.ts +0 -29
  102. package/server/service/connector/index.ts +0 -4
  103. package/server/service/index.ts +0 -52
  104. package/server/service/payload-log/index.ts +0 -7
  105. package/server/service/payload-log/payload-log-mutation.ts +0 -151
  106. package/server/service/payload-log/payload-log-query.ts +0 -49
  107. package/server/service/payload-log/payload-log-type.ts +0 -36
  108. package/server/service/payload-log/payload-log.ts +0 -100
  109. package/server/service/property-spec.ts +0 -24
  110. package/server/service/scenario/index.ts +0 -6
  111. package/server/service/scenario/scenario-mutation.ts +0 -396
  112. package/server/service/scenario/scenario-query.ts +0 -109
  113. package/server/service/scenario/scenario-type.ts +0 -78
  114. package/server/service/scenario/scenario.ts +0 -124
  115. package/server/service/scenario-flow/scenario-flow.ts +0 -17
  116. package/server/service/scenario-instance/index.ts +0 -6
  117. package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
  118. package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
  119. package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
  120. package/server/service/scenario-instance/scenario-instance-type.ts +0 -563
  121. package/server/service/scenario-queue/index.ts +0 -4
  122. package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
  123. package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
  124. package/server/service/state-register/data-resolver.ts +0 -56
  125. package/server/service/state-register/index.ts +0 -8
  126. package/server/service/state-register/state-register-mutation.ts +0 -166
  127. package/server/service/state-register/state-register-query.ts +0 -80
  128. package/server/service/state-register/state-register-type.ts +0 -80
  129. package/server/service/state-register/state-register.ts +0 -113
  130. package/server/service/step/index.ts +0 -6
  131. package/server/service/step/step-mutation.ts +0 -52
  132. package/server/service/step/step-query.ts +0 -55
  133. package/server/service/step/step-type.ts +0 -215
  134. package/server/service/task-type/index.ts +0 -4
  135. package/server/service/task-type/task-type-query.ts +0 -95
  136. package/server/service/task-type/task-type-type.ts +0 -29
@@ -1,218 +0,0 @@
1
- import { logger } from '@things-factory/env'
2
-
3
- import { ConnectionManager } from '../connection-manager'
4
- import { Connector } from '../types'
5
- import { InputConnection } from '../../service/connection/connection-type'
6
-
7
- try {
8
- var oracledb = require('oracledb')
9
- } catch (err) {
10
- logger.error('oracledb module loading failed', err)
11
- }
12
-
13
- export class OracleConnector implements Connector {
14
- async ready(connectionConfigs: InputConnection[]) {
15
- await Promise.all(connectionConfigs.map(this.connect))
16
-
17
- ConnectionManager.logger.info('oracle-connector connections are ready')
18
- }
19
-
20
- async recreatePool(connection: InputConnection) {
21
- const {
22
- name,
23
- endpoint,
24
- params: { user, password, database, poolMin, poolMax, poolIncrement },
25
- domain
26
- } = connection
27
-
28
- if (!oracledb) {
29
- throw new Error('oracledb module loading failed')
30
- }
31
-
32
- const poolAlias = `${domain.name}-${name}`
33
- await oracledb.getPool(poolAlias).close(10)
34
- await oracledb.createPool({
35
- user,
36
- password,
37
- // when oracle not using default port must add connection string with port like localhost:port
38
- connectString: `${endpoint.trim()}/${database}`,
39
- poolMin,
40
- poolMax,
41
- poolIncrement,
42
- poolAlias
43
- })
44
-
45
- ConnectionManager.logger.info(`Oracle Database(${connection.name}:${database}) at ${endpoint} recreated.`)
46
- }
47
-
48
- async connect(connection: InputConnection) {
49
- const {
50
- name,
51
- endpoint,
52
- params: { user, password, database, poolMin, poolMax, poolIncrement },
53
- domain
54
- } = connection
55
-
56
- if (!oracledb) {
57
- throw new Error('oracledb module loading failed')
58
- }
59
-
60
- const poolAlias = `${domain.name}-${name}`
61
-
62
- var enableStatistics = true
63
- const pool = await oracledb.createPool({
64
- user,
65
- password,
66
- // when oracle not using default port must add connection string with port like localhost:port
67
- connectString: `${endpoint.trim()}/${database}`,
68
- poolMin,
69
- poolMax,
70
- poolIncrement,
71
- poolAlias,
72
- enableStatistics
73
- })
74
-
75
- ConnectionManager.addConnectionInstance(connection, {
76
- query: async (query, params) => {
77
- let dbConnection: any = {}
78
- let taskResult: any = {}
79
- try {
80
- dbConnection = await oracledb.getConnection(poolAlias)
81
-
82
- taskResult = (
83
- await dbConnection.execute(query, params, {
84
- outFormat: oracledb.OBJECT
85
- })
86
- ).rows
87
- } catch (e) {
88
- if (e.name === 'Error' && e.message.includes('NJS-040')) {
89
- await this.recreatePool(connection)
90
- }
91
- throw e
92
- } finally {
93
- await dbConnection.close()
94
- }
95
- return taskResult
96
- },
97
- execute: async (procedure, params) => {
98
- let dbConnection: any = {}
99
- let taskResult: any = {}
100
- try {
101
- // TODO: need to check if this is available when procedure string is a common query.
102
- procedure = `BEGIN
103
- ${procedure}
104
- END;`
105
- dbConnection = await oracledb.getConnection(poolAlias)
106
-
107
- // console.log('\n************* stat after get ****************')
108
- // await oracledb.getPool(poolAlias).logStatistics()
109
-
110
- const result = await dbConnection.execute(procedure, params, {
111
- outFormat: oracledb.OBJECT
112
- })
113
-
114
- let paramKeys = Object.keys(params)
115
-
116
- for (const paramKey of paramKeys) {
117
- if (params[paramKey].dir === oracledb?.BIND_OUT) {
118
- if (params[paramKey].type === oracledb?.CURSOR) {
119
- const resultSetTemp = result.outBinds[paramKey]
120
- taskResult[paramKey] = await resultSetTemp.getRows()
121
- await resultSetTemp.close()
122
- } else {
123
- taskResult[paramKey] = result.outBinds[paramKey]
124
- }
125
- }
126
- }
127
- } catch (e) {
128
- if (e.name === 'Error' && e.message.includes('NJS-040')) {
129
- await this.recreatePool(connection)
130
- }
131
- throw e
132
- } finally {
133
- await dbConnection.close()
134
-
135
- // console.log('\n************* stat after close ****************')
136
- // await oracledb.getPool(poolAlias).logStatistics()
137
- }
138
- return taskResult
139
- },
140
- close: async () => {
141
- await oracledb.getPool(poolAlias).close(10)
142
- }
143
- })
144
-
145
- ConnectionManager.logger.info(`Oracle Database(${connection.name}:${database}) at ${endpoint} connected.`)
146
- }
147
-
148
- async disconnect(connection: InputConnection) {
149
- var client = ConnectionManager.getConnectionInstance(connection)
150
-
151
- try {
152
- await client.close()
153
- ConnectionManager.logger.info(`Oracle Database(${connection.name}) closed.`)
154
- } catch (e) {
155
- ConnectionManager.logger.error(e)
156
- }
157
-
158
- ConnectionManager.removeConnectionInstance(connection)
159
- }
160
-
161
- get parameterSpec() {
162
- return [
163
- {
164
- type: 'string',
165
- name: 'user',
166
- label: 'user'
167
- },
168
- {
169
- type: 'password',
170
- name: 'password',
171
- label: 'password'
172
- },
173
- {
174
- type: 'string',
175
- name: 'database',
176
- placeholder: 'SID',
177
- label: 'database'
178
- },
179
- {
180
- type: 'number',
181
- name: 'poolMin',
182
- placeholder: 'minimum connection-pool size',
183
- label: 'pool-min',
184
- value: 0
185
- },
186
- {
187
- type: 'number',
188
- name: 'poolMax',
189
- placeholder: 'maximum connection-pool size',
190
- label: 'pool-max',
191
- value: 4
192
- },
193
- {
194
- type: 'number',
195
- name: 'poolIncrement',
196
- placeholder: 'connection incremental size',
197
- label: 'pool-increment',
198
- value: 1
199
- }
200
- ]
201
- }
202
-
203
- get taskPrefixes() {
204
- return ['database', 'oracle']
205
- }
206
-
207
- get help() {
208
- return 'integration/connector/oracle-connector'
209
- }
210
- }
211
-
212
- ConnectionManager.registerConnector('oracle-connector', new OracleConnector())
213
-
214
- // need reference:
215
- // https://download.oracle.com/otn_software/mac/instantclient/193000/instantclient-basiclite-macos.x64-19.3.0.0.0dbru.zip
216
- // https://node-oracledb.readthedocs.io/en/latest/index.html
217
-
218
- // docker pull store/oracle/database-instantclient:12.2.0.1
@@ -1,152 +0,0 @@
1
- import { logger } from '@things-factory/env'
2
-
3
- import { ConnectionManager } from '../connection-manager'
4
- import { Connector } from '../types'
5
- import { InputConnection } from '../../service/connection/connection-type'
6
-
7
- try {
8
- var { Client, Pool } = require('pg')
9
- } catch (err) {
10
- logger.error('postgresql module loading failed', err)
11
- }
12
-
13
- export class PostgresqlConnector implements Connector {
14
- async ready(connectionConfigs: InputConnection[]) {
15
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
16
-
17
- ConnectionManager.logger.info('postgresql-connector connections are ready')
18
- }
19
-
20
- async connect(connection: InputConnection) {
21
- const {
22
- endpoint,
23
- params: { user, password, database, maxPoolConnection, idleTimeoutMillis, connectionTimeoutMillis }
24
- } = connection
25
- const [host, port = 5432] = endpoint.split(':')
26
-
27
- if (!Pool) {
28
- throw new Error('postgresql module loading failed')
29
- }
30
-
31
- // create a new pool
32
- const pool = new Pool({
33
- user,
34
- host,
35
- database,
36
- password,
37
- port: Number(port),
38
- max: maxPoolConnection || 10,
39
- idleTimeoutMillis: idleTimeoutMillis || 30000,
40
- connectionTimeoutMillis: connectionTimeoutMillis || 2000
41
- })
42
-
43
- pool.on('error', (err, client) => {
44
- logger.error('unexpected error on postgres pool.', err)
45
- })
46
-
47
- try {
48
- // try to connect to database to check the connection at initial time
49
- const entryConnection = await pool.connect().catch(async e => {
50
- ConnectionManager.logger.error(e)
51
- throw e
52
- })
53
- entryConnection.release()
54
-
55
- ConnectionManager.addConnectionInstance(connection, {
56
- query: async (query, params) => {
57
- try {
58
- // get a connection from the pool
59
- var client = await pool.connect().catch(async e => {
60
- ConnectionManager.logger.error(e)
61
- throw e
62
- })
63
-
64
- client?.on('error', async err => {
65
- logger.error('unexpected error on postgres client.', err)
66
- ConnectionManager.logger.error(err)
67
- })
68
-
69
- // try to query
70
- var result = (await client.query(query, params)).rows
71
- } catch (e) {
72
- ConnectionManager.logger.error(e)
73
- throw e
74
- } finally {
75
- // release the connection back to the pool
76
- client?.release()
77
- }
78
- return result
79
- },
80
- close: async () => {
81
- // close the pool
82
- await pool?.end()
83
- }
84
- })
85
-
86
- ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}:${database}) at ${endpoint} connected.`)
87
- } catch (e) {
88
- ConnectionManager.logger.error(
89
- `PostgresSQL Database(${connection.name}:${database}) at ${endpoint} not connected.`,
90
- e
91
- )
92
- }
93
- }
94
-
95
- async disconnect(connection: InputConnection) {
96
- var connectionInstance = ConnectionManager.getConnectionInstance(connection)
97
- try {
98
- await connectionInstance.close()
99
- ConnectionManager.logger.info(`PostgresSQL Database(${connection.name}) closed.`)
100
- } catch (e) {
101
- ConnectionManager.logger.error(e)
102
- }
103
- ConnectionManager.removeConnectionInstance(connection)
104
- }
105
-
106
- get parameterSpec() {
107
- return [
108
- {
109
- type: 'string',
110
- name: 'user',
111
- label: 'user'
112
- },
113
- {
114
- type: 'password',
115
- name: 'password',
116
- label: 'password'
117
- },
118
- {
119
- type: 'string',
120
- name: 'database',
121
- label: 'database'
122
- },
123
- {
124
- type: 'number',
125
- name: 'maxPoolConnection',
126
- label: 'maxPoolConnection'
127
- },
128
- {
129
- type: 'number',
130
- name: 'idleTimeoutMillis',
131
- label: 'idleTimeoutMillis',
132
- placeHolder: 'milli-seconds'
133
- },
134
- {
135
- type: 'number',
136
- name: 'connectionTimeoutMillis',
137
- label: 'connectionTimeoutMillis',
138
- placeHolder: 'milli-seconds'
139
- }
140
- ]
141
- }
142
-
143
- get taskPrefixes() {
144
- return ['database']
145
- }
146
-
147
- get help() {
148
- return 'integration/connector/postgresql-connector'
149
- }
150
- }
151
-
152
- ConnectionManager.registerConnector('postgresql-connector', new PostgresqlConnector())
@@ -1,53 +0,0 @@
1
- import { ConnectionManager } from '../connection-manager'
2
- import { Connector } from '../types'
3
- import { InputConnection } from '../../service/connection/connection-type'
4
- import { connectConnections, disconnectConnections } from '../edge-client'
5
-
6
- /**
7
- * This connector is a proxy connector installed on the edge server to manage connections from the host.
8
- * It interacts with connections established on the edge server and provides synchronization functionality.
9
- */
10
- export class ProxyConnector implements Connector {
11
- public static instance = new ProxyConnector()
12
-
13
- async ready(connectionConfigs: InputConnection[]) {
14
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
15
-
16
- ConnectionManager.logger.info('proxy-connector connections are ready')
17
- }
18
-
19
- async connect(connection: InputConnection) {
20
- // TODO 원래 커넥션과 에지설정을 참고하여, 에지 서버로 CONNECT/DISCONNECT 명령을 보낸다.
21
- const proxy = {
22
- disconnect: async () => {
23
- ConnectionManager.logger.info('[proxy-connector] trying disconnect')
24
- await disconnectConnections([connection])
25
- }
26
- }
27
-
28
- await connectConnections([connection])
29
-
30
- ConnectionManager.addConnectionInstance(connection, proxy)
31
-
32
- ConnectionManager.logger.info(`proxy-connector connection(${connection.name}:${connection.endpoint}) is connected`)
33
- }
34
-
35
- async disconnect(connection: InputConnection) {
36
- const proxy = ConnectionManager.removeConnectionInstance(connection)
37
- await proxy.disconnect()
38
-
39
- ConnectionManager.logger.info(`proxy-connector connection(${connection.name}) is disconnected`)
40
- }
41
-
42
- get parameterSpec() {
43
- return []
44
- }
45
-
46
- get taskPrefixes() {
47
- return []
48
- }
49
-
50
- get description() {
51
- return 'Operato Proxy Connector'
52
- }
53
- }
@@ -1,86 +0,0 @@
1
- import net from 'net'
2
- import { EventEmitter } from 'events'
3
-
4
- import { Connector } from '../types'
5
- import { ConnectionManager } from '../connection-manager'
6
- import { InputConnection } from '../../service/connection/connection-type'
7
-
8
- export class SocketServer implements Connector {
9
- // socket: any
10
-
11
- async ready(connectionConfigs: InputConnection[]) {
12
- await Promise.all(connectionConfigs.map(this.connect))
13
- ConnectionManager.logger.info('socket servers are ready')
14
- }
15
-
16
- async connect(config: InputConnection): Promise<void> {
17
- var em = new EventEmitter()
18
- var [host = '0.0.0.0', port = 8124] = config.endpoint.split(':')
19
- return new Promise((resolve, reject) => {
20
- var server = net.createServer(tcp => {
21
- ConnectionManager.logger.info('Client connection: ')
22
- ConnectionManager.logger.info(' local = %s:%s', tcp.localAddress, tcp.localPort)
23
- ConnectionManager.logger.info(' remote = %s:%s', tcp.remoteAddress, tcp.remotePort)
24
- tcp.on('data', (data: any) => {
25
- em['__tcp__'] = tcp
26
- var message = data.toString()
27
- message = message.replace('SB#', '')
28
- message = message.replace(/(\r\n|\n|\r)/gm, '')
29
- em.emit('socket-message-arrive', message)
30
- ConnectionManager.logger.info(`socket ${message}`)
31
- tcp.write('ok')
32
- })
33
-
34
- tcp.on('end', () => {
35
- ConnectionManager.logger.info('Client disconnected')
36
- })
37
-
38
- tcp.on('error', ex => {
39
- ConnectionManager.logger.info('Server socket error: ')
40
- var logger = ConnectionManager.logger
41
- let message = ex.stack ? ex.stack : ex
42
- let msg = typeof message == 'object' ? JSON.stringify(message, null, 2) : message
43
- logger.error(msg, ex)
44
- reject(ex)
45
- })
46
- })
47
-
48
- server.listen(port, async () => {
49
- ConnectionManager.logger.info(`tcp echo server listening on ${host}:${port}`)
50
-
51
- /* default client connection */
52
- try {
53
- em['__server__'] = server
54
- ConnectionManager.addConnectionInstance(config, em)
55
- ConnectionManager.logger.info(`socket server connection(${config.name}:${config.endpoint}) is connected`)
56
-
57
- resolve()
58
- } catch (err) {
59
- ConnectionManager.logger.error(err)
60
- reject(err)
61
- }
62
- })
63
- })
64
- }
65
-
66
- async disconnect(connection: InputConnection) {
67
- let em = ConnectionManager.removeConnectionInstance(connection)
68
- var tcp = em['__tcp__']
69
- var server = em['__server__']
70
-
71
- tcp && (await tcp.destroy())
72
- server && (await server.close())
73
-
74
- ConnectionManager.logger.info(`socket server connection(${connection.name}) is disconnected`)
75
- }
76
-
77
- get parameterSpec() {
78
- return []
79
- }
80
-
81
- get taskPrefixes() {
82
- return ['socket']
83
- }
84
- }
85
-
86
- ConnectionManager.registerConnector('socket-server', new SocketServer())
@@ -1,69 +0,0 @@
1
- import { promisify } from 'util'
2
-
3
- import { logger } from '@things-factory/env'
4
-
5
- import { ConnectionManager } from '../connection-manager'
6
- import { Connector } from '../types'
7
- import { InputConnection } from '../../service/connection/connection-type'
8
-
9
- try {
10
- var sqlite3 = require('sqlite3').verbose()
11
- } catch (err) {
12
- logger.error('sqlite3 module loading failed', err)
13
- }
14
-
15
- export class SqliteConnector implements Connector {
16
- async ready(connectionConfigs: InputConnection[]) {
17
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
18
-
19
- ConnectionManager.logger.info('sqlite-connector connections are ready')
20
- }
21
-
22
- async connect(connection: InputConnection) {
23
- var { endpoint } = connection
24
-
25
- if (!sqlite3) {
26
- throw new Error('sqlite3 module loading failed')
27
- }
28
-
29
- var database = new sqlite3.Database(endpoint, sqlite3.OPEN_READWRITE, err => {
30
- if (err) {
31
- ConnectionManager.logger.error(`SQLite Database(${connection.name}) at ${endpoint} not connected.`, err)
32
- return
33
- }
34
-
35
- ConnectionManager.addConnectionInstance(connection, {
36
- query: promisify(database.all.bind(database)),
37
- close: promisify(database.close.bind(database))
38
- })
39
-
40
- ConnectionManager.logger.info(`SQLite Database(${connection.name}) at ${endpoint} connected.`)
41
- })
42
- }
43
-
44
- async disconnect(connection: InputConnection) {
45
- var database = ConnectionManager.getConnectionInstance(connection)
46
- try {
47
- await database.close()
48
- ConnectionManager.logger.info(`SQLite Database(${connection.name}) closed.`)
49
- } catch (e) {
50
- ConnectionManager.logger.error(e)
51
- }
52
-
53
- ConnectionManager.removeConnectionInstance(connection)
54
- }
55
-
56
- get parameterSpec() {
57
- return []
58
- }
59
-
60
- get taskPrefixes() {
61
- return ['database']
62
- }
63
-
64
- get help() {
65
- return 'integration/connector/sqlite-connector'
66
- }
67
- }
68
-
69
- ConnectionManager.registerConnector('sqlite-connector', new SqliteConnector())
@@ -1,45 +0,0 @@
1
- import { Connection } from '../service/connection/connection-type'
2
- import { Step } from '../service/step/step-type'
3
- import { Context, TaskHandler } from './types'
4
-
5
- export type EdgeClient = {
6
- handler: TaskHandler
7
- syncConnections(connections: Connection[], context?: ResolverContext): Promise<any>
8
- connectConnections(connections: Connection[], context?: ResolverContext): Promise<any>
9
- disconnectConnections(connections: Connection[], context?: ResolverContext): Promise<any>
10
- }
11
-
12
- var edgeClient: EdgeClient = {
13
- async handler(step: Step, scenarioContext: Context) {
14
- throw 'edgeClient not supported'
15
- },
16
- async syncConnections(connections: Connection[], context: ResolverContext): Promise<any> {
17
- throw 'edgeClient not supported'
18
- },
19
- async connectConnections(connections: Connection[], context: ResolverContext): Promise<any> {
20
- throw 'edgeClient not supported'
21
- },
22
- async disconnectConnections(connections: Connection[], context: ResolverContext): Promise<any> {
23
- throw 'edgeClient not supported'
24
- }
25
- }
26
-
27
- export async function handler(step: Step, scenarioContext: Context) {
28
- return await edgeClient.handler(step, scenarioContext)
29
- }
30
-
31
- export async function syncConnections(connections: Connection[], context?: ResolverContext): Promise<any> {
32
- return await edgeClient.syncConnections(connections, context)
33
- }
34
-
35
- export async function connectConnections(connections: Connection[], context?: ResolverContext): Promise<any> {
36
- return await edgeClient.connectConnections(connections, context)
37
- }
38
-
39
- export async function disconnectConnections(connections: Connection[], context?: ResolverContext): Promise<any> {
40
- return await edgeClient.disconnectConnections(connections, context)
41
- }
42
-
43
- export function setEdgeClient(edge: EdgeClient) {
44
- edgeClient = edge
45
- }
@@ -1,11 +0,0 @@
1
- import './connector'
2
- import './task'
3
-
4
- export * from './connection-manager'
5
- export * from './scenario-engine'
6
- export * from './task-registry'
7
- export * from './analyzer/analyze-integration'
8
- export * from './edge-client'
9
- export * from './resource-pool'
10
-
11
- export { Connector, Context, TaskHandler } from './types'