21 lines
658 B
TypeScript
21 lines
658 B
TypeScript
import type { Dispatcher } from "undici";
|
|
import { ProxyAgent, fetch as undiciFetch } from "undici";
|
|
import type { ZaloFetch } from "./api.js";
|
|
|
|
const proxyCache = new Map<string, ZaloFetch>();
|
|
|
|
export function resolveZaloProxyFetch(proxyUrl?: string | null): ZaloFetch | undefined {
|
|
const trimmed = proxyUrl?.trim();
|
|
if (!trimmed) {
|
|
return undefined;
|
|
}
|
|
const cached = proxyCache.get(trimmed);
|
|
if (cached) {
|
|
return cached;
|
|
}
|
|
const agent = new ProxyAgent(trimmed);
|
|
const fetcher: ZaloFetch = (input, init) =>
|
|
undiciFetch(input, { ...init, dispatcher: agent as Dispatcher });
|
|
proxyCache.set(trimmed, fetcher);
|
|
return fetcher;
|
|
}
|