commerce/framework/spree/utils/convert-spree-error-to-graph-ql-error.ts
2021-08-20 13:36:22 +02:00

47 lines
1.2 KiB
TypeScript

import { FetcherError } from '@commerce/utils/errors'
import { errors } from '@spree/storefront-api-v2-sdk'
const convertSpreeErrorToGraphQlError = (
error: errors.SpreeError
): FetcherError => {
if (error instanceof errors.ExpandedSpreeError) {
// Assuming error.errors[key] is a list of strings.
if ('base' in error.errors) {
const baseErrorMessage = error.errors.base as unknown as string
return new FetcherError({
status: error.serverResponse.status,
message: baseErrorMessage,
})
}
const fetcherErrors = Object.keys(error.errors).map((sdkErrorKey) => {
const errors = error.errors[sdkErrorKey] as string[]
return {
message: `${sdkErrorKey} ${errors.join(', ')}`,
}
})
return new FetcherError({
status: error.serverResponse.status,
errors: fetcherErrors,
})
}
if (error instanceof errors.BasicSpreeError) {
return new FetcherError({
status: error.serverResponse.status,
message: error.summary,
})
}
return new FetcherError({
status: error.serverResponse.status,
message: error.message,
})
}
export default convertSpreeErrorToGraphQlError