import { t as HeadersRecord } from "./http-well-known-CWSKjGqw.mjs"; import { B as HTTPOptions, a as HTTPRequestFunction, t as BodyData } from "./http-client-CtmE_7Hq.mjs"; //#region src/utils/mock-adapter.d.ts /** * Accepted response-body type for mock replies. * Covers JSON-serialisable values and `null` (e.g. 204 No Content). */ type MockResponseData = BodyData | null | undefined; /** * Callback handler shape for `.reply((url, options) => [status, data?, headers?])`. * * @example * mock.onPost('/users').reply((url, opts) => { * const body = JSON.parse(opts.body as string); * return body.role === 'admin' ? [403, { error: 'Forbidden' }] : [201, { id: 1, ...body }]; * }); */ type MockReplyCallback = (url: string, options: HTTPOptions) => [status: number, data?: MockResponseData, headers?: HeadersRecord] | Promise<[status: number, data?: MockResponseData, headers?: HeadersRecord]>; /** Optional per-handler reply options (not part of HeadersRecord business data). */ interface ReplyOptions { /** Simulate response latency (ms). Applied before the response is returned. */ delayMs?: number; } /** * Intercepts HTTP requests for testing without making real network calls. * * Pass `mock.transport` as the `transport` option to `HTTPClient` or `HTTPBuilder`. * * @example * ```ts * const mock = new MockAdapter(); * const client = new HTTPBuilder('https://api.example.com') * .withTransport(mock.transport) * .build(); * * mock.onGet('/users').reply(200, [{ id: 1, name: 'Alice' }]); * mock.onPost('/users').reply((url, opts) => { * const body = JSON.parse(opts.body as string); * return [201, { id: 2, ...body }]; * }); * * const { data } = await client.get('/users'); * ``` */ declare class MockAdapter { private readonly handlers; private history; /** * Default delay applied to every response (milliseconds). * Useful for simulating realistic network latency in tests. * @default 0 */ delayResponse: number; /** * The transport function to pass to `HTTPClient` config. * * @example * const client = new HTTPClient({ transport: mock.transport }); */ transport: HTTPRequestFunction; /** * Register a mock for the given HTTP `method` and URL pattern. * * The returned builder exposes fluent methods: * - `.reply(status, data?, headers?)` — static response * - `.reply(status, data?, headers?, options?)` — static response with latency * - `.reply(callback)` — dynamic response via a callback * - `.replyOnce(...)` — fires only once, then is removed * - `.networkError()` — simulate a network failure * - `.timeout()` — simulate a request timeout */ on(method: string, url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** Mock all GET requests to the given URL pattern. */ onGet(url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** Mock all POST requests to the given URL pattern. */ onPost(url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** Mock all PUT requests to the given URL pattern. */ onPut(url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** Mock all DELETE requests to the given URL pattern. */ onDelete(url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** Mock all PATCH requests to the given URL pattern. */ onPatch(url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** Mock all HEAD requests to the given URL pattern. */ onHead(url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** Mock all OPTIONS requests to the given URL pattern. */ onOptions(url: string | RegExp): { reply: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; replyOnce: { (status: number, data?: MockResponseData, headers?: HeadersRecord, options?: ReplyOptions): MockAdapter; (callback: MockReplyCallback): MockAdapter; }; networkError: () => MockAdapter; timeout: () => MockAdapter; }; /** * Remove all registered handlers and clear request history. * Call between tests to ensure handler isolation. */ reset(): void; /** Total number of requests recorded since the last {@link reset}. */ get historyLength(): number; /** The most recently recorded request, or `undefined` if none. */ get latestRequest(): { url: string; method: string; options: HTTPOptions; } | undefined; /** * Returns a copy of the full request history since the last {@link reset}. * Each entry exposes `url`, `method`, and the full `options` object. */ getHistory(): Array<{ url: string; method: string; options: HTTPOptions; }>; } //#endregion export { MockResponseData as n, MockAdapter as t }; //# sourceMappingURL=mock-adapter-BLbCf01X.d.mts.map