@webtypen/webframez-core 0.0.54 → 0.0.56
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/lib/LambdaApplication.d.ts +1 -1
- package/lib/Router/Response.d.ts +12 -2
- package/lib/Router/Response.js +34 -0
- package/lib/Router/Router.d.ts +2 -1
- package/lib/Router/Router.js +17 -1
- package/package.json +1 -1
- package/src/Router/Response.ts +26 -2
- package/src/Router/Router.ts +20 -2
package/lib/Router/Response.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { ServerResponse } from "http";
|
|
2
|
+
import { IncomingMessage, ServerResponse } from "http";
|
|
3
3
|
export declare class Response {
|
|
4
4
|
res?: ServerResponse;
|
|
5
5
|
statusCode: number;
|
|
6
6
|
content?: any | null | undefined;
|
|
7
7
|
headers: {
|
|
8
|
-
[key: string]:
|
|
8
|
+
[key: string]: any;
|
|
9
9
|
};
|
|
10
|
+
events: any;
|
|
10
11
|
/**
|
|
11
12
|
* Mode
|
|
12
13
|
*/
|
|
@@ -40,4 +41,13 @@ export declare class Response {
|
|
|
40
41
|
* @param content
|
|
41
42
|
*/
|
|
42
43
|
send(content: any): this;
|
|
44
|
+
registerEvent(eventKey: string, func: any): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Runs the registered events for an event-type
|
|
47
|
+
*
|
|
48
|
+
* @param eventKey
|
|
49
|
+
* @param req
|
|
50
|
+
* @param payload
|
|
51
|
+
*/
|
|
52
|
+
handleEvents(eventKey: string, req: IncomingMessage, payload: any): Promise<void>;
|
|
43
53
|
}
|
package/lib/Router/Response.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.Response = void 0;
|
|
4
13
|
class Response {
|
|
5
14
|
constructor(options) {
|
|
6
15
|
this.statusCode = 200;
|
|
7
16
|
this.headers = {};
|
|
17
|
+
this.events = { after: [] };
|
|
8
18
|
/**
|
|
9
19
|
* Mode
|
|
10
20
|
*/
|
|
@@ -72,5 +82,29 @@ class Response {
|
|
|
72
82
|
}
|
|
73
83
|
return this;
|
|
74
84
|
}
|
|
85
|
+
registerEvent(eventKey, func) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
this.events[eventKey].push({ function: func });
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Runs the registered events for an event-type
|
|
92
|
+
*
|
|
93
|
+
* @param eventKey
|
|
94
|
+
* @param req
|
|
95
|
+
* @param payload
|
|
96
|
+
*/
|
|
97
|
+
handleEvents(eventKey, req, payload) {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
if (!this.events || !this.events[eventKey] || this.events[eventKey].length < 1) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
for (let i in this.events[eventKey]) {
|
|
103
|
+
if (this.events[eventKey][i].function && typeof this.events[eventKey][i].function === "function") {
|
|
104
|
+
this.events[eventKey][i].function(req, payload);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
75
109
|
}
|
|
76
110
|
exports.Response = Response;
|
package/lib/Router/Router.d.ts
CHANGED
|
@@ -110,9 +110,10 @@ declare class RouterFacade {
|
|
|
110
110
|
statusCode: number;
|
|
111
111
|
body: any;
|
|
112
112
|
headers: {
|
|
113
|
-
[key: string]:
|
|
113
|
+
[key: string]: any;
|
|
114
114
|
};
|
|
115
115
|
}>;
|
|
116
|
+
handleResponseAfter(response: any, req: any, payload: any): Promise<void>;
|
|
116
117
|
requestConsoleLog(req: IncomingMessage, httpCode: number): void;
|
|
117
118
|
}
|
|
118
119
|
export declare const Router: RouterFacade;
|
package/lib/Router/Router.js
CHANGED
|
@@ -294,6 +294,7 @@ class RouterFacade {
|
|
|
294
294
|
for (let middlewareKey of route.options.middleware) {
|
|
295
295
|
const middleware = this.kernel.middleware[middlewareKey];
|
|
296
296
|
if (!middleware) {
|
|
297
|
+
this.handleResponseAfter(response, req, { status: 500 });
|
|
297
298
|
if (this.mode === "aws-lambda") {
|
|
298
299
|
return {
|
|
299
300
|
statusCode: 500,
|
|
@@ -318,6 +319,7 @@ class RouterFacade {
|
|
|
318
319
|
}
|
|
319
320
|
catch (e) {
|
|
320
321
|
console.error(e);
|
|
322
|
+
this.handleResponseAfter(response, req, { status: 500 });
|
|
321
323
|
if (this.mode === "aws-lambda") {
|
|
322
324
|
return {
|
|
323
325
|
statusCode: 500,
|
|
@@ -336,6 +338,7 @@ class RouterFacade {
|
|
|
336
338
|
});
|
|
337
339
|
}
|
|
338
340
|
catch (e) {
|
|
341
|
+
this.handleResponseAfter(response, req, { status: 500, error: typeof e.data === "object" ? JSON.stringify(e.data) : e.data ? e.data : undefined });
|
|
339
342
|
// Send Middleware-Abort
|
|
340
343
|
if (this.mode === "aws-lambda") {
|
|
341
344
|
return {
|
|
@@ -374,6 +377,7 @@ class RouterFacade {
|
|
|
374
377
|
const split = route.component.split("@");
|
|
375
378
|
const controller = this.kernel.controller[split[0]];
|
|
376
379
|
if (!controller) {
|
|
380
|
+
this.handleResponseAfter(response, req, { status: 500, error: "Controller `" + split[0] + "` not found ..." });
|
|
377
381
|
if (this.mode === "aws-lambda") {
|
|
378
382
|
return {
|
|
379
383
|
statusCode: 500,
|
|
@@ -393,6 +397,7 @@ class RouterFacade {
|
|
|
393
397
|
// Set Controller method as route-component
|
|
394
398
|
const controllerInstance = new controller();
|
|
395
399
|
if (!controllerInstance || !split || !split[1] || !controllerInstance[split[1]]) {
|
|
400
|
+
this.handleResponseAfter(response, req, { status: 500, error: "controllerInstance `" + split[1] + "` not found ..." });
|
|
396
401
|
throw new Error("controllerInstance " + split[1] + " not found ...");
|
|
397
402
|
}
|
|
398
403
|
route.component = controllerInstance[split[1]].bind(controllerInstance);
|
|
@@ -400,6 +405,7 @@ class RouterFacade {
|
|
|
400
405
|
if (route && route.component !== undefined) {
|
|
401
406
|
try {
|
|
402
407
|
yield route.component(request, response);
|
|
408
|
+
this.handleResponseAfter(response, req, { status: response.statusCode });
|
|
403
409
|
if (this.mode === "aws-lambda") {
|
|
404
410
|
return {
|
|
405
411
|
statusCode: response.statusCode,
|
|
@@ -413,6 +419,10 @@ class RouterFacade {
|
|
|
413
419
|
}
|
|
414
420
|
}
|
|
415
421
|
catch (e) {
|
|
422
|
+
if (process.env.APP_DEBUG_CONSOLE) {
|
|
423
|
+
console.error(e);
|
|
424
|
+
}
|
|
425
|
+
this.handleResponseAfter(response, req, { status: 500, error: e && e.stack && e.stack.toString().trim() !== '' ? e.stack : e && e.toString() !== '' ? e.toString() : "Error running the component ..." });
|
|
416
426
|
if (this.mode === "aws-lambda") {
|
|
417
427
|
return {
|
|
418
428
|
statusCode: 500,
|
|
@@ -425,12 +435,13 @@ class RouterFacade {
|
|
|
425
435
|
};
|
|
426
436
|
}
|
|
427
437
|
else if (res && req) {
|
|
428
|
-
this.sendError(res, 500);
|
|
438
|
+
this.sendError(res, 500, process.env.APP_DEBUG && process.env.APP_DEBUG !== "false" ? e.stack : null);
|
|
429
439
|
this.requestConsoleLog(req, 500);
|
|
430
440
|
}
|
|
431
441
|
}
|
|
432
442
|
}
|
|
433
443
|
else {
|
|
444
|
+
this.handleResponseAfter(response, req, { status: 500, error: "Route component not found ..." });
|
|
434
445
|
if (this.mode === "aws-lambda") {
|
|
435
446
|
return {
|
|
436
447
|
statusCode: 500,
|
|
@@ -448,6 +459,11 @@ class RouterFacade {
|
|
|
448
459
|
}
|
|
449
460
|
});
|
|
450
461
|
}
|
|
462
|
+
handleResponseAfter(response, req, payload) {
|
|
463
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
464
|
+
response.handleEvents("after", req, payload);
|
|
465
|
+
});
|
|
466
|
+
}
|
|
451
467
|
requestConsoleLog(req, httpCode) {
|
|
452
468
|
if (Config_1.Config.get("application.router.requests.logConsole") !== true && !Config_1.Config.get("application.router.requests.logFile")) {
|
|
453
469
|
return;
|
package/package.json
CHANGED
package/src/Router/Response.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { ServerResponse } from "http";
|
|
1
|
+
import { IncomingMessage, ServerResponse } from "http";
|
|
2
2
|
|
|
3
3
|
export class Response {
|
|
4
4
|
res?: ServerResponse;
|
|
5
5
|
statusCode: number = 200;
|
|
6
6
|
content?: any | null | undefined;
|
|
7
|
-
headers: { [key: string]:
|
|
7
|
+
headers: { [key: string]: any } = {};
|
|
8
|
+
events: any = { after: [] };
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Mode
|
|
@@ -81,4 +82,27 @@ export class Response {
|
|
|
81
82
|
}
|
|
82
83
|
return this;
|
|
83
84
|
}
|
|
85
|
+
|
|
86
|
+
async registerEvent(eventKey: string, func: any) {
|
|
87
|
+
this.events[eventKey].push({ function: func });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Runs the registered events for an event-type
|
|
92
|
+
*
|
|
93
|
+
* @param eventKey
|
|
94
|
+
* @param req
|
|
95
|
+
* @param payload
|
|
96
|
+
*/
|
|
97
|
+
async handleEvents(eventKey: string, req: IncomingMessage, payload: any) {
|
|
98
|
+
if (!this.events || !this.events[eventKey] || this.events[eventKey].length < 1) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
for (let i in this.events[eventKey]) {
|
|
103
|
+
if (this.events[eventKey][i].function && typeof this.events[eventKey][i].function === "function") {
|
|
104
|
+
this.events[eventKey][i].function(req, payload);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
84
108
|
}
|
package/src/Router/Router.ts
CHANGED
|
@@ -335,6 +335,8 @@ class RouterFacade {
|
|
|
335
335
|
for (let middlewareKey of route.options.middleware) {
|
|
336
336
|
const middleware = this.kernel.middleware[middlewareKey];
|
|
337
337
|
if (!middleware) {
|
|
338
|
+
this.handleResponseAfter(response, req, { status: 500 });
|
|
339
|
+
|
|
338
340
|
if (this.mode === "aws-lambda") {
|
|
339
341
|
return {
|
|
340
342
|
statusCode: 500,
|
|
@@ -364,6 +366,7 @@ class RouterFacade {
|
|
|
364
366
|
} catch (e) {
|
|
365
367
|
console.error(e);
|
|
366
368
|
|
|
369
|
+
this.handleResponseAfter(response, req, { status: 500 });
|
|
367
370
|
if (this.mode === "aws-lambda") {
|
|
368
371
|
return {
|
|
369
372
|
statusCode: 500,
|
|
@@ -380,6 +383,8 @@ class RouterFacade {
|
|
|
380
383
|
}
|
|
381
384
|
});
|
|
382
385
|
} catch (e: any) {
|
|
386
|
+
this.handleResponseAfter(response, req, { status: 500, error: typeof e.data === "object" ? JSON.stringify(e.data) : e.data ? e.data : undefined });
|
|
387
|
+
|
|
383
388
|
// Send Middleware-Abort
|
|
384
389
|
if (this.mode === "aws-lambda") {
|
|
385
390
|
return {
|
|
@@ -421,6 +426,8 @@ class RouterFacade {
|
|
|
421
426
|
const split = route.component.split("@");
|
|
422
427
|
const controller = this.kernel.controller[split[0]];
|
|
423
428
|
if (!controller) {
|
|
429
|
+
this.handleResponseAfter(response, req, { status: 500, error: "Controller `" + split[0] + "` not found ..." });
|
|
430
|
+
|
|
424
431
|
if (this.mode === "aws-lambda") {
|
|
425
432
|
return {
|
|
426
433
|
statusCode: 500,
|
|
@@ -434,13 +441,13 @@ class RouterFacade {
|
|
|
434
441
|
res.writeHead(500, { "Content-Type": "text/html" });
|
|
435
442
|
res.end("Controller `" + split[0] + "` not found ...");
|
|
436
443
|
}
|
|
437
|
-
|
|
438
444
|
return;
|
|
439
445
|
}
|
|
440
446
|
|
|
441
447
|
// Set Controller method as route-component
|
|
442
448
|
const controllerInstance = new controller();
|
|
443
449
|
if (!controllerInstance || !split || !split[1] || !controllerInstance[split[1]]) {
|
|
450
|
+
this.handleResponseAfter(response, req, { status: 500, error: "controllerInstance `" + split[1] + "` not found ..." });
|
|
444
451
|
throw new Error("controllerInstance " + split[1] + " not found ...");
|
|
445
452
|
}
|
|
446
453
|
route.component = controllerInstance[split[1]].bind(controllerInstance);
|
|
@@ -450,6 +457,7 @@ class RouterFacade {
|
|
|
450
457
|
try {
|
|
451
458
|
await route.component(request, response);
|
|
452
459
|
|
|
460
|
+
this.handleResponseAfter(response, req, { status: response.statusCode });
|
|
453
461
|
if (this.mode === "aws-lambda") {
|
|
454
462
|
return {
|
|
455
463
|
statusCode: response.statusCode,
|
|
@@ -461,6 +469,11 @@ class RouterFacade {
|
|
|
461
469
|
this.requestConsoleLog(req, response.statusCode);
|
|
462
470
|
}
|
|
463
471
|
} catch (e: any) {
|
|
472
|
+
if (process.env.APP_DEBUG_CONSOLE) {
|
|
473
|
+
console.error(e);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
this.handleResponseAfter(response, req, { status: 500, error: e && e.stack && e.stack.toString().trim() !== '' ? e.stack : e && e.toString() !== '' ? e.toString() : "Error running the component ..." });
|
|
464
477
|
if (this.mode === "aws-lambda") {
|
|
465
478
|
return {
|
|
466
479
|
statusCode: 500,
|
|
@@ -472,11 +485,12 @@ class RouterFacade {
|
|
|
472
485
|
headers: response.headers,
|
|
473
486
|
};
|
|
474
487
|
} else if (res && req) {
|
|
475
|
-
this.sendError(res, 500);
|
|
488
|
+
this.sendError(res, 500, process.env.APP_DEBUG && process.env.APP_DEBUG !== "false" ? e.stack : null);
|
|
476
489
|
this.requestConsoleLog(req, 500);
|
|
477
490
|
}
|
|
478
491
|
}
|
|
479
492
|
} else {
|
|
493
|
+
this.handleResponseAfter(response, req, { status: 500, error: "Route component not found ..." });
|
|
480
494
|
if (this.mode === "aws-lambda") {
|
|
481
495
|
return {
|
|
482
496
|
statusCode: 500,
|
|
@@ -493,6 +507,10 @@ class RouterFacade {
|
|
|
493
507
|
}
|
|
494
508
|
}
|
|
495
509
|
|
|
510
|
+
async handleResponseAfter(response: any, req: any, payload: any) {
|
|
511
|
+
response.handleEvents("after", req, payload);
|
|
512
|
+
}
|
|
513
|
+
|
|
496
514
|
requestConsoleLog(req: IncomingMessage, httpCode: number) {
|
|
497
515
|
if (Config.get("application.router.requests.logConsole") !== true && !Config.get("application.router.requests.logFile")) {
|
|
498
516
|
return;
|