ismx-nexo-node-app 0.3.24 → 0.3.26
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.
|
@@ -31,6 +31,21 @@ class BusinessServer extends Business_1.default {
|
|
|
31
31
|
setServices(services) {
|
|
32
32
|
services.forEach(this.publish);
|
|
33
33
|
}
|
|
34
|
+
setOnStarted(listener) {
|
|
35
|
+
this.onStarted = listener;
|
|
36
|
+
}
|
|
37
|
+
setOnRequest(listener) {
|
|
38
|
+
this.onRequest = listener;
|
|
39
|
+
}
|
|
40
|
+
setOnResponse(listener) {
|
|
41
|
+
this.onResponse = listener;
|
|
42
|
+
}
|
|
43
|
+
setOnError(listener) {
|
|
44
|
+
this.onError = listener;
|
|
45
|
+
}
|
|
46
|
+
setOnEnd(listener) {
|
|
47
|
+
this.onEnd = listener;
|
|
48
|
+
}
|
|
34
49
|
publish(service) {
|
|
35
50
|
switch (service.method) {
|
|
36
51
|
case "GET":
|
|
@@ -55,7 +70,7 @@ class BusinessServer extends Business_1.default {
|
|
|
55
70
|
}
|
|
56
71
|
run(service) {
|
|
57
72
|
return (request, socket) => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
73
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
59
74
|
let code;
|
|
60
75
|
let response = Service_1.HttpResponse.ko(500, "Internal server error");
|
|
61
76
|
// Asigna un valor único a la llamada de la API.
|
|
@@ -70,24 +85,27 @@ class BusinessServer extends Business_1.default {
|
|
|
70
85
|
}
|
|
71
86
|
catch (e) { }
|
|
72
87
|
response = yield ((_b = service.serve) === null || _b === void 0 ? void 0 : _b.call(service, request));
|
|
73
|
-
response.httpCode = (_c = response.httpCode) !== null && _c !== void 0 ? _c : 200;
|
|
74
88
|
try {
|
|
75
|
-
response = ((
|
|
89
|
+
response = ((_d = (_c = this.onResponse) === null || _c === void 0 ? void 0 : _c.call(this, request, response)) !== null && _d !== void 0 ? _d : response);
|
|
76
90
|
}
|
|
77
91
|
catch (e) { }
|
|
92
|
+
response.httpCode = (_e = response.httpCode) !== null && _e !== void 0 ? _e : 200;
|
|
78
93
|
}
|
|
79
94
|
catch (error) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
95
|
+
try {
|
|
96
|
+
error = (_f = this.onError) === null || _f === void 0 ? void 0 : _f.call(this, request, error);
|
|
97
|
+
}
|
|
98
|
+
catch (e) { }
|
|
99
|
+
if (error instanceof Service_1.HttpResponse)
|
|
100
|
+
response = error;
|
|
101
|
+
else
|
|
102
|
+
response = Service_1.HttpResponse.ko((_g = error.httpCode) !== null && _g !== void 0 ? _g : 500, error.content);
|
|
86
103
|
}
|
|
87
104
|
finally {
|
|
88
|
-
|
|
105
|
+
let status = (_h = response === null || response === void 0 ? void 0 : response.httpCode) !== null && _h !== void 0 ? _h : 500;
|
|
106
|
+
socket.status(status).send(response === null || response === void 0 ? void 0 : response.content);
|
|
89
107
|
try {
|
|
90
|
-
(
|
|
108
|
+
(_j = this.onEnd) === null || _j === void 0 ? void 0 : _j.call(this, request, response);
|
|
91
109
|
}
|
|
92
110
|
catch (e) { }
|
|
93
111
|
}
|
|
@@ -2,14 +2,19 @@ import Service, { HttpRequest, HttpResponse } from "../api/Service";
|
|
|
2
2
|
import Business from "./Business";
|
|
3
3
|
export default class BusinessServer extends Business {
|
|
4
4
|
private app;
|
|
5
|
-
protected onStarted?: () => any;
|
|
6
|
-
protected onRequest?: (request: HttpRequest) => any;
|
|
7
|
-
protected onResponse?: (request: HttpRequest, response: HttpResponse) => HttpResponse<any> | undefined;
|
|
8
|
-
protected onError?: (request: HttpRequest, error: Error) => HttpResponse<any> | undefined | void;
|
|
9
|
-
protected onEnd?: (request: HttpRequest, response: HttpResponse) => any;
|
|
10
5
|
constructor();
|
|
11
6
|
start(port: number): void;
|
|
12
7
|
setServices(services: Service<any, any>[]): void;
|
|
8
|
+
private onStarted?;
|
|
9
|
+
setOnStarted(listener: () => any): void;
|
|
10
|
+
private onRequest?;
|
|
11
|
+
setOnRequest(listener: (request: HttpRequest) => void): void;
|
|
12
|
+
private onResponse?;
|
|
13
|
+
setOnResponse(listener: (request: HttpRequest, response: HttpResponse) => HttpResponse | void): void;
|
|
14
|
+
private onError?;
|
|
15
|
+
setOnError(listener: (request: HttpRequest, error: Error) => HttpResponse): void;
|
|
16
|
+
private onEnd?;
|
|
17
|
+
setOnEnd(listener: (request: HttpRequest, response: HttpResponse) => any): void;
|
|
13
18
|
private publish;
|
|
14
19
|
private run;
|
|
15
20
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ismx-nexo-node-app",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.26",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "rm -rf ./dist && npx tsc",
|
|
@@ -27,8 +27,6 @@
|
|
|
27
27
|
"@types/node": "^14.0.5",
|
|
28
28
|
"@types/node-fetch": "^2.6.11",
|
|
29
29
|
"@types/pg": "^8.11.10",
|
|
30
|
-
"rollup": "^4.24.4",
|
|
31
|
-
"rollup-plugin-dts": "^6.1.1",
|
|
32
30
|
"tsx": "^4.19.1",
|
|
33
31
|
"typescript": "^5.6.3"
|
|
34
32
|
}
|
|
@@ -7,11 +7,6 @@ import cors from 'cors';
|
|
|
7
7
|
export default class BusinessServer extends Business
|
|
8
8
|
{
|
|
9
9
|
private app: core.Express;
|
|
10
|
-
protected onStarted?: ()=>any;
|
|
11
|
-
protected onRequest?: (request: HttpRequest) => any;
|
|
12
|
-
protected onResponse?: (request: HttpRequest, response: HttpResponse) => HttpResponse<any> | undefined;
|
|
13
|
-
protected onError?: (request: HttpRequest, error: Error) => HttpResponse<any> | undefined | void
|
|
14
|
-
protected onEnd?: (request: HttpRequest, response: HttpResponse) => any;
|
|
15
10
|
|
|
16
11
|
constructor() {
|
|
17
12
|
super()
|
|
@@ -31,6 +26,31 @@ export default class BusinessServer extends Business
|
|
|
31
26
|
services.forEach(this.publish);
|
|
32
27
|
}
|
|
33
28
|
|
|
29
|
+
private onStarted?: ()=>any;
|
|
30
|
+
setOnStarted(listener: ()=>any) {
|
|
31
|
+
this.onStarted = listener;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private onRequest?: (request: HttpRequest) => void;
|
|
35
|
+
setOnRequest(listener: (request: HttpRequest) => void) {
|
|
36
|
+
this.onRequest = listener;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private onResponse?: (request: HttpRequest, response: HttpResponse) => HttpResponse | void;
|
|
40
|
+
setOnResponse(listener: (request: HttpRequest, response: HttpResponse) => HttpResponse | void) {
|
|
41
|
+
this.onResponse = listener;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private onError?: (request: HttpRequest, error: Error) => HttpResponse | void
|
|
45
|
+
setOnError(listener: (request: HttpRequest, error: Error) => HttpResponse) {
|
|
46
|
+
this.onError = listener;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
private onEnd?: (request: HttpRequest, response: HttpResponse) => any;
|
|
50
|
+
setOnEnd(listener: (request: HttpRequest, response: HttpResponse) => any) {
|
|
51
|
+
this.onEnd = listener;
|
|
52
|
+
}
|
|
53
|
+
|
|
34
54
|
private publish<Req=any, Res=any>(service: Service<Req, Res>) {
|
|
35
55
|
switch (service.method) {
|
|
36
56
|
case "GET": this.app.get(service.endpoint, this.run(service)); break;
|
|
@@ -58,18 +78,17 @@ export default class BusinessServer extends Business
|
|
|
58
78
|
try {
|
|
59
79
|
try { this.onRequest?.(request); } catch(e) { }
|
|
60
80
|
response = await service.serve?.(request);
|
|
61
|
-
response.httpCode = response.httpCode ?? 200;
|
|
62
81
|
try { response = (this.onResponse?.(request, response) ?? response) } catch(e) { }
|
|
82
|
+
response.httpCode = response.httpCode ?? 200;
|
|
63
83
|
|
|
64
84
|
} catch (error: any) {
|
|
65
|
-
this.onError?.(request, error);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
let content = { code: error.code, description: error.description, debug };
|
|
69
|
-
response = HttpResponse.ko(error.httpCode, content);
|
|
85
|
+
try { error = this.onError?.(request, error); } catch (e) { }
|
|
86
|
+
if (error instanceof HttpResponse) response = error;
|
|
87
|
+
else response = HttpResponse.ko(error.httpCode ?? 500, error.content);
|
|
70
88
|
|
|
71
89
|
} finally {
|
|
72
|
-
|
|
90
|
+
let status = response?.httpCode ?? 500;
|
|
91
|
+
socket.status(status).send(response?.content);
|
|
73
92
|
try { this.onEnd?.(request, response); } catch(e) { }
|
|
74
93
|
}
|
|
75
94
|
}}
|