diff --git a/framework/bigcommerce/api/endpoints/wishlist/index.ts b/framework/bigcommerce/api/endpoints/wishlist/index.ts index 78bf8f738..605c53472 100644 --- a/framework/bigcommerce/api/endpoints/wishlist/index.ts +++ b/framework/bigcommerce/api/endpoints/wishlist/index.ts @@ -1,4 +1,5 @@ -import type { GetAPISchema } from '@commerce/api' +import { GetAPISchema, createEndpoint } from '@commerce/api' +import wishlist from '@commerce/api/endpoints/wishlist' import type { WishlistSchema } from '../../../types/wishlist' import type { BigcommerceAPI } from '../..' import getWishlist from './get-wishlist' @@ -9,4 +10,15 @@ export type WishlistAPI = GetAPISchema export type WishlistEndpoint = WishlistAPI['endpoint'] -export const handlers = { getWishlist, addItem, removeItem } +export const handlers: WishlistEndpoint['handlers'] = { + getWishlist, + addItem, + removeItem, +} + +const wishlistEndpoint = createEndpoint({ + handler: wishlist as WishlistAPI['endpoint']['handler'], + handlers, +}) + +export default wishlistEndpoint diff --git a/framework/bigcommerce/api/index.ts b/framework/bigcommerce/api/index.ts index c53165966..345715384 100644 --- a/framework/bigcommerce/api/index.ts +++ b/framework/bigcommerce/api/index.ts @@ -134,19 +134,8 @@ export type BigcommerceAPI

= CommerceAPI

export function getCommerceApi

( customProvider: P = provider as any -) { - const api: BigcommerceAPI

= commerceApi(customProvider) - - return Object.assign(api, { - endpoint( - context: E['endpoint'] & { - config?: P['config'] - options?: E['schema']['endpoint']['options'] - } - ): NextApiHandler { - return getEndpoint(api, context) - }, - }) +): BigcommerceAPI

{ + return commerceApi(customProvider) } export function getConfig(userConfig?: Partial) { diff --git a/framework/commerce/api/index.ts b/framework/commerce/api/index.ts index 60afb7ae2..6a28a9597 100644 --- a/framework/commerce/api/index.ts +++ b/framework/commerce/api/index.ts @@ -132,6 +132,18 @@ export function getEndpoint< } } +export const createEndpoint = >( + endpoint: API['endpoint'] +) =>

( + commerce: CommerceAPI

, + context?: Partial & { + config?: P['config'] + options?: API['schema']['endpoint']['options'] + } +): NextApiHandler => { + return getEndpoint(commerce, { ...endpoint, ...context }) +} + export interface CommerceAPIConfig { locale?: string commerceUrl: string diff --git a/pages/api/wishlist.ts b/pages/api/wishlist.ts index fe6d2d1c7..2f14bec5c 100644 --- a/pages/api/wishlist.ts +++ b/pages/api/wishlist.ts @@ -1,8 +1,4 @@ -import wishlist from '@commerce/api/endpoints/wishlist' -import { WishlistAPI, handlers } from '@framework/api/endpoints/wishlist' +import wishlistEndpoint from '@framework/api/endpoints/wishlist' import commerce from '@lib/api/commerce' -export default commerce.endpoint({ - handler: wishlist as WishlistAPI['endpoint']['handler'], - handlers, -}) +export default wishlistEndpoint(commerce)