refactor(main): eliminate local pass-through wrappers in main.ts (#168)

This commit is contained in:
2026-07-15 03:22:03 -07:00
committed by GitHub
parent 8711cf1a48
commit 2398f5c030
19 changed files with 706 additions and 814 deletions
+1 -3
View File
@@ -302,9 +302,7 @@ export function registerAnkiJimakuIpcHandlers(
await deps.onDownloadedSecondarySubtitle(result.path);
}
} else {
logger.error(
`[tsukihime] download-file failed: ${result.error?.error ?? 'unknown error'}`,
);
logger.error(`[tsukihime] download-file failed: ${result.error?.error ?? 'unknown error'}`);
}
return result;
@@ -48,7 +48,10 @@ test('parseSyncCliTokens handles the temp-dir protocol modes', () => {
}
assert.equal(parseSyncCliTokens(['sync', '--make-temp', 'host']).kind, 'error');
assert.equal(parseSyncCliTokens(['sync', '--make-temp', '--remove-temp', '/tmp/x']).kind, 'error');
assert.equal(
parseSyncCliTokens(['sync', '--make-temp', '--remove-temp', '/tmp/x']).kind,
'error',
);
});
test('parseSyncCliTokens owns the sync CLI validation rules', () => {
+7 -2
View File
@@ -58,7 +58,9 @@ export function parseSyncCliTokens(tokens: readonly string[]): ParsedSyncCli {
for (let i = 0; i < rest.length; i += 1) {
const token = rest[i]!;
const assignValue = valueFlags.get(token.includes('=') ? token.slice(0, token.indexOf('=')) : token);
const assignValue = valueFlags.get(
token.includes('=') ? token.slice(0, token.indexOf('=')) : token,
);
if (assignValue) {
if (token.includes('=')) {
assignValue(token.slice(token.indexOf('=') + 1));
@@ -109,7 +111,10 @@ export function parseSyncCliTokens(tokens: readonly string[]): ParsedSyncCli {
Boolean(removeTemp),
].filter(Boolean).length;
if (modes === 0) {
return { kind: 'error', message: 'Sync requires a host, --snapshot <file>, or --merge <file>.' };
return {
kind: 'error',
message: 'Sync requires a host, --snapshot <file>, or --merge <file>.',
};
}
if (modes > 1) {
return {
+1 -3
View File
@@ -34,9 +34,7 @@ export function resolveImmersionDbPath(): string {
// no config or unreadable config → default location
}
if (configured) {
return configured.startsWith('~')
? path.join(os.homedir(), configured.slice(1))
: configured;
return configured.startsWith('~') ? path.join(os.homedir(), configured.slice(1)) : configured;
}
return path.join(getDefaultConfigDir(), 'immersion.sqlite');
}
@@ -251,11 +251,7 @@ export function mergeMediaMetadata(
}
}
export function mergeExcludedWords(
local: SyncDb,
remote: SyncDb,
summary: SyncMergeSummary,
): void {
export function mergeExcludedWords(local: SyncDb, remote: SyncDb, summary: SyncMergeSummary): void {
if (
!tableExists(remote, 'imm_stats_excluded_words') ||
!tableExists(local, 'imm_stats_excluded_words')
@@ -147,7 +147,9 @@ export function refreshRollupsForNewSessions(
}
const stampMs = nowDbTimestamp();
const deleteDaily = local.query('DELETE FROM imm_daily_rollups WHERE rollup_day = ? AND video_id = ?');
const deleteDaily = local.query(
'DELETE FROM imm_daily_rollups WHERE rollup_day = ? AND video_id = ?',
);
const deleteMonthly = local.query(
'DELETE FROM imm_monthly_rollups WHERE rollup_month = ? AND video_id = ?',
);
@@ -319,7 +319,8 @@ function applyMergedSessionLifetime(
.get(videoId, sessionId),
);
const isFirstSessionForVideoRun = !mediaLifetime && !hasOtherSessionForVideo;
const isFirstCompletedSessionForVideoRun = watched > 0 && Number(mediaLifetime?.completed ?? 0) <= 0;
const isFirstCompletedSessionForVideoRun =
watched > 0 && Number(mediaLifetime?.completed ?? 0) <= 0;
const hasOtherSessionOnDay = Boolean(
local
+1 -5
View File
@@ -8,11 +8,7 @@ import {
} from './merge-catalog';
import { mergeSessions } from './merge-sessions';
import { copyRemoteOnlyRollups, refreshRollupsForNewSessions } from './merge-rollups';
import {
assertMergeableSchema,
createEmptyMergeSummary,
type SyncMergeSummary,
} from './shared';
import { assertMergeableSchema, createEmptyMergeSummary, type SyncMergeSummary } from './shared';
import { openLibsqlSyncDb, type SyncDb } from './libsql-driver';
export type { SyncMergeSummary } from './shared';