"use strict";
/*
* A simple logger for reporting the time in milliseconds
* the amount of time elapsed in responding to a request
*
* It is meant purely for development
*/
//const prefix_in = "⇢ "
//const prefix_out = "↩︎ "
//const prefix_err = "⚠︎ "
var prefix_in = "->";
var prefix_out = "<-";
module.exports = function (handler) {
if (typeof process !== "undefined" && typeof process.env !== "undefined" && process.env.NODE_ENV === "production") {
return function (request) {
return handler(request);
};
}
var reqtag = function reqtag(str) {
var tag = str.split("").reduce(function (h, c) {
var n = parseInt(c);
if (isNaN(n)) n = c.charCodeAt();
n += 1;
return h * n;
}, 0);
var seed = Math.floor(Math.random() * 100000);
return tag + seed;
};
return function (request) {
var t = new Date();
var tag = reqtag(t.getTime().toString() + request.method + request.url);
console.log(prefix_in, tag, request.method, request.url);
return handler(request).then(function (response) {
var diff = new Date() - t;
console.log(prefix_out, tag, response.status, diff + "ms");
return response;
}).catch(function (err) {
var diff = new Date() - t;
console.log(prefix_out, tag, "err", diff + "ms");
throw err;
});
};
}; |