@log4js2/core
Version:
log4js2 is a fast and lightweight logging library that enables logging flexibility within JavaScript/TypeScript applications, similar to Apache's [Log4j2 library](https://logging.apache.org/log4j/2.x/). It can also serve as a drop-in replacement for log4
107 lines (106 loc) • 4.68 kB
JavaScript
// tslint:disable:bool-param-default
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable-next-line
var TIMEZONE = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g;
var TIMEZONE_CLIP = /[^-+\dA-Z]/g;
/**
* Pads numbers in the date format
*
* @param {string|number} value
* @param {number} length
* @param {string} character
*
* @returns {string} the padded string
*/
exports.padLeft = function (value, length, character) {
if (character === void 0) { character = ' '; }
var strValue = String(value);
while (strValue.length < length) {
strValue = character + strValue;
}
return strValue;
};
var DateTimeFormat;
(function (DateTimeFormat) {
DateTimeFormat["DEFAULT"] = "yyyy-MM-dd HH:mm:ss,S";
DateTimeFormat["ABSOLUTE"] = "HH:mm:ss,S";
DateTimeFormat["COMPACT"] = "yyyyMMddHHmmssS";
DateTimeFormat["DATE"] = "dd MMM yyyy HH:mm:ss,S";
DateTimeFormat["ISO8601"] = "yyyy-MM-ddTHH:mm:ss,S";
DateTimeFormat["ISO8601_BASIC"] = "yyyyMMddTHHmmss,S";
})(DateTimeFormat = exports.DateTimeFormat || (exports.DateTimeFormat = {}));
var _i18n = {
d: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sunday', 'Monday',
'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
m: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
'Oct', 'Nov', 'Dec', 'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December']
};
var _maskStore = {};
var _flags = {
d: function (date) { return date.getDate(); },
dd: function (date) { return exports.padLeft(date.getDate(), 2, '0'); },
ddd: function (date) { return _i18n.d[date.getDay()]; },
dddd: function (date) { return _i18n.d[date.getDay() + 7]; },
M: function (date) { return date.getMonth() + 1; },
MM: function (date) { return exports.padLeft(date.getMonth() + 1, 2, '0'); },
MMM: function (date) { return _i18n.m[date.getMonth()]; },
MMMM: function (date) { return _i18n.m[date.getMonth() + 12]; },
yy: function (date, isUTC) { return String(isUTC ? date.getFullYear() : date.getUTCFullYear()).slice(2); },
yyyy: function (date, isUTC) { return isUTC ? date.getFullYear() : date.getUTCFullYear(); },
h: function (date) { return date.getHours() % 12 || 12; },
hh: function (date) { return exports.padLeft(date.getHours() % 12 || 12, 2, '0'); },
H: function (date) { return date.getHours(); },
HH: function (date) { return exports.padLeft(date.getHours(), 2, '0'); },
m: function (date) { return date.getMinutes(); },
mm: function (date) { return exports.padLeft(date.getMinutes(), 2, '0'); },
s: function (date) { return date.getSeconds(); },
ss: function (date) { return exports.padLeft(date.getSeconds(), 2, '0'); },
S: function (date) { return exports.padLeft(date.getMilliseconds(), 1); },
a: function (date) { return date.getHours() < 12 ? 'a' : 'p'; },
aa: function (date) { return date.getHours() < 12 ? 'am' : 'pm'; },
A: function (date) { return date.getHours() < 12 ? 'A' : 'P'; },
AA: function (date) { return date.getHours() < 12 ? 'AM' : 'PM'; },
Z: function (date, isUTC) { return isUTC ? 'UTC' : (String(date).match(TIMEZONE)).pop().replace(TIMEZONE_CLIP, ''); },
o: function (date, isUTC) {
var offset = isUTC ? 0 : date.getTimezoneOffset();
return (offset > 0 ? '-' : '+') + exports.padLeft(Math.floor(Math.abs(offset) / 60) * 100 + Math.abs(offset) % 60, 4, '0');
}
};
function _createMask(mask) {
if (_maskStore[mask] instanceof Array) {
return _maskStore[mask];
}
var formatMap = [];
var regex = /(.)\1+|(.)/;
var maskStr = mask;
var match;
var value;
// tslint:disable-next-line:no-conditional-assignment
while (match = maskStr.match(regex)) {
value = match[0];
formatMap.push(_flags[value] || value);
maskStr = maskStr.substring(value.length);
}
_maskStore[mask] = formatMap;
return formatMap;
}
/**
* Converts a date to a formatted string
* @param {Date | string | number} date
* @param {string} mask
* @returns {string}
*/
exports.formatDate = function (date, mask) {
if (!(date instanceof Date)) {
date = new Date(date);
}
mask = String(mask || DateTimeFormat.DEFAULT);
var isUTC = (mask.slice(0, 4) === 'UTC:');
if (isUTC) {
mask = mask.slice(4);
}
return _createMask(mask).map(function (value) {
return value instanceof Function ? value(date, isUTC) : value;
}).join('');
};