| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- "use strict";
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.isEmptyHeaders = exports.buildHeaders = void 0;
- const values_1 = require("./utils/values.js");
- 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 ((0, values_1.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 = (0, values_1.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];
- }
- }
- }
- 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 };
- };
- exports.buildHeaders = buildHeaders;
- const isEmptyHeaders = (headers) => {
- for (const _ of iterateHeaders(headers))
- return false;
- return true;
- };
- exports.isEmptyHeaders = isEmptyHeaders;
- //# sourceMappingURL=headers.js.map
|