@things-factory/edge-client 9.0.0-beta.79 → 9.0.0-beta.80

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.
@@ -4,7 +4,6 @@ exports.runTask = void 0;
4
4
  const shell_1 = require("@things-factory/shell");
5
5
  const lock_client_1 = require("@things-factory/lock-client");
6
6
  const runTask = async (step, scenarioContext) => {
7
- var _a;
8
7
  const { logger } = scenarioContext;
9
8
  try {
10
9
  const id = await (0, lock_client_1.requestLock)();
@@ -15,7 +14,7 @@ const runTask = async (step, scenarioContext) => {
15
14
  });
16
15
  const result = await (0, lock_client_1.tryLock)({ id });
17
16
  const { out, logs, error } = result || {};
18
- if (((_a = logger.transports) === null || _a === void 0 ? void 0 : _a.length) > 0) {
17
+ if (logger.transports?.length > 0) {
19
18
  /* 강제로 시나리오 인스턴스가 종료된 경우에는 logger도 닫힌 상태가 된다. 이 경우에는 transports가 설정되지 않게된다. */
20
19
  logs && logs.map(log => logger.log(log));
21
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run-task.js","sourceRoot":"","sources":["../../server/controllers/run-task.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C,6DAAkE;AAE3D,MAAM,OAAO,GAAgB,KAAK,EAAE,IAAU,EAAE,eAAwB,EAAE,EAAE;;IACjF,MAAM,EAAE,MAAM,EAAE,GAAoB,eAAe,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAA,yBAAW,GAAE,CAAA;QAE9B,cAAM,CAAC,OAAO,CAAC,UAAU,EAAE;YACzB,EAAE;YACF,IAAI;YACJ,OAAO,EAAE,eAAe;SACzB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAO,EAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACpC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;QAEzC,IAAI,CAAA,MAAA,MAAM,CAAC,UAAU,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;YAClC,8EAA8E;YAC9E,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA;AA5BY,QAAA,OAAO,WA4BnB","sourcesContent":["import { pubsub } from '@things-factory/shell'\nimport { Context, Step, TaskHandler } from '@things-factory/integration-base'\nimport { requestLock, tryLock } from '@things-factory/lock-client'\n\nexport const runTask: TaskHandler = async (step: Step, scenarioContext: Context) => {\n const { logger }: { logger: any } = scenarioContext\n\n try {\n const id = await requestLock()\n\n pubsub.publish('run-task', {\n id,\n step,\n context: scenarioContext\n })\n\n const result = await tryLock({ id })\n const { out, logs, error } = result || {}\n\n if (logger.transports?.length > 0) {\n /* 강제로 시나리오 인스턴스가 종료된 경우에는 logger도 닫힌 상태가 된다. 이 경우에는 transports가 설정되지 않게된다. */\n logs && logs.map(log => logger.log(log))\n }\n\n if (error) {\n throw new Error(error)\n }\n\n return out\n } catch (err) {\n throw new Error(err)\n }\n}\n"]}
1
+ {"version":3,"file":"run-task.js","sourceRoot":"","sources":["../../server/controllers/run-task.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C,6DAAkE;AAE3D,MAAM,OAAO,GAAgB,KAAK,EAAE,IAAU,EAAE,eAAwB,EAAE,EAAE;IACjF,MAAM,EAAE,MAAM,EAAE,GAAoB,eAAe,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAA,yBAAW,GAAE,CAAA;QAE9B,cAAM,CAAC,OAAO,CAAC,UAAU,EAAE;YACzB,EAAE;YACF,IAAI;YACJ,OAAO,EAAE,eAAe;SACzB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAO,EAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACpC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;QAEzC,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,8EAA8E;YAC9E,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA;AA5BY,QAAA,OAAO,WA4BnB","sourcesContent":["import { pubsub } from '@things-factory/shell'\nimport { Context, Step, TaskHandler } from '@things-factory/integration-base'\nimport { requestLock, tryLock } from '@things-factory/lock-client'\n\nexport const runTask: TaskHandler = async (step: Step, scenarioContext: Context) => {\n const { logger }: { logger: any } = scenarioContext\n\n try {\n const id = await requestLock()\n\n pubsub.publish('run-task', {\n id,\n step,\n context: scenarioContext\n })\n\n const result = await tryLock({ id })\n const { out, logs, error } = result || {}\n\n if (logger.transports?.length > 0) {\n /* 강제로 시나리오 인스턴스가 종료된 경우에는 logger도 닫힌 상태가 된다. 이 경우에는 transports가 설정되지 않게된다. */\n logs && logs.map(log => logger.log(log))\n }\n\n if (error) {\n throw new Error(error)\n }\n\n return out\n } catch (err) {\n throw new Error(err)\n }\n}\n"]}
@@ -11,17 +11,26 @@ const edge_client_type_1 = require("./edge-client-type");
11
11
  let EdgeClientSubscription = class EdgeClientSubscription {
12
12
  syncConnections(payload) {
13
13
  return payload.map(connection => {
14
- return Object.assign(Object.assign({}, connection), { params: JSON.stringify(connection.params) });
14
+ return {
15
+ ...connection,
16
+ params: JSON.stringify(connection.params)
17
+ };
15
18
  });
16
19
  }
17
20
  connectConnections(payload) {
18
21
  return payload.map(connection => {
19
- return Object.assign(Object.assign({}, connection), { params: JSON.stringify(connection.params) });
22
+ return {
23
+ ...connection,
24
+ params: JSON.stringify(connection.params)
25
+ };
20
26
  });
21
27
  }
22
28
  disconnectConnections(payload) {
23
29
  return payload.map(connection => {
24
- return Object.assign(Object.assign({}, connection), { params: JSON.stringify(connection.params) });
30
+ return {
31
+ ...connection,
32
+ params: JSON.stringify(connection.params)
33
+ };
25
34
  });
26
35
  }
27
36
  runTask(payload) {
@@ -44,13 +53,12 @@ exports.EdgeClientSubscription = EdgeClientSubscription;
44
53
  tslib_1.__decorate([
45
54
  (0, type_graphql_1.Subscription)(type => [integration_base_1.Connection], {
46
55
  subscribe: async ({ args, context, info }) => {
47
- var _a;
48
56
  const { domain, user } = context.state;
49
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
57
+ const subdomain = domain?.subdomain;
50
58
  if (!domain) {
51
59
  throw new Error('domain required');
52
60
  }
53
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
61
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
54
62
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
55
63
  }
56
64
  const appliance = user.reference &&
@@ -71,10 +79,10 @@ tslib_1.__decorate([
71
79
  return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('sync-connections'), (0, graphql_yoga_1.filter)(async (payload) => {
72
80
  const connections = payload;
73
81
  const { edgeId } = connections[0];
74
- if (connections.find(connection => { var _a; return ((_a = connection.domain) === null || _a === void 0 ? void 0 : _a.subdomain) !== subdomain; })) {
82
+ if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {
75
83
  return false;
76
84
  }
77
- if (!edgeId || (appliance === null || appliance === void 0 ? void 0 : appliance.id) !== edgeId) {
85
+ if (!edgeId || appliance?.id !== edgeId) {
78
86
  return false;
79
87
  }
80
88
  return true;
@@ -89,13 +97,12 @@ tslib_1.__decorate([
89
97
  tslib_1.__decorate([
90
98
  (0, type_graphql_1.Subscription)(type => [integration_base_1.Connection], {
91
99
  subscribe: async ({ args, context, info }) => {
92
- var _a;
93
100
  const { domain, user } = context.state;
94
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
101
+ const subdomain = domain?.subdomain;
95
102
  if (!domain) {
96
103
  throw new Error('domain required');
97
104
  }
98
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
105
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
99
106
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
100
107
  }
101
108
  const appliance = user.reference &&
@@ -110,10 +117,10 @@ tslib_1.__decorate([
110
117
  return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('connect-connections'), (0, graphql_yoga_1.filter)(async (payload) => {
111
118
  const connections = payload;
112
119
  const { edgeId } = connections[0];
113
- if (connections.find(connection => { var _a; return ((_a = connection.domain) === null || _a === void 0 ? void 0 : _a.subdomain) !== subdomain; })) {
120
+ if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {
114
121
  return false;
115
122
  }
116
- if (!edgeId || (appliance === null || appliance === void 0 ? void 0 : appliance.id) !== edgeId) {
123
+ if (!edgeId || appliance?.id !== edgeId) {
117
124
  return false;
118
125
  }
119
126
  return true;
@@ -128,13 +135,12 @@ tslib_1.__decorate([
128
135
  tslib_1.__decorate([
129
136
  (0, type_graphql_1.Subscription)(type => [integration_base_1.Connection], {
130
137
  subscribe: async ({ args, context, info }) => {
131
- var _a;
132
138
  const { domain, user } = context.state;
133
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
139
+ const subdomain = domain?.subdomain;
134
140
  if (!domain) {
135
141
  throw new Error('domain required');
136
142
  }
137
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
143
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
138
144
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
139
145
  }
140
146
  const appliance = user.reference &&
@@ -149,10 +155,10 @@ tslib_1.__decorate([
149
155
  return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('disconnect-connections'), (0, graphql_yoga_1.filter)(async (payload) => {
150
156
  const connections = payload;
151
157
  const { edgeId } = connections[0];
152
- if (connections.find(connection => { var _a; return ((_a = connection.domain) === null || _a === void 0 ? void 0 : _a.subdomain) !== subdomain; })) {
158
+ if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {
153
159
  return false;
154
160
  }
155
- if (!edgeId || (appliance === null || appliance === void 0 ? void 0 : appliance.id) !== edgeId) {
161
+ if (!edgeId || appliance?.id !== edgeId) {
156
162
  return false;
157
163
  }
158
164
  return true;
@@ -167,13 +173,12 @@ tslib_1.__decorate([
167
173
  tslib_1.__decorate([
168
174
  (0, type_graphql_1.Subscription)({
169
175
  subscribe: async ({ args, context, info }) => {
170
- var _a;
171
176
  const { domain, user } = context.state;
172
- const subdomain = domain === null || domain === void 0 ? void 0 : domain.subdomain;
177
+ const subdomain = domain?.subdomain;
173
178
  if (!domain) {
174
179
  throw new Error('domain required');
175
180
  }
176
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.find(d => d.subdomain === subdomain)) && !process.superUserGranted(domain, user)) {
181
+ if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {
177
182
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
178
183
  }
179
184
  const appliance = user.reference &&
@@ -191,7 +196,7 @@ tslib_1.__decorate([
191
196
  return false;
192
197
  }
193
198
  const { edgeId } = connection && integration_base_1.ConnectionManager.getConnectionInstanceEntityByName(domain, connection);
194
- if (!edgeId || (appliance === null || appliance === void 0 ? void 0 : appliance.id) !== edgeId) {
199
+ if (!edgeId || appliance?.id !== edgeId) {
195
200
  return false;
196
201
  }
197
202
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"edge-client-subscription.js","sourceRoot":"","sources":["../../../server/service/appliance/edge-client-subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Subscription, Root, Arg } from 'type-graphql'\n\nimport { pubsub, getRepository, Domain } from '@things-factory/shell'\nimport { Appliance, User } from '@things-factory/auth-base'\nimport { ConnectionManager, Connection, Step } from '@things-factory/integration-base'\n\nimport { EdgeContext, RunTaskPayload } from './edge-client-type'\n\n@Resolver(Appliance)\nexport class EdgeClientSubscription {\n @Subscription(type => [Connection], {\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n\n process.nextTick(async () => {\n const connections = Object.values(ConnectionManager.getConnectionInstanceEntities(domain)).filter(\n ({ edgeId }) => edgeId == appliance.id\n )\n\n if (connections.length > 0) {\n pubsub.publish('sync-connections', connections)\n }\n })\n\n return pipe(\n pubsub.subscribe('sync-connections'),\n filter(async (payload: Connection[]) => {\n const connections = payload\n const { edgeId } = connections[0]\n\n if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {\n return false\n }\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n syncConnections(@Root() payload: Connection[]): Connection[] {\n return payload.map(connection => {\n return {\n ...connection,\n params: JSON.stringify(connection.params)\n }\n }) as any\n }\n\n @Subscription(type => [Connection], {\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n\n return pipe(\n pubsub.subscribe('connect-connections'),\n filter(async (payload: Connection[]) => {\n const connections = payload\n const { edgeId } = connections[0]\n\n if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {\n return false\n }\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n connectConnections(@Root() payload: Connection[]): Connection[] {\n return payload.map(connection => {\n return {\n ...connection,\n params: JSON.stringify(connection.params)\n }\n }) as any\n }\n\n @Subscription(type => [Connection], {\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n\n return pipe(\n pubsub.subscribe('disconnect-connections'),\n filter(async (payload: Connection[]) => {\n const connections = payload\n const { edgeId } = connections[0]\n\n if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {\n return false\n }\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n disconnectConnections(@Root() payload: Connection[]): Connection[] {\n return payload.map(connection => {\n return {\n ...connection,\n params: JSON.stringify(connection.params)\n }\n }) as any\n }\n\n @Subscription({\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n\n const subdomain = domain?.subdomain\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n return pipe(\n pubsub.subscribe('run-task'),\n filter(async (payload: { id: string; step: Step; context: EdgeContext }) => {\n const { domainId, connection } = payload.step\n\n if (domainId !== domain.id) {\n return false\n }\n\n const { edgeId } = connection && ConnectionManager.getConnectionInstanceEntityByName(domain, connection)\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n runTask(@Root() payload: RunTaskPayload): RunTaskPayload {\n const { id, step, context } = payload\n const { name, task, description, connection, params } = step\n\n return {\n id, // requestId\n step: {\n name,\n task,\n description,\n connection,\n params: params || {}\n },\n context\n }\n }\n}\n"]}
1
+ {"version":3,"file":"edge-client-subscription.js","sourceRoot":"","sources":["../../../server/service/appliance/edge-client-subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Subscription, Root, Arg } from 'type-graphql'\n\nimport { pubsub, getRepository, Domain } from '@things-factory/shell'\nimport { Appliance, User } from '@things-factory/auth-base'\nimport { ConnectionManager, Connection, Step } from '@things-factory/integration-base'\n\nimport { EdgeContext, RunTaskPayload } from './edge-client-type'\n\n@Resolver(Appliance)\nexport class EdgeClientSubscription {\n @Subscription(type => [Connection], {\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n\n process.nextTick(async () => {\n const connections = Object.values(ConnectionManager.getConnectionInstanceEntities(domain)).filter(\n ({ edgeId }) => edgeId == appliance.id\n )\n\n if (connections.length > 0) {\n pubsub.publish('sync-connections', connections)\n }\n })\n\n return pipe(\n pubsub.subscribe('sync-connections'),\n filter(async (payload: Connection[]) => {\n const connections = payload\n const { edgeId } = connections[0]\n\n if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {\n return false\n }\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n syncConnections(@Root() payload: Connection[]): Connection[] {\n return payload.map(connection => {\n return {\n ...connection,\n params: JSON.stringify(connection.params)\n }\n }) as any\n }\n\n @Subscription(type => [Connection], {\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n\n return pipe(\n pubsub.subscribe('connect-connections'),\n filter(async (payload: Connection[]) => {\n const connections = payload\n const { edgeId } = connections[0]\n\n if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {\n return false\n }\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n connectConnections(@Root() payload: Connection[]): Connection[] {\n return payload.map(connection => {\n return {\n ...connection,\n params: JSON.stringify(connection.params)\n }\n }) as any\n }\n\n @Subscription(type => [Connection], {\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n\n return pipe(\n pubsub.subscribe('disconnect-connections'),\n filter(async (payload: Connection[]) => {\n const connections = payload\n const { edgeId } = connections[0]\n\n if (connections.find(connection => connection.domain?.subdomain !== subdomain)) {\n return false\n }\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n disconnectConnections(@Root() payload: Connection[]): Connection[] {\n return payload.map(connection => {\n return {\n ...connection,\n params: JSON.stringify(connection.params)\n }\n }) as any\n }\n\n @Subscription({\n subscribe: async ({ args, context, info }) => {\n const { domain, user }: { domain: Domain; user: User } = context.state\n\n const subdomain = domain?.subdomain\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n const appliance =\n user.reference &&\n (await getRepository(Appliance).findOne({\n where: {\n id: user.reference\n }\n }))\n\n if (!appliance) {\n throw new Error('Appliance not found')\n }\n return pipe(\n pubsub.subscribe('run-task'),\n filter(async (payload: { id: string; step: Step; context: EdgeContext }) => {\n const { domainId, connection } = payload.step\n\n if (domainId !== domain.id) {\n return false\n }\n\n const { edgeId } = connection && ConnectionManager.getConnectionInstanceEntityByName(domain, connection)\n\n if (!edgeId || appliance?.id !== edgeId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n runTask(@Root() payload: RunTaskPayload): RunTaskPayload {\n const { id, step, context } = payload\n const { name, task, description, connection, params } = step\n\n return {\n id, // requestId\n step: {\n name,\n task,\n description,\n connection,\n params: params || {}\n },\n context\n }\n }\n}\n"]}