import { sleep } from "@hyper-fetch/testing"; import type { RequestInstance } from "request"; import { Adapter } from "adapter"; import type { HttpAdapterType } from "http-adapter"; import { HttpAdapter } from "http-adapter"; import { LoggerManager } from "managers"; export const createAdapter = (props?: { sleepTime?: number; callback: (request: RequestInstance, requestId: string) => void; }): HttpAdapterType => { const { sleepTime, callback } = props || {}; const httpAdapter = HttpAdapter(); const adapter = new Adapter({ name: "test", defaultMethod: "GET", defaultExtra: {}, systemErrorStatus: 0, systemErrorExtra: {}, }); adapter.logger = new LoggerManager().initialize({ debug: false }, "Adapter"); httpAdapter.logger = new LoggerManager().initialize({ debug: false }, "Adapter"); adapter.unstable_fetcher = httpAdapter.unstable_fetcher as any; adapter.fetch = async (request, requestId) => { if (sleepTime) { await sleep(sleepTime); } callback?.(request, requestId); return httpAdapter.fetch(request as any, requestId); }; return httpAdapter as unknown as HttpAdapterType; };