@ereactthohir/core 1.2.2 → 1.2.4
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/http/Kernel.d.ts.map +1 -1
- package/dist/http/Kernel.js +94 -5
- package/dist/http/Kernel.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../src/http/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../src/http/Kernel.ts"],"names":[],"mappings":"AAAA,OAAO,OAAiF,MAAM,SAAS,CAAC;AAaxG,qBAAa,MAAM;IACf,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC;;IAYtB,MAAM;IAiIZ,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI;CAGpD"}
|
package/dist/http/Kernel.js
CHANGED
|
@@ -10,25 +10,113 @@ const cors_1 = __importDefault(require("cors"));
|
|
|
10
10
|
const Router_1 = require("../http/Router");
|
|
11
11
|
const Logger_1 = require("../foundation/Logger");
|
|
12
12
|
const ExceptionHandler_1 = require("./ExceptionHandler");
|
|
13
|
+
const View_1 = require("../foundation/View");
|
|
14
|
+
const Request_1 = require("./Request");
|
|
15
|
+
const Response_1 = require("./Response");
|
|
16
|
+
const react_1 = __importDefault(require("react"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
19
|
class Kernel {
|
|
14
20
|
constructor() {
|
|
15
21
|
this.app = (0, express_1.default)();
|
|
16
|
-
this.app.use((0, helmet_1.default)(
|
|
22
|
+
this.app.use((0, helmet_1.default)({
|
|
23
|
+
contentSecurityPolicy: false,
|
|
24
|
+
}));
|
|
17
25
|
this.app.use((0, cors_1.default)());
|
|
18
26
|
this.app.use(express_1.default.json());
|
|
27
|
+
this.app.use(express_1.default.urlencoded({ extended: true }));
|
|
19
28
|
}
|
|
20
29
|
async handle() {
|
|
21
30
|
const routes = Router_1.Route.getRoutes();
|
|
22
|
-
console.log(`[Kernel]
|
|
31
|
+
console.log(`[Kernel] Registering ${routes.length} route(s) to Express...`);
|
|
23
32
|
routes.forEach(route => {
|
|
24
33
|
const method = route.method.toLowerCase();
|
|
25
34
|
if (this.app[method]) {
|
|
35
|
+
console.log(` [Route] ${route.method} ${route.path}`);
|
|
26
36
|
this.app[method](route.path, async (req, res, next) => {
|
|
27
37
|
try {
|
|
28
38
|
Logger_1.Logger.info(`Incoming ${route.method} request to ${route.path}`);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
:
|
|
39
|
+
// Wrap Express Request and Response
|
|
40
|
+
const erreq = new Request_1.Request({
|
|
41
|
+
method: req.method,
|
|
42
|
+
path: req.path,
|
|
43
|
+
headers: req.headers,
|
|
44
|
+
query: req.query,
|
|
45
|
+
body: req.body,
|
|
46
|
+
params: req.params
|
|
47
|
+
});
|
|
48
|
+
// Basic app mock for dependencies
|
|
49
|
+
erreq.app = {
|
|
50
|
+
make: (name) => {
|
|
51
|
+
if (name === 'auth') {
|
|
52
|
+
return {
|
|
53
|
+
attempt: async () => ({ id: 1, name: 'User' }),
|
|
54
|
+
create: async (data) => ({ id: 1, ...data })
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
erreq.session = {
|
|
61
|
+
set: () => { },
|
|
62
|
+
get: () => { },
|
|
63
|
+
destroy: () => { }
|
|
64
|
+
};
|
|
65
|
+
erreq.validate = async () => true;
|
|
66
|
+
const erres = new Response_1.Response();
|
|
67
|
+
let result;
|
|
68
|
+
// Handle Controller array [ControllerClass, 'methodName']
|
|
69
|
+
if (Array.isArray(route.handler) && route.handler.length === 2) {
|
|
70
|
+
const [ControllerClass, methodName] = route.handler;
|
|
71
|
+
const controllerInstance = new ControllerClass();
|
|
72
|
+
result = await controllerInstance[methodName](erreq, erres);
|
|
73
|
+
}
|
|
74
|
+
else if (typeof route.handler === 'function') {
|
|
75
|
+
result = await route.handler(erreq, erres);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
result = await route.handler;
|
|
79
|
+
}
|
|
80
|
+
// If the handler didn't return anything but modified erres, use erres
|
|
81
|
+
if (result === undefined || result === erres) {
|
|
82
|
+
result = erres;
|
|
83
|
+
}
|
|
84
|
+
// Handle EreactResponse object
|
|
85
|
+
if (result instanceof Response_1.Response || (result && result.getBody && result.getStatus)) {
|
|
86
|
+
const body = result.getBody();
|
|
87
|
+
const status = result.getStatus();
|
|
88
|
+
const headers = result.getHeaders();
|
|
89
|
+
// Set headers
|
|
90
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
91
|
+
res.setHeader(key, value);
|
|
92
|
+
});
|
|
93
|
+
res.status(status);
|
|
94
|
+
if (body && typeof body === 'object' && body.view) {
|
|
95
|
+
// Render React View
|
|
96
|
+
try {
|
|
97
|
+
const projectRoot = process.cwd();
|
|
98
|
+
let viewPath = path_1.default.join(projectRoot, 'resources/views', `${body.view}.tsx`);
|
|
99
|
+
if (!fs_1.default.existsSync(viewPath)) {
|
|
100
|
+
viewPath = path_1.default.join(projectRoot, 'resources/pages', `${body.view}.tsx`);
|
|
101
|
+
}
|
|
102
|
+
if (fs_1.default.existsSync(viewPath)) {
|
|
103
|
+
const viewModule = require(viewPath);
|
|
104
|
+
const Component = viewModule.default || viewModule;
|
|
105
|
+
const html = View_1.View.render(react_1.default.createElement(Component, body.data || {}));
|
|
106
|
+
res.setHeader('Content-Type', 'text/html');
|
|
107
|
+
return res.send(html);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.warn(`View not found: ${body.view} at ${viewPath}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
console.error(`View rendering failed for ${body.view}:`, e);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return res.send(body);
|
|
118
|
+
}
|
|
119
|
+
// Handle direct string/object results
|
|
32
120
|
if (!res.headersSent) {
|
|
33
121
|
if (typeof result === 'string') {
|
|
34
122
|
res.setHeader('Content-Type', 'text/html');
|
|
@@ -40,6 +128,7 @@ class Kernel {
|
|
|
40
128
|
}
|
|
41
129
|
}
|
|
42
130
|
catch (error) {
|
|
131
|
+
console.error('Kernel execution error:', error);
|
|
43
132
|
next(error);
|
|
44
133
|
}
|
|
45
134
|
});
|
package/dist/http/Kernel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kernel.js","sourceRoot":"","sources":["../../src/http/Kernel.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"Kernel.js","sourceRoot":"","sources":["../../src/http/Kernel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED