4
0
forked from crowetic/commerce
commerce/lib/bigcommerce/api/utils/create-api-handler.ts
2020-10-04 19:44:11 -05:00

24 lines
684 B
TypeScript

import type { NextApiHandler, NextApiRequest, NextApiResponse } from 'next'
import { BigcommerceConfig, getConfig } from '..'
export type BigcommerceApiHandler<T = any> = (
req: NextApiRequest,
res: NextApiResponse<BigcommerceApiResponse<T>>,
config: BigcommerceConfig
) => void | Promise<void>
export type BigcommerceApiResponse<T> = {
data: T | null
errors?: { message: string }[]
}
export default function createApiHandler(handler: BigcommerceApiHandler) {
return function getApiHandler({
config,
}: { config?: BigcommerceConfig } = {}): NextApiHandler {
return function apiHandler(req, res) {
return handler(req, res, getConfig(config))
}
}
}