| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
- import { isReadonlyArray } from "./utils/values.mjs";
- const brand_privateNullableHeaders = Symbol.for('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
|