Rocky_Mountain_Vending/lib/manuals-site-selection.ts

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,
}
}