import "server-only"; import { cookies } from "next/headers"; import { orderReferenceSchema, type CartSnapshot, type OrderSnapshot } from "@salixcommerce/core"; import { commerceRepository } from "./commerce"; import { CART_CAPABILITY_COOKIE, hashCartCapability, parseCartCapability } from "./capability"; export async function loadCurrentCart(): Promise { const capabilityHash = await currentCapabilityHash(); return capabilityHash === null ? null : commerceRepository.loadCart(capabilityHash); } export async function loadCurrentOrder(reference: string): Promise { const parsedReference = orderReferenceSchema.safeParse(reference); if (!parsedReference.success) return null; const capabilityHash = await currentCapabilityHash(); return capabilityHash === null ? null : commerceRepository.loadOrder(capabilityHash, parsedReference.data); } export async function currentCapabilityHash(): Promise { const cookieStore = await cookies(); const capability = parseCartCapability(cookieStore.get(CART_CAPABILITY_COOKIE)?.value); return capability === null ? null : hashCartCapability(capability); }