fix: stabilize plugin-sdk test loading

This commit is contained in:
Peter Steinberger
2026-03-27 13:14:11 +00:00
parent 9d10a2e242
commit b5a8d5a230
10 changed files with 524 additions and 104 deletions

View File

@@ -307,103 +307,345 @@ function logToFile(
export function createSubsystemLogger(subsystem: string): SubsystemLogger {
let fileLogger: TsLogger<LogObj> | null = null;
const getFileLogger = (): TsLogger<LogObj> => {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
return fileLogger;
};
const emit = (level: LogLevel, message: string, meta?: Record<string, unknown>): void => {
const consoleSettings = getConsoleSettings();
const consoleEnabled =
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem);
const fileEnabled = isFileLogLevelEnabled(level);
if (!consoleEnabled && !fileEnabled) {
return;
}
let consoleMessageOverride: string | undefined;
let fileMeta = meta;
if (meta && Object.keys(meta).length > 0) {
const { consoleMessage, ...rest } = meta as Record<string, unknown> & {
consoleMessage?: unknown;
};
if (typeof consoleMessage === "string") {
consoleMessageOverride = consoleMessage;
}
fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
}
if (fileEnabled) {
logToFile(getFileLogger(), level, message, fileMeta);
}
if (!consoleEnabled) {
return;
}
const consoleMessage = consoleMessageOverride ?? message;
if (
shouldSuppressProbeConsoleLine({
level,
subsystem,
message: consoleMessage,
meta: fileMeta,
})
) {
return;
}
const line = formatConsoleLine({
level,
subsystem,
message: consoleSettings.style === "json" ? message : consoleMessage,
style: consoleSettings.style,
meta: fileMeta,
});
writeConsoleLine(level, line);
};
const isConsoleEnabled = (level: LogLevel): boolean => {
const consoleSettings = getConsoleSettings();
return (
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem)
);
};
const isFileEnabled = (level: LogLevel): boolean => {
return isFileLogLevelEnabled(level);
};
const logger: SubsystemLogger = {
subsystem,
isEnabled(level, target = "any") {
const isConsoleEnabled =
shouldLogToConsole(level, { level: getConsoleSettings().level }) &&
shouldLogSubsystemToConsole(subsystem);
const isFileEnabled = isFileLogLevelEnabled(level);
if (target === "console") {
return isConsoleEnabled(level);
return isConsoleEnabled;
}
if (target === "file") {
return isFileEnabled(level);
return isFileEnabled;
}
return isConsoleEnabled(level) || isFileEnabled(level);
return isConsoleEnabled || isFileEnabled;
},
trace(message, meta) {
emit("trace", message, meta);
const level: LogLevel = "trace";
const consoleSettings = getConsoleSettings();
const consoleEnabled =
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem);
const fileEnabled = isFileLogLevelEnabled(level);
if (!consoleEnabled && !fileEnabled) {
return;
}
let consoleMessageOverride: string | undefined;
let fileMeta = meta;
if (meta && Object.keys(meta).length > 0) {
const { consoleMessage, ...rest } = meta as Record<string, unknown> & {
consoleMessage?: unknown;
};
if (typeof consoleMessage === "string") {
consoleMessageOverride = consoleMessage;
}
fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
}
if (fileEnabled) {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
logToFile(fileLogger, level, message, fileMeta);
}
if (!consoleEnabled) {
return;
}
const consoleMessage = consoleMessageOverride ?? message;
if (
shouldSuppressProbeConsoleLine({
level,
subsystem,
message: consoleMessage,
meta: fileMeta,
})
) {
return;
}
writeConsoleLine(
level,
formatConsoleLine({
level,
subsystem,
message: consoleSettings.style === "json" ? message : consoleMessage,
style: consoleSettings.style,
meta: fileMeta,
}),
);
},
debug(message, meta) {
emit("debug", message, meta);
const level: LogLevel = "debug";
const consoleSettings = getConsoleSettings();
const consoleEnabled =
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem);
const fileEnabled = isFileLogLevelEnabled(level);
if (!consoleEnabled && !fileEnabled) {
return;
}
let consoleMessageOverride: string | undefined;
let fileMeta = meta;
if (meta && Object.keys(meta).length > 0) {
const { consoleMessage, ...rest } = meta as Record<string, unknown> & {
consoleMessage?: unknown;
};
if (typeof consoleMessage === "string") {
consoleMessageOverride = consoleMessage;
}
fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
}
if (fileEnabled) {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
logToFile(fileLogger, level, message, fileMeta);
}
if (!consoleEnabled) {
return;
}
const consoleMessage = consoleMessageOverride ?? message;
if (
shouldSuppressProbeConsoleLine({
level,
subsystem,
message: consoleMessage,
meta: fileMeta,
})
) {
return;
}
writeConsoleLine(
level,
formatConsoleLine({
level,
subsystem,
message: consoleSettings.style === "json" ? message : consoleMessage,
style: consoleSettings.style,
meta: fileMeta,
}),
);
},
info(message, meta) {
emit("info", message, meta);
const level: LogLevel = "info";
const consoleSettings = getConsoleSettings();
const consoleEnabled =
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem);
const fileEnabled = isFileLogLevelEnabled(level);
if (!consoleEnabled && !fileEnabled) {
return;
}
let consoleMessageOverride: string | undefined;
let fileMeta = meta;
if (meta && Object.keys(meta).length > 0) {
const { consoleMessage, ...rest } = meta as Record<string, unknown> & {
consoleMessage?: unknown;
};
if (typeof consoleMessage === "string") {
consoleMessageOverride = consoleMessage;
}
fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
}
if (fileEnabled) {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
logToFile(fileLogger, level, message, fileMeta);
}
if (!consoleEnabled) {
return;
}
const consoleMessage = consoleMessageOverride ?? message;
if (
shouldSuppressProbeConsoleLine({
level,
subsystem,
message: consoleMessage,
meta: fileMeta,
})
) {
return;
}
writeConsoleLine(
level,
formatConsoleLine({
level,
subsystem,
message: consoleSettings.style === "json" ? message : consoleMessage,
style: consoleSettings.style,
meta: fileMeta,
}),
);
},
warn(message, meta) {
emit("warn", message, meta);
const level: LogLevel = "warn";
const consoleSettings = getConsoleSettings();
const consoleEnabled =
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem);
const fileEnabled = isFileLogLevelEnabled(level);
if (!consoleEnabled && !fileEnabled) {
return;
}
let consoleMessageOverride: string | undefined;
let fileMeta = meta;
if (meta && Object.keys(meta).length > 0) {
const { consoleMessage, ...rest } = meta as Record<string, unknown> & {
consoleMessage?: unknown;
};
if (typeof consoleMessage === "string") {
consoleMessageOverride = consoleMessage;
}
fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
}
if (fileEnabled) {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
logToFile(fileLogger, level, message, fileMeta);
}
if (!consoleEnabled) {
return;
}
const consoleMessage = consoleMessageOverride ?? message;
if (
shouldSuppressProbeConsoleLine({
level,
subsystem,
message: consoleMessage,
meta: fileMeta,
})
) {
return;
}
writeConsoleLine(
level,
formatConsoleLine({
level,
subsystem,
message: consoleSettings.style === "json" ? message : consoleMessage,
style: consoleSettings.style,
meta: fileMeta,
}),
);
},
error(message, meta) {
emit("error", message, meta);
const level: LogLevel = "error";
const consoleSettings = getConsoleSettings();
const consoleEnabled =
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem);
const fileEnabled = isFileLogLevelEnabled(level);
if (!consoleEnabled && !fileEnabled) {
return;
}
let consoleMessageOverride: string | undefined;
let fileMeta = meta;
if (meta && Object.keys(meta).length > 0) {
const { consoleMessage, ...rest } = meta as Record<string, unknown> & {
consoleMessage?: unknown;
};
if (typeof consoleMessage === "string") {
consoleMessageOverride = consoleMessage;
}
fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
}
if (fileEnabled) {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
logToFile(fileLogger, level, message, fileMeta);
}
if (!consoleEnabled) {
return;
}
const consoleMessage = consoleMessageOverride ?? message;
if (
shouldSuppressProbeConsoleLine({
level,
subsystem,
message: consoleMessage,
meta: fileMeta,
})
) {
return;
}
writeConsoleLine(
level,
formatConsoleLine({
level,
subsystem,
message: consoleSettings.style === "json" ? message : consoleMessage,
style: consoleSettings.style,
meta: fileMeta,
}),
);
},
fatal(message, meta) {
emit("fatal", message, meta);
const level: LogLevel = "fatal";
const consoleSettings = getConsoleSettings();
const consoleEnabled =
shouldLogToConsole(level, { level: consoleSettings.level }) &&
shouldLogSubsystemToConsole(subsystem);
const fileEnabled = isFileLogLevelEnabled(level);
if (!consoleEnabled && !fileEnabled) {
return;
}
let consoleMessageOverride: string | undefined;
let fileMeta = meta;
if (meta && Object.keys(meta).length > 0) {
const { consoleMessage, ...rest } = meta as Record<string, unknown> & {
consoleMessage?: unknown;
};
if (typeof consoleMessage === "string") {
consoleMessageOverride = consoleMessage;
}
fileMeta = Object.keys(rest).length > 0 ? rest : undefined;
}
if (fileEnabled) {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
logToFile(fileLogger, level, message, fileMeta);
}
if (!consoleEnabled) {
return;
}
const consoleMessage = consoleMessageOverride ?? message;
if (
shouldSuppressProbeConsoleLine({
level,
subsystem,
message: consoleMessage,
meta: fileMeta,
})
) {
return;
}
writeConsoleLine(
level,
formatConsoleLine({
level,
subsystem,
message: consoleSettings.style === "json" ? message : consoleMessage,
style: consoleSettings.style,
meta: fileMeta,
}),
);
},
raw(message) {
if (isFileEnabled("info")) {
logToFile(getFileLogger(), "info", message, { raw: true });
if (isFileLogLevelEnabled("info")) {
if (!fileLogger) {
fileLogger = getChildLogger({ subsystem });
}
logToFile(fileLogger, "info", message, { raw: true });
}
if (isConsoleEnabled("info")) {
if (
shouldLogToConsole("info", { level: getConsoleSettings().level }) &&
shouldLogSubsystemToConsole(subsystem)
) {
if (shouldSuppressProbeConsoleLine({ level: "info", subsystem, message })) {
return;
}
@@ -421,16 +663,27 @@ export function runtimeForLogger(
logger: SubsystemLogger,
exit: RuntimeEnv["exit"] = defaultRuntime.exit,
): OutputRuntimeEnv {
const formatArgs = (...args: unknown[]) =>
args
.map((arg) => formatRuntimeArg(arg))
.join(" ")
.trim();
return {
log: (...args: unknown[]) => logger.info(formatArgs(...args)),
error: (...args: unknown[]) => logger.error(formatArgs(...args)),
writeStdout: (value: string) => logger.info(value),
writeJson: (value: unknown, space = 2) => {
log(...args) {
logger.info(
args
.map((arg) => formatRuntimeArg(arg))
.join(" ")
.trim(),
);
},
error(...args) {
logger.error(
args
.map((arg) => formatRuntimeArg(arg))
.join(" ")
.trim(),
);
},
writeStdout(value) {
logger.info(value);
},
writeJson(value: unknown, space = 2) {
logger.info(JSON.stringify(value, null, space > 0 ? space : undefined));
},
exit,