UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

36 lines (35 loc) 1.74 kB
import type { AnyCaller } from "../../util/function.js"; import type { RequestHandler, RequestOptions } from "../../util/http.js"; import type { AnyEndpoint, Endpoint } from "../endpoint/Endpoint.js"; import type { APIProvider } from "./APIProvider.js"; import { ThroughAPIProvider } from "./ThroughAPIProvider.js"; export type MockAPIFetchCall = { readonly request: Request; readonly response: Response; }; export type MockAPIRequestCall = { readonly endpoint: AnyEndpoint; readonly payload: unknown; readonly options: RequestOptions | undefined; readonly request: Request; }; export type MockAPIResponseCall = { readonly endpoint: AnyEndpoint; readonly response: Response; readonly result: unknown; }; /** * Provider that logs API calls without sending network requests. * - Extends `ThroughAPIProvider` to delegate request building and response parsing to a source `APIProvider`. * - The source provider's `fetch()` is never called — this provider intercepts all fetches and routes them through a `RequestHandler`. */ export declare class MockAPIProvider<P = unknown, R = unknown> extends ThroughAPIProvider<P, R> { readonly requestCalls: MockAPIRequestCall[]; readonly fetchCalls: MockAPIFetchCall[]; readonly responseCalls: MockAPIResponseCall[]; readonly handler: RequestHandler; constructor(handler?: RequestHandler, source?: APIProvider<P, R>); createRequest<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, options?: RequestOptions, caller?: AnyCaller): Request; parseResponse<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>; fetch(request: Request): Promise<Response>; }