diff --git a/framework/bigcommerce/api/index.ts b/framework/bigcommerce/api/index.ts index 9d30b1f2c..bd4d368f7 100644 --- a/framework/bigcommerce/api/index.ts +++ b/framework/bigcommerce/api/index.ts @@ -1,19 +1,15 @@ import type { NextApiHandler } from 'next' import type { RequestInit } from '@vercel/fetch' -import { CommerceAPI, CommerceAPIConfig } from '@commerce/api' +import { + CommerceAPIConfig, + getCommerceApi as commerceApi, + getEndpoint, +} from '@commerce/api' import fetchGraphqlApi from './utils/fetch-graphql-api' import fetchStoreApi from './utils/fetch-store-api' import type { CartAPI } from './cart' import login from './operations/login' -import { - Operations, - defaultOperations, - AllowedOperations, - OPERATIONS, - getOperations, - APIOperations, -} from '@commerce/api/operations' export interface BigcommerceConfig extends CommerceAPIConfig { // Indicates if the returned metadata with translations should be applied to the @@ -119,17 +115,16 @@ export type APIs = CartAPI export function getCommerceApi
(
customProvider: P = provider as any
) {
- const commerce = new CommerceAPI(customProvider)
- const operations = getOperations(customProvider.operations, { commerce })
+ const api = commerceApi(customProvider)
- return Object.assign(commerce, operations, {
+ return Object.assign(api, {
endpoint {
setConfig(newConfig: Partial ) {
Object.assign(this.provider.config, newConfig)
}
+}
- endpoint (customProvider: P) {
+ const commerce = new CommerceAPI(customProvider)
+ const operations = getOperations(customProvider.operations, { commerce })
- return function apiHandler(req, res) {
- return context.handler({
- req,
- res,
- commerce,
- config: cfg,
- operations: context.operations,
- options: context.options ?? {},
- })
- }
+ return Object.assign(commerce, operations)
+}
+
+export function getEndpoint<
+ P extends APIProvider,
+ T extends GetAPISchema ,
+ context: T['endpoint'] & {
+ config?: P['config']
+ options?: T['schema']['endpoint']['options']
+ }
+): NextApiHandler {
+ const cfg = commerce.getConfig(context.config)
+
+ return function apiHandler(req, res) {
+ return context.handler({
+ req,
+ res,
+ commerce,
+ config: cfg,
+ operations: context.operations,
+ options: context.options ?? {},
+ })
}
}