forked from crowetic/commerce
Improve error handling (#886)
* Improve error handling * Update fetch-graphql-api.ts
This commit is contained in:
parent
d09aff1745
commit
6bc223adb3
@ -42,7 +42,9 @@ export class CommerceNetworkError extends Error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const normalizeZodIssues = (issues: ZodError['issues']) =>
|
export const normalizeZodIssues = (issues: ZodError['issues']) =>
|
||||||
issues.map(({ path, message }) => `${message} at "${path.join('.')}" field`)
|
issues.map(({ path, message }) =>
|
||||||
|
path.length ? `${message} at "${path.join('.')}" field` : message
|
||||||
|
)
|
||||||
|
|
||||||
export const getOperationError = (operation: string, error: unknown) => {
|
export const getOperationError = (operation: string, error: unknown) => {
|
||||||
if (error instanceof ZodError) {
|
if (error instanceof ZodError) {
|
||||||
|
@ -2,7 +2,6 @@ import type { GraphQLFetcher } from '@vercel/commerce/api'
|
|||||||
|
|
||||||
import { API_URL } from '../../const'
|
import { API_URL } from '../../const'
|
||||||
import { getError } from '../../utils/handle-fetch-response'
|
import { getError } from '../../utils/handle-fetch-response'
|
||||||
import { getCommerceApi } from '..'
|
|
||||||
import { getToken } from '../../utils/index'
|
import { getToken } from '../../utils/index'
|
||||||
|
|
||||||
const fetchGraphqlApi: GraphQLFetcher = async (
|
const fetchGraphqlApi: GraphQLFetcher = async (
|
||||||
@ -10,7 +9,6 @@ const fetchGraphqlApi: GraphQLFetcher = async (
|
|||||||
{ variables } = {},
|
{ variables } = {},
|
||||||
headers?: HeadersInit
|
headers?: HeadersInit
|
||||||
) => {
|
) => {
|
||||||
const config = getCommerceApi().getConfig()
|
|
||||||
const token = getToken()
|
const token = getToken()
|
||||||
|
|
||||||
const res = await fetch(API_URL!, {
|
const res = await fetch(API_URL!, {
|
||||||
@ -28,10 +26,17 @@ const fetchGraphqlApi: GraphQLFetcher = async (
|
|||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
|
||||||
const { data, errors, status } = await res.json()
|
const { data, errors, message, type, status } = await res.json()
|
||||||
|
|
||||||
if (errors) {
|
if (errors || res.status >= 400) {
|
||||||
throw getError(errors, status)
|
throw getError(
|
||||||
|
errors || [
|
||||||
|
{
|
||||||
|
message: `${type ? `${type}, ` : ''}${message}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
status || res.status
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return { data, res }
|
return { data, res }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user