mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-27 01:22:49 +00:00
129 lines
3.5 KiB
JavaScript
129 lines
3.5 KiB
JavaScript
const require_env = require('./env.cjs');
|
|
|
|
//#region src/logger.ts
|
|
const PREFIX = "[ Module Federation ]";
|
|
const DEFAULT_DELEGATE = console;
|
|
const LOGGER_STACK_SKIP_TOKENS = [
|
|
"logger.ts",
|
|
"logger.js",
|
|
"captureStackTrace",
|
|
"Logger.emit",
|
|
"Logger.log",
|
|
"Logger.info",
|
|
"Logger.warn",
|
|
"Logger.error",
|
|
"Logger.debug"
|
|
];
|
|
function captureStackTrace() {
|
|
try {
|
|
const stack = (/* @__PURE__ */ new Error()).stack;
|
|
if (!stack) return;
|
|
const [, ...rawLines] = stack.split("\n");
|
|
const filtered = rawLines.filter((line) => !LOGGER_STACK_SKIP_TOKENS.some((token) => line.includes(token)));
|
|
if (!filtered.length) return;
|
|
return `Stack trace:\n${filtered.slice(0, 5).join("\n")}`;
|
|
} catch {
|
|
return;
|
|
}
|
|
}
|
|
var Logger = class {
|
|
constructor(prefix, delegate = DEFAULT_DELEGATE) {
|
|
this.prefix = prefix;
|
|
this.delegate = delegate ?? DEFAULT_DELEGATE;
|
|
}
|
|
setPrefix(prefix) {
|
|
this.prefix = prefix;
|
|
}
|
|
setDelegate(delegate) {
|
|
this.delegate = delegate ?? DEFAULT_DELEGATE;
|
|
}
|
|
emit(method, args) {
|
|
const delegate = this.delegate;
|
|
const stackTrace = require_env.isDebugMode() ? captureStackTrace() : void 0;
|
|
const enrichedArgs = stackTrace ? [...args, stackTrace] : args;
|
|
const order = (() => {
|
|
switch (method) {
|
|
case "log": return ["log", "info"];
|
|
case "info": return ["info", "log"];
|
|
case "warn": return [
|
|
"warn",
|
|
"info",
|
|
"log"
|
|
];
|
|
case "error": return [
|
|
"error",
|
|
"warn",
|
|
"log"
|
|
];
|
|
default: return ["debug", "log"];
|
|
}
|
|
})();
|
|
for (const candidate of order) {
|
|
const handler = delegate[candidate];
|
|
if (typeof handler === "function") {
|
|
handler.call(delegate, this.prefix, ...enrichedArgs);
|
|
return;
|
|
}
|
|
}
|
|
for (const candidate of order) {
|
|
const handler = DEFAULT_DELEGATE[candidate];
|
|
if (typeof handler === "function") {
|
|
handler.call(DEFAULT_DELEGATE, this.prefix, ...enrichedArgs);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
log(...args) {
|
|
this.emit("log", args);
|
|
}
|
|
warn(...args) {
|
|
this.emit("warn", args);
|
|
}
|
|
error(...args) {
|
|
this.emit("error", args);
|
|
}
|
|
success(...args) {
|
|
this.emit("info", args);
|
|
}
|
|
info(...args) {
|
|
this.emit("info", args);
|
|
}
|
|
ready(...args) {
|
|
this.emit("info", args);
|
|
}
|
|
debug(...args) {
|
|
if (require_env.isDebugMode()) this.emit("debug", args);
|
|
}
|
|
};
|
|
function createLogger(prefix) {
|
|
return new Logger(prefix);
|
|
}
|
|
function createInfrastructureLogger(prefix) {
|
|
const infrastructureLogger = new Logger(prefix);
|
|
Object.defineProperty(infrastructureLogger, "__mf_infrastructure_logger__", {
|
|
value: true,
|
|
enumerable: false,
|
|
configurable: false
|
|
});
|
|
return infrastructureLogger;
|
|
}
|
|
function bindLoggerToCompiler(loggerInstance, compiler, name) {
|
|
if (!loggerInstance.__mf_infrastructure_logger__) return;
|
|
if (!compiler?.getInfrastructureLogger) return;
|
|
try {
|
|
const infrastructureLogger = compiler.getInfrastructureLogger(name);
|
|
if (infrastructureLogger && typeof infrastructureLogger === "object" && (typeof infrastructureLogger.log === "function" || typeof infrastructureLogger.info === "function" || typeof infrastructureLogger.warn === "function" || typeof infrastructureLogger.error === "function")) loggerInstance.setDelegate(infrastructureLogger);
|
|
} catch {
|
|
loggerInstance.setDelegate(void 0);
|
|
}
|
|
}
|
|
const logger = createLogger(PREFIX);
|
|
const infrastructureLogger = createInfrastructureLogger(PREFIX);
|
|
|
|
//#endregion
|
|
exports.bindLoggerToCompiler = bindLoggerToCompiler;
|
|
exports.createInfrastructureLogger = createInfrastructureLogger;
|
|
exports.createLogger = createLogger;
|
|
exports.infrastructureLogger = infrastructureLogger;
|
|
exports.logger = logger;
|
|
//# sourceMappingURL=logger.cjs.map
|