msw-ssr-interceptor
Version:
Helper to use msw in SSR environments
24 lines (21 loc) • 1.28 kB
TypeScript
import { PathParams, DefaultBodyType, Path, HttpResponseResolver, RequestHandlerOptions, http } from 'msw';
type HttpRequestHandler = <Params extends PathParams<keyof Params> = PathParams, RequestBodyType extends DefaultBodyType = DefaultBodyType, ResponseBodyType extends DefaultBodyType = undefined, RequestPath extends Path = Path>(path: RequestPath, resolver: HttpResponseResolver<Params, RequestBodyType, ResponseBodyType>, options?: RequestHandlerOptions) => SerialisableRequestHandler;
type HttpMethod = keyof typeof http;
type HttpNamespace = {
[K in HttpMethod]: HttpRequestHandler;
};
interface InterceptorRequestHandlerOptions extends RequestHandlerOptions {
dependencies?: string[];
}
interface SerialisableRequestHandler {
path: Path;
method: HttpMethod;
resolver: HttpResponseResolver<any, any, any>;
options: InterceptorRequestHandlerOptions;
}
interface Interceptor {
close: () => Promise<void>;
use: (...customHandlers: SerialisableRequestHandler[]) => Promise<void>;
resetHandlers: (...customHandlers: SerialisableRequestHandler[]) => Promise<void>;
}
export type { HttpNamespace as H, Interceptor as I, SerialisableRequestHandler as S, HttpMethod as a, HttpRequestHandler as b, InterceptorRequestHandlerOptions as c };