express-http-client
Version:
middleware style interceptor; fetch based 0 dependancy imperative light weight http handler.
61 lines • 2.32 kB
TypeScript
/**
* Creates a middleware that mocks HTTP responses based on URL and method
*
* @param {boolean} [isMocked=true] - Whether to enable response mocking
* @param {Object.<string, Object.<string, function(Request):Response>>} [reqResMap={}] -
* A mapping of URLs to HTTP methods to response handlers.
* Format: { '/api/users': { 'GET': (req) => {...}, 'POST': (req) => {...} } }
* @param {function(Request):Response} [defaultResponse] -
* Function that returns a default Response when no matching URL/method is found.
* Defaults to returning a 404 "Resource Not Found" response.
*
* @returns {function({
* request: Request,
* response: Response,
* requestTime: number,
* responseTime: number,
* store: Map<any, any>
* }, function():Promise<Response>):Promise<Response>}
* A middleware function that intercepts requests and returns mock responses when enabled
*
* @description
* This middleware allows for easy mocking of HTTP responses during development or testing.
* When enabled, it intercepts requests and returns mock responses based on the URL and method.
*
* The reqResMap parameter should be structured as:
* {
* '/api/endpoint': {
* 'GET': (request) => new Response(JSON.stringify({ data: 'mock data' }), {
* headers: { 'Content-Type': 'application/json' }
* }),
* 'POST': (request) => new Response('Created', { status: 201 })
* }
* }
*
* If a request doesn't match any entry in the reqResMap, the defaultResponse function is used.
*
* @example
* // Basic usage
* const mockMiddleware = MockResponse(true, {
* '/api/users': {
* 'GET': () => new Response(JSON.stringify([{ id: 1, name: 'User' }]), {
* headers: { 'Content-Type': 'application/json' }
* })
* }
* });
*
* // Disable mocking
* const conditionalMock = MockResponse(process.env.NODE_ENV === 'development', {...});
*/
export default function MockResponse(isMocked?: boolean, reqResMap?: {
[x: string]: {
[x: string]: (arg0: Request) => Response;
};
}, defaultResponse?: (arg0: Request) => Response): (arg0: {
request: Request;
response: Response;
requestTime: number;
responseTime: number;
store: Map<any, any>;
}, arg1: () => Promise<Response>) => Promise<Response>;
//# sourceMappingURL=MockResponse.d.ts.map