slower 1.1.21 → 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 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 {
@@ -26,15 +26,6 @@ class SlowerRouter {
26
26
  ];
27
27
 
28
28
  static mime_table = mimetable;
29
- // {
30
- // 'txt' : ['text/plain', 'utf-8'],
31
- // 'html': ['text/html', 'utf-8'],
32
- // 'js' : ['text/javascript', 'utf-8'],
33
- // 'css' : ['text/css', 'utf-8'],
34
- // 'ico' : ['image/png'],
35
- // 'json': ['application/json'],
36
- // 'default': ['application/octet-stream']
37
- // }
38
29
 
39
30
  constructor () {
40
31
  this.strictHeaders = false;
@@ -44,6 +35,7 @@ class SlowerRouter {
44
35
  this.allowedMethods = clone(SlowerRouter.http_methods);
45
36
  this.blockedMethodCallback = noop;
46
37
  this.tls = { use: false, key: null, cert: null };
38
+ this.server = null;
47
39
  }
48
40
 
49
41
  enableStrictHeaders () {
@@ -372,17 +364,15 @@ class SlowerRouter {
372
364
  let fallback = this.fallback;
373
365
  let allowedMethods = this.allowedMethods;
374
366
  let blockedMethodCallback = this.blockedMethodCallback;
375
-
376
- let server;
377
367
 
378
368
  if (this.tls.use && this.tls.cert && this.tls.key) {
379
- server = https.createServer({ key:this.tls.key, cert: this.tls.cert }, mainServerHandler);
369
+ this.server = https.createServer({ key:this.tls.key, cert: this.tls.cert }, mainServerHandler);
380
370
 
381
371
  } else {
382
- server = http.createServer({}, mainServerHandler);
372
+ this.server = http.createServer({}, mainServerHandler);
383
373
  }
384
374
 
385
- function mainServerHandler (req, res) {
375
+ async function mainServerHandler (req, res) {
386
376
  try {
387
377
  // Sets local req.session object
388
378
  setSocketLocals(req);
@@ -393,7 +383,8 @@ class SlowerRouter {
393
383
  if (!!this.strictHeaders) setSocketSecurityHeaders(req);
394
384
  // Runs all middlewares
395
385
  for (let i = 0; i < middle.length; i++) {
396
- middle[i](req, res);
386
+ const rr = middle[i](req, res);
387
+ if (isPromise(rr)) await rr;
397
388
  if (res.writableEnded) return; // if res.end() is caller early in a middleware
398
389
  }
399
390
  // Only respond to allowed methods with callbacks, else, use the default empty response.
@@ -408,13 +399,15 @@ class SlowerRouter {
408
399
  )
409
400
  ) {
410
401
  i = routes.length;
411
- route.callback(req, res);
402
+ const rr = route.callback(req, res);
403
+ if (isPromise(rr)) await rr;
412
404
  // if (res.writableEnded) return; // if res.end() was called
413
405
  // else res.end(); // if res.end() was not called
414
406
  return;
415
407
  }
416
408
  }
417
- fallback(req,res);
409
+ const rr = fallback(req,res);
410
+ if (isPromise(rr)) await rr;
418
411
  if (!res.writableEnded) res.end();
419
412
  } else {
420
413
  blockedMethodCallback(req, res);
@@ -425,11 +418,16 @@ class SlowerRouter {
425
418
  }
426
419
  }
427
420
 
428
- callback(server);
421
+ this.port = port;
422
+ this.host = host;
429
423
  if (!host) host = undefined; // Turn falsy values into undefined, for default behaviour
430
- server.listen(port, host);
424
+ this.server.listen(port, host, callback);
431
425
  return this;
432
426
  }
427
+
428
+ close = function (callback) {
429
+ this.server.close(callback);
430
+ }
433
431
  }
434
432
 
435
433
  const Slower = function () { return new SlowerRouter(); }
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
- module.exports = { clone, noop, slugify, isSparseEqual, toBool, last, renderDynamicHTML, setSocketLocals, setSocketSecurityHeaders, setResponseAssessors };
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slower",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
4
4
  "description": "A package for simple HTTP server routing.",
5
5
  "main": "index.js",
6
6
  "directories": {