@things-factory/integration-base 8.0.0 → 9.0.0-beta.3

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 -156
  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,239 +0,0 @@
1
- import moment from 'moment-timezone'
2
- import { createLogger, format, transports } from 'winston'
3
-
4
- import { Domain, getRepository, pubsub, PubSubLogTransport } from '@things-factory/shell'
5
-
6
- import { Connection, ConnectionStatus } from '../service'
7
- import { Connector } from './types'
8
- import { ProxyConnector } from './connector/proxy-connector'
9
-
10
- const { combine, splat, printf, errors } = format
11
- const debug = require('debug')('things-factory:integration-base:connections')
12
-
13
- function getSystemTimeZone() {
14
- try {
15
- const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone
16
- if (!timeZone) {
17
- throw new Error('Unable to resolve timeZone')
18
- }
19
- return timeZone
20
- } catch (e) {
21
- console.warn('Failed to get system timeZone, falling back to UTC.', e)
22
- return 'UTC'
23
- }
24
- }
25
-
26
- const SYSTEM_TZ = getSystemTimeZone()
27
- const systemTimestamp = format((info, opts: { tz?: string }) => {
28
- if (opts.tz) info.timestamp = moment().tz(opts.tz).format()
29
- return info
30
- })
31
-
32
- export class ConnectionManager {
33
- private static connectors: { [propName: string]: Connector } = {}
34
- private static connections: { [domainId: string]: { [name: string]: any } } = {}
35
- private static entities = {}
36
- private static logFormat = printf(({ level, message, timestamp, stack }) => {
37
- return `${timestamp} ${level}: ${stack || message}`
38
- })
39
-
40
- public static logger = createLogger({
41
- format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), ConnectionManager.logFormat),
42
- transports: [
43
- new (transports as any).DailyRotateFile({
44
- filename: `logs/connections-%DATE%.log`,
45
- datePattern: 'YYYY-MM-DD-HH',
46
- zippedArchive: false,
47
- maxSize: '20m',
48
- maxFiles: '14d',
49
- level: 'info'
50
- }),
51
- new PubSubLogTransport({
52
- topic: 'connection-log'
53
- })
54
- ]
55
- })
56
-
57
- static async ready() {
58
- const CONNECTIONS = (
59
- await getRepository(Connection).find({
60
- where: { active: true },
61
- relations: ['domain', 'edge', 'creator', 'updater']
62
- })
63
- ).map(connection => {
64
- var params = {}
65
- try {
66
- params = JSON.parse(connection.params || '{}')
67
- } catch (ex) {
68
- ConnectionManager.logger.error(`connection '${connection.name}' params should be JSON format`, ex)
69
- }
70
-
71
- return {
72
- ...connection,
73
- params
74
- }
75
- })
76
-
77
- ConnectionManager.logger.info('Initializing ConnectionManager...')
78
-
79
- return await Promise.all(
80
- [...Object.keys(ConnectionManager.connectors), 'proxy-connector'].map(type => {
81
- const connector = type == 'proxy-connector' ? ProxyConnector.instance : ConnectionManager.getConnector(type)
82
-
83
- ConnectionManager.logger.info(`Connector '${type}' started to ready`)
84
-
85
- return connector
86
- .ready(
87
- CONNECTIONS.filter(connection => {
88
- if (type == 'proxy-connector') {
89
- return !!connection.edge
90
- } else {
91
- return !connection.edge && connection.type == type
92
- }
93
- }) as any
94
- )
95
- .catch(error => {
96
- ConnectionManager.logger.error(error)
97
- })
98
- .then(() => {
99
- ConnectionManager.logger.info(`All connector for '${type}' ready`)
100
- })
101
- })
102
- ).then(() => {
103
- ConnectionManager.logger.info('ConnectionManager initialization done:')
104
- Object.keys(ConnectionManager.connections).forEach(key => {
105
- var connections = ConnectionManager.connections[key]
106
- ConnectionManager.logger.info('For domain(%s) : %s', key, JSON.stringify(Object.keys(connections)))
107
- })
108
- })
109
- }
110
-
111
- static registerConnector(type: string, connector: Connector) {
112
- ConnectionManager.connectors[type] = connector
113
- }
114
-
115
- static getConnector(type: string): Connector {
116
- return ConnectionManager.connectors[type]
117
- }
118
-
119
- static getConnectors(): { [connectorName: string]: Connector } {
120
- return {
121
- ...ConnectionManager.connectors
122
- }
123
- }
124
-
125
- static unregisterConnector(type: string) {
126
- delete ConnectionManager.connectors[type]
127
- }
128
-
129
- static getConnections() {
130
- return ConnectionManager.connections
131
- }
132
-
133
- static getEntities() {
134
- return ConnectionManager.entities
135
- }
136
-
137
- static getConnectionInstance(connection: Connection): any {
138
- const { domain, name } = connection
139
- return ConnectionManager.connections[domain.id]?.[name]
140
- }
141
-
142
- static getConnectionInstanceByName(domain: Domain, name: string) {
143
- const connections = ConnectionManager.connections[domain.id]
144
- const connection = connections?.[name]
145
-
146
- if (!connection) {
147
- throw `The connection with the given name(${name}) cannot be found`
148
- }
149
-
150
- return connection
151
- }
152
-
153
- static getConnectionInstanceEntityByName(domain: Domain, name: string): any {
154
- const connection = ConnectionManager.entities[domain.id]?.[name]
155
- if (connection) {
156
- return connection
157
- }
158
-
159
- if (domain.parentId) {
160
- return ConnectionManager.entities[domain.id]?.[name]
161
- }
162
- }
163
-
164
- static getConnectionInstances(domain: Domain): { [connectionName: string]: any } {
165
- const connections = ConnectionManager.connections[domain.id]
166
- const parentConnections = domain.parentId && ConnectionManager.connections[domain.parentId]
167
-
168
- return {
169
- ...parentConnections,
170
- ...connections
171
- }
172
- }
173
-
174
- static getConnectionInstanceEntities(domain: Domain): { [connectionName: string]: any } {
175
- const connections = ConnectionManager.entities[domain.id]
176
-
177
- return {
178
- ...connections
179
- }
180
- }
181
-
182
- static addConnectionInstance(connection: Connection, instance: any) {
183
- const { domain, name } = connection
184
-
185
- var connections = ConnectionManager.connections[domain.id]
186
- if (!connections) {
187
- connections = ConnectionManager.connections[domain.id] = {}
188
- }
189
-
190
- var entities = ConnectionManager.entities[domain.id]
191
- if (!entities) {
192
- entities = ConnectionManager.entities[domain.id] = {}
193
- }
194
-
195
- connections[name] = instance
196
- entities[name] = connection
197
-
198
- ConnectionManager.publishState(connection, ConnectionStatus.CONNECTED)
199
- debug('add-connection', domain.subdomain, name)
200
- }
201
-
202
- static removeConnectionInstance(connection: Connection): any {
203
- const { domain, name } = connection
204
- var connections = ConnectionManager.connections[domain.id]
205
- var entities = ConnectionManager.entities[domain.id]
206
-
207
- var instance = connections?.[name]
208
-
209
- if (!connections || !instance) {
210
- debug('remove-connection', `'${name}' connection not found in domain '${domain.subdomain}'`)
211
- return
212
- }
213
-
214
- delete connections[name]
215
- delete entities[name]
216
-
217
- ConnectionManager.publishState(connection, ConnectionStatus.DISCONNECTED)
218
- debug('remove-connection', `'${name}' connection is removed from domain '${domain.subdomain}'`)
219
-
220
- return instance
221
- }
222
-
223
- private static async publishState(connection: Connection, state) {
224
- const { domain, id, name, description, type, edge } = connection
225
-
226
- pubsub.publish('connection-state', {
227
- connectionState: {
228
- domain,
229
- id,
230
- name,
231
- description,
232
- type,
233
- edge,
234
- state,
235
- timestamp: new Date()
236
- }
237
- })
238
- }
239
- }
@@ -1,51 +0,0 @@
1
- import net from 'net'
2
- import PromiseSocket from 'promise-socket'
3
-
4
- import { Connector } from '../types'
5
- import { ConnectionManager } from '../connection-manager'
6
- import { InputConnection } from '../../service/connection/connection-type'
7
-
8
- export class EchoBack implements Connector {
9
- async ready(connectionConfigs) {
10
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
11
-
12
- ConnectionManager.logger.info('echo-back connections are ready')
13
- }
14
-
15
- async connect(connection: InputConnection) {
16
- let socket = new PromiseSocket(new net.Socket())
17
- let [host, port = 8124] = connection.endpoint.split(':')
18
-
19
- try {
20
- await socket.connect(Number(port), host)
21
- ConnectionManager.addConnectionInstance(connection, socket)
22
-
23
- ConnectionManager.logger.info(
24
- `echo-back-connector connection(${connection.name}:${connection.endpoint}) is connected`
25
- )
26
- } catch (e) {
27
- ConnectionManager.logger.error(
28
- `echo-back-connector connection(${connection.name}:${connection.endpoint}) is not connected.`,
29
- e
30
- )
31
- }
32
- }
33
-
34
- async disconnect(connection: InputConnection) {
35
- let socket = ConnectionManager.removeConnectionInstance(connection)
36
-
37
- await socket.destroy()
38
-
39
- ConnectionManager.logger.info(`echo-back-connector connection(${connection.name}) is disconnected`)
40
- }
41
-
42
- get parameterSpec() {
43
- return []
44
- }
45
-
46
- get taskPrefixes() {
47
- return ['echo']
48
- }
49
- }
50
-
51
- ConnectionManager.registerConnector('echo-back', new EchoBack())
@@ -1,72 +0,0 @@
1
- import net from 'net'
2
- import PromiseSocket from 'promise-socket'
3
-
4
- import { Connector } from '../types'
5
- import { ConnectionManager } from '../connection-manager'
6
- import { InputConnection } from '../../service/connection/connection-type'
7
-
8
- export class EchoBack implements Connector {
9
- async ready(connectionConfigs: InputConnection[]) {
10
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
11
-
12
- ConnectionManager.logger.info('echo-back-servers are ready')
13
- }
14
-
15
- async connect(config: InputConnection): Promise<void> {
16
- var [host = '0.0.0.0', port = 8124] = config.endpoint.split(':')
17
-
18
- return new Promise((resolve, reject) => {
19
- var server = net.createServer(socket => {
20
- socket.on('data', function (data) {
21
- socket.write(data.toString())
22
- })
23
-
24
- socket.on('error', function (err) {
25
- ConnectionManager.logger.error(err)
26
- reject(err)
27
- })
28
- })
29
-
30
- server.listen(port, async () => {
31
- ConnectionManager.logger.info(`Echo-back server listening on ${host}:${port}`)
32
-
33
- /* default client connection */
34
- let socket = new net.Socket()
35
- socket.on('error', console.error)
36
-
37
- try {
38
- let promiseSocket = new PromiseSocket(socket)
39
- await promiseSocket.connect(Number(port), 'localhost')
40
- promiseSocket['__server__'] = server
41
-
42
- ConnectionManager.addConnectionInstance(config, promiseSocket)
43
-
44
- ConnectionManager.logger.info(`echo-back-server connection(${config.name}:${config.endpoint}) is connected`)
45
-
46
- resolve()
47
- } catch (err) {
48
- ConnectionManager.logger.error(
49
- `echo-back-server connection(${config.name}:${config.endpoint}) is connected.\ncause: ${err}`
50
- )
51
- reject(err)
52
- }
53
- })
54
- })
55
- }
56
-
57
- async disconnect(connection: InputConnection) {
58
- let socket = ConnectionManager.removeConnectionInstance(connection)
59
- var server = socket['__server__']
60
-
61
- await socket.destroy()
62
- server && (await server.close())
63
-
64
- ConnectionManager.logger.info(`echo-back-server connection(${connection.name}) is disconnected`)
65
- }
66
-
67
- get parameterSpec() {
68
- return []
69
- }
70
- }
71
-
72
- ConnectionManager.registerConnector('echo-back-server', new EchoBack())
@@ -1,126 +0,0 @@
1
- import 'cross-fetch/polyfill'
2
-
3
- import { ApolloClient, ApolloLink, from, HttpLink, InMemoryCache } from '@apollo/client/core'
4
- import { onError } from '@apollo/client/link/error'
5
- import { Oauth2Client } from '@things-factory/oauth2-client'
6
- import { getRepository } from '@things-factory/shell'
7
-
8
- import { ConnectionManager } from '../connection-manager'
9
- import { Connector } from '../types'
10
- import { InputConnection } from '../../service/connection/connection-type'
11
-
12
- const defaultOptions: any = {
13
- watchQuery: {
14
- fetchPolicy: 'no-cache',
15
- errorPolicy: 'ignore'
16
- },
17
- query: {
18
- fetchPolicy: 'no-cache', //'network-only'
19
- errorPolicy: 'all'
20
- },
21
- mutate: {
22
- errorPolicy: 'all'
23
- }
24
- }
25
-
26
- export class GraphqlConnector implements Connector {
27
- async ready(connectionConfigs: InputConnection[]) {
28
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
29
-
30
- ConnectionManager.logger.info('graphql-connector connections are ready')
31
- }
32
-
33
- async connect(connection: InputConnection) {
34
- const {
35
- endpoint: uri,
36
- params: { authClient }
37
- } = connection
38
-
39
- const ERROR_HANDLER: any = ({ graphQLErrors, networkError }) => {
40
- if (graphQLErrors)
41
- graphQLErrors.map(({ message, locations, path }) => {
42
- ConnectionManager.logger.error(
43
- `[GraphQL error] Message: ${message}, Location: ${locations}, Path: ${path}`,
44
- graphQLErrors
45
- )
46
- })
47
-
48
- if (networkError) {
49
- ConnectionManager.logger.error(`[Network error - ${networkError.statusCode}]`, networkError)
50
- }
51
- }
52
-
53
- const oauth2Client: Oauth2Client = await getRepository(Oauth2Client).findOneBy({ id: authClient })
54
-
55
- const authMiddleware = new ApolloLink((operation, forward) => {
56
- // add the authorization to the headers
57
- operation.setContext(({ headers = {} }) => ({
58
- headers: {
59
- ...headers,
60
- ...oauth2Client.getAuthHeaders()
61
- }
62
- }))
63
-
64
- return forward(operation)
65
- })
66
-
67
- const cache = new InMemoryCache({
68
- addTypename: false
69
- })
70
-
71
- ConnectionManager.addConnectionInstance(
72
- connection,
73
- new ApolloClient({
74
- defaultOptions,
75
- cache,
76
- link: from([
77
- authMiddleware,
78
- onError(ERROR_HANDLER),
79
- new HttpLink({
80
- uri,
81
- credentials: 'include'
82
- })
83
- ])
84
- })
85
- )
86
-
87
- ConnectionManager.logger.info(
88
- `graphql-connector connection(${connection.name}:${connection.endpoint}) is connected`
89
- )
90
- }
91
-
92
- async disconnect(connection: InputConnection) {
93
- const client = ConnectionManager.getConnectionInstance(connection)
94
- client.stop()
95
- ConnectionManager.removeConnectionInstance(connection)
96
-
97
- ConnectionManager.logger.info(`graphql-connector connection(${connection.name}) is disconnected`)
98
- }
99
-
100
- get parameterSpec() {
101
- return [
102
- {
103
- type: 'entity-selector',
104
- name: 'authClient',
105
- label: 'auth-client',
106
- property: {
107
- queryName: 'oauth2Clients'
108
- }
109
- }
110
- ]
111
- }
112
-
113
- get taskPrefixes() {
114
- return ['graphql']
115
- }
116
-
117
- get description() {
118
- return 'Graphql Http Connector'
119
- }
120
-
121
- get help() {
122
- return 'integration/connector/graphql-connector'
123
- }
124
- }
125
-
126
- ConnectionManager.registerConnector('graphql-connector', new GraphqlConnector())
@@ -1,65 +0,0 @@
1
- import { Oauth2Client } from '@things-factory/oauth2-client'
2
- import { getRepository } from '@things-factory/shell'
3
-
4
- import { ConnectionManager } from '../connection-manager'
5
- import { Connector } from '../types'
6
- import { InputConnection } from '../../service/connection/connection-type'
7
-
8
- export class HttpConnector implements Connector {
9
- async ready(connectionConfigs: InputConnection[]) {
10
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
11
-
12
- ConnectionManager.logger.info('http-connector connections are ready')
13
- }
14
-
15
- async connect(connection: InputConnection) {
16
- var { params } = connection
17
- params.rejectUnauthorized = (params.rejectUnauthorized || 'Y') === 'Y'
18
-
19
- if (params.authClient) {
20
- const oauth2Client: Oauth2Client = await getRepository(Oauth2Client).findOneBy({ id: params.authClient })
21
- var authHeaders = oauth2Client.getAuthHeaders()
22
- }
23
-
24
- ConnectionManager.addConnectionInstance(connection, {
25
- ...connection,
26
- authHeaders: authHeaders || {},
27
- params
28
- })
29
-
30
- ConnectionManager.logger.info(`http-connector connection(${connection.name}:${connection.endpoint}) is connected`)
31
- }
32
-
33
- async disconnect(connection: InputConnection) {
34
- ConnectionManager.removeConnectionInstance(connection)
35
-
36
- ConnectionManager.logger.info(`http-connector connection(${connection.name}) is disconnected`)
37
- }
38
-
39
- get parameterSpec() {
40
- return [
41
- {
42
- type: 'entity-selector',
43
- name: 'authClient',
44
- label: 'auth-client',
45
- property: {
46
- queryName: 'oauth2Clients'
47
- }
48
- },
49
- {
50
- type: 'select',
51
- name: 'rejectUnauthorized',
52
- label: 'reject-unauthorized',
53
- property: {
54
- options: ['Y', 'N']
55
- }
56
- }
57
- ]
58
- }
59
-
60
- get taskPrefixes() {
61
- return ['http', 'headless-post', 'headless-scrap']
62
- }
63
- }
64
-
65
- ConnectionManager.registerConnector('http-connector', new HttpConnector())
@@ -1,12 +0,0 @@
1
- import './echo-back-server'
2
- import './echo-back-connector'
3
- import './http-connector'
4
- import './graphql-connector'
5
- import './sqlite-connector'
6
- import './postgresql-connector'
7
- import './mqtt-connector'
8
- import './mssql-connector'
9
- import './oracle-connector'
10
- import './mysql-connector'
11
- import './socket-server'
12
- import './operato-connector'
@@ -1,78 +0,0 @@
1
- import { Connector } from '../types'
2
- import { ConnectionManager } from '../connection-manager'
3
- import { InputConnection } from '../../service/connection/connection-type'
4
-
5
- import mqtt from 'async-mqtt'
6
-
7
- export class MqttConnector implements Connector {
8
- async ready(connectionConfigs: InputConnection[]) {
9
- await Promise.all(connectionConfigs.map(this.connect.bind(this)))
10
-
11
- ConnectionManager.logger.info('mqtt-connector connections are ready')
12
- }
13
-
14
- async connect(connection: InputConnection) {
15
- const {
16
- endpoint: uri,
17
- params: { user, password }
18
- } = connection
19
-
20
- try {
21
- var client = null
22
- if (user && password) {
23
- client = await mqtt.connectAsync(uri, { username: user, password: password })
24
- } else {
25
- client = await mqtt.connectAsync(uri)
26
- }
27
-
28
- if (!client) {
29
- throw new Error(
30
- `the initialization of mqtt connector is failed. uri: ${uri}, user: ${user} password: ${password}`
31
- )
32
- }
33
-
34
- ConnectionManager.addConnectionInstance(connection, {
35
- client,
36
- connection
37
- })
38
-
39
- ConnectionManager.logger.info(`mqtt-connector connection(${connection.name}:${connection.endpoint}) is connected`)
40
- } catch (err) {
41
- ConnectionManager.logger.error(
42
- `mqtt-connector connection(${connection.name}:${connection.endpoint}) is failed.`,
43
- err
44
- )
45
- }
46
- }
47
-
48
- async disconnect(connection: InputConnection) {
49
- const { client } = ConnectionManager.removeConnectionInstance(connection)
50
-
51
- client && (await client.end())
52
- }
53
-
54
- get parameterSpec() {
55
- return [
56
- {
57
- type: 'string',
58
- name: 'user',
59
- label: 'user'
60
- },
61
- {
62
- type: 'password',
63
- name: 'password',
64
- label: 'password'
65
- }
66
- ]
67
- }
68
-
69
- get taskPrefixes() {
70
- return ['mqtt']
71
- }
72
-
73
- get help() {
74
- return 'integration/connector/mqtt-connector'
75
- }
76
- }
77
-
78
- ConnectionManager.registerConnector('mqtt-connector', new MqttConnector())