diff --git a/packages/commerce/src/api/utils/errors.ts b/packages/commerce/src/api/utils/errors.ts index 88d20e36d..42c189320 100644 --- a/packages/commerce/src/api/utils/errors.ts +++ b/packages/commerce/src/api/utils/errors.ts @@ -1,5 +1,5 @@ import type { Response } from '@vercel/fetch' -import type { CommerceError } from 'utils/errors' +import { CommerceError } from '../../utils/errors' import { ZodError } from 'zod' @@ -47,3 +47,29 @@ export const getOperationError = (operation: string, error: unknown) => { return error } + +export const normalizeError = (error: unknown) => { + if (error instanceof CommerceAPIError) { + return { + status: error.status || 500, + data: error.data || null, + errors: [ + { message: 'An unexpected error ocurred with the Commerce API' }, + ], + } + } + + if (error instanceof ZodError) { + return { + status: 400, + data: null, + errors: normalizeZodIssues(error.issues), + } + } + + return { + status: 500, + data: null, + errors: [{ message: 'An unexpected error ocurred' }], + } +} diff --git a/packages/commerce/src/schemas/cart.ts b/packages/commerce/src/schemas/cart.ts index 8194bc613..f582ae951 100644 --- a/packages/commerce/src/schemas/cart.ts +++ b/packages/commerce/src/schemas/cart.ts @@ -11,7 +11,7 @@ export const cartItemBodySchema = z.object({ }) export const addItemBodySchema = z.object({ - cartId: z.string().optional(), + cartId: z.string(), item: cartItemBodySchema, })