mirror of
https://github.com/vercel/commerce.git
synced 2025-05-16 06:26:58 +00:00
Merge branch 'main' into custom-fields
This commit is contained in:
commit
f4a7b7255e
@ -42,7 +42,9 @@ export class CommerceNetworkError extends Error {
|
||||
}
|
||||
|
||||
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) => {
|
||||
if (error instanceof ZodError) {
|
||||
|
@ -21,7 +21,7 @@ export const withOperationCallback =
|
||||
const parse = ({ name, data }: Operation) => {
|
||||
switch (name) {
|
||||
case 'getProduct':
|
||||
productSchema.nullable().parse(data.product)
|
||||
productSchema.optional().parse(data.product)
|
||||
break
|
||||
case 'getAllProducts':
|
||||
z.array(productSchema).parse(data.products)
|
||||
|
@ -2,7 +2,6 @@ import type { GraphQLFetcher } from '@vercel/commerce/api'
|
||||
|
||||
import { API_URL } from '../../const'
|
||||
import { getError } from '../../utils/handle-fetch-response'
|
||||
import { getCommerceApi } from '..'
|
||||
import { getToken } from '../../utils/index'
|
||||
|
||||
const fetchGraphqlApi: GraphQLFetcher = async (
|
||||
@ -10,7 +9,6 @@ const fetchGraphqlApi: GraphQLFetcher = async (
|
||||
{ variables } = {},
|
||||
headers?: HeadersInit
|
||||
) => {
|
||||
const config = getCommerceApi().getConfig()
|
||||
const token = getToken()
|
||||
|
||||
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) {
|
||||
throw getError(errors, status)
|
||||
if (errors || res.status >= 400) {
|
||||
throw getError(
|
||||
errors || [
|
||||
{
|
||||
message: `${type ? `${type}, ` : ''}${message}`,
|
||||
},
|
||||
],
|
||||
status || res.status
|
||||
)
|
||||
}
|
||||
|
||||
return { data, res }
|
||||
|
@ -49,7 +49,9 @@ export async function getStaticProps({
|
||||
const { products: relatedProducts } = await allProductsPromise
|
||||
|
||||
if (!product) {
|
||||
throw new Error(`Product with slug '${params!.slug}' not found`)
|
||||
return {
|
||||
notFound: true,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
|
Loading…
x
Reference in New Issue
Block a user