mirror of
https://github.com/vercel/commerce.git
synced 2025-03-31 09:15:53 +00:00
* Add dynamic API endpoints * Add missing dependency * Update api handlers * Updates * Fix build errors * Update package.json * Add checkout endpoint parser & update errors * Update tsconfig.json * Update cart.ts * Update parser * Update errors.ts * Update errors.ts * Move to Edge runtime * Revert to local * Fix switchable runtimes * Make nodejs default runtime * Update pnpm-lock.yaml * Update handlers * Fix build errors * Change headers
42 lines
1021 B
TypeScript
42 lines
1021 B
TypeScript
import type { CartEndpoint } from '.'
|
|
import type { BigcommerceCart } from '../../../types'
|
|
|
|
import getCartCookie from '../../utils/get-cart-cookie'
|
|
|
|
import { normalizeCart } from '../../../lib/normalize'
|
|
import { BigcommerceApiError } from '../../utils/errors'
|
|
|
|
// Return current cart info
|
|
const getCart: CartEndpoint['handlers']['getCart'] = async ({
|
|
body: { cartId },
|
|
config,
|
|
}) => {
|
|
if (cartId) {
|
|
try {
|
|
const result = await config.storeApiFetch<{
|
|
data?: BigcommerceCart
|
|
} | null>(
|
|
`/v3/carts/${cartId}?include=line_items.physical_items.options,line_items.digital_items.options`
|
|
)
|
|
|
|
return {
|
|
data: result?.data ? normalizeCart(result.data) : null,
|
|
}
|
|
} catch (error) {
|
|
if (error instanceof BigcommerceApiError && error.status === 404) {
|
|
return {
|
|
headers: { 'Set-Cookie': getCartCookie(config.cartCookie) },
|
|
}
|
|
} else {
|
|
throw error
|
|
}
|
|
}
|
|
}
|
|
|
|
return {
|
|
data: null,
|
|
}
|
|
}
|
|
|
|
export default getCart
|