mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-11-10 16:46:06 -08:00
refactor(runtime): remove dead symbols from composition roots
This commit is contained in:
6 files changed
+17
-151
No files matched your search
@@ -1,5 +1,4 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { fail, log } from '../log.js';
|
||||
import { commandExists, isYoutubeTarget, realpathMaybe, resolvePathMaybe } from '../util.js';
|
||||
import { collectVideos, showFzfMenu, showRofiMenu } from '../picker.js';
|
||||
|
||||
@@ -458,14 +458,6 @@ export class AnkiIntegration {
|
||||
return this.config.nPlusOne?.highlightEnabled === true;
|
||||
}
|
||||
|
||||
private startKnownWordCacheLifecycle(): void {
|
||||
this.knownWordCache.startLifecycle();
|
||||
}
|
||||
|
||||
private stopKnownWordCacheLifecycle(): void {
|
||||
this.knownWordCache.stopLifecycle();
|
||||
}
|
||||
|
||||
private getConfiguredAnkiTags(): string[] {
|
||||
if (!Array.isArray(this.config.tags)) {
|
||||
return [];
|
||||
|
||||
@@ -80,7 +80,7 @@ export class FieldGroupingWorkflow {
|
||||
|
||||
async handleManual(
|
||||
originalNoteId: number,
|
||||
newNoteId: number,
|
||||
_newNoteId: number,
|
||||
newNoteInfo: FieldGroupingWorkflowNoteInfo,
|
||||
): Promise<boolean> {
|
||||
const callback = await this.resolveFieldGroupingCallback();
|
||||
|
||||
@@ -8,7 +8,6 @@ import {
|
||||
importYomitanDictionaryFromZip,
|
||||
deleteYomitanDictionaryByTitle,
|
||||
removeYomitanDictionarySettings,
|
||||
requestYomitanParseResults,
|
||||
requestYomitanScanTokens,
|
||||
requestYomitanTermFrequencies,
|
||||
syncYomitanDefaultAnkiServer,
|
||||
|
||||
+9
-136
@@ -92,8 +92,6 @@ import type {
|
||||
SecondarySubMode,
|
||||
SubtitleData,
|
||||
SubtitlePosition,
|
||||
SubsyncManualRunRequest,
|
||||
SubsyncResult,
|
||||
WindowGeometry,
|
||||
} from './types';
|
||||
import { AnkiIntegration } from './anki-integration';
|
||||
@@ -116,36 +114,15 @@ import {
|
||||
failStartupFromConfig,
|
||||
} from './main/config-validation';
|
||||
import {
|
||||
buildAnilistAttemptKey,
|
||||
buildAnilistSetupUrl,
|
||||
consumeAnilistSetupCallbackUrl,
|
||||
createAnilistStateRuntime,
|
||||
createBuildGetAnilistMediaGuessRuntimeStateMainDepsHandler,
|
||||
createBuildGetCurrentAnilistMediaKeyMainDepsHandler,
|
||||
createBuildMaybeProbeAnilistDurationMainDepsHandler,
|
||||
createBuildMaybeRunAnilistPostWatchUpdateMainDepsHandler,
|
||||
createBuildOpenAnilistSetupWindowMainDepsHandler,
|
||||
createBuildProcessNextAnilistRetryUpdateMainDepsHandler,
|
||||
createBuildRefreshAnilistClientSecretStateMainDepsHandler,
|
||||
createBuildResetAnilistMediaGuessStateMainDepsHandler,
|
||||
createBuildResetAnilistMediaTrackingMainDepsHandler,
|
||||
createBuildSetAnilistMediaGuessRuntimeStateMainDepsHandler,
|
||||
createEnsureAnilistMediaGuessHandler,
|
||||
createGetAnilistMediaGuessRuntimeStateHandler,
|
||||
createGetCurrentAnilistMediaKeyHandler,
|
||||
createMaybeFocusExistingAnilistSetupWindowHandler,
|
||||
createMaybeProbeAnilistDurationHandler,
|
||||
createMaybeRunAnilistPostWatchUpdateHandler,
|
||||
createOpenAnilistSetupWindowHandler,
|
||||
createProcessNextAnilistRetryUpdateHandler,
|
||||
createRefreshAnilistClientSecretStateHandler,
|
||||
createResetAnilistMediaGuessStateHandler,
|
||||
createResetAnilistMediaTrackingHandler,
|
||||
createSetAnilistMediaGuessRuntimeStateHandler,
|
||||
findAnilistSetupDeepLinkArgvUrl,
|
||||
isAnilistTrackingEnabled,
|
||||
loadAnilistManualTokenEntry,
|
||||
loadAnilistSetupFallback,
|
||||
openAnilistSetupInBrowser,
|
||||
rememberAnilistAttemptedUpdateKey,
|
||||
} from './main/runtime/domains/anilist';
|
||||
@@ -153,50 +130,9 @@ import {
|
||||
createApplyJellyfinMpvDefaultsHandler,
|
||||
createBuildApplyJellyfinMpvDefaultsMainDepsHandler,
|
||||
createBuildGetDefaultSocketPathMainDepsHandler,
|
||||
createEnsureMpvConnectedForJellyfinPlaybackHandler,
|
||||
createBuildEnsureMpvConnectedForJellyfinPlaybackMainDepsHandler,
|
||||
createGetDefaultSocketPathHandler,
|
||||
createGetJellyfinClientInfoHandler,
|
||||
createBuildGetJellyfinClientInfoMainDepsHandler,
|
||||
createHandleJellyfinAuthCommands,
|
||||
createBuildHandleJellyfinAuthCommandsMainDepsHandler,
|
||||
createHandleJellyfinListCommands,
|
||||
createBuildHandleJellyfinListCommandsMainDepsHandler,
|
||||
createHandleJellyfinPlayCommand,
|
||||
createBuildHandleJellyfinPlayCommandMainDepsHandler,
|
||||
createHandleJellyfinRemoteAnnounceCommand,
|
||||
createBuildHandleJellyfinRemoteAnnounceCommandMainDepsHandler,
|
||||
createHandleJellyfinRemotePlay,
|
||||
createBuildHandleJellyfinRemotePlayMainDepsHandler,
|
||||
createHandleJellyfinRemotePlaystate,
|
||||
createBuildHandleJellyfinRemotePlaystateMainDepsHandler,
|
||||
createHandleJellyfinRemoteGeneralCommand,
|
||||
createBuildHandleJellyfinRemoteGeneralCommandMainDepsHandler,
|
||||
createLaunchMpvIdleForJellyfinPlaybackHandler,
|
||||
createBuildLaunchMpvIdleForJellyfinPlaybackMainDepsHandler,
|
||||
createPlayJellyfinItemInMpvHandler,
|
||||
createBuildPlayJellyfinItemInMpvMainDepsHandler,
|
||||
createPreloadJellyfinExternalSubtitlesHandler,
|
||||
createBuildPreloadJellyfinExternalSubtitlesMainDepsHandler,
|
||||
createReportJellyfinRemoteProgressHandler,
|
||||
createBuildReportJellyfinRemoteProgressMainDepsHandler,
|
||||
createReportJellyfinRemoteStoppedHandler,
|
||||
createBuildReportJellyfinRemoteStoppedMainDepsHandler,
|
||||
createStartJellyfinRemoteSessionHandler,
|
||||
createBuildStartJellyfinRemoteSessionMainDepsHandler,
|
||||
createStopJellyfinRemoteSessionHandler,
|
||||
createBuildStopJellyfinRemoteSessionMainDepsHandler,
|
||||
createRunJellyfinCommandHandler,
|
||||
createBuildRunJellyfinCommandMainDepsHandler,
|
||||
createWaitForMpvConnectedHandler,
|
||||
createBuildWaitForMpvConnectedMainDepsHandler,
|
||||
createOpenJellyfinSetupWindowHandler,
|
||||
createBuildOpenJellyfinSetupWindowMainDepsHandler,
|
||||
createGetResolvedJellyfinConfigHandler,
|
||||
createBuildGetResolvedJellyfinConfigMainDepsHandler,
|
||||
parseJellyfinSetupSubmissionUrl,
|
||||
buildJellyfinSetupFormHtml,
|
||||
createMaybeFocusExistingJellyfinSetupWindowHandler,
|
||||
parseJellyfinSetupSubmissionUrl,
|
||||
} from './main/runtime/domains/jellyfin';
|
||||
import type { ActiveJellyfinRemotePlaybackState } from './main/runtime/domains/jellyfin';
|
||||
import { getConfiguredJellyfinSession } from './main/runtime/domains/jellyfin';
|
||||
@@ -226,7 +162,6 @@ import {
|
||||
createBuildEnsureOverlayWindowLevelMainDepsHandler,
|
||||
createBuildUpdateVisibleOverlayBoundsMainDepsHandler,
|
||||
createOverlayWindowRuntimeHandlers,
|
||||
createOverlayRuntimeBootstrapHandlers,
|
||||
createTrayRuntimeHandlers,
|
||||
createOverlayVisibilityRuntime,
|
||||
createBroadcastRuntimeOptionsChangedHandler,
|
||||
@@ -268,25 +203,11 @@ import {
|
||||
createConfigDerivedRuntime,
|
||||
appendClipboardVideoToQueueRuntime,
|
||||
createMainSubsyncRuntime,
|
||||
createLaunchBackgroundWarmupTaskHandler,
|
||||
createStartBackgroundWarmupsHandler,
|
||||
createBuildLaunchBackgroundWarmupTaskMainDepsHandler,
|
||||
createBuildStartBackgroundWarmupsMainDepsHandler,
|
||||
} from './main/runtime/domains/startup';
|
||||
import {
|
||||
createBuildBindMpvMainEventHandlersMainDepsHandler,
|
||||
createBuildMpvClientRuntimeServiceFactoryDepsHandler,
|
||||
createMpvClientRuntimeServiceFactory,
|
||||
createBindMpvMainEventHandlersHandler,
|
||||
createBuildTokenizerDepsMainHandler,
|
||||
createCreateMecabTokenizerAndCheckMainHandler,
|
||||
createPrewarmSubtitleDictionariesMainHandler,
|
||||
createUpdateMpvSubtitleRenderMetricsHandler,
|
||||
createBuildUpdateMpvSubtitleRenderMetricsMainDepsHandler,
|
||||
createMpvOsdRuntimeHandlers,
|
||||
createCycleSecondarySubModeRuntimeHandler,
|
||||
} from './main/runtime/domains/mpv';
|
||||
import type { MpvClientRuntimeServiceOptions } from './main/runtime/domains/mpv';
|
||||
import {
|
||||
createBuildCopyCurrentSubtitleMainDepsHandler,
|
||||
createBuildHandleMineSentenceDigitMainDepsHandler,
|
||||
@@ -324,7 +245,6 @@ import {
|
||||
MpvIpcClient,
|
||||
SubtitleWebSocket,
|
||||
Texthooker,
|
||||
DEFAULT_MPV_SUBTITLE_RENDER_METRICS,
|
||||
applyMpvSubtitleRenderMetricsPatch,
|
||||
authenticateWithPasswordRuntime,
|
||||
broadcastRuntimeOptionsChangedRuntime,
|
||||
@@ -424,7 +344,6 @@ import { createCharacterDictionaryRuntimeService } from './main/character-dictio
|
||||
import { createCharacterDictionaryAutoSyncRuntimeService } from './main/runtime/character-dictionary-auto-sync';
|
||||
import {
|
||||
type AnilistMediaGuessRuntimeState,
|
||||
type AppState,
|
||||
type StartupState,
|
||||
applyStartupState,
|
||||
createAppState,
|
||||
@@ -1455,13 +1374,8 @@ function shouldInitializeMecabForAnnotations(): boolean {
|
||||
|
||||
const {
|
||||
getResolvedJellyfinConfig,
|
||||
getJellyfinClientInfo,
|
||||
reportJellyfinRemoteProgress,
|
||||
reportJellyfinRemoteStopped,
|
||||
handleJellyfinRemotePlay,
|
||||
handleJellyfinRemotePlaystate,
|
||||
handleJellyfinRemoteGeneralCommand,
|
||||
playJellyfinItemInMpv,
|
||||
startJellyfinRemoteSession,
|
||||
stopJellyfinRemoteSession,
|
||||
runJellyfinCommand,
|
||||
@@ -2184,7 +2098,7 @@ const ensureImmersionTrackerStarted = (): void => {
|
||||
createImmersionTrackerStartup();
|
||||
};
|
||||
|
||||
const { reloadConfig: reloadConfigHandler, appReadyRuntimeRunner } = composeAppReadyRuntime({
|
||||
const { appReadyRuntimeRunner } = composeAppReadyRuntime({
|
||||
reloadConfigMainDeps: {
|
||||
reloadConfigStrict: () => configService.reloadConfigStrict(),
|
||||
logInfo: (message) => appLogger.logInfo(message),
|
||||
@@ -2288,7 +2202,7 @@ const { reloadConfig: reloadConfigHandler, appReadyRuntimeRunner } = composeAppR
|
||||
immersionTrackerStartupMainDeps,
|
||||
});
|
||||
|
||||
const { appLifecycleRuntimeRunner, runAndApplyStartupState } =
|
||||
const { runAndApplyStartupState } =
|
||||
runtimeRegistry.startup.createStartupRuntimeHandlers<
|
||||
CliArgs,
|
||||
StartupState,
|
||||
@@ -2386,7 +2300,6 @@ function handleInitialArgs(): void {
|
||||
}
|
||||
|
||||
const {
|
||||
bindMpvClientEventHandlers,
|
||||
createMpvClientRuntimeService: createMpvClientRuntimeServiceHandler,
|
||||
updateMpvSubtitleRenderMetrics: updateMpvSubtitleRenderMetricsHandler,
|
||||
tokenizeSubtitle,
|
||||
@@ -2758,10 +2671,6 @@ async function syncYomitanDefaultProfileAnkiServer(): Promise<void> {
|
||||
}
|
||||
}
|
||||
|
||||
function createOverlayWindow(kind: 'visible' | 'modal'): BrowserWindow {
|
||||
return createOverlayWindowHandler(kind);
|
||||
}
|
||||
|
||||
function createModalWindow(): BrowserWindow {
|
||||
const existingWindow = overlayManager.getModalWindow();
|
||||
if (existingWindow && !existingWindow.isDestroyed()) {
|
||||
@@ -2775,13 +2684,6 @@ function createModalWindow(): BrowserWindow {
|
||||
function createMainWindow(): BrowserWindow {
|
||||
return createMainWindowHandler();
|
||||
}
|
||||
function resolveTrayIconPath(): string | null {
|
||||
return resolveTrayIconPathHandler();
|
||||
}
|
||||
|
||||
function buildTrayMenu(): Menu {
|
||||
return buildTrayMenuHandler();
|
||||
}
|
||||
|
||||
function ensureTray(): void {
|
||||
ensureTrayHandler();
|
||||
@@ -2808,8 +2710,6 @@ const {
|
||||
startPendingMultiCopy,
|
||||
cancelPendingMineSentenceMultiple,
|
||||
startPendingMineSentenceMultiple,
|
||||
registerOverlayShortcuts,
|
||||
unregisterOverlayShortcuts,
|
||||
syncOverlayShortcuts,
|
||||
refreshOverlayShortcuts,
|
||||
} = composeShortcutRuntimes({
|
||||
@@ -2848,7 +2748,7 @@ const {
|
||||
},
|
||||
});
|
||||
|
||||
const { appendToMpvLog, flushMpvLog, showMpvOsd } = createMpvOsdRuntimeHandlers({
|
||||
const { flushMpvLog, showMpvOsd } = createMpvOsdRuntimeHandlers({
|
||||
appendToMpvLogMainDeps: {
|
||||
logPath: DEFAULT_MPV_LOG_PATH,
|
||||
dirname: (targetPath) => path.dirname(targetPath),
|
||||
@@ -3005,7 +2905,6 @@ const {
|
||||
setVisibleOverlayVisible: setVisibleOverlayVisibleHandler,
|
||||
toggleVisibleOverlay: toggleVisibleOverlayHandler,
|
||||
setOverlayVisible: setOverlayVisibleHandler,
|
||||
toggleOverlay: toggleOverlayHandler,
|
||||
} = createOverlayVisibilityRuntime({
|
||||
setVisibleOverlayVisibleDeps: {
|
||||
setVisibleOverlayVisibleCore,
|
||||
@@ -3065,11 +2964,7 @@ const shiftSubtitleDelayToAdjacentCueHandler = createShiftSubtitleDelayToAdjacen
|
||||
showMpvOsd: (text) => showMpvOsd(text),
|
||||
});
|
||||
|
||||
const {
|
||||
handleMpvCommandFromIpc: handleMpvCommandFromIpcHandler,
|
||||
runSubsyncManualFromIpc: runSubsyncManualFromIpcHandler,
|
||||
registerIpcRuntimeHandlers,
|
||||
} = composeIpcRuntimeHandlers({
|
||||
const { registerIpcRuntimeHandlers } = composeIpcRuntimeHandlers({
|
||||
mpvCommandMainDeps: {
|
||||
triggerSubsyncFromConfig: () => triggerSubsyncFromConfig(),
|
||||
openRuntimeOptionsPalette: () => openRuntimeOptionsPalette(),
|
||||
@@ -3224,11 +3119,8 @@ const createCliCommandContextHandler = createCliCommandContextFactory({
|
||||
logWarn: (message: string) => logger.warn(message),
|
||||
logError: (message: string, err: unknown) => logger.error(message, err),
|
||||
});
|
||||
const {
|
||||
createOverlayWindow: createOverlayWindowHandler,
|
||||
createMainWindow: createMainWindowHandler,
|
||||
createModalWindow: createModalWindowHandler,
|
||||
} = createOverlayWindowRuntimeHandlers<BrowserWindow>({
|
||||
const { createMainWindow: createMainWindowHandler, createModalWindow: createModalWindowHandler } =
|
||||
createOverlayWindowRuntimeHandlers<BrowserWindow>({
|
||||
createOverlayWindowDeps: {
|
||||
createOverlayWindowCore: (kind, options) => createOverlayWindowCore(kind, options),
|
||||
isDev,
|
||||
@@ -3250,12 +3142,8 @@ const {
|
||||
setMainWindow: (window) => overlayManager.setMainWindow(window),
|
||||
setModalWindow: (window) => overlayManager.setModalWindow(window),
|
||||
});
|
||||
const {
|
||||
resolveTrayIconPath: resolveTrayIconPathHandler,
|
||||
buildTrayMenu: buildTrayMenuHandler,
|
||||
ensureTray: ensureTrayHandler,
|
||||
destroyTray: destroyTrayHandler,
|
||||
} = createTrayRuntimeHandlers({
|
||||
const { ensureTray: ensureTrayHandler, destroyTray: destroyTrayHandler } =
|
||||
createTrayRuntimeHandlers({
|
||||
resolveTrayIconPathDeps: {
|
||||
resolveTrayIconPathRuntime,
|
||||
platform: process.platform,
|
||||
@@ -3436,25 +3324,10 @@ function setOverlayVisible(visible: boolean): void {
|
||||
setOverlayVisibleHandler(visible);
|
||||
syncOverlayMpvSubtitleSuppression();
|
||||
}
|
||||
function toggleOverlay(): void {
|
||||
if (!overlayManager.getVisibleOverlayVisible()) {
|
||||
void ensureOverlayMpvSubtitlesHidden();
|
||||
}
|
||||
toggleOverlayHandler();
|
||||
syncOverlayMpvSubtitleSuppression();
|
||||
}
|
||||
function handleOverlayModalClosed(modal: OverlayHostedModal): void {
|
||||
handleOverlayModalClosedHandler(modal);
|
||||
}
|
||||
|
||||
function handleMpvCommandFromIpc(command: (string | number)[]): void {
|
||||
handleMpvCommandFromIpcHandler(command);
|
||||
}
|
||||
|
||||
async function runSubsyncManualFromIpc(request: SubsyncManualRunRequest): Promise<SubsyncResult> {
|
||||
return runSubsyncManualFromIpcHandler(request) as Promise<SubsyncResult>;
|
||||
}
|
||||
|
||||
function appendClipboardVideoToQueue(): { ok: boolean; message: string } {
|
||||
return appendClipboardVideoToQueueHandler();
|
||||
}
|
||||
|
||||
@@ -22,10 +22,13 @@ type RequiredMpvInputKeys = keyof ComposerInputs<
|
||||
MpvRuntimeComposerOptions<FakeMpvClient, FakeTokenizerDeps, FakeTokenizedSubtitle>
|
||||
>;
|
||||
|
||||
type _anilistHasNotifyDeps = Assert<IsAssignable<'notifyDeps', RequiredAnilistSetupInputKeys>>;
|
||||
type _jellyfinHasGetMpvClient = Assert<IsAssignable<'getMpvClient', RequiredJellyfinInputKeys>>;
|
||||
type _ipcHasRegistration = Assert<IsAssignable<'registration', RequiredIpcInputKeys>>;
|
||||
type _mpvHasTokenizer = Assert<IsAssignable<'tokenizer', RequiredMpvInputKeys>>;
|
||||
const contractAssertions = [
|
||||
true as Assert<IsAssignable<'notifyDeps', RequiredAnilistSetupInputKeys>>,
|
||||
true as Assert<IsAssignable<'getMpvClient', RequiredJellyfinInputKeys>>,
|
||||
true as Assert<IsAssignable<'registration', RequiredIpcInputKeys>>,
|
||||
true as Assert<IsAssignable<'tokenizer', RequiredMpvInputKeys>>,
|
||||
];
|
||||
void contractAssertions;
|
||||
|
||||
// @ts-expect-error missing required notifyDeps should fail compile-time contract
|
||||
const anilistMissingRequired: AnilistSetupComposerOptions = {
|
||||
|
||||
Reference in new issue
Block a user