UNPKG

e-invoice-api

Version:

The official TypeScript library for the e-invoice API

74 lines 2.53 kB
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { isReadonlyArray } from "./utils/values.mjs"; const brand_privateNullableHeaders = /* @__PURE__ */ Symbol('brand.privateNullableHeaders'); function* iterateHeaders(headers) { if (!headers) return; if (brand_privateNullableHeaders in headers) { const { values, nulls } = headers; yield* values.entries(); for (const name of nulls) { yield [name, null]; } return; } let shouldClear = false; let iter; if (headers instanceof Headers) { iter = headers.entries(); } else if (isReadonlyArray(headers)) { iter = headers; } else { shouldClear = true; iter = Object.entries(headers ?? {}); } for (let row of iter) { const name = row[0]; if (typeof name !== 'string') throw new TypeError('expected header name to be a string'); const values = isReadonlyArray(row[1]) ? row[1] : [row[1]]; let didClear = false; for (const value of values) { if (value === undefined) continue; // Objects keys always overwrite older headers, they never append. // Yield a null to clear the header before adding the new values. if (shouldClear && !didClear) { didClear = true; yield [name, null]; } yield [name, value]; } } } export const buildHeaders = (newHeaders) => { const targetHeaders = new Headers(); const nullHeaders = new Set(); for (const headers of newHeaders) { const seenHeaders = new Set(); for (const [name, value] of iterateHeaders(headers)) { const lowerName = name.toLowerCase(); if (!seenHeaders.has(lowerName)) { targetHeaders.delete(name); seenHeaders.add(lowerName); } if (value === null) { targetHeaders.delete(name); nullHeaders.add(lowerName); } else { targetHeaders.append(name, value); nullHeaders.delete(lowerName); } } } return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders }; }; export const isEmptyHeaders = (headers) => { for (const _ of iterateHeaders(headers)) return false; return true; }; //# sourceMappingURL=headers.mjs.map