@rocket.chat/apps-engine
Version:
The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.
97 lines (95 loc) • 3.17 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppConsole = void 0;
const stackTrace = require("stack-trace");
const accessors_1 = require("../../definition/accessors");
class AppConsole {
static toStorageEntry(appId, logger) {
return {
appId,
method: logger.getMethod(),
entries: logger.getEntries(),
startTime: logger.getStartTime(),
endTime: logger.getEndTime(),
totalTime: logger.getTotalTime(),
_createdAt: new Date(),
};
}
constructor(method) {
this.method = method;
this.entries = [];
this.start = new Date();
}
debug(...items) {
this.addEntry(accessors_1.LogMessageSeverity.DEBUG, this.getFunc(stackTrace.get()), ...items);
}
info(...items) {
this.addEntry(accessors_1.LogMessageSeverity.INFORMATION, this.getFunc(stackTrace.get()), ...items);
}
log(...items) {
this.addEntry(accessors_1.LogMessageSeverity.LOG, this.getFunc(stackTrace.get()), ...items);
}
warn(...items) {
this.addEntry(accessors_1.LogMessageSeverity.WARNING, this.getFunc(stackTrace.get()), ...items);
}
error(...items) {
this.addEntry(accessors_1.LogMessageSeverity.ERROR, this.getFunc(stackTrace.get()), ...items);
}
success(...items) {
this.addEntry(accessors_1.LogMessageSeverity.SUCCESS, this.getFunc(stackTrace.get()), ...items);
}
getEntries() {
return Array.from(this.entries);
}
getMethod() {
return this.method;
}
getStartTime() {
return this.start;
}
getEndTime() {
return new Date();
}
getTotalTime() {
return this.getEndTime().getTime() - this.getStartTime().getTime();
}
addEntry(severity, caller, ...items) {
const i = items.map((v) => {
if (v instanceof Error) {
return JSON.stringify(v, Object.getOwnPropertyNames(v));
}
if (typeof v === 'object' && typeof v.stack === 'string' && typeof v.message === 'string') {
return JSON.stringify(v, Object.getOwnPropertyNames(v));
}
const str = JSON.stringify(v, null, 2);
return str ? JSON.parse(str) : str; // force call toJSON to prevent circular references
});
this.entries.push({
caller,
severity,
timestamp: new Date(),
args: i,
});
// This should be a setting? :thinking:
// console.log(`${ severity.toUpperCase() }:`, i);
}
getFunc(stack) {
let func = 'anonymous';
if (stack.length === 1) {
return func;
}
const frame = stack[1];
if (frame.getMethodName() === null) {
func = 'anonymous OR constructor';
}
else {
func = frame.getMethodName();
}
if (frame.getFunctionName() !== null) {
func = `${func} -> ${frame.getFunctionName()}`;
}
return func;
}
}
exports.AppConsole = AppConsole;
//# sourceMappingURL=AppConsole.js.map
;