diff --git a/packages/bling/src/client.ts b/packages/bling/src/client.ts index 0af8bbb..7b49bac 100644 --- a/packages/bling/src/client.ts +++ b/packages/bling/src/client.ts @@ -78,7 +78,7 @@ const fetchMethods: CreateClientFetcherMethods = { resolvedHref, mergeRequestInits( baseInit, - payloadInit, + method === 'POST' ? payloadInit : undefined, defaultOpts?.request, opts?.request, ), diff --git a/packages/bling/src/utils/utils.ts b/packages/bling/src/utils/utils.ts index 9d74d8a..6ac406e 100644 --- a/packages/bling/src/utils/utils.ts +++ b/packages/bling/src/utils/utils.ts @@ -156,11 +156,15 @@ export function mergeHeaders(...objs: (Headers | HeadersInit | undefined)[]) { } export function mergeRequestInits(...objs: (RequestInit | undefined)[]) { - return Object.assign.call(null, [ - {}, - ...objs, - { headers: mergeHeaders(...objs.map((o) => o && o.headers)) }, - ]) + const out = {} as Record + for (const obj of objs) { + if (!obj) continue + for (const key in obj) { + out[key as keyof RequestInit] = obj[key as keyof RequestInit] + } + } + out.headers = mergeHeaders(...objs.map((o) => o && o.headers)) + return out as RequestInit } export async function parseResponse(response: Response) { @@ -204,13 +208,9 @@ export async function parseResponse(response: Response) { } export function mergeFetchOpts(...objs: (FetchFnCtxOptions | undefined)[]) { - return Object.assign.call(null, [ - {}, - ...objs, - { - request: mergeRequestInits(...objs.map((o) => o && o.request)), - }, - ]) + return Object.assign.call(null, {}, ...objs, { + request: mergeRequestInits(...objs.map((o) => o && o.request)), + }) } export function payloadRequestInit(