import { FORMAT_GROUPS } from "./variants"; import type { MedusaCart } from "./medusa"; /** All physical SKU suffixes (CD, SACD, LP). */ const PHYSICAL_SUFFIXES = new Set( FORMAT_GROUPS.find((g) => g.slug === "physical")?.variants?.map((v) => v.suffix.toUpperCase()) ?? [], ); /** All digital SKU suffixes. */ const DIGITAL_SUFFIXES = new Set( FORMAT_GROUPS.find((g) => g.slug === "digital") ?.subgroups?.flatMap((sg) => sg.variants.map((v) => v.suffix.toUpperCase())) ?? [], ); function skuSuffix(sku: string | null | undefined): string | null { if (!sku) return null; return sku.split("_").pop()?.toUpperCase() ?? null; } export function hasPhysicalItems(cart: MedusaCart): boolean { return cart.items.some((item) => { const suffix = skuSuffix(item.variant?.sku); return suffix !== null && PHYSICAL_SUFFIXES.has(suffix); }); } export function hasDigitalItems(cart: MedusaCart): boolean { return cart.items.some((item) => { const suffix = skuSuffix(item.variant?.sku); return suffix !== null && DIGITAL_SUFFIXES.has(suffix); }); }