counterfact
Version:
Generate a TypeScript-based mock server from an OpenAPI spec in seconds — with stateful routes, hot reload, and REPL support.
37 lines (35 loc) • 1.39 kB
text/typescript
import type { CookieOptions } from "./cookie-options.js";
import type { MaybePromise } from "./maybe-promise.js";
/**
* A loosely-typed, chainable response builder used in non-generated contexts
* (e.g. middleware or wide/catch-all route handlers) where the exact response
* shape is not statically known. For generated route handlers, prefer the
* strongly-typed `GenericResponseBuilder`.
*/
export interface ResponseBuilder {
[status: number | `${number} ${string}`]: ResponseBuilder;
binary: (body: Uint8Array | string) => ResponseBuilder;
content?: { body: unknown; type: string }[];
cookie: (
name: string,
value: string,
options?: CookieOptions,
) => ResponseBuilder;
empty: () => ResponseBuilder;
example: (name: string) => ResponseBuilder;
header: (name: string, value: string) => ResponseBuilder;
headers: { [name: string]: string | string[] };
html: (body: unknown) => ResponseBuilder;
json: (body: unknown) => ResponseBuilder;
match: (contentType: string, body: unknown) => ResponseBuilder;
random: () => MaybePromise<ResponseBuilder>;
randomLegacy: () => MaybePromise<ResponseBuilder>;
status?: number;
stream: (iterable: AsyncIterable<unknown>) => {
body: AsyncIterable<unknown>;
contentType: string;
status?: number;
};
text: (body: unknown) => ResponseBuilder;
xml: (body: unknown) => ResponseBuilder;
}