@webtypen/webframez-core 0.0.7 → 0.0.9
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/Router/Router.js +25 -2
- package/package.json +1 -1
- package/src/Router/Router.ts +25 -4
package/lib/Router/Router.js
CHANGED
|
@@ -90,6 +90,20 @@ class RouterFacade {
|
|
|
90
90
|
else if (req.method === "DELETE") {
|
|
91
91
|
return this.dissolveRoute(this.routesDELETE, req.url);
|
|
92
92
|
}
|
|
93
|
+
else if (req.method === "OPTIONS") {
|
|
94
|
+
if (req.headers['access-control-request-method'] === 'GET') {
|
|
95
|
+
return this.dissolveRoute(this.routesGET, req.url);
|
|
96
|
+
}
|
|
97
|
+
else if (req.headers['access-control-request-method'] === 'POST') {
|
|
98
|
+
return this.dissolveRoute(this.routesPOST, req.url);
|
|
99
|
+
}
|
|
100
|
+
else if (req.headers['access-control-request-method'] === 'PUT') {
|
|
101
|
+
return this.dissolveRoute(this.routesPUT, req.url);
|
|
102
|
+
}
|
|
103
|
+
else if (req.headers['access-control-request-method'] === 'DELETE') {
|
|
104
|
+
return this.dissolveRoute(this.routesDELETE, req.url);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
93
107
|
return null;
|
|
94
108
|
}
|
|
95
109
|
/**
|
|
@@ -150,6 +164,8 @@ class RouterFacade {
|
|
|
150
164
|
handleRequest(req, res) {
|
|
151
165
|
return __awaiter(this, void 0, void 0, function* () {
|
|
152
166
|
const route = this.dissolve(req);
|
|
167
|
+
const response = new Response_1.Response();
|
|
168
|
+
response.setServerResponse(res);
|
|
153
169
|
// Check-Middleware
|
|
154
170
|
if (route &&
|
|
155
171
|
route.options &&
|
|
@@ -165,7 +181,7 @@ class RouterFacade {
|
|
|
165
181
|
try {
|
|
166
182
|
middleware(resolve, (status, data) => {
|
|
167
183
|
reject({ status: status, data: data });
|
|
168
|
-
}, req,
|
|
184
|
+
}, req, response);
|
|
169
185
|
}
|
|
170
186
|
catch (e) {
|
|
171
187
|
console.error(e);
|
|
@@ -187,6 +203,13 @@ class RouterFacade {
|
|
|
187
203
|
}
|
|
188
204
|
}
|
|
189
205
|
}
|
|
206
|
+
// Handle OPTIONS-Request
|
|
207
|
+
if (req.method === "OPTIONS") {
|
|
208
|
+
res.statusCode = 200;
|
|
209
|
+
res.setHeader('Content-Length', '0');
|
|
210
|
+
res.end();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
190
213
|
// Resolve route-component (handle controller definition)
|
|
191
214
|
if (route && typeof route.component === "string") {
|
|
192
215
|
const split = route.component.split("@");
|
|
@@ -223,7 +246,7 @@ class RouterFacade {
|
|
|
223
246
|
rawHeaders: req.rawHeaders,
|
|
224
247
|
url: req.url,
|
|
225
248
|
method: req.method,
|
|
226
|
-
},
|
|
249
|
+
}, response);
|
|
227
250
|
res.end();
|
|
228
251
|
}
|
|
229
252
|
catch (e) {
|
package/package.json
CHANGED
package/src/Router/Router.ts
CHANGED
|
@@ -112,6 +112,16 @@ class RouterFacade {
|
|
|
112
112
|
return this.dissolveRoute(this.routesPUT, req.url);
|
|
113
113
|
} else if (req.method === "DELETE") {
|
|
114
114
|
return this.dissolveRoute(this.routesDELETE, req.url);
|
|
115
|
+
} else if (req.method === "OPTIONS") {
|
|
116
|
+
if (req.headers['access-control-request-method'] === 'GET') {
|
|
117
|
+
return this.dissolveRoute(this.routesGET, req.url);
|
|
118
|
+
} else if(req.headers['access-control-request-method'] === 'POST') {
|
|
119
|
+
return this.dissolveRoute(this.routesPOST, req.url);
|
|
120
|
+
} else if(req.headers['access-control-request-method'] === 'PUT') {
|
|
121
|
+
return this.dissolveRoute(this.routesPUT, req.url);
|
|
122
|
+
} else if(req.headers['access-control-request-method'] === 'DELETE') {
|
|
123
|
+
return this.dissolveRoute(this.routesDELETE, req.url);
|
|
124
|
+
}
|
|
115
125
|
}
|
|
116
126
|
return null;
|
|
117
127
|
}
|
|
@@ -179,8 +189,10 @@ class RouterFacade {
|
|
|
179
189
|
* @param res
|
|
180
190
|
*/
|
|
181
191
|
async handleRequest(req: IncomingMessage, res: ServerResponse) {
|
|
182
|
-
const route = this.dissolve(req);
|
|
183
|
-
|
|
192
|
+
const route = this.dissolve(req);
|
|
193
|
+
const response = new Response();
|
|
194
|
+
response.setServerResponse(res);
|
|
195
|
+
|
|
184
196
|
// Check-Middleware
|
|
185
197
|
if (
|
|
186
198
|
route &&
|
|
@@ -198,6 +210,7 @@ class RouterFacade {
|
|
|
198
210
|
);
|
|
199
211
|
}
|
|
200
212
|
|
|
213
|
+
|
|
201
214
|
try {
|
|
202
215
|
await new Promise((resolve, reject) => {
|
|
203
216
|
try {
|
|
@@ -207,7 +220,7 @@ class RouterFacade {
|
|
|
207
220
|
reject({ status: status, data: data });
|
|
208
221
|
},
|
|
209
222
|
req,
|
|
210
|
-
|
|
223
|
+
response
|
|
211
224
|
);
|
|
212
225
|
} catch (e) {
|
|
213
226
|
console.error(e);
|
|
@@ -239,6 +252,14 @@ class RouterFacade {
|
|
|
239
252
|
}
|
|
240
253
|
}
|
|
241
254
|
|
|
255
|
+
// Handle OPTIONS-Request
|
|
256
|
+
if (req.method === "OPTIONS") {
|
|
257
|
+
res.statusCode = 200;
|
|
258
|
+
res.setHeader('Content-Length', '0');
|
|
259
|
+
res.end();
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
242
263
|
// Resolve route-component (handle controller definition)
|
|
243
264
|
if (route && typeof route.component === "string") {
|
|
244
265
|
const split = route.component.split("@");
|
|
@@ -280,7 +301,7 @@ class RouterFacade {
|
|
|
280
301
|
url: req.url,
|
|
281
302
|
method: req.method,
|
|
282
303
|
},
|
|
283
|
-
|
|
304
|
+
response
|
|
284
305
|
);
|
|
285
306
|
res.end();
|
|
286
307
|
} catch (e) {
|