Files
emaui/node_modules/@module-federation/sdk/dist/logger.cjs
2026-05-29 15:23:46 +03:00

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