Merge branch 'master' of github.com:okbel/e-comm-example
This commit is contained in:
		@@ -109,4 +109,4 @@ const cartApi: BigcommerceApiHandler<Cart, CartHandlers> = async (
 | 
			
		||||
 | 
			
		||||
export const handlers = { getCart, addItem, updateItem, removeItem }
 | 
			
		||||
 | 
			
		||||
export default createApiHandler(cartApi, handlers)
 | 
			
		||||
export default createApiHandler(cartApi, handlers, {})
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import getAllProducts, {
 | 
			
		||||
import type { ProductsHandlers } from '../products'
 | 
			
		||||
 | 
			
		||||
const SORT: { [key: string]: string | undefined } = {
 | 
			
		||||
  latest: 'date_modified',
 | 
			
		||||
  latest: 'id',
 | 
			
		||||
  trending: 'total_sold',
 | 
			
		||||
  price: 'price',
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -45,4 +45,4 @@ const cartApi: BigcommerceApiHandler<
 | 
			
		||||
 | 
			
		||||
export const handlers = { getProducts }
 | 
			
		||||
 | 
			
		||||
export default createApiHandler(cartApi, handlers)
 | 
			
		||||
export default createApiHandler(cartApi, handlers, {})
 | 
			
		||||
 
 | 
			
		||||
@@ -73,4 +73,4 @@ const checkoutApi: BigcommerceApiHandler<any> = async (req, res, config) => {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default createApiHandler(checkoutApi, {})
 | 
			
		||||
export default createApiHandler(checkoutApi, {}, {})
 | 
			
		||||
 
 | 
			
		||||
@@ -53,4 +53,4 @@ const handlers = {
 | 
			
		||||
  createCustomer,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default createApiHandler(customersApi, handlers)
 | 
			
		||||
export default createApiHandler(customersApi, handlers, {})
 | 
			
		||||
 
 | 
			
		||||
@@ -3,12 +3,15 @@ import { BigcommerceConfig, getConfig } from '..'
 | 
			
		||||
 | 
			
		||||
export type BigcommerceApiHandler<
 | 
			
		||||
  T = any,
 | 
			
		||||
  H extends BigcommerceHandlers = {}
 | 
			
		||||
  H extends BigcommerceHandlers = {},
 | 
			
		||||
  Options extends {} = {}
 | 
			
		||||
> = (
 | 
			
		||||
  req: NextApiRequest,
 | 
			
		||||
  res: NextApiResponse<BigcommerceApiResponse<T>>,
 | 
			
		||||
  config: BigcommerceConfig,
 | 
			
		||||
  handlers: H
 | 
			
		||||
  handlers: H,
 | 
			
		||||
  // Custom configs that may be used by a particular handler
 | 
			
		||||
  options: Options
 | 
			
		||||
) => void | Promise<void>
 | 
			
		||||
 | 
			
		||||
export type BigcommerceHandler<T = any, Body = any> = (options: {
 | 
			
		||||
@@ -27,21 +30,29 @@ export type BigcommerceApiResponse<T> = {
 | 
			
		||||
  errors?: { message: string }[]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default function createApiHandler<H extends BigcommerceHandlers>(
 | 
			
		||||
  handler: BigcommerceApiHandler<any, H>,
 | 
			
		||||
  handlers: H
 | 
			
		||||
export default function createApiHandler<
 | 
			
		||||
  T = any,
 | 
			
		||||
  H extends BigcommerceHandlers = {},
 | 
			
		||||
  Options extends {} = {}
 | 
			
		||||
>(
 | 
			
		||||
  handler: BigcommerceApiHandler<T, H, Options>,
 | 
			
		||||
  handlers: H,
 | 
			
		||||
  defaultOptions: Options
 | 
			
		||||
) {
 | 
			
		||||
  return function getApiHandler({
 | 
			
		||||
    config,
 | 
			
		||||
    operations,
 | 
			
		||||
    options,
 | 
			
		||||
  }: {
 | 
			
		||||
    config?: BigcommerceConfig
 | 
			
		||||
    operations?: Partial<H>
 | 
			
		||||
    options?: Options extends {} ? Partial<Options> : never
 | 
			
		||||
  } = {}): NextApiHandler {
 | 
			
		||||
    const ops = { ...operations, ...handlers }
 | 
			
		||||
    const opts = { ...defaultOptions, ...options }
 | 
			
		||||
 | 
			
		||||
    return function apiHandler(req, res) {
 | 
			
		||||
      return handler(req, res, getConfig(config), ops)
 | 
			
		||||
      return handler(req, res, getConfig(config), ops, opts)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user