@haku-sci/utils 8.0.1 → 8.1.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/dist/TCP/tcp.service.d.ts +1 -0
- package/dist/TCP/tcp.service.js +28 -6
- package/dist/TCP/tcp.service.js.map +1 -1
- package/dist/wss/wss-microservice.service.d.ts +4 -1
- package/dist/wss/wss-microservice.service.js +7 -1
- package/dist/wss/wss-microservice.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,5 +3,6 @@ export declare class TCPService {
|
|
|
3
3
|
static sendMessage(service: any, action: string, resource?: string, payload?: {}): Promise<any>;
|
|
4
4
|
static registerHakuSciMessageHandlers(app: any, logger: Logger): Promise<void>;
|
|
5
5
|
private static enablePatternRouting;
|
|
6
|
+
private static normalizeErrors;
|
|
6
7
|
private static wrapHandler;
|
|
7
8
|
}
|
package/dist/TCP/tcp.service.js
CHANGED
|
@@ -20,15 +20,22 @@ const constants_2 = require("@nestjs/common/constants");
|
|
|
20
20
|
const nestjs_discovery_1 = require("@golevelup/nestjs-discovery");
|
|
21
21
|
let TCPService = TCPService_1 = class TCPService {
|
|
22
22
|
static async sendMessage(service, action, resource, payload = {}) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
let client;
|
|
24
|
+
try {
|
|
25
|
+
client = await microservices_1.ClientProxyFactory.create({
|
|
26
|
+
transport: microservices_1.Transport.TCP,
|
|
27
|
+
options: await consul_1.Consul.getServiceURI(service),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
const status = err?.status || err?.statusCode || common_1.HttpStatus.SERVICE_UNAVAILABLE;
|
|
32
|
+
throw new common_1.HttpException({ message: err?.message || 'Unknown error', service }, status);
|
|
33
|
+
}
|
|
27
34
|
try {
|
|
28
35
|
payload["sender"] = await utils.microServiceName();
|
|
29
36
|
let response$ = await client.send([resource, action].join("/"), payload).pipe((0, rxjs_1.catchError)(err => {
|
|
30
37
|
const inner = err?.error ?? err;
|
|
31
|
-
const status = inner?.status || inner?.statusCode || err?.status || common_1.HttpStatus.
|
|
38
|
+
const status = inner?.status || inner?.statusCode || err?.status || common_1.HttpStatus.SERVICE_UNAVAILABLE;
|
|
32
39
|
const message = (typeof inner === 'object' ? inner?.message : inner) ||
|
|
33
40
|
err?.message ||
|
|
34
41
|
'Unknown error';
|
|
@@ -112,6 +119,20 @@ let TCPService = TCPService_1 = class TCPService {
|
|
|
112
119
|
return null;
|
|
113
120
|
};
|
|
114
121
|
}
|
|
122
|
+
static normalizeErrors(result) {
|
|
123
|
+
if (!result || typeof result !== 'object' || !('errors' in result))
|
|
124
|
+
return result;
|
|
125
|
+
const errors = result.errors;
|
|
126
|
+
if (!errors || Array.isArray(errors) || typeof errors !== 'object')
|
|
127
|
+
return result;
|
|
128
|
+
return {
|
|
129
|
+
...result,
|
|
130
|
+
errors: Object.entries(errors).map(([id, error]) => ({
|
|
131
|
+
id,
|
|
132
|
+
message: error instanceof Error ? error.message : String(error),
|
|
133
|
+
})),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
115
136
|
static wrapHandler(instance, methodName, logger) {
|
|
116
137
|
const prototype = Object.getPrototypeOf(instance);
|
|
117
138
|
const tcpParamMeta = Reflect.getMetadata(tcp_param_decorator_1.TCP_PARAM_METADATA_KEY, prototype, methodName) ?? [];
|
|
@@ -121,7 +142,8 @@ let TCPService = TCPService_1 = class TCPService {
|
|
|
121
142
|
const args = [tcpParamMeta.length > 0 ? payload : data];
|
|
122
143
|
for (const { index, name } of tcpParamMeta)
|
|
123
144
|
args[index] = params?.[name];
|
|
124
|
-
|
|
145
|
+
const result = await instance[methodName].apply(instance, args);
|
|
146
|
+
return TCPService_1.normalizeErrors(result);
|
|
125
147
|
}
|
|
126
148
|
catch (err) {
|
|
127
149
|
const host = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/TCP/tcp.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,yDAAmF;AACnF,+DAA+D;AAC/D,+BAAsF;AACtF,kCAAiC;AACjC,mDAAgD;AAEhD,2CAA8F;AAC9F,qEAAsE;AACtE,+DAAmE;AACnE,wDAAyD;AACzD,kEAAgF;AAGzE,IAAM,UAAU,kBAAhB,MAAM,UAAU;IACnB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAc,EAAE,QAAiB,EAAE,OAAO,GAAC,EAAE;QAC3E,
|
|
1
|
+
{"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/TCP/tcp.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { WebSocketServer } from 'ws';
|
|
1
|
+
import { WebSocketServer, WebSocket } from 'ws';
|
|
2
2
|
import * as http from 'http';
|
|
3
3
|
import * as https from 'https';
|
|
4
|
+
import { IncomingMessage } from 'http';
|
|
5
|
+
import { TicketData } from './ticket.service';
|
|
4
6
|
import { BridgeContext } from './bridge-registry.service';
|
|
5
7
|
export interface WssSslOptions {
|
|
6
8
|
key: Buffer | string;
|
|
@@ -11,6 +13,7 @@ export interface WssBootstrapOptions {
|
|
|
11
13
|
port?: number;
|
|
12
14
|
ssl?: WssSslOptions;
|
|
13
15
|
onDisconnect?: (context: BridgeContext) => void;
|
|
16
|
+
onAuthenticated?: (ws: WebSocket, req: IncomingMessage, ticketData: TicketData) => void;
|
|
14
17
|
}
|
|
15
18
|
export declare class WssMicroservice {
|
|
16
19
|
private static logger;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WssMicroservice = void 0;
|
|
4
4
|
const ws_1 = require("ws");
|
|
5
|
+
const http = require("http");
|
|
5
6
|
const https = require("https");
|
|
6
7
|
const fs_1 = require("fs");
|
|
7
8
|
const common_1 = require("@nestjs/common");
|
|
@@ -15,7 +16,8 @@ class WssMicroservice {
|
|
|
15
16
|
if (!server) {
|
|
16
17
|
const address = process.env.ADDRESS || '0.0.0.0';
|
|
17
18
|
const port = Number(process.env.WSS_PORT) || options.port || 3001;
|
|
18
|
-
|
|
19
|
+
const ssl = await this.resolveSsl();
|
|
20
|
+
server = ssl ? https.createServer(ssl) : http.createServer();
|
|
19
21
|
server.on('request', (req, res) => this.handleHttpRequest(req, res));
|
|
20
22
|
server.listen(port, address);
|
|
21
23
|
this.logger.log(`address to be listened to: ${address}`);
|
|
@@ -69,6 +71,10 @@ class WssMicroservice {
|
|
|
69
71
|
ws.close(4001, 'invalid or expired ticket');
|
|
70
72
|
return;
|
|
71
73
|
}
|
|
74
|
+
if (options.onAuthenticated) {
|
|
75
|
+
options.onAuthenticated(ws, req, ticketData);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
72
78
|
const context = bridge_registry_service_1.BridgeRegistry.register(ticketData.id, ticketData.properties, ws);
|
|
73
79
|
ws.on('message', (raw) => {
|
|
74
80
|
(0, utils_1.dispatchMessage)(context.id, context.properties, parseMessage(raw.toString()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wss-microservice.service.js","sourceRoot":"","sources":["../../src/wss/wss-microservice.service.ts"],"names":[],"mappings":";;;AAAA,2BAAgD;
|
|
1
|
+
{"version":3,"file":"wss-microservice.service.js","sourceRoot":"","sources":["../../src/wss/wss-microservice.service.ts"],"names":[],"mappings":"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"}
|