refactor: remove boot re-export alias layer

main.ts now imports directly from the runtime/composers and runtime/domains
modules, eliminating the intermediate boot/ indirection.
This commit is contained in:
2026-03-28 10:26:56 -07:00
parent 5141a936d8
commit 549ff66d09
3 changed files with 20 additions and 96 deletions

View File

@@ -402,30 +402,6 @@ import { handleMpvCommandFromIpcRuntime } from './main/ipc-mpv-command';
import { registerIpcRuntimeServices } from './main/ipc-runtime'; import { registerIpcRuntimeServices } from './main/ipc-runtime';
import { createAnkiJimakuIpcRuntimeServiceDeps } from './main/dependencies'; import { createAnkiJimakuIpcRuntimeServiceDeps } from './main/dependencies';
import { createMainBootServices } from './main/boot/services'; import { createMainBootServices } from './main/boot/services';
import {
composeBootOverlayVisibilityRuntime,
composeBootJellyfinRuntimeHandlers,
composeBootAnilistSetupHandlers,
createBootMaybeFocusExistingAnilistSetupWindowHandler,
createBootBuildOpenAnilistSetupWindowMainDepsHandler,
createBootOpenAnilistSetupWindowHandler,
composeBootAnilistTrackingHandlers,
composeBootStatsStartupRuntime,
createBootRunStatsCliCommandHandler,
composeBootAppReadyRuntime,
composeBootMpvRuntimeHandlers,
createBootTrayRuntimeHandlers,
createBootYomitanProfilePolicy,
createBootYomitanExtensionRuntime,
createBootYomitanSettingsRuntime,
} from './main/boot/runtimes';
import {
composeBootStartupLifecycleHandlers,
composeBootIpcRuntimeHandlers,
composeBootCliStartupHandlers,
composeBootHeadlessStartupHandlers,
composeBootOverlayWindowHandlers,
} from './main/boot/handlers';
import { handleCliCommandRuntimeServiceWithContext } from './main/cli-runtime'; import { handleCliCommandRuntimeServiceWithContext } from './main/cli-runtime';
import { createOverlayModalRuntimeService } from './main/overlay-runtime'; import { createOverlayModalRuntimeService } from './main/overlay-runtime';
import { createOverlayModalInputState } from './main/runtime/overlay-modal-input-state'; import { createOverlayModalInputState } from './main/runtime/overlay-modal-input-state';
@@ -1916,7 +1892,7 @@ const buildOpenRuntimeOptionsPaletteMainDepsHandler =
createBuildOpenRuntimeOptionsPaletteMainDepsHandler({ createBuildOpenRuntimeOptionsPaletteMainDepsHandler({
openRuntimeOptionsPaletteRuntime: () => overlayModalRuntime.openRuntimeOptionsPalette(), openRuntimeOptionsPaletteRuntime: () => overlayModalRuntime.openRuntimeOptionsPalette(),
}); });
const overlayVisibilityComposer = composeBootOverlayVisibilityRuntime({ const overlayVisibilityComposer = composeOverlayVisibilityRuntime({
overlayVisibilityRuntime, overlayVisibilityRuntime,
restorePreviousSecondarySubVisibilityMainDeps: restorePreviousSecondarySubVisibilityMainDeps:
buildRestorePreviousSecondarySubVisibilityMainDepsHandler(), buildRestorePreviousSecondarySubVisibilityMainDepsHandler(),
@@ -1988,7 +1964,7 @@ const {
stopJellyfinRemoteSession, stopJellyfinRemoteSession,
runJellyfinCommand, runJellyfinCommand,
openJellyfinSetupWindow, openJellyfinSetupWindow,
} = composeBootJellyfinRuntimeHandlers({ } = composeJellyfinRuntimeHandlers({
getResolvedJellyfinConfigMainDeps: { getResolvedJellyfinConfigMainDeps: {
getResolvedConfig: () => getResolvedConfig(), getResolvedConfig: () => getResolvedConfig(),
loadStoredSession: () => jellyfinTokenStore.loadSession(), loadStoredSession: () => jellyfinTokenStore.loadSession(),
@@ -2288,7 +2264,7 @@ const {
consumeAnilistSetupTokenFromUrl, consumeAnilistSetupTokenFromUrl,
handleAnilistSetupProtocolUrl, handleAnilistSetupProtocolUrl,
registerSubminerProtocolClient, registerSubminerProtocolClient,
} = composeBootAnilistSetupHandlers({ } = composeAnilistSetupHandlers({
notifyDeps: { notifyDeps: {
hasMpvClient: () => Boolean(appState.mpvClient), hasMpvClient: () => Boolean(appState.mpvClient),
showMpvOsd: (message) => showMpvOsd(message), showMpvOsd: (message) => showMpvOsd(message),
@@ -2339,10 +2315,10 @@ const {
}, },
}); });
const maybeFocusExistingAnilistSetupWindow = createBootMaybeFocusExistingAnilistSetupWindowHandler({ const maybeFocusExistingAnilistSetupWindow = createMaybeFocusExistingAnilistSetupWindowHandler({
getSetupWindow: () => appState.anilistSetupWindow, getSetupWindow: () => appState.anilistSetupWindow,
}); });
const buildOpenAnilistSetupWindowMainDepsHandler = createBootBuildOpenAnilistSetupWindowMainDepsHandler( const buildOpenAnilistSetupWindowMainDepsHandler = createBuildOpenAnilistSetupWindowMainDepsHandler(
{ {
maybeFocusExistingSetupWindow: maybeFocusExistingAnilistSetupWindow, maybeFocusExistingSetupWindow: maybeFocusExistingAnilistSetupWindow,
createSetupWindow: createCreateAnilistSetupWindowHandler({ createSetupWindow: createCreateAnilistSetupWindowHandler({
@@ -2390,7 +2366,7 @@ const buildOpenAnilistSetupWindowMainDepsHandler = createBootBuildOpenAnilistSet
); );
function openAnilistSetupWindow(): void { function openAnilistSetupWindow(): void {
createBootOpenAnilistSetupWindowHandler(buildOpenAnilistSetupWindowMainDepsHandler())(); createOpenAnilistSetupWindowHandler(buildOpenAnilistSetupWindowMainDepsHandler())();
} }
const { const {
@@ -2404,7 +2380,7 @@ const {
ensureAnilistMediaGuess, ensureAnilistMediaGuess,
processNextAnilistRetryUpdate, processNextAnilistRetryUpdate,
maybeRunAnilistPostWatchUpdate, maybeRunAnilistPostWatchUpdate,
} = composeBootAnilistTrackingHandlers({ } = composeAnilistTrackingHandlers({
refreshClientSecretMainDeps: { refreshClientSecretMainDeps: {
getResolvedConfig: () => getResolvedConfig(), getResolvedConfig: () => getResolvedConfig(),
isAnilistTrackingEnabled: (config) => isAnilistTrackingEnabled(config as ResolvedConfig), isAnilistTrackingEnabled: (config) => isAnilistTrackingEnabled(config as ResolvedConfig),
@@ -2671,7 +2647,7 @@ const {
onWillQuitCleanup: onWillQuitCleanupHandler, onWillQuitCleanup: onWillQuitCleanupHandler,
shouldRestoreWindowsOnActivate: shouldRestoreWindowsOnActivateHandler, shouldRestoreWindowsOnActivate: shouldRestoreWindowsOnActivateHandler,
restoreWindowsOnActivate: restoreWindowsOnActivateHandler, restoreWindowsOnActivate: restoreWindowsOnActivateHandler,
} = composeBootStartupLifecycleHandlers({ } = composeStartupLifecycleHandlers({
registerProtocolUrlHandlersMainDeps: { registerProtocolUrlHandlersMainDeps: {
registerOpenUrl: (listener) => { registerOpenUrl: (listener) => {
app.on('open-url', listener); app.on('open-url', listener);
@@ -2979,7 +2955,7 @@ const ensureImmersionTrackerStarted = (): void => {
hasAttemptedImmersionTrackerStartup = true; hasAttemptedImmersionTrackerStartup = true;
createImmersionTrackerStartup(); createImmersionTrackerStartup();
}; };
const statsStartupRuntime = composeBootStatsStartupRuntime({ const statsStartupRuntime = composeStatsStartupRuntime({
ensureStatsServerStarted: () => ensureStatsServerStarted(), ensureStatsServerStarted: () => ensureStatsServerStarted(),
ensureBackgroundStatsServerStarted: () => ensureBackgroundStatsServerStarted(), ensureBackgroundStatsServerStarted: () => ensureBackgroundStatsServerStarted(),
stopBackgroundStatsServer: () => stopBackgroundStatsServer(), stopBackgroundStatsServer: () => stopBackgroundStatsServer(),
@@ -2993,7 +2969,7 @@ const statsStartupRuntime = composeBootStatsStartupRuntime({
}, },
}); });
const runStatsCliCommand = createBootRunStatsCliCommandHandler({ const runStatsCliCommand = createRunStatsCliCommandHandler({
getResolvedConfig: () => getResolvedConfig(), getResolvedConfig: () => getResolvedConfig(),
ensureImmersionTrackerStarted: () => statsStartupRuntime.ensureImmersionTrackerStarted(), ensureImmersionTrackerStarted: () => statsStartupRuntime.ensureImmersionTrackerStarted(),
ensureVocabularyCleanupTokenizerReady: async () => { ensureVocabularyCleanupTokenizerReady: async () => {
@@ -3060,7 +3036,7 @@ async function runHeadlessInitialCommand(): Promise<void> {
} }
} }
const { appReadyRuntimeRunner } = composeBootAppReadyRuntime({ const { appReadyRuntimeRunner } = composeAppReadyRuntime({
reloadConfigMainDeps: { reloadConfigMainDeps: {
reloadConfigStrict: () => configService.reloadConfigStrict(), reloadConfigStrict: () => configService.reloadConfigStrict(),
logInfo: (message) => appLogger.logInfo(message), logInfo: (message) => appLogger.logInfo(message),
@@ -3295,7 +3271,7 @@ const {
startBackgroundWarmups, startBackgroundWarmups,
startTokenizationWarmups, startTokenizationWarmups,
isTokenizationWarmupReady, isTokenizationWarmupReady,
} = composeBootMpvRuntimeHandlers< } = composeMpvRuntimeHandlers<
MpvIpcClient, MpvIpcClient,
ReturnType<typeof createTokenizerDepsRuntime>, ReturnType<typeof createTokenizerDepsRuntime>,
SubtitleData SubtitleData
@@ -4142,7 +4118,7 @@ const shiftSubtitleDelayToAdjacentCueHandler = createShiftSubtitleDelayToAdjacen
showMpvOsd: (text) => showMpvOsd(text), showMpvOsd: (text) => showMpvOsd(text),
}); });
const { registerIpcRuntimeHandlers } = composeBootIpcRuntimeHandlers({ const { registerIpcRuntimeHandlers } = composeIpcRuntimeHandlers({
mpvCommandMainDeps: { mpvCommandMainDeps: {
triggerSubsyncFromConfig: () => triggerSubsyncFromConfig(), triggerSubsyncFromConfig: () => triggerSubsyncFromConfig(),
openRuntimeOptionsPalette: () => openRuntimeOptionsPalette(), openRuntimeOptionsPalette: () => openRuntimeOptionsPalette(),
@@ -4362,7 +4338,7 @@ const { registerIpcRuntimeHandlers } = composeBootIpcRuntimeHandlers({
registerIpcRuntimeServices, registerIpcRuntimeServices,
}, },
}); });
const { handleCliCommand, handleInitialArgs } = composeBootCliStartupHandlers({ const { handleCliCommand, handleInitialArgs } = composeCliStartupHandlers({
cliCommandContextMainDeps: { cliCommandContextMainDeps: {
appState, appState,
setLogLevel: (level) => setLogLevel(level, 'cli'), setLogLevel: (level) => setLogLevel(level, 'cli'),
@@ -4448,7 +4424,7 @@ const { handleCliCommand, handleInitialArgs } = composeBootCliStartupHandlers({
logInfo: (message) => logger.info(message), logInfo: (message) => logger.info(message),
}, },
}); });
const { runAndApplyStartupState } = composeBootHeadlessStartupHandlers< const { runAndApplyStartupState } = composeHeadlessStartupHandlers<
CliArgs, CliArgs,
StartupState, StartupState,
ReturnType<typeof createStartupBootstrapRuntimeDeps> ReturnType<typeof createStartupBootstrapRuntimeDeps>
@@ -4516,7 +4492,7 @@ if (isAnilistTrackingEnabled(getResolvedConfig())) {
} }
void initializeDiscordPresenceService(); void initializeDiscordPresenceService();
const { createMainWindow: createMainWindowHandler, createModalWindow: createModalWindowHandler } = const { createMainWindow: createMainWindowHandler, createModalWindow: createModalWindowHandler } =
composeBootOverlayWindowHandlers<BrowserWindow>({ composeOverlayWindowHandlers<BrowserWindow>({
createOverlayWindowDeps: { createOverlayWindowDeps: {
createOverlayWindowCore: (kind, options) => createOverlayWindowCore(kind, options), createOverlayWindowCore: (kind, options) => createOverlayWindowCore(kind, options),
isDev, isDev,
@@ -4542,7 +4518,7 @@ const { createMainWindow: createMainWindowHandler, createModalWindow: createModa
setModalWindow: (window) => overlayManager.setModalWindow(window), setModalWindow: (window) => overlayManager.setModalWindow(window),
}); });
const { ensureTray: ensureTrayHandler, destroyTray: destroyTrayHandler } = const { ensureTray: ensureTrayHandler, destroyTray: destroyTrayHandler } =
createBootTrayRuntimeHandlers({ createTrayRuntimeHandlers({
resolveTrayIconPathDeps: { resolveTrayIconPathDeps: {
resolveTrayIconPathRuntime, resolveTrayIconPathRuntime,
platform: process.platform, platform: process.platform,
@@ -4589,12 +4565,12 @@ const { ensureTray: ensureTrayHandler, destroyTray: destroyTrayHandler } =
}, },
buildMenuFromTemplate: (template) => Menu.buildFromTemplate(template), buildMenuFromTemplate: (template) => Menu.buildFromTemplate(template),
}); });
const yomitanProfilePolicy = createBootYomitanProfilePolicy({ const yomitanProfilePolicy = createYomitanProfilePolicy({
externalProfilePath: getResolvedConfig().yomitan.externalProfilePath, externalProfilePath: getResolvedConfig().yomitan.externalProfilePath,
logInfo: (message) => logger.info(message), logInfo: (message) => logger.info(message),
}); });
const configuredExternalYomitanProfilePath = yomitanProfilePolicy.externalProfilePath; const configuredExternalYomitanProfilePath = yomitanProfilePolicy.externalProfilePath;
const yomitanExtensionRuntime = createBootYomitanExtensionRuntime({ const yomitanExtensionRuntime = createYomitanExtensionRuntime({
loadYomitanExtensionCore, loadYomitanExtensionCore,
userDataPath: USER_DATA_PATH, userDataPath: USER_DATA_PATH,
externalProfilePath: configuredExternalYomitanProfilePath, externalProfilePath: configuredExternalYomitanProfilePath,
@@ -4676,7 +4652,7 @@ const { initializeOverlayRuntime: initializeOverlayRuntimeHandler } =
}, },
}, },
}); });
const { openYomitanSettings: openYomitanSettingsHandler } = createBootYomitanSettingsRuntime({ const { openYomitanSettings: openYomitanSettingsHandler } = createYomitanSettingsRuntime({
ensureYomitanExtensionLoaded: () => ensureYomitanExtensionLoaded(), ensureYomitanExtensionLoaded: () => ensureYomitanExtensionLoaded(),
getYomitanSession: () => appState.yomitanSession, getYomitanSession: () => appState.yomitanSession,
openYomitanSettingsWindow: ({ yomitanExt, getExistingWindow, setWindow, yomitanSession }) => { openYomitanSettingsWindow: ({ yomitanExt, getExistingWindow, setWindow, yomitanSession }) => {

View File

@@ -1,13 +0,0 @@
import { composeOverlayWindowHandlers } from '../runtime/composers/overlay-window-composer';
import {
composeCliStartupHandlers,
composeHeadlessStartupHandlers,
composeIpcRuntimeHandlers,
composeStartupLifecycleHandlers,
} from '../runtime/composers';
export const composeBootStartupLifecycleHandlers = composeStartupLifecycleHandlers;
export const composeBootIpcRuntimeHandlers = composeIpcRuntimeHandlers;
export const composeBootCliStartupHandlers = composeCliStartupHandlers;
export const composeBootHeadlessStartupHandlers = composeHeadlessStartupHandlers;
export const composeBootOverlayWindowHandlers = composeOverlayWindowHandlers;

View File

@@ -1,39 +0,0 @@
import { createRunStatsCliCommandHandler } from '../runtime/stats-cli-command';
import { createYomitanProfilePolicy } from '../runtime/yomitan-profile-policy';
import {
createBuildOpenAnilistSetupWindowMainDepsHandler,
createMaybeFocusExistingAnilistSetupWindowHandler,
createOpenAnilistSetupWindowHandler,
} from '../runtime/domains/anilist';
import {
createTrayRuntimeHandlers,
createYomitanExtensionRuntime,
createYomitanSettingsRuntime,
} from '../runtime/domains/overlay';
import {
composeAnilistSetupHandlers,
composeAnilistTrackingHandlers,
composeAppReadyRuntime,
composeJellyfinRuntimeHandlers,
composeMpvRuntimeHandlers,
composeOverlayVisibilityRuntime,
composeStatsStartupRuntime,
} from '../runtime/composers';
export const composeBootOverlayVisibilityRuntime = composeOverlayVisibilityRuntime;
export const composeBootJellyfinRuntimeHandlers = composeJellyfinRuntimeHandlers;
export const composeBootAnilistSetupHandlers = composeAnilistSetupHandlers;
export const composeBootAnilistTrackingHandlers = composeAnilistTrackingHandlers;
export const composeBootStatsStartupRuntime = composeStatsStartupRuntime;
export const createBootRunStatsCliCommandHandler = createRunStatsCliCommandHandler;
export const composeBootAppReadyRuntime = composeAppReadyRuntime;
export const composeBootMpvRuntimeHandlers = composeMpvRuntimeHandlers;
export const createBootTrayRuntimeHandlers = createTrayRuntimeHandlers;
export const createBootYomitanProfilePolicy = createYomitanProfilePolicy;
export const createBootYomitanExtensionRuntime = createYomitanExtensionRuntime;
export const createBootYomitanSettingsRuntime = createYomitanSettingsRuntime;
export const createBootMaybeFocusExistingAnilistSetupWindowHandler =
createMaybeFocusExistingAnilistSetupWindowHandler;
export const createBootBuildOpenAnilistSetupWindowMainDepsHandler =
createBuildOpenAnilistSetupWindowMainDepsHandler;
export const createBootOpenAnilistSetupWindowHandler = createOpenAnilistSetupWindowHandler;