import { orderConfigurationsSchema, orderSelectionsSchema, type OrderConfigurations, type CreateOrderRequest, type OrderSelections, } from "./schema"; import { ORDER_TYPE } from "./contract"; export function buildOrderConfigurations(selections: OrderSelections): OrderConfigurations { const normalizedSelections = orderSelectionsSchema.parse(selections); return orderConfigurationsSchema.parse({ ...normalizedSelections, address: normalizedSelections.address ? { street: normalizedSelections.address.street ?? null, streetLine2: normalizedSelections.address.streetLine2 ?? null, city: normalizedSelections.address.city ?? null, state: normalizedSelections.address.state ?? null, postalCode: normalizedSelections.address.postalCode ?? null, country: normalizedSelections.address.country ?? null, } : undefined, }); } export function createOrderRequest(payload: { orderType?: string; skus: string[]; configurations?: OrderSelections | null; }): CreateOrderRequest { const orderType = (payload.orderType ?? ORDER_TYPE.OTHER) as CreateOrderRequest["orderType"]; const configurations = payload.configurations ? buildOrderConfigurations(payload.configurations) : undefined; return { orderType, skus: payload.skus, ...(configurations ? { configurations } : {}), }; }