import type { Dropshop } from '../../../types'; /** Flatten shops from API (keyed by provider) into a list with provider label. */ export function flattenDropshops( shops: Record ): { shop: Dropshop; provider: string }[] { return Object.entries(shops).flatMap(([provider, list]) => (Array.isArray(list) ? list : []).map((shop) => ({ shop, provider })) ); } /** One-line address from dropshop fields. */ export function formatDropshopAddress(shop: Dropshop): string { const parts = [ shop.address1 ?? shop.address, shop.address2, shop.city, shop.postcode, shop.country ?? shop.countryCode, ].filter(Boolean); return parts.length ? parts.join(', ') : '—'; } /** Nearest dropshop per provider (by distance). Provider key lowercased for lookup. */ export function nearestDropshopByProvider( shops: Record ): Record { const entries = flattenDropshops(shops); const byProvider: Record = {}; for (const { shop, provider } of entries) { const key = provider.toLowerCase(); const existing = byProvider[key]; const dist = Number(shop.distance); if (!existing || (Number.isFinite(dist) && (existing.distance == null || dist < Number(existing.distance)))) { byProvider[key] = shop; } } return byProvider; }