UNPKG

request-mocking-protocol

Version:
22 lines (18 loc) 760 B
/** * MSW interceptor. */ import { http, bypass, HttpResponse } from 'msw'; import { extractMockSchemas, GetHeaders } from '../transport'; import { matchSchemas } from '../request-matcher/utils'; import { ResponseBuilder } from '../response-builder'; export function createHandler(getIncomingHeaders: GetHeaders) { return http.all('*', async ({ request }) => { const mockSchemas = await extractMockSchemas(getIncomingHeaders); const matchResult = await matchSchemas(request, mockSchemas); if (!matchResult) return; const { body, headers, status, statusText } = await new ResponseBuilder(matchResult, { bypass: (req) => fetch(bypass(req)), }).build(); return new HttpResponse(body, { status, statusText, headers }); }); }