Simon Priet e69a613a37 feat: Created a mini nodeJS server with NewMan for testing without PostMan GUI.
This will mimic a run in a CD/CI environment or docker container.
2021-09-08 14:01:19 +02:00

126 lines
2.7 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const chalk = require('chalk');
const strftime = require('strftime');
const printf = require('./utils/printf');
const json = require('./utils/json');
chalk.enabled = true;
const COLORS = {
'TRACE': chalk.bold.bgBlue,
'VERBOSE': chalk.bold.magenta,
'DEBUG': chalk.bold.cyan,
'INFO': chalk.bold.green,
'WARN': chalk.bold.yellow,
'ERROR': chalk.bold.red,
'CRITICAL': chalk.bold.bgRed
};
const BOLD = chalk.bold;
const TO_JSON = '%O';
const MESSAGE_ONLY = '%(message)s';
const BASIC_FORMAT = '%(name)s.%(levelname)s: %(message)s';
function messageOnly(record) {
return record.message;
}
function basicFormat(record) {
return record.name + '.' + record.levelname + ': ' + record.message;
}
function sprintf(record) {
return printf(this._format, record);
}
function formatDate(record) {
record.date = strftime(this._datefmt, new Date(record.timestamp));
}
function noop() {
}
function optimize() {
switch (this._format) {
// faster shortcuts
case MESSAGE_ONLY:
this.__format = messageOnly;
break;
case BASIC_FORMAT:
this.__format = basicFormat;
break;
case TO_JSON:
this.__format = json;
break;
// bring on the regexp
default:
this.__format = sprintf;
}
this.__time = this._usesTime ? formatDate : noop;
}
function Formatter(options) {
options = options || {};
if (typeof options === 'string') {
options = { format: options };
}
this._format = options.format || this._format;
this._datefmt = options.datefmt || this._datefmt;
this._strip = options.strip || this._strip;
this._colorize = this._strip ? false : options.colorize || this._colorize;
this._usesTime = this._format.indexOf('%(date)s') !== -1;
optimize.call(this);
}
Formatter.prototype = {
_format: MESSAGE_ONLY,
_datefmt: '%Y-%m-%d %H:%M:%S',
_colorize: false,
_strip: false,
_usesTime: false,
format: function format(record) {
this.__time(record);
var levelname = record.levelname;
var name = record.name;
if (this._colorize) {
var colorize = COLORS[levelname];
if (colorize) {
record.levelname = colorize(levelname);
}
// else levelname doesnt have a color
record.name = BOLD(name);
}
var formatted = this.__format(record);
if (record.stack && this._format !== TO_JSON) {
formatted += record.stack;
}
record.levelname = levelname;
record.name = name;
record.date = undefined;
if (this._strip) {
formatted = chalk.stripColor(formatted);
}
return formatted;
}
};
module.exports = Formatter;