From 7b1f36d00825727cd95b49899357e3d93c855f66 Mon Sep 17 00:00:00 2001 From: Hiroshiba Date: Mon, 20 Jan 2025 05:44:54 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20createLogger=E3=82=92=E6=8B=A1=E5=BC=B5?= =?UTF-8?q?=E3=81=97=E3=81=A6electron=E5=81=B4=E3=81=8B=E3=82=89=E3=82=82?= =?UTF-8?q?=E3=83=95=E3=83=AD=E3=83=B3=E3=83=88=E3=82=A8=E3=83=B3=E3=83=89?= =?UTF-8?q?=E5=81=B4=E3=81=8B=E3=82=89=E3=82=82=E4=BD=BF=E3=81=88=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=20(#2491)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/browser/fileImpl.ts | 2 +- .../electron/engineAndVvppController.ts | 4 +- src/backend/electron/fileHelper.ts | 4 +- src/backend/electron/ipc.ts | 4 +- src/backend/electron/main.ts | 17 ++++--- .../electron/manager/RuntimeInfoManager.ts | 4 +- .../electron/manager/engineInfoManager.ts | 11 +++-- .../electron/manager/engineProcessManager.ts | 4 +- src/backend/electron/manager/vvppManager.ts | 28 ++++++----- src/backend/electron/manager/windowManager.ts | 4 +- src/backend/electron/portHelper.ts | 4 +- .../Dialog/HelpDialog/HelpDialog.vue | 2 +- .../Dialog/ImportSongProjectDialog.vue | 2 +- .../Dialog/SettingDialog/SettingDialog.vue | 2 +- src/components/Sing/ScoreSequencer.vue | 2 +- src/components/Sing/SequencerPitch.vue | 2 +- .../Sing/SequencerRuler/Presentation.vue | 2 +- src/components/Talk/AudioInfo.vue | 2 +- src/domain/frontend/log.ts | 31 ------------ src/helpers/log.ts | 49 +++++++++++++++++++ src/helpers/platform.ts | 8 +++ src/mock/engineMock/talkModelMock.ts | 9 +--- src/plugins/hotkeyPlugin.ts | 2 +- src/sing/workaroundKeyRangeAdjustment.ts | 2 +- src/store/engine.ts | 2 +- src/store/singing.ts | 2 +- 26 files changed, 122 insertions(+), 83 deletions(-) delete mode 100644 src/domain/frontend/log.ts create mode 100644 src/helpers/log.ts diff --git a/src/backend/browser/fileImpl.ts b/src/backend/browser/fileImpl.ts index fcfc18742b..dea154cc89 100644 --- a/src/backend/browser/fileImpl.ts +++ b/src/backend/browser/fileImpl.ts @@ -3,7 +3,7 @@ import { openDB } from "./browserConfig"; import { createFakePath, FakePath, isFakePath } from "./fakePath"; import { SandboxKey } from "@/type/preload"; import { failure, success } from "@/type/result"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { normalizeError } from "@/helpers/normalizeError"; import path from "@/helpers/path"; import { ExhaustiveError } from "@/type/utility"; diff --git a/src/backend/electron/engineAndVvppController.ts b/src/backend/electron/engineAndVvppController.ts index c9342818d5..04a10dae9c 100644 --- a/src/backend/electron/engineAndVvppController.ts +++ b/src/backend/electron/engineAndVvppController.ts @@ -1,7 +1,6 @@ import path from "path"; import fs from "fs"; import { ReadableStream } from "node:stream/web"; -import log from "electron-log/main"; import { dialog } from "electron"; import { getConfigManager } from "./electronConfig"; @@ -24,6 +23,9 @@ import { } from "@/domain/defaultEngine/latetDefaultEngine"; import { loadEnvEngineInfos } from "@/domain/defaultEngine/envEngineInfo"; import { UnreachableError } from "@/type/utility"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("EngineAndVvppController"); /** * エンジンとVVPP周りの処理の流れを制御するクラス。 diff --git a/src/backend/electron/fileHelper.ts b/src/backend/electron/fileHelper.ts index cda62360b6..062389c845 100644 --- a/src/backend/electron/fileHelper.ts +++ b/src/backend/electron/fileHelper.ts @@ -1,7 +1,9 @@ import fs from "fs"; -import log from "electron-log/main"; import { moveFileSync } from "move-file"; import { uuid4 } from "@/helpers/random"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("fileHelper"); /** * 書き込みに失敗したときにファイルが消えないように、 diff --git a/src/backend/electron/ipc.ts b/src/backend/electron/ipc.ts index aa4d31d20b..890d416ca6 100644 --- a/src/backend/electron/ipc.ts +++ b/src/backend/electron/ipc.ts @@ -4,8 +4,10 @@ import { IpcMainInvokeEvent, IpcRendererEvent, } from "electron"; -import log from "electron-log/main"; import { IpcIHData, IpcSOData } from "@/type/ipc"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("ipc"); export type IpcRendererInvoke = { [K in keyof IpcIHData]: ( diff --git a/src/backend/electron/main.ts b/src/backend/electron/main.ts index 0bee5375cc..1e8c87f23a 100644 --- a/src/backend/electron/main.ts +++ b/src/backend/electron/main.ts @@ -7,7 +7,7 @@ import { pathToFileURL } from "url"; import { app, dialog, Menu, nativeTheme, net, protocol, shell } from "electron"; import installExtension, { VUEJS_DEVTOOLS } from "electron-devtools-installer"; -import log from "electron-log/main"; +import electronLog from "electron-log/main"; import dayjs from "dayjs"; import { hasSupportedGpu } from "./device"; import { @@ -39,6 +39,7 @@ import { TextAsset, } from "@/type/preload"; import { isMac } from "@/helpers/platform"; +import { createLogger } from "@/helpers/log"; type SingleInstanceLockData = { filePath: string | undefined; @@ -88,16 +89,18 @@ if (!isDevelopment) { configMigration014({ fixedUserDataDir, beforeUserDataDir }); // 以前のファイルがあれば持ってくる } -log.initialize({ preload: false }); +electronLog.initialize({ preload: false }); // silly以上のログをコンソールに出力 -log.transports.console.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}"; -log.transports.console.level = "silly"; +electronLog.transports.console.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}"; +electronLog.transports.console.level = "silly"; // warn以上のログをファイルに出力 const prefix = dayjs().format("YYYYMMDD_HHmmss"); -log.transports.file.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}"; -log.transports.file.level = "warn"; -log.transports.file.fileName = `${prefix}_error.log`; +electronLog.transports.file.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}"; +electronLog.transports.file.level = "warn"; +electronLog.transports.file.fileName = `${prefix}_error.log`; + +const log = createLogger("main"); if (errorForRemoveBeforeUserDataDir != undefined) { log.error(errorForRemoveBeforeUserDataDir); diff --git a/src/backend/electron/manager/RuntimeInfoManager.ts b/src/backend/electron/manager/RuntimeInfoManager.ts index ddefc10f2d..d515b473b7 100644 --- a/src/backend/electron/manager/RuntimeInfoManager.ts +++ b/src/backend/electron/manager/RuntimeInfoManager.ts @@ -4,11 +4,13 @@ */ import AsyncLock from "async-lock"; -import log from "electron-log/main"; import type { AltPortInfos } from "@/store/type"; import { EngineId, EngineInfo } from "@/type/preload"; import { writeFileSafely } from "@/backend/electron/fileHelper"; import { createEngineUrl } from "@/domain/url"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("RuntimeInfoManager"); /** * ランタイム情報書き出しに必要なEngineInfo diff --git a/src/backend/electron/manager/engineInfoManager.ts b/src/backend/electron/manager/engineInfoManager.ts index e44ce248ef..029afe4342 100644 --- a/src/backend/electron/manager/engineInfoManager.ts +++ b/src/backend/electron/manager/engineInfoManager.ts @@ -4,8 +4,6 @@ import shlex from "shlex"; import { dialog } from "electron"; // FIXME: ここでelectronをimportするのは良くない -import log from "electron-log/main"; - import { getConfigManager } from "../electronConfig"; import { EngineInfo, @@ -17,6 +15,9 @@ import { import { AltPortInfos } from "@/store/type"; import { loadEnvEngineInfos } from "@/domain/defaultEngine/envEngineInfo"; import { failure, Result, success } from "@/type/result"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("EngineInfoManager"); /** 利用可能なエンジンの情報を管理するクラス */ export class EngineInfoManager { @@ -109,7 +110,7 @@ export class EngineInfoManager { for (const dirName of fs.readdirSync(this.vvppEngineDir)) { const engineDir = path.join(this.vvppEngineDir, dirName); if (!fs.statSync(engineDir).isDirectory()) { - log.log(`${engineDir} is not directory`); + log.info(`${engineDir} is not directory`); continue; } if (dirName === ".tmp") { @@ -117,7 +118,7 @@ export class EngineInfoManager { } const result = this.loadEngineInfo(engineDir, "vvpp"); if (!result.ok) { - log.log(`Failed to load engine: ${result.code}, ${engineDir}`); + log.info(`Failed to load engine: ${result.code}, ${engineDir}`); continue; } engineInfos.push(result.value); @@ -135,7 +136,7 @@ export class EngineInfoManager { for (const engineDir of configManager.get("registeredEngineDirs")) { const result = this.loadEngineInfo(engineDir, "path"); if (!result.ok) { - log.log(`Failed to load engine: ${result.code}, ${engineDir}`); + log.error(`Failed to load engine: ${result.code}, ${engineDir}`); // 動かないエンジンは追加できないので削除 // FIXME: エンジン管理UIで削除可能にする dialog.showErrorBox( diff --git a/src/backend/electron/manager/engineProcessManager.ts b/src/backend/electron/manager/engineProcessManager.ts index e02ec2fd30..8671b8ffd4 100644 --- a/src/backend/electron/manager/engineProcessManager.ts +++ b/src/backend/electron/manager/engineProcessManager.ts @@ -4,7 +4,6 @@ import treeKill from "tree-kill"; import { app, dialog } from "electron"; // FIXME: ここでelectronをimportするのは良くない -import log from "electron-log/main"; import { findAltPort, getPidFromPort, @@ -16,6 +15,9 @@ import { import { getConfigManager } from "../electronConfig"; import { getEngineInfoManager } from "./engineInfoManager"; import { EngineId, EngineInfo } from "@/type/preload"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("EngineProcessManager"); type EngineProcessContainer = { willQuitEngine: boolean; diff --git a/src/backend/electron/manager/vvppManager.ts b/src/backend/electron/manager/vvppManager.ts index adaac308bc..be61cf1b3f 100644 --- a/src/backend/electron/manager/vvppManager.ts +++ b/src/backend/electron/manager/vvppManager.ts @@ -1,7 +1,6 @@ import fs from "fs"; import path from "path"; import { spawn } from "child_process"; -import log from "electron-log/main"; import { moveFile } from "move-file"; import { app, dialog } from "electron"; import MultiStream from "multistream"; @@ -15,6 +14,9 @@ import { MinimumEngineManifestType, } from "@/type/preload"; import { errorToMessage } from "@/helpers/errorHelper"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("VvppManager"); const isNotWin = process.platform !== "win32"; @@ -40,7 +42,7 @@ async function getArchiveFileParts( let archiveFileParts: string[]; // 名前.数値.vvpppの場合は分割されているとみなして連結する if (vvppLikeFilePath.match(/\.[0-9]+\.vvppp$/)) { - log.log("vvpp is split, finding other parts..."); + log.info("vvpp is split, finding other parts..."); const vvpppPathGlob = vvppLikeFilePath .replace(/\.[0-9]+\.vvppp$/, ".*.vvppp") .replace(/\\/g, "/"); // node-globはバックスラッシュを使えないので、スラッシュに置換する @@ -49,7 +51,7 @@ async function getArchiveFileParts( if (!p.match(/\.[0-9]+\.vvppp$/)) { continue; } - log.log(`found ${p}`); + log.info(`found ${p}`); filePaths.push(p); } filePaths.sort((a, b) => { @@ -62,7 +64,7 @@ async function getArchiveFileParts( }); archiveFileParts = filePaths; } else { - log.log("Not a split file"); + log.info("Not a split file"); archiveFileParts = [vvppLikeFilePath]; } return archiveFileParts; @@ -75,12 +77,12 @@ async function concatenateVvppFiles( ) { // -siオプションでの7z解凍はサポートされていないため、 // ファイルを連結した一次ファイルを作成し、それを7zで解凍する。 - log.log(`Concatenating ${archiveFileParts.length} files...`); + log.info(`Concatenating ${archiveFileParts.length} files...`); const tmpConcatenatedFile = path.join( app.getPath("temp"), `vvpp-${new Date().getTime()}.${format}`, ); - log.log("Temporary file:", tmpConcatenatedFile); + log.info("Temporary file:", tmpConcatenatedFile); await new Promise((resolve, reject) => { if (!tmpConcatenatedFile) throw new Error("tmpFile is undefined"); const inputStreams = archiveFileParts.map((f) => fs.createReadStream(f)); @@ -93,7 +95,7 @@ async function concatenateVvppFiles( }) .on("error", reject); }); - log.log("Concatenated"); + log.info("Concatenated"); return tmpConcatenatedFile; } @@ -123,7 +125,7 @@ async function unarchive( if (import.meta.env.PROD) { sevenZipPath = path.join(path.dirname(app.getPath("exe")), sevenZipPath); } - log.log("Spawning 7z:", sevenZipPath, args.join(" ")); + log.info("Spawning 7z:", sevenZipPath, args.join(" ")); await new Promise((resolve, reject) => { const child = spawn(sevenZipPath, args, { stdio: ["pipe", "pipe", "pipe"], @@ -253,8 +255,8 @@ export class VvppManager { if (!format) { throw new Error(`Unknown file format: ${archiveFileParts[0]}`); } - log.log("Format:", format); - log.log("Extracting vvpp to", outputDir); + log.info("Format:", format); + log.info("Extracting vvpp to", outputDir); try { let tmpConcatenatedFile: string | undefined; let archiveFile: string; @@ -267,13 +269,13 @@ export class VvppManager { archiveFile = tmpConcatenatedFile; } else { archiveFile = archiveFileParts[0]; - log.log("Single file, not concatenating"); + log.info("Single file, not concatenating"); } await unarchive({ archiveFile, outputDir, format }, callbacks); } finally { if (tmpConcatenatedFile) { - log.log("Removing temporary file", tmpConcatenatedFile); + log.info("Removing temporary file", tmpConcatenatedFile); await fs.promises.rm(tmpConcatenatedFile); } } @@ -292,7 +294,7 @@ export class VvppManager { }; } catch (e) { if (fs.existsSync(outputDir)) { - log.log("Failed to extract vvpp, removing", outputDir); + log.info("Failed to extract vvpp, removing", outputDir); await fs.promises.rm(outputDir, { recursive: true }); } throw e; diff --git a/src/backend/electron/manager/windowManager.ts b/src/backend/electron/manager/windowManager.ts index c0a49734af..3c8d9e51c0 100644 --- a/src/backend/electron/manager/windowManager.ts +++ b/src/backend/electron/manager/windowManager.ts @@ -9,13 +9,15 @@ import { OpenDialogSyncOptions, SaveDialogOptions, } from "electron"; -import log from "electron-log/main"; import windowStateKeeper from "electron-window-state"; import { getConfigManager } from "../electronConfig"; import { getEngineAndVvppController } from "../engineAndVvppController"; import { ipcMainSendProxy } from "../ipc"; import { isMac } from "@/helpers/platform"; import { themes } from "@/domain/theme"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("WindowManager"); type WindowManagerOption = { appStateGetter: () => { willQuit: boolean }; diff --git a/src/backend/electron/portHelper.ts b/src/backend/electron/portHelper.ts index 73fc05eefe..60c4735451 100644 --- a/src/backend/electron/portHelper.ts +++ b/src/backend/electron/portHelper.ts @@ -1,6 +1,8 @@ import { execFileSync } from "child_process"; import { createServer } from "net"; -import log from "electron-log/main"; +import { createLogger } from "@/helpers/log"; + +const log = createLogger("portHelper"); const isWindows = process.platform === "win32"; diff --git a/src/components/Dialog/HelpDialog/HelpDialog.vue b/src/components/Dialog/HelpDialog/HelpDialog.vue index 75a98c20b0..55ced0191d 100644 --- a/src/components/Dialog/HelpDialog/HelpDialog.vue +++ b/src/components/Dialog/HelpDialog/HelpDialog.vue @@ -84,7 +84,7 @@ import BaseNavigationView from "@/components/Base/BaseNavigationView.vue"; import { UpdateInfo as UpdateInfoObject, UrlString } from "@/type/preload"; import { useStore } from "@/store"; import { useFetchNewUpdateInfos } from "@/composables/useFetchNewUpdateInfos"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; type PageItem = { type: "item"; diff --git a/src/components/Dialog/ImportSongProjectDialog.vue b/src/components/Dialog/ImportSongProjectDialog.vue index ea7fc291ec..635a0123a3 100644 --- a/src/components/Dialog/ImportSongProjectDialog.vue +++ b/src/components/Dialog/ImportSongProjectDialog.vue @@ -99,7 +99,7 @@ import { SupportedExtensions as UfSupportedExtensions, } from "@sevenc-nanashi/utaformatix-ts"; import { useStore } from "@/store"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { ExhaustiveError } from "@/type/utility"; import { IsEqual } from "@/type/utility"; import { LatestProjectType } from "@/domain/project/schema"; diff --git a/src/components/Dialog/SettingDialog/SettingDialog.vue b/src/components/Dialog/SettingDialog/SettingDialog.vue index 33cec7090a..de29dc7465 100644 --- a/src/components/Dialog/SettingDialog/SettingDialog.vue +++ b/src/components/Dialog/SettingDialog/SettingDialog.vue @@ -492,7 +492,7 @@ import { EngineId, EditorFontType, } from "@/type/preload"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { useRootMiscSetting } from "@/composables/useRootMiscSetting"; import { isProduction } from "@/helpers/platform"; diff --git a/src/components/Sing/ScoreSequencer.vue b/src/components/Sing/ScoreSequencer.vue index da50e1dbd4..89c30447a7 100644 --- a/src/components/Sing/ScoreSequencer.vue +++ b/src/components/Sing/ScoreSequencer.vue @@ -235,7 +235,7 @@ import SequencerPitch from "@/components/Sing/SequencerPitch.vue"; import SequencerLyricInput from "@/components/Sing/SequencerLyricInput.vue"; import SequencerToolPalette from "@/components/Sing/SequencerToolPalette.vue"; import { isOnCommandOrCtrlKeyDown } from "@/store/utility"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { useHotkeyManager } from "@/plugins/hotkeyPlugin"; import { useCommandOrControlKey, diff --git a/src/components/Sing/SequencerPitch.vue b/src/components/Sing/SequencerPitch.vue index a558f5e1fd..7baa1fb5aa 100644 --- a/src/components/Sing/SequencerPitch.vue +++ b/src/components/Sing/SequencerPitch.vue @@ -27,7 +27,7 @@ import { onUnmountedOrDeactivated, } from "@/composables/onMountOrActivate"; import { ExhaustiveError } from "@/type/utility"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { getLast } from "@/sing/utility"; import { getOrThrow } from "@/helpers/mapHelper"; import { EditorFrameAudioQuery } from "@/store/type"; diff --git a/src/components/Sing/SequencerRuler/Presentation.vue b/src/components/Sing/SequencerRuler/Presentation.vue index 30c9e32f9b..89811ddcfb 100644 --- a/src/components/Sing/SequencerRuler/Presentation.vue +++ b/src/components/Sing/SequencerRuler/Presentation.vue @@ -130,7 +130,7 @@ import { UnreachableError } from "@/type/utility"; import TempoChangeDialog from "@/components/Sing/ChangeValueDialog/TempoChangeDialog.vue"; import TimeSignatureChangeDialog from "@/components/Sing/ChangeValueDialog/TimeSignatureChangeDialog.vue"; import { FontSpecification, predictTextWidth } from "@/helpers/textWidth"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { useSequencerGrid } from "@/composables/useSequencerGridPattern"; const props = defineProps<{ diff --git a/src/components/Talk/AudioInfo.vue b/src/components/Talk/AudioInfo.vue index 7f329ef1e2..f051653e70 100644 --- a/src/components/Talk/AudioInfo.vue +++ b/src/components/Talk/AudioInfo.vue @@ -319,7 +319,7 @@ import { import { EngineManifest } from "@/openapi"; import { useDefaultPreset } from "@/composables/useDefaultPreset"; import { SLIDER_PARAMETERS } from "@/store/utility"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; const props = defineProps<{ activeAudioKey: AudioKey; diff --git a/src/domain/frontend/log.ts b/src/domain/frontend/log.ts deleted file mode 100644 index d99ba23a23..0000000000 --- a/src/domain/frontend/log.ts +++ /dev/null @@ -1,31 +0,0 @@ -type LogLevel = "info" | "warn" | "error"; -type LogFunction = (...args: unknown[]) => void; - -/** ログ出力用の関数を生成する。ブラウザ専用。 */ -// TODO: window.backendをDIできるようにする -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; - } - - // eslint-disable-next-line no-console - console[logType](...args); - }; - } -} diff --git a/src/helpers/log.ts b/src/helpers/log.ts new file mode 100644 index 0000000000..3b0296d5f4 --- /dev/null +++ b/src/helpers/log.ts @@ -0,0 +1,49 @@ +import { type Logger } from "electron-log"; +import { isElectron, isNode } from "@/helpers/platform"; + +type LogLevel = "info" | "warn" | "error"; +type LogFunction = (...args: unknown[]) => void; + +let electronLogPromise: Promise | undefined = undefined; + +/** + * ログ出力用の関数を生成する。 + * ブラウザ環境・Electron環境・Node.js環境で動作する。 + */ +export function createLogger(scope: string): Record { + return { + info: createLogFunction("info"), + warn: createLogFunction("warn"), + error: createLogFunction("error"), + }; + + function createLogFunction(logType: LogLevel): LogFunction { + return (...args: unknown[]) => { + const scopeAndArgs = [`[${scope}]`, ...args]; + + // フロントエンドの場合 + if (typeof window != "undefined" && window.backend != undefined) { + const method = ( + { info: "logInfo", warn: "logWarn", error: "logError" } as const + )[logType]; + window.backend[method](...scopeAndArgs); + return; + } + + // Electronのメインプロセスの場合 + if (isNode && isElectron) { + if (electronLogPromise == undefined) { + electronLogPromise = import("electron-log/main"); + } + + void electronLogPromise.then((log) => { + log[logType](...scopeAndArgs); + }); + return; + } + + // eslint-disable-next-line no-console + console[logType](...scopeAndArgs); + }; + } +} diff --git a/src/helpers/platform.ts b/src/helpers/platform.ts index 9aa4547b73..94b1318363 100644 --- a/src/helpers/platform.ts +++ b/src/helpers/platform.ts @@ -28,3 +28,11 @@ function checkOs(os: "windows" | "mac"): boolean { export const isMac = checkOs("mac"); export const isWindows = checkOs("windows"); + +/** Nodeとして動いてほしいか */ +export const isNode = + // window.documentがなければNode + typeof window == "undefined" || + typeof window.document == "undefined" || + // happy-domのときはNode + typeof (window as { happyDOM?: unknown }).happyDOM != "undefined"; diff --git a/src/mock/engineMock/talkModelMock.ts b/src/mock/engineMock/talkModelMock.ts index cb55943a6d..ed17bd62db 100644 --- a/src/mock/engineMock/talkModelMock.ts +++ b/src/mock/engineMock/talkModelMock.ts @@ -7,14 +7,7 @@ import { moraToPhonemes } from "./phonemeMock"; import { parseKana } from "./aquestalkLikeMock"; import { moraPattern } from "@/domain/japanese"; import { AccentPhrase, Mora } from "@/openapi"; - -/** Nodeとして動いてほしいかを判定する */ -const isNode = - // window.documentがなければNode - typeof window == "undefined" || - typeof window.document == "undefined" || - // happy-domのときはNode - typeof (window as { happyDOM?: unknown }).happyDOM != "undefined"; +import { isNode } from "@/helpers/platform"; let _tokenizer: Tokenizer | undefined; diff --git a/src/plugins/hotkeyPlugin.ts b/src/plugins/hotkeyPlugin.ts index 6ae06ea026..83b784628b 100644 --- a/src/plugins/hotkeyPlugin.ts +++ b/src/plugins/hotkeyPlugin.ts @@ -14,7 +14,7 @@ import { HotkeyCombination, HotkeySettingType, } from "@/domain/hotkeyAction"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { Brand } from "@/type/utility"; const hotkeyManagerKey = "hotkeyManager"; diff --git a/src/sing/workaroundKeyRangeAdjustment.ts b/src/sing/workaroundKeyRangeAdjustment.ts index 3f15e19b2b..89496b65a6 100644 --- a/src/sing/workaroundKeyRangeAdjustment.ts +++ b/src/sing/workaroundKeyRangeAdjustment.ts @@ -5,7 +5,7 @@ * FIXME: スタイルの音域をエンジンから取得可能にし、音域調整量を計算するように修正する。 */ -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { Singer } from "@/store/type"; import { CharacterInfo, EngineId } from "@/type/preload"; diff --git a/src/store/engine.ts b/src/store/engine.ts index b478eb98e2..ab83f9f033 100644 --- a/src/store/engine.ts +++ b/src/store/engine.ts @@ -1,7 +1,7 @@ import { EngineState, EngineStoreState, EngineStoreTypes } from "./type"; import { createUILockAction } from "./ui"; import { createPartialStore } from "./vuex"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import type { EngineManifest } from "@/openapi"; import type { EngineId, EngineInfo } from "@/type/preload"; diff --git a/src/store/singing.ts b/src/store/singing.ts index ed15a1759c..5df2810978 100644 --- a/src/store/singing.ts +++ b/src/store/singing.ts @@ -104,7 +104,7 @@ import { round, } from "@/sing/utility"; import { getWorkaroundKeyRangeAdjustment } from "@/sing/workaroundKeyRangeAdjustment"; -import { createLogger } from "@/domain/frontend/log"; +import { createLogger } from "@/helpers/log"; import { noteSchema } from "@/domain/project/schema"; import { getOrThrow } from "@/helpers/mapHelper"; import { cloneWithUnwrapProxy } from "@/helpers/cloneWithUnwrapProxy";