Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
24 lines
783 B
TypeScript
24 lines
783 B
TypeScript
import type { ProviderHeaders } from "../types.ts";
|
|
|
|
export function headersToRecord(headers: Headers): Record<string, string> {
|
|
const result: Record<string, string> = {};
|
|
for (const [key, value] of headers.entries()) {
|
|
result[key] = value;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export function providerHeadersToRecord(
|
|
...headerSources: (ProviderHeaders | undefined)[]
|
|
): Record<string, string> | undefined {
|
|
const merged = new Map<string, [string, string]>();
|
|
for (const source of headerSources) {
|
|
for (const [name, value] of Object.entries(source ?? {})) {
|
|
const normalizedName = name.toLowerCase();
|
|
merged.delete(normalizedName);
|
|
if (value !== null) merged.set(normalizedName, [name, value]);
|
|
}
|
|
}
|
|
return merged.size > 0 ? Object.fromEntries(merged.values()) : undefined;
|
|
}
|