UNPKG

@tanstack/router-core

Version:

Modern and scalable routing for React applications

41 lines (37 loc) 1.18 kB
import { splitSetCookieString } from 'cookie-es' import type { OutgoingHttpHeaders } from 'node:http2' export type AnyHeaders = | Headers | HeadersInit | Record<string, string> | Array<[string, string]> | OutgoingHttpHeaders | undefined // Helper function to convert various HeaderInit types to a Headers instance function toHeadersInstance(init: AnyHeaders) { if (init instanceof Headers) { return init } else if (Array.isArray(init)) { return new Headers(init) } else if (typeof init === 'object') { return new Headers(init as HeadersInit) } else { return null } } // Function to merge headers with proper overrides export function mergeHeaders(...headers: Array<AnyHeaders>) { return headers.reduce((acc: Headers, header) => { const headersInstance = toHeadersInstance(header) if (!headersInstance) return acc for (const [key, value] of headersInstance.entries()) { if (key === 'set-cookie') { const splitCookies = splitSetCookieString(value) splitCookies.forEach((cookie) => acc.append('set-cookie', cookie)) } else { acc.set(key, value) } } return acc }, new Headers()) }