@pactflow/pact-msw-adapter
Version:
> Generate pact contracts from the recorded mock service worker interactions.
96 lines (95 loc) • 2.5 kB
TypeScript
/// <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;
}