/** * Server-only: read/write delivery rate overrides from data/delivery-rates.json. * Do NOT import this file from client components. */ import { readFileSync, existsSync } from 'fs' import path from 'path' import { atomicWriteJSON } from './file-utils' import { RATES, type DeliveryRatesConfig, type DeliveryTier } from './delivery' const RATES_PATH = path.join(process.cwd(), 'data', 'delivery-rates.json') const TIERS: DeliveryTier[] = ['dropoff', 'classic', 'organic'] export function readDeliveryRates(): DeliveryRatesConfig { const defaults: DeliveryRatesConfig = { dropoff: { ...RATES.dropoff }, classic: { ...RATES.classic }, organic: { ...RATES.organic }, } if (!existsSync(RATES_PATH)) return defaults try { const stored = JSON.parse(readFileSync(RATES_PATH, 'utf-8')) as Partial const merged = { ...defaults } for (const tier of TIERS) { if (stored[tier]) merged[tier] = { ...defaults[tier], ...stored[tier] } } return merged } catch { return defaults } } export function writeDeliveryRates(config: DeliveryRatesConfig): void { atomicWriteJSON(RATES_PATH, config) }