From c27328f853e21c3afc53cef1232c451de75230ac Mon Sep 17 00:00:00 2001 From: Catalin Pinte <1243434+cond0r@users.noreply.github.com> Date: Thu, 20 Oct 2022 11:11:26 +0300 Subject: [PATCH] Fix build errors --- .../api/endpoints/checkout/get-checkout.ts | 60 ++++++++++--------- packages/commerce/src/api/utils/index.ts | 28 +++++---- .../commerce/src/api/utils/node-handler.ts | 21 ++++--- packages/commerce/src/api/utils/types.ts | 2 +- 4 files changed, 60 insertions(+), 51 deletions(-) diff --git a/packages/bigcommerce/src/api/endpoints/checkout/get-checkout.ts b/packages/bigcommerce/src/api/endpoints/checkout/get-checkout.ts index 64e2c91bf..ce39ee29c 100644 --- a/packages/bigcommerce/src/api/endpoints/checkout/get-checkout.ts +++ b/packages/bigcommerce/src/api/endpoints/checkout/get-checkout.ts @@ -64,36 +64,38 @@ const getCheckout: CheckoutEndpoint['handlers']['getCheckout'] = async ({ } // TODO: make the embedded checkout work too! - const html = ` - - - - - - Checkout - - - - -
- - - ` + // const html = ` + // + // + // + // + // + // Checkout + // + // + // + // + //
+ // + // + // ` - return new Response(html, { - headers: { - 'Content-Type': 'text/html', - }, - }) + // return new Response(html, { + // headers: { + // 'Content-Type': 'text/html', + // }, + // }) + + return { data: null } } export default getCheckout diff --git a/packages/commerce/src/api/utils/index.ts b/packages/commerce/src/api/utils/index.ts index 219968578..5d0a617db 100644 --- a/packages/commerce/src/api/utils/index.ts +++ b/packages/commerce/src/api/utils/index.ts @@ -1,4 +1,4 @@ -import type { NextApiRequest } from 'next' +import type { NextApiRequest, NextApiResponse } from 'next' import type { ZodSchema } from 'zod' import type { APIResponse } from './types' @@ -52,15 +52,17 @@ export const transformRequest = (req: NextApiRequest, path: string) => { } export const transformHeaders = ( - headers?: Record -) => - headers - ? Object.entries(headers).reduce((acc, [key, value]) => { - if (Array.isArray(value)) { - value.forEach((v) => acc.append(key, v)) - } else { - acc.append(key, `${value}`) - } - return acc - }, new Headers()) - : new Headers() + headers?: Record | Headers +) => { + if (headers instanceof Headers) { + return headers + } + + const newHeaders = new Headers() + + Object.entries(headers || {}).forEach(([key, value]) => { + newHeaders.append(key, value as string) + }) + + return newHeaders +} diff --git a/packages/commerce/src/api/utils/node-handler.ts b/packages/commerce/src/api/utils/node-handler.ts index 2b0f1ac71..6adea1a84 100644 --- a/packages/commerce/src/api/utils/node-handler.ts +++ b/packages/commerce/src/api/utils/node-handler.ts @@ -45,17 +45,22 @@ export default function nodeHandler

( } const output = await handlers[path](transformRequest(req, path)) - - if (output instanceof Response) { - return res.end(output.body) - } - const { status, errors, data, redirectTo, headers } = output if (headers) { - Object.entries(headers).forEach(([key, value]) => { - res.setHeader(key, value) - }) + if (headers instanceof Headers) { + headers.forEach((value, key) => { + res.setHeader(key, value) + }) + } else { + Object.entries(headers).forEach(([key, value]) => { + res.setHeader(key, value) + }) + } + } + + if (output instanceof Response) { + return res.end(output.body) } if (redirectTo) { diff --git a/packages/commerce/src/api/utils/types.ts b/packages/commerce/src/api/utils/types.ts index f4401de6d..f048c60c1 100644 --- a/packages/commerce/src/api/utils/types.ts +++ b/packages/commerce/src/api/utils/types.ts @@ -7,7 +7,7 @@ export type APIResponse = { data?: Data errors?: ErrorData[] status?: number - headers?: Record + headers?: Record | Headers /** * @type {string} * @example redirectTo: '/cart'