@aloma.io/integration-sdk 3.0.1-1 → 3.0.1-10

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 (50) hide show
  1. package/build/builder/index.d.mts +1 -1
  2. package/build/builder/index.mjs +15 -11
  3. package/build/builder/runtime-context.d.mts +1 -1
  4. package/build/builder/runtime-context.mjs +10 -7
  5. package/build/builder/transform/index.mjs +18 -18
  6. package/build/cli.d.mts +1 -0
  7. package/build/cli.mjs +81 -2
  8. package/build/controller/index.mjs +5 -5
  9. package/build/index.d.mts +2 -2
  10. package/build/index.mjs +2 -2
  11. package/build/internal/dispatcher/index.cjs +41 -30
  12. package/build/internal/index.cjs +86 -71
  13. package/build/internal/util/jwe/cli.cjs +3 -3
  14. package/build/internal/util/jwe/index.cjs +10 -10
  15. package/build/internal/websocket/config.cjs +7 -7
  16. package/build/internal/websocket/connection/constants.cjs +3 -3
  17. package/build/internal/websocket/connection/index.cjs +9 -9
  18. package/build/internal/websocket/connection/registration.cjs +7 -7
  19. package/build/internal/websocket/index.cjs +3 -3
  20. package/build/internal/websocket/transport/durable.cjs +6 -6
  21. package/build/internal/websocket/transport/index.cjs +18 -18
  22. package/build/internal/websocket/transport/packet.cjs +2 -2
  23. package/build/internal/websocket/transport/processor.cjs +5 -5
  24. package/package.json +3 -2
  25. package/src/builder/index.mts +26 -19
  26. package/src/builder/runtime-context.mts +31 -21
  27. package/src/builder/transform/index.mts +24 -19
  28. package/src/cli.mts +107 -0
  29. package/src/controller/index.mts +13 -7
  30. package/src/index.mts +2 -2
  31. package/src/internal/dispatcher/index.cjs +61 -44
  32. package/src/internal/index.cjs +125 -84
  33. package/src/internal/util/jwe/cli.cjs +3 -3
  34. package/src/internal/util/jwe/index.cjs +21 -17
  35. package/src/internal/websocket/config.cjs +12 -8
  36. package/src/internal/websocket/connection/constants.cjs +3 -3
  37. package/src/internal/websocket/connection/index.cjs +11 -11
  38. package/src/internal/websocket/connection/registration.cjs +9 -9
  39. package/src/internal/websocket/index.cjs +6 -6
  40. package/src/internal/websocket/transport/durable.cjs +9 -9
  41. package/src/internal/websocket/transport/index.cjs +30 -26
  42. package/src/internal/websocket/transport/packet.cjs +4 -4
  43. package/src/internal/websocket/transport/processor.cjs +12 -9
  44. package/template/connector/Containerfile +18 -0
  45. package/template/connector/entrypoint.sh +5 -0
  46. package/template/connector/package.json +25 -0
  47. package/template/connector/src/controller/index.mts +12 -0
  48. package/template/connector/src/index.mts +6 -0
  49. package/template/connector/tsconfig.json +27 -0
  50. package/src/cli.js +0 -1
@@ -1,9 +1,9 @@
1
- const fetch = require('node-fetch');
2
- const {Registration} = require('./registration.cjs');
3
- const C = require('./constants.cjs');
1
+ const fetch = require("node-fetch");
2
+ const { Registration } = require("./registration.cjs");
3
+ const C = require("./constants.cjs");
4
4
 
5
5
  class Connection {
6
- constructor({config, onStart}) {
6
+ constructor({ config, onStart }) {
7
7
  this.config = config;
8
8
  this.onStart = onStart;
9
9
  }
@@ -14,12 +14,12 @@ class Connection {
14
14
 
15
15
  try {
16
16
  const response = await fetch(
17
- config.url() + 'connect',
17
+ config.url() + "connect",
18
18
  C.augmentRequest(
19
19
  {
20
- method: 'POST',
20
+ method: "POST",
21
21
  body: JSON.stringify({}),
22
- headers: {'Content-Type': 'application/json'},
22
+ headers: { "Content-Type": "application/json" },
23
23
  },
24
24
  config
25
25
  )
@@ -51,12 +51,12 @@ class Connection {
51
51
  async close() {
52
52
  try {
53
53
  await fetch(
54
- this.config.url() + 'disconnect',
54
+ this.config.url() + "disconnect",
55
55
  C.augmentRequest(
56
56
  {
57
- method: 'POST',
57
+ method: "POST",
58
58
  body: JSON.stringify({}),
59
- headers: {'Content-Type': 'application/json'},
59
+ headers: { "Content-Type": "application/json" },
60
60
  },
61
61
  this.config
62
62
  )
@@ -67,4 +67,4 @@ class Connection {
67
67
  }
68
68
  }
69
69
 
70
- module.exports = {Connection};
70
+ module.exports = { Connection };
@@ -1,5 +1,5 @@
1
- const fetch = require('node-fetch');
2
- const C = require('./constants.cjs');
1
+ const fetch = require("node-fetch");
2
+ const C = require("./constants.cjs");
3
3
 
4
4
  class Registration {
5
5
  constructor(config) {
@@ -13,19 +13,19 @@ class Registration {
13
13
  const intro = await config.introspect();
14
14
 
15
15
  const response = await fetch(
16
- config.url() + 'register',
16
+ config.url() + "register",
17
17
  C.augmentRegistration(
18
18
  {
19
- method: 'POST',
19
+ method: "POST",
20
20
  body: JSON.stringify({
21
- deployment: process.env.DEPLOYMENT || '',
21
+ deployment: process.env.DEPLOYMENT || "",
22
22
  name: config.name(),
23
23
  version: config.version(),
24
24
  id: config.id(),
25
25
  publicKey: config.publicKey(),
26
- schema: {configSchema, introspect: intro},
26
+ schema: { configSchema, introspect: intro },
27
27
  }),
28
- headers: {'Content-Type': 'application/json'},
28
+ headers: { "Content-Type": "application/json" },
29
29
  },
30
30
  config
31
31
  )
@@ -33,8 +33,8 @@ class Registration {
33
33
 
34
34
  if (response.status === 200) return (await response.json()).key;
35
35
 
36
- throw new Error('authentication failed');
36
+ throw new Error("authentication failed");
37
37
  }
38
38
  }
39
39
 
40
- module.exports = {Registration};
40
+ module.exports = { Registration };
@@ -1,12 +1,12 @@
1
- const WebSocket = require('ws');
2
- const {Connection} = require('./connection/index.cjs');
3
- const {Transport} = require('./transport/index.cjs');
1
+ const WebSocket = require("ws");
2
+ const { Connection } = require("./connection/index.cjs");
3
+ const { Transport } = require("./transport/index.cjs");
4
4
 
5
5
  class WebsocketConnector {
6
- constructor({config, onMessage, onConnect}) {
6
+ constructor({ config, onMessage, onConnect }) {
7
7
  var local = this;
8
8
  this.config = config;
9
- this.transport = new Transport({config, onMessage, onConnect});
9
+ this.transport = new Transport({ config, onMessage, onConnect });
10
10
  }
11
11
 
12
12
  async start() {
@@ -43,4 +43,4 @@ class WebsocketConnector {
43
43
  }
44
44
  }
45
45
 
46
- module.exports = {WebsocketConnector};
46
+ module.exports = { WebsocketConnector };
@@ -1,7 +1,7 @@
1
- const WebSocket = require('ws');
1
+ const WebSocket = require("ws");
2
2
 
3
3
  class DurableWebsocket {
4
- constructor({endpoint, secret, onConnect, onMessage}) {
4
+ constructor({ endpoint, secret, onConnect, onMessage }) {
5
5
  this.endpoint = endpoint;
6
6
  this.secret = secret;
7
7
  this.onConnect = onConnect;
@@ -27,10 +27,10 @@ class DurableWebsocket {
27
27
 
28
28
  const ws = (local.ws = new WebSocket(local.endpoint, [], {
29
29
  rejectUnauthorized: false,
30
- headers: {Authorization: `Bearer ${local.secret}`},
30
+ headers: { Authorization: `Bearer ${local.secret}` },
31
31
  }));
32
32
 
33
- ws.on('open', () => {
33
+ ws.on("open", () => {
34
34
  local.connecting = false;
35
35
  local.fails = 0;
36
36
 
@@ -43,17 +43,17 @@ class DurableWebsocket {
43
43
  local.onConnect(local);
44
44
  });
45
45
 
46
- ws.on('message', (message) => {
46
+ ws.on("message", (message) => {
47
47
  setImmediate(() => local.onMessage(JSON.parse(message)));
48
48
  });
49
49
 
50
- ws.on('error', (message) => {
51
- if (local.fails > 50) console.log('error:', message.message);
50
+ ws.on("error", (message) => {
51
+ if (local.fails > 50) console.log("error:", message.message);
52
52
 
53
53
  ++local.fails;
54
54
  });
55
55
 
56
- ws.on('close', (message) => {
56
+ ws.on("close", (message) => {
57
57
  local.connecting = false;
58
58
 
59
59
  if (!local.closed) setTimeout(() => local.start(), 5000);
@@ -68,4 +68,4 @@ class DurableWebsocket {
68
68
  }
69
69
  }
70
70
 
71
- module.exports = {DurableWebsocket};
71
+ module.exports = { DurableWebsocket };
@@ -1,15 +1,15 @@
1
- const fetch = require('node-fetch');
2
- const C = require('../connection/constants.cjs');
3
- const cuid = require('@paralleldrive/cuid2').init({length: 32});
4
- const {DurableWebsocket} = require('./durable.cjs');
5
- const WebSocket = require('ws');
6
- const {Packet, Callback} = require('./packet.cjs');
1
+ const fetch = require("node-fetch");
2
+ const C = require("../connection/constants.cjs");
3
+ const cuid = require("@paralleldrive/cuid2").init({ length: 32 });
4
+ const { DurableWebsocket } = require("./durable.cjs");
5
+ const WebSocket = require("ws");
6
+ const { Packet, Callback } = require("./packet.cjs");
7
7
 
8
8
  const cleanInterval = 45 * 1000;
9
9
  const pingInterval = 30 * 1000;
10
10
 
11
11
  class Transport {
12
- constructor({config, onMessage, onConnect}) {
12
+ constructor({ config, onMessage, onConnect }) {
13
13
  var local = this;
14
14
 
15
15
  this.config = config;
@@ -44,9 +44,9 @@ class Transport {
44
44
  if (!packets.length) return;
45
45
 
46
46
  try {
47
- local.ws.send(JSON.stringify({p: packets}));
47
+ local.ws.send(JSON.stringify({ p: packets }));
48
48
  } catch (e) {
49
- console.log('could not send packets ', e);
49
+ console.log("could not send packets ", e);
50
50
  packets.forEach((packet) => local.packets.unshift(packet));
51
51
  }
52
52
  }
@@ -61,25 +61,29 @@ class Transport {
61
61
 
62
62
  this.running = true;
63
63
 
64
- const ws = (local.ws = new WebSocket(config.wsUrl(), ['connector'], C.augmentRequest({headers: {}}, config)));
64
+ const ws = (local.ws = new WebSocket(
65
+ config.wsUrl(),
66
+ ["connector"],
67
+ C.augmentRequest({ headers: {} }, config)
68
+ ));
65
69
 
66
- ws.on('open', () => {
67
- console.log('websocket connected');
70
+ ws.on("open", () => {
71
+ console.log("websocket connected");
68
72
  local.connected = true;
69
73
  local.pinger = setInterval(() => ws.ping(() => null), pingInterval);
70
74
 
71
75
  local.onConnect(local);
72
76
  });
73
77
 
74
- ws.on('message', (message) => {
78
+ ws.on("message", (message) => {
75
79
  setTimeout(() => local.onMessages(JSON.parse(message)), 0);
76
80
  });
77
81
 
78
- ws.on('error', (message) => {
79
- console.log('error:', message);
82
+ ws.on("error", (message) => {
83
+ console.log("error:", message);
80
84
  });
81
85
 
82
- ws.on('close', (message) => {
86
+ ws.on("close", (message) => {
83
87
  local.connected = false;
84
88
  clearInterval(local.pinger);
85
89
 
@@ -87,8 +91,8 @@ class Transport {
87
91
  });
88
92
  }
89
93
 
90
- newDurableWebsocket({endpoint, secret, onConnect, onMessage}) {
91
- return new DurableWebsocket({endpoint, secret, onConnect, onMessage});
94
+ newDurableWebsocket({ endpoint, secret, onConnect, onMessage }) {
95
+ return new DurableWebsocket({ endpoint, secret, onConnect, onMessage });
92
96
  }
93
97
 
94
98
  send(packet) {
@@ -115,7 +119,7 @@ class Transport {
115
119
  try {
116
120
  this.callbacks[packet.cb()].cb(packet.args());
117
121
  } catch (e) {
118
- console.log('error processing packet', e, packet);
122
+ console.log("error processing packet", e, packet);
119
123
  } finally {
120
124
  delete this.callbacks[packet.cb()];
121
125
  }
@@ -127,10 +131,10 @@ class Transport {
127
131
  }
128
132
 
129
133
  newPacket(data, cb, cbKey) {
130
- const packet = new Packet({...data});
134
+ const packet = new Packet({ ...data });
131
135
 
132
136
  if (cb) {
133
- this.callbacks[cbKey || packet.id()] = new Callback({cb});
137
+ this.callbacks[cbKey || packet.id()] = new Callback({ cb });
134
138
  packet.cb(cbKey || packet.id());
135
139
  }
136
140
 
@@ -139,7 +143,7 @@ class Transport {
139
143
 
140
144
  clean() {
141
145
  var local = this;
142
- const cbs = {...this.callbacks},
146
+ const cbs = { ...this.callbacks },
143
147
  then = Date.now() - 5 * 60 * 1000;
144
148
 
145
149
  Object.keys(cbs).forEach((key) => {
@@ -147,12 +151,12 @@ class Transport {
147
151
  if (!cb) return;
148
152
 
149
153
  if (cb.created < then) {
150
- console.log('callback timeout', key);
154
+ console.log("callback timeout", key);
151
155
 
152
156
  try {
153
- cb.cb({error: 'timeout'});
157
+ cb.cb({ error: "timeout" });
154
158
  } catch (e) {
155
- console.log('error while callback', key, cb, e);
159
+ console.log("error while callback", key, cb, e);
156
160
  }
157
161
 
158
162
  delete local.callbacks[key];
@@ -180,4 +184,4 @@ class Transport {
180
184
  }
181
185
  }
182
186
 
183
- module.exports = {Transport};
187
+ module.exports = { Transport };
@@ -1,5 +1,5 @@
1
- const fetch = require('node-fetch');
2
- const cuid = require('@paralleldrive/cuid2').init({length: 32});
1
+ const fetch = require("node-fetch");
2
+ const cuid = require("@paralleldrive/cuid2").init({ length: 32 });
3
3
 
4
4
  class Packet {
5
5
  constructor(data = {}) {
@@ -45,10 +45,10 @@ class Packet {
45
45
  }
46
46
 
47
47
  class Callback {
48
- constructor({cb}) {
48
+ constructor({ cb }) {
49
49
  this.cb = cb;
50
50
  this.created = Date.now();
51
51
  }
52
52
  }
53
53
 
54
- module.exports = {Callback, Packet};
54
+ module.exports = { Callback, Packet };
@@ -1,7 +1,7 @@
1
- const {Packet, Callback} = require('./packet.cjs');
1
+ const { Packet, Callback } = require("./packet.cjs");
2
2
 
3
3
  class Processor {
4
- constructor({transport, processPacket}) {
4
+ constructor({ transport, processPacket }) {
5
5
  var local = this;
6
6
 
7
7
  this.transport = transport;
@@ -26,7 +26,10 @@ class Processor {
26
26
  var local = this;
27
27
 
28
28
  if (packet.args().packet) {
29
- await local.processPacket0(local.transport.newPacket(packet.args().packet), packet);
29
+ await local.processPacket0(
30
+ local.transport.newPacket(packet.args().packet),
31
+ packet
32
+ );
30
33
  } else {
31
34
  await local.processPacket0(packet, packet);
32
35
  }
@@ -40,27 +43,27 @@ class Processor {
40
43
  try {
41
44
  callbacks[packet.cb()](packet.args());
42
45
  } catch (e) {
43
- console.log('error in callback', callbacks[packet.cb()], packet);
46
+ console.log("error in callback", callbacks[packet.cb()], packet);
44
47
  }
45
48
 
46
49
  delete local.transport.callbacks[packet.cb()];
47
50
  } else if (packet.event()) {
48
- console.log('handle event packet', packet);
51
+ console.log("handle event packet", packet);
49
52
  } else {
50
53
  try {
51
54
  const result = await local._processPacket(packet);
52
55
  const reply = local.transport.newPacket({});
53
56
 
54
- reply.method('connector.reply');
57
+ reply.method("connector.reply");
55
58
  reply.cb(original.cb());
56
- reply.args({...result});
59
+ reply.args({ ...result });
57
60
 
58
61
  local.transport.send(reply);
59
62
  } catch (e) {
60
- console.log('error processing packet', e, packet);
63
+ console.log("error processing packet", e, packet);
61
64
  }
62
65
  }
63
66
  }
64
67
  }
65
68
 
66
- module.exports = {Processor};
69
+ module.exports = { Processor };
@@ -0,0 +1,18 @@
1
+ FROM node:16-alpine3.18
2
+
3
+ ENV NODE_ENV production
4
+
5
+ WORKDIR /connector/
6
+
7
+ COPY ./package.json ./
8
+ COPY ./yarn.lock ./
9
+ COPY ./entrypoint.sh ./
10
+ COPY ./src ./src
11
+
12
+ RUN set -e; adduser -S -u 1111 connector
13
+
14
+ RUN set -e; apk add --no-cache git; yarn config set --home enableTelemetry 0; chmod 755 /connector/entrypoint.sh; cd /connector/; yarn install;
15
+
16
+ USER connector
17
+
18
+ ENTRYPOINT ["/connector/entrypoint.sh"]
@@ -0,0 +1,5 @@
1
+ #!/bin/sh -e
2
+
3
+ cd /connector/
4
+
5
+ exec node src/index.js $@
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "TODO",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "author": "",
6
+ "connectorId": "TODO",
7
+ "license": "Apache-2.0",
8
+ "type": "module",
9
+ "scripts": {
10
+ "start": "node build/index.mjs",
11
+ "dev": "./node_modules/typescript/bin/tsc --watch",
12
+ "build": "rm -rf build; mkdir -p build/controller; cp ./src/controller/index.mts ./build/controller/.controller-for-types.mts; ./node_modules/typescript/bin/tsc",
13
+ "test": "./node_modules/mocha/bin/_mocha --recursive",
14
+ "format": "yarn prettier --write src/"
15
+ },
16
+ "dependencies": {
17
+ "@aloma.io/integration-sdk": "^3"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^18",
21
+ "mocha": "^10",
22
+ "prettier": "^2",
23
+ "typescript": "^5"
24
+ }
25
+ }
@@ -0,0 +1,12 @@
1
+ import {AbstractController} from '@aloma.io/integration-sdk';
2
+
3
+ export default class Controller extends AbstractController {
4
+
5
+ /**
6
+ * say hello
7
+ */
8
+ async hello(args: any)
9
+ {
10
+ return "hello world";
11
+ }
12
+ }
@@ -0,0 +1,6 @@
1
+ import {Builder} from '@aloma.io/integration-sdk';
2
+
3
+ const builder = new Builder();
4
+ const runtime = await builder.build();
5
+
6
+ await runtime.start();
@@ -0,0 +1,27 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2022",
4
+ "skipLibCheck": true,
5
+ "module": "node16",
6
+ "moduleResolution": "node16",
7
+ "lib": ["es2015", "es6", "esnext"],
8
+ "declaration": true,
9
+ "allowJs": true,
10
+ "outDir": "build",
11
+ "rootDir": "src/",
12
+ "strict": true,
13
+ "noImplicitAny": false,
14
+ "esModuleInterop": true,
15
+ "resolveJsonModule": true,
16
+ "experimentalDecorators": true,
17
+ "emitDecoratorMetadata": true,
18
+ "allowSyntheticDefaultImports": true
19
+ },
20
+ "include": [
21
+ "src/**/*"
22
+ ],
23
+ "exclude": [
24
+ "node_modules/**/*",
25
+ "dist/**/*"
26
+ ]
27
+ }
package/src/cli.js DELETED
@@ -1 +0,0 @@
1
- console.log('hello world');