mirror of https://github.com/openclaw/openclaw.git
25 lines
748 B
TypeScript
25 lines
748 B
TypeScript
import type { Dispatcher, RequestInit as UndiciRequestInit } 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 UndiciRequestInit) as unknown as Promise<Response>;
|
|
proxyCache.set(trimmed, fetcher);
|
|
return fetcher;
|
|
}
|