configurapi-runner-ws 1.18.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.js +10 -8
- package/src/wsAdapter.js +9 -4
- package/src/wsPostbackFunction.js +2 -2
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -5,7 +5,8 @@ const events = require('events');
|
|
|
5
5
|
const Configurapi = require('configurapi');
|
|
6
6
|
const { WebSocketServer } = require('ws');
|
|
7
7
|
const { randomUUID } = require("node:crypto");
|
|
8
|
-
const {
|
|
8
|
+
const { Route, Policy, PolicyHandlerLoader, LogLevel } = require('configurapi');
|
|
9
|
+
const { WsFrame } = require('configurapi-handler-ws');
|
|
9
10
|
const oneliner = require('one-liner');
|
|
10
11
|
const wsAdapter = require('./wsAdapter');
|
|
11
12
|
const URL = require('url');
|
|
@@ -64,9 +65,10 @@ module.exports = class HttpRunner extends events.EventEmitter
|
|
|
64
65
|
|
|
65
66
|
if(connectionId && connections.has(connectionId))
|
|
66
67
|
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
e.payload.headers = e.payload.headers || {};
|
|
69
|
+
e.payload.headers['connection-id'] = connectionId;
|
|
70
|
+
|
|
71
|
+
await wsAdapter.write(connections.get(connectionId).ws, e.payload);
|
|
70
72
|
}
|
|
71
73
|
else
|
|
72
74
|
{
|
|
@@ -240,7 +242,7 @@ module.exports = class HttpRunner extends events.EventEmitter
|
|
|
240
242
|
event.response.headers['Sec-WebSocket-Protocol'] = protocol;
|
|
241
243
|
}
|
|
242
244
|
|
|
243
|
-
await wsAdapter.write(ws, event.response);
|
|
245
|
+
await wsAdapter.write(ws, new WsFrame(event.response));
|
|
244
246
|
}
|
|
245
247
|
else
|
|
246
248
|
{
|
|
@@ -252,7 +254,7 @@ module.exports = class HttpRunner extends events.EventEmitter
|
|
|
252
254
|
}
|
|
253
255
|
event.response.headers['message-id'] = event.request.headers?.['message-id'];
|
|
254
256
|
|
|
255
|
-
await wsAdapter.write(ws, event.response); // Send response back to the caller.
|
|
257
|
+
await wsAdapter.write(ws, new WsFrame(event.response)); // Send response back to the caller.
|
|
256
258
|
}
|
|
257
259
|
|
|
258
260
|
return event.response;
|
|
@@ -269,7 +271,7 @@ module.exports = class HttpRunner extends events.EventEmitter
|
|
|
269
271
|
|
|
270
272
|
try
|
|
271
273
|
{
|
|
272
|
-
await wsAdapter.write(ws, response);
|
|
274
|
+
await wsAdapter.write(ws, new WsFrame(response));
|
|
273
275
|
}
|
|
274
276
|
catch(err)
|
|
275
277
|
{
|
|
@@ -296,7 +298,7 @@ module.exports = class HttpRunner extends events.EventEmitter
|
|
|
296
298
|
await this.service.process(event);
|
|
297
299
|
|
|
298
300
|
serverResponse.writeHead(200, event.response.headers);
|
|
299
|
-
serverResponse.end(JSON.stringify(event.response));
|
|
301
|
+
serverResponse.end(JSON.stringify(event.response.body));
|
|
300
302
|
}
|
|
301
303
|
catch (error)
|
|
302
304
|
{
|
package/src/wsAdapter.js
CHANGED
|
@@ -3,6 +3,7 @@ const { WebSocket } = require('ws');
|
|
|
3
3
|
const StreamResponse = require('configurapi-handler-ws').StreamResponse;
|
|
4
4
|
const Response = require('configurapi').Response;
|
|
5
5
|
const { randomUUID } = require("node:crypto");
|
|
6
|
+
const WsFrame = require('configurapi-handler-ws').WsFrame;
|
|
6
7
|
|
|
7
8
|
module.exports = {
|
|
8
9
|
write: async function(ws, message)
|
|
@@ -72,9 +73,11 @@ module.exports = {
|
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
const headers = { 'message-id': streamId, 'x-stream': 'chunk', 'x-stream-id': streamId, 'Content-Type': 'text/plain' };
|
|
75
|
-
|
|
76
|
+
|
|
77
|
+
const chunkResponse = new Response(bucket, 200, { });
|
|
78
|
+
const frame = new WsFrame(chunkResponse, headers);
|
|
76
79
|
|
|
77
|
-
ws.send(JSON.stringify(
|
|
80
|
+
ws.send(JSON.stringify(frame), (err) =>
|
|
78
81
|
{
|
|
79
82
|
if (err) { cleanup(); return safeReject(err); }
|
|
80
83
|
});
|
|
@@ -140,9 +143,11 @@ module.exports = {
|
|
|
140
143
|
if (ws.readyState === WebSocket.OPEN)
|
|
141
144
|
{
|
|
142
145
|
const headers = { 'message-id': streamId, 'x-stream-id': streamId, 'x-stream': 'done' };
|
|
143
|
-
const response = new Response('', 204, headers);
|
|
144
146
|
|
|
145
|
-
|
|
147
|
+
const doneResponse = new Response('', 204);
|
|
148
|
+
const frame = new WsFrame(doneResponse, headers);
|
|
149
|
+
|
|
150
|
+
ws.send(JSON.stringify(frame), (err) =>
|
|
146
151
|
{
|
|
147
152
|
cleanup();
|
|
148
153
|
return err ? safeReject(err) : safeResolve();
|
|
@@ -4,8 +4,8 @@ async function wsPostbackFunction(endpoint, response)
|
|
|
4
4
|
{
|
|
5
5
|
let resp = await fetch(endpoint, {
|
|
6
6
|
method: 'POST',
|
|
7
|
-
headers: response.headers
|
|
8
|
-
body: typeof response === '
|
|
7
|
+
headers: {...response.headers, 'content-type': 'application/json'},
|
|
8
|
+
body: typeof response === 'string' ? response: JSON.stringify(response)
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
if(resp.status >= 400)
|