27 lines
860 B
TypeScript
27 lines
860 B
TypeScript
import { socksDispatcher } from 'fetch-socks';
|
|
import { Agent, Dispatcher, interceptors, ProxyAgent, setGlobalDispatcher } from 'undici';
|
|
|
|
jest.mock('randomstring', () => ({
|
|
generate: jest.fn(() => 'mocked-random-string'),
|
|
}));
|
|
|
|
beforeEach(() => {
|
|
jest.spyOn(Date, 'now').mockImplementation(() => 639837296000);
|
|
});
|
|
|
|
let dispatcher: Dispatcher;
|
|
if (process.env['ALL_PROXY']) {
|
|
const proxyUrl = new URL(process.env['ALL_PROXY']);
|
|
if (proxyUrl.protocol === 'socks5:') {
|
|
dispatcher = socksDispatcher({ type: 5, host: proxyUrl.hostname, port: parseInt(proxyUrl.port) }, { allowH2: true });
|
|
} else {
|
|
dispatcher = new ProxyAgent({ uri: proxyUrl.href, allowH2: true });
|
|
}
|
|
} else {
|
|
dispatcher = new Agent({ allowH2: true });
|
|
}
|
|
dispatcher.compose(
|
|
interceptors.dns(),
|
|
interceptors.retry({ maxRetries: 3 }),
|
|
);
|
|
setGlobalDispatcher(dispatcher);
|