slower 1.1.22 → 1.1.23
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.js +13 -9
- package/lib/utils.js +7 -1
- package/package.json +1 -1
package/lib/router.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const http = require('http');
|
|
2
2
|
const https = require('https');
|
|
3
3
|
const fs = require('fs');
|
|
4
|
-
const { clone, noop, slugify, isSparseEqual, last, renderDynamicHTML, setSocketLocals, setSocketSecurityHeaders, setResponseAssessors } = require('./utils');
|
|
4
|
+
const { clone, noop, slugify, isSparseEqual, last, renderDynamicHTML, setSocketLocals, setSocketSecurityHeaders, setResponseAssessors, isPromise } = require('./utils');
|
|
5
5
|
const mimetable = require('./mimetable.json');
|
|
6
6
|
|
|
7
7
|
class Route {
|
|
@@ -372,7 +372,7 @@ class SlowerRouter {
|
|
|
372
372
|
this.server = http.createServer({}, mainServerHandler);
|
|
373
373
|
}
|
|
374
374
|
|
|
375
|
-
function mainServerHandler (req, res) {
|
|
375
|
+
async function mainServerHandler (req, res) {
|
|
376
376
|
try {
|
|
377
377
|
// Sets local req.session object
|
|
378
378
|
setSocketLocals(req);
|
|
@@ -383,7 +383,8 @@ class SlowerRouter {
|
|
|
383
383
|
if (!!this.strictHeaders) setSocketSecurityHeaders(req);
|
|
384
384
|
// Runs all middlewares
|
|
385
385
|
for (let i = 0; i < middle.length; i++) {
|
|
386
|
-
middle[i](req, res);
|
|
386
|
+
const rr = middle[i](req, res);
|
|
387
|
+
if (isPromise(rr)) await rr;
|
|
387
388
|
if (res.writableEnded) return; // if res.end() is caller early in a middleware
|
|
388
389
|
}
|
|
389
390
|
// Only respond to allowed methods with callbacks, else, use the default empty response.
|
|
@@ -398,13 +399,15 @@ class SlowerRouter {
|
|
|
398
399
|
)
|
|
399
400
|
) {
|
|
400
401
|
i = routes.length;
|
|
401
|
-
route.callback(req, res);
|
|
402
|
+
const rr = route.callback(req, res);
|
|
403
|
+
if (isPromise(rr)) await rr;
|
|
402
404
|
// if (res.writableEnded) return; // if res.end() was called
|
|
403
405
|
// else res.end(); // if res.end() was not called
|
|
404
406
|
return;
|
|
405
407
|
}
|
|
406
408
|
}
|
|
407
|
-
fallback(req,res);
|
|
409
|
+
const rr = fallback(req,res);
|
|
410
|
+
if (isPromise(rr)) await rr;
|
|
408
411
|
if (!res.writableEnded) res.end();
|
|
409
412
|
} else {
|
|
410
413
|
blockedMethodCallback(req, res);
|
|
@@ -415,14 +418,15 @@ class SlowerRouter {
|
|
|
415
418
|
}
|
|
416
419
|
}
|
|
417
420
|
|
|
418
|
-
|
|
421
|
+
this.port = port;
|
|
422
|
+
this.host = host;
|
|
419
423
|
if (!host) host = undefined; // Turn falsy values into undefined, for default behaviour
|
|
420
|
-
this.server.listen(port, host);
|
|
424
|
+
this.server.listen(port, host, callback);
|
|
421
425
|
return this;
|
|
422
426
|
}
|
|
423
427
|
|
|
424
|
-
close = function () {
|
|
425
|
-
this.server.close();
|
|
428
|
+
close = function (callback) {
|
|
429
|
+
this.server.close(callback);
|
|
426
430
|
}
|
|
427
431
|
}
|
|
428
432
|
|
package/lib/utils.js
CHANGED
|
@@ -161,4 +161,10 @@ const toBool = [() => true, () => false];
|
|
|
161
161
|
|
|
162
162
|
const clone = (object) => JSON.parse(JSON.stringify(object));
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
const isPromise = obj => {
|
|
165
|
+
return obj !== null &&
|
|
166
|
+
(typeof obj === 'object' || typeof obj === 'function') &&
|
|
167
|
+
typeof obj.then === 'function';
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
module.exports = { clone, noop, slugify, isSparseEqual, toBool, last, renderDynamicHTML, setSocketLocals, setSocketSecurityHeaders, setResponseAssessors, isPromise };
|