diff --git a/src/domain/frontend/log.ts b/src/domain/frontend/log.ts index 4cb2aa8598..d99ba23a23 100644 --- a/src/domain/frontend/log.ts +++ b/src/domain/frontend/log.ts @@ -1,22 +1,31 @@ +type LogLevel = "info" | "warn" | "error"; +type LogFunction = (...args: unknown[]) => void; + /** ログ出力用の関数を生成する。ブラウザ専用。 */ // TODO: window.backendをDIできるようにする -export function createLogger(scope: string) { - const createInner = - ( - method: "logInfo" | "logWarn" | "logError", - fallbackMethod: "info" | "warn" | "error", - ) => - (...args: unknown[]) => { - if (window.backend == undefined) { - // eslint-disable-next-line no-console - console[fallbackMethod](...args); +export function createLogger(scope: string): Record { + return { + info: createLogFunction("info"), + warn: createLogFunction("warn"), + error: createLogFunction("error"), + }; + + function createLogFunction(logType: LogLevel): LogFunction { + return (...args: unknown[]) => { + if (window.backend != undefined) { + const method = ( + { + info: "logInfo", + warn: "logWarn", + error: "logError", + } as const + )[logType]; + window.backend[method](`[${scope}]`, ...args); return; } - window.backend[method](`[${scope}]`, ...args); + + // eslint-disable-next-line no-console + console[logType](...args); }; - return { - info: createInner("logInfo", "info"), - warn: createInner("logWarn", "warn"), - error: createInner("logError", "error"), - }; + } }