• Process MangaDex results, score by confidence, and sort by title type priority.

    Parameters

    • mangaDexResults: EnhancedAniListManga[]

      Enhanced manga results from MangaDex API.

    • title: string

      Original search title.

    • mangaDexSourceMap: MangaDexSourceMap

      Map populated with MangaDex source information.

    Returns AniListManga[]

    Sorted array of AniListManga results.

    export function processMangaDexResults(
    mangaDexResults: EnhancedAniListManga[],
    title: string,
    mangaDexSourceMap: MangaDexSourceMap,
    ): AniListManga[] {
    const processedResults = mangaDexResults.map((enhancedManga) => {
    if (enhancedManga.sourceInfo) {
    mangaDexSourceMap.set(enhancedManga.id, {
    title: enhancedManga.sourceInfo.title,
    slug: enhancedManga.sourceInfo.slug,
    mangaDexId: enhancedManga.sourceInfo.sourceId,
    isFoundViaMangaDex:
    enhancedManga.sourceInfo.isFoundViaAlternativeSearch,
    });
    }

    const manga = convertEnhancedMangaToAniList(enhancedManga);
    const confidence = calculateConfidence(title, manga);
    const titleTypePriority = calculateTitleTypePriority(manga, title);

    console.debug(
    `[MangaSearchService] ⚖️ MangaDex result confidence for "${manga.title?.english || manga.title?.romaji}": ${confidence}% (found via MangaDex: ${enhancedManga.sourceInfo?.title || "unknown"})`,
    );

    return { manga, confidence, titleTypePriority };
    });

    // Sort by confidence and priority
    processedResults.sort((a, b) => {
    if (a.confidence !== b.confidence) {
    return b.confidence - a.confidence;
    }
    return b.titleTypePriority - a.titleTypePriority;
    });

    return processedResults.map((match) => match.manga);
    }