@segment/analytics-core
Version:
This package represents core 'shared' functionality that is shared by analytics packages. This is not designed to be used directly, but internal to analytics-node and analytics-browser.
62 lines • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoreLogger = void 0;
var tslib_1 = require("tslib");
var CoreLogger = /** @class */ (function () {
function CoreLogger() {
this._logs = [];
}
CoreLogger.prototype.log = function (level, message, extras) {
var time = new Date();
this._logs.push({
level: level,
message: message,
time: time,
extras: extras,
});
};
Object.defineProperty(CoreLogger.prototype, "logs", {
get: function () {
return this._logs;
},
enumerable: false,
configurable: true
});
CoreLogger.prototype.flush = function () {
if (this.logs.length > 1) {
var formatted = this._logs.reduce(function (logs, log) {
var _a;
var _b, _c;
var line = tslib_1.__assign(tslib_1.__assign({}, log), { json: JSON.stringify(log.extras, null, ' '), extras: log.extras });
delete line['time'];
var key = (_c = (_b = log.time) === null || _b === void 0 ? void 0 : _b.toISOString()) !== null && _c !== void 0 ? _c : '';
if (logs[key]) {
key = "".concat(key, "-").concat(Math.random());
}
return tslib_1.__assign(tslib_1.__assign({}, logs), (_a = {}, _a[key] = line, _a));
}, {});
// ie doesn't like console.table
if (console.table) {
console.table(formatted);
}
else {
console.log(formatted);
}
}
else {
this.logs.forEach(function (logEntry) {
var level = logEntry.level, message = logEntry.message, extras = logEntry.extras;
if (level === 'info' || level === 'debug') {
console.log(message, extras !== null && extras !== void 0 ? extras : '');
}
else {
console[level](message, extras !== null && extras !== void 0 ? extras : '');
}
});
}
this._logs = [];
};
return CoreLogger;
}());
exports.CoreLogger = CoreLogger;
//# sourceMappingURL=index.js.map