mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-30 18:12:08 -07:00
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { ConfigValidationWarning, RawConfig, ResolvedConfig } from '../types/config';
|
|
import { applyAnkiConnectResolution } from './resolve/anki-connect';
|
|
import { createResolveContext } from './resolve/context';
|
|
import { applyCoreDomainConfig } from './resolve/core-domains';
|
|
import { applyImmersionTrackingConfig } from './resolve/immersion-tracking';
|
|
import { applyIntegrationConfig } from './resolve/integrations';
|
|
import { applyStatsConfig } from './resolve/stats';
|
|
import { applySubtitleDomainConfig } from './resolve/subtitle-domains';
|
|
import { applyTopLevelConfig } from './resolve/top-level';
|
|
|
|
const APPLY_RESOLVE_STEPS = [
|
|
applyTopLevelConfig,
|
|
applyCoreDomainConfig,
|
|
applySubtitleDomainConfig,
|
|
applyIntegrationConfig,
|
|
applyImmersionTrackingConfig,
|
|
applyStatsConfig,
|
|
applyAnkiConnectResolution,
|
|
] as const;
|
|
|
|
export function resolveConfig(raw: RawConfig): {
|
|
resolved: ResolvedConfig;
|
|
warnings: ConfigValidationWarning[];
|
|
} {
|
|
const { context, warnings } = createResolveContext(raw);
|
|
|
|
for (const applyStep of APPLY_RESOLVE_STEPS) {
|
|
applyStep(context);
|
|
}
|
|
|
|
return {
|
|
resolved: context.resolved,
|
|
warnings,
|
|
};
|
|
}
|