UNPKG

@pactflow/pact-msw-adapter

Version:

> Generate pact contracts from the recorded mock service worker interactions.

96 lines (95 loc) 2.5 kB
/// <reference types="node" /> import { SetupWorker } from "msw/browser"; import { SetupServer } from "msw/node"; import { JSONValue, Logger } from "./utils/utils"; import { convertMswMatchToPact } from "./convertMswMatchToPact"; import { EventEmitter } from "events"; export interface PactMswAdapterOptions { timeout?: number; debug?: boolean; pactOutDir?: string; consumer: string; providers: { [name: string]: string[]; } | ((event: PendingRequest) => string | null); includeUrl?: string[]; excludeUrl?: string[]; excludeHeaders?: string[]; logger?: Logger; } export interface PactMswAdapterOptionsInternal { timeout: number; debug: boolean; pactOutDir: string; consumer: string; providers: { [name: string]: string[]; } | ((event: PendingRequest) => string | null); includeUrl?: string[]; excludeUrl?: string[]; excludeHeaders?: string[]; logger: Logger; } export interface PactMswAdapter { emitter: EventEmitter; newTest: () => void; verifyTest: () => void; writeToFile: (writer?: (path: string, data: object) => void) => Promise<void>; clear: () => void; } export declare const setupPactMswAdapter: ({ options: externalOptions, worker, server, }: { options: PactMswAdapterOptions; worker?: SetupWorker; server?: SetupServer; }) => PactMswAdapter; export { convertMswMatchToPact }; export interface PactInteraction { description: string; providerState: string; request: { method: string; path: string; headers: any; body: JSONValue | FormData | undefined; query?: string; }; response: { status: number; headers: any; body: any; }; } export interface PactParticipants { consumer: { name: string; }; provider: { name: string; }; } export interface PactFile { consumer: PactParticipants["consumer"]; provider: PactParticipants["provider"]; interactions: PactInteraction[]; metadata: PactFileMetaData; } export interface PactFileMetaData { pactSpecification: { version: string; }; client: { name: string; version: string; }; } export interface PendingRequest { request: Request; requestId: string; } export interface MatchedRequest extends PendingRequest { response: Response; } export interface ExpiredRequest extends PendingRequest { startTime: number; duration?: number; }