• Apply system content filters to manga results. Filters novels, one-shots (if enabled), adult content (if enabled), and custom skip rules.

    Parameters

    • results: AniListManga[]

      Manga results to filter

    • matchConfig: SystemFilterConfig

      Match configuration with filter settings

    • OptionalkenmeiManga: KenmeiManga

      Optional Kenmei manga for custom rule evaluation

    • OptionalcontextTitle: string

      Optional title for debug logging

    Returns AniListManga[]

    Filtered manga results

    export function applySystemContentFilters(
    results: AniListManga[],
    matchConfig: SystemFilterConfig,
    kenmeiManga?: KenmeiManga,
    contextTitle?: string,
    ): AniListManga[] {
    let filteredResults = results.filter(
    (manga) => manga.format !== "NOVEL" && manga.format !== "LIGHT_NOVEL",
    );

    // Filter one-shots if enabled
    if (matchConfig.shouldIgnoreOneShots) {
    const beforeFilter = filteredResults.length;
    filteredResults = filteredResults.filter((manga) => !isOneShot(manga));
    const afterFilter = filteredResults.length;

    if (beforeFilter > afterFilter && contextTitle) {
    console.debug(
    `[MangaSearchService] 🚫 Filtered out ${beforeFilter - afterFilter} one-shot(s) for "${contextTitle}" during system content filtering`,
    );
    }
    }

    // Filter adult content if enabled
    if (matchConfig.shouldIgnoreAdultContent) {
    const beforeFilter = filteredResults.length;
    filteredResults = filteredResults.filter((manga) => !manga.isAdult);
    const afterFilter = filteredResults.length;

    if (beforeFilter > afterFilter && contextTitle) {
    console.debug(
    `[MangaSearchService] 🚫 Filtered out ${beforeFilter - afterFilter} adult content manga for "${contextTitle}" during system content filtering`,
    );
    }
    }

    // Apply custom skip rules if kenmeiManga provided
    if (kenmeiManga) {
    const beforeCustomSkip = filteredResults.length;
    filteredResults = filteredResults.filter(
    (manga) => !shouldSkipByCustomRules(manga, kenmeiManga, false),
    );
    const afterCustomSkip = filteredResults.length;

    if (beforeCustomSkip > afterCustomSkip && contextTitle) {
    console.debug(
    `[MangaSearchService] 🚫 Filtered out ${beforeCustomSkip - afterCustomSkip} manga by custom skip rules for "${contextTitle}"`,
    );
    }
    }

    return filteredResults;
    }