diff --git a/packages/sylius/src/api/index.ts b/packages/sylius/src/api/index.ts index 3b24a3045..e6f7d10f6 100644 --- a/packages/sylius/src/api/index.ts +++ b/packages/sylius/src/api/index.ts @@ -1,6 +1,5 @@ import type { CommerceAPI, CommerceAPIConfig } from '@vercel/commerce/api' import { getCommerceApi as commerceApi } from '@vercel/commerce/api' -import createFetcher from './utils/fetch-local' import getAllPages from './operations/get-all-pages' import getPage from './operations/get-page' @@ -9,15 +8,18 @@ import getCustomerWishlist from './operations/get-customer-wishlist' import getAllProductPaths from './operations/get-all-product-paths' import getAllProducts from './operations/get-all-products' import getProduct from './operations/get-product' +import fetchLocal from './utils/fetch-local' -export interface LocalConfig extends CommerceAPIConfig {} -const config: LocalConfig = { +export interface SyliusConfig extends CommerceAPIConfig { + fetch: any +} +const config: SyliusConfig = { commerceUrl: '', apiToken: '', cartCookie: '', customerCookie: '', cartCookieMaxAge: 2592000, - fetch: createFetcher(() => getCommerceApi().getConfig()), + fetch: fetchLocal.fetchRestApi, } const operations = { diff --git a/packages/sylius/src/api/utils/fetch-local.ts b/packages/sylius/src/api/utils/fetch-local.ts index ae84fff8b..2aaae008b 100644 --- a/packages/sylius/src/api/utils/fetch-local.ts +++ b/packages/sylius/src/api/utils/fetch-local.ts @@ -1,9 +1,9 @@ import { FetcherError } from '@vercel/commerce/utils/errors' import type { GraphQLFetcher } from '@vercel/commerce/api' -import type { LocalConfig } from '../index' +import type { SyliusConfig } from '../index' import fetch from './fetch' -const fetchGraphqlApi: (getConfig: () => LocalConfig) => GraphQLFetcher = +const fetchGraphqlApi: (getConfig: () => SyliusConfig) => GraphQLFetcher = (getConfig) => async (query: string, { variables, preview } = {}, fetchOptions) => { const config = getConfig() @@ -31,4 +31,24 @@ const fetchGraphqlApi: (getConfig: () => LocalConfig) => GraphQLFetcher = return { data: json.data, res } } -export default fetchGraphqlApi +export const fetchRestApi = async ( + method: string, + path: string, + body?: Record, + fetchOptions?: Record +) => { + const res = await fetch(process.env.NEXT_PUBLIC_SYLIUS_API_URL + path, { + ...fetchOptions, + method, + headers: { + ...fetchOptions?.headers, + 'Content-Type': 'application/json', + accept: 'application/json, text/plain', + }, + body: body ? JSON.stringify(body) : undefined, + }) + const jsonResponse = await res.json() + return jsonResponse as T +} + +export default { fetchGraphqlApi, fetchRestApi }