53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import type { Manual } from "@/lib/manuals-types"
|
|
import {
|
|
filterMDBManuals,
|
|
filterManualsBySite,
|
|
filterManufacturersByMinCount,
|
|
} from "@/lib/manuals"
|
|
import {
|
|
getAllowedManufacturers,
|
|
getManufacturerAliases,
|
|
getMinManualCount,
|
|
getSiteDomain,
|
|
shouldIncludePaymentComponents,
|
|
} from "@/lib/site-config"
|
|
|
|
export type ManualSelectionResult = {
|
|
siteDomain: string
|
|
totalInput: number
|
|
mdbEligible: number
|
|
siteVisible: number
|
|
finalCount: number
|
|
manuals: Manual[]
|
|
}
|
|
|
|
export function selectManualsForSite(
|
|
manuals: Manual[],
|
|
siteDomain: string = getSiteDomain()
|
|
): ManualSelectionResult {
|
|
const allowedManufacturers = getAllowedManufacturers(siteDomain)
|
|
const manufacturerAliases = getManufacturerAliases()
|
|
const minManualCount = getMinManualCount(siteDomain)
|
|
const includePaymentComponents = shouldIncludePaymentComponents(siteDomain)
|
|
|
|
const mdbEligible = filterMDBManuals(manuals)
|
|
const siteVisible = filterManualsBySite(
|
|
mdbEligible,
|
|
allowedManufacturers,
|
|
manufacturerAliases,
|
|
includePaymentComponents
|
|
)
|
|
const finalManuals = filterManufacturersByMinCount(
|
|
siteVisible,
|
|
minManualCount
|
|
)
|
|
|
|
return {
|
|
siteDomain,
|
|
totalInput: manuals.length,
|
|
mdbEligible: mdbEligible.length,
|
|
siteVisible: siteVisible.length,
|
|
finalCount: finalManuals.length,
|
|
manuals: finalManuals,
|
|
}
|
|
}
|