msw

  • Version 2.10.2
  • Published
  • 4.53 MB
  • 18 dependencies
  • MIT license

Install

npm i msw
yarn add msw
pnpm add msw

Overview

Seamless REST/GraphQL API mocking library for browser and Node.js.

Index

Variables

Functions

Classes

Interfaces

Enums

Type Aliases

Variables

variable bodyType

const bodyType: Symbol;

    variable graphql

    const graphql: {
    link: typeof createGraphQLLink;
    query: GraphQLRequestHandler;
    mutation: GraphQLRequestHandler;
    operation: <
    Query extends Record<string, any> = Record<string, any>,
    Variables extends GraphQLVariables = GraphQLVariables
    >(
    resolver: ResponseResolver<
    GraphQLResolverExtras<Variables>,
    null,
    {
    data?: Query;
    errors?: readonly GraphQLError[];
    extensions?: Record<string, any>;
    }
    >
    ) => GraphQLHandler;
    };
    • A namespace to intercept and mock GraphQL operations

      Example 1

      graphql.query('GetUser', resolver) graphql.mutation('DeletePost', resolver)

      See Also

    variable http

    const http: {
    all: HttpRequestHandler;
    head: HttpRequestHandler;
    get: HttpRequestHandler;
    post: HttpRequestHandler;
    put: HttpRequestHandler;
    delete: HttpRequestHandler;
    patch: HttpRequestHandler;
    options: HttpRequestHandler;
    };
    • A namespace to intercept and mock HTTP requests.

      Example 1

      http.get('/user', resolver) http.post('/post/:id', resolver)

      See Also

    variable MAX_SERVER_RESPONSE_TIME

    const MAX_SERVER_RESPONSE_TIME: number;

      variable MIN_SERVER_RESPONSE_TIME

      const MIN_SERVER_RESPONSE_TIME: number;

        variable NODE_SERVER_RESPONSE_TIME

        const NODE_SERVER_RESPONSE_TIME: number;

          variable SET_TIMEOUT_MAX_ALLOWED_INT

          const SET_TIMEOUT_MAX_ALLOWED_INT: number;

            variable ws

            const ws: { link: typeof createWebSocketLinkHandler };
            • A namespace to intercept and mock WebSocket connections.

              Example 1

              const chat = ws.link('wss://chat.example.com')

              See Also

            Functions

            function bypass

            bypass: (input: BypassRequestInput, init?: RequestInit) => Request;
            • Creates a Request instance that will always be ignored by MSW.

              Example 1

              import { bypass } from 'msw'

              fetch(bypass('/resource')) fetch(bypass(new URL('/resource', 'https://example.com))) fetch(bypass(new Request('https://example.com/resource')))

              See Also

            function cleanUrl

            cleanUrl: (path: string) => string;
            • Removes search parameters and the fragment from a given URL string.

            function delay

            delay: (durationOrMode?: DelayMode | number) => Promise<void>;
            • Delays the response by the given duration (ms).

              Example 1

              await delay() // emulate realistic server response time await delay(1200) // delay response by 1200ms await delay('infinite') // delay response infinitely

              See Also

            function getResponse

            getResponse: (
            handlers: Array<RequestHandler>,
            request: Request
            ) => Promise<Response | undefined>;
            • Finds a response for the given request instance in the array of request handlers.

              Parameter handlers

              The array of request handlers.

              Parameter request

              The Request instance.

              Returns

              {Response} A mocked response, if any.

            function handleRequest

            handleRequest: (
            request: Request,
            requestId: string,
            handlers: Array<RequestHandler>,
            options: RequiredDeep<SharedOptions>,
            emitter: Emitter<LifeCycleEventsMap>,
            handleRequestOptions?: HandleRequestOptions
            ) => Promise<Response | undefined>;

              function isCommonAssetRequest

              isCommonAssetRequest: (request: Request) => boolean;
              • Determines if the given request is a static asset request. Useful when deciding which unhandled requests to ignore. Despite being ignored, you can still intercept and mock static assets by creating request handlers for them.

                Example 1

                import { isCommonAssetRequest } from 'msw'

                await worker.start({ onUnhandledRequest(request, print) { if (!isCommonAssetRequest(request)) { print.warning() } } })

              function matchRequestUrl

              matchRequestUrl: (url: URL, path: Path, baseUrl?: string) => Match;
              • Returns the result of matching given request URL against a mask.

              function passthrough

              passthrough: () => HttpResponse<any>;
              • Performs the intercepted request as-is.

                This stops request handler lookup so no other handlers can affect this request past this point. Unlike bypass(), this will not trigger an additional request.

                Example 1

                http.get('/resource', () => { return passthrough() })

                See Also

              Classes

              class GraphQLHandler

              class GraphQLHandler extends RequestHandler<
              GraphQLHandlerInfo,
              GraphQLRequestParsedResult,
              GraphQLResolverExtras<any>
              > {}

                constructor

                constructor(
                operationType: any,
                operationName: any,
                endpoint: Path,
                resolver: ResponseResolver<GraphQLResolverExtras<any>, any, any>,
                options?: RequestHandlerOptions
                );

                  property parsedRequestCache

                  static parsedRequestCache: WeakMap<
                  Request,
                  ParsedGraphQLQuery & { query: string; variables?: GraphQLVariables }
                  >;

                    method extendResolverArgs

                    protected extendResolverArgs: (args: {
                    request: Request;
                    parsedResult: GraphQLRequestParsedResult;
                    }) => {
                    query: string;
                    operationName: string;
                    variables: GraphQLVariables;
                    cookies: Record<string, string>;
                    };

                      method log

                      log: (args: {
                      request: Request;
                      response: Response;
                      parsedResult: GraphQLRequestParsedResult;
                      }) => Promise<void>;

                        method parse

                        parse: (args: { request: Request }) => Promise<GraphQLRequestParsedResult>;

                          method parseGraphQLRequestOrGetFromCache

                          parseGraphQLRequestOrGetFromCache: (
                          request: Request
                          ) => Promise<ParsedGraphQLRequest<GraphQLVariables>>;
                          • Parses the request body, once per request, cached across all GraphQL handlers. This is done to avoid multiple parsing of the request body, which each requires a clone of the request.

                          method predicate

                          predicate: (args: {
                          request: Request;
                          parsedResult: GraphQLRequestParsedResult;
                          }) => boolean;

                            class HttpHandler

                            class HttpHandler extends RequestHandler<
                            HttpHandlerInfo,
                            HttpRequestParsedResult,
                            HttpRequestResolverExtras<any>
                            > {}
                            • Request handler for HTTP requests. Provides request matching based on method and URL.

                            constructor

                            constructor(
                            method: HttpHandlerMethod,
                            path: Path,
                            resolver: ResponseResolver<HttpRequestResolverExtras<any>, any, any>,
                            options?: RequestHandlerOptions
                            );

                              method extendResolverArgs

                              protected extendResolverArgs: (args: {
                              request: Request;
                              parsedResult: HttpRequestParsedResult;
                              }) => { params: PathParams<string>; cookies: Record<string, string> };

                                method log

                                log: (args: { request: Request; response: Response }) => Promise<void>;

                                  method parse

                                  parse: (args: {
                                  request: Request;
                                  resolutionContext?: ResponseResolutionContext;
                                  }) => Promise<{ match: Match; cookies: Record<string, string> }>;

                                    method predicate

                                    predicate: (args: {
                                    request: Request;
                                    parsedResult: HttpRequestParsedResult;
                                    }) => boolean;

                                      class HttpResponse

                                      class HttpResponse<BodyType extends DefaultBodyType> extends FetchResponse {}
                                      • A drop-in replacement for the standard Response class to allow additional features, like mocking the response Set-Cookie header.

                                        Example 1

                                        new HttpResponse('Hello world', { status: 201 }) HttpResponse.json({ name: 'John' }) HttpResponse.formData(form)

                                        See Also

                                      constructor

                                      constructor(body?: DefaultBodyType, init?: HttpResponseInit);

                                        property [bodyType]

                                        readonly [bodyType]: DefaultBodyType;

                                          method arrayBuffer

                                          static arrayBuffer: (
                                          body?: ArrayBuffer | SharedArrayBuffer,
                                          init?: HttpResponseInit
                                          ) => HttpResponse<ArrayBuffer | SharedArrayBuffer>;
                                          • Create a Response with an ArrayBuffer body.

                                            Example 1

                                            const buffer = new ArrayBuffer(3) const view = new Uint8Array(buffer) view.set([1, 2, 3])

                                            HttpResponse.arrayBuffer(buffer)

                                          method error

                                          static error: () => HttpResponse<any>;

                                            method formData

                                            static formData: (
                                            body?: FormData,
                                            init?: HttpResponseInit
                                            ) => HttpResponse<FormData>;
                                            • Create a Response with a FormData body.

                                              Example 1

                                              const data = new FormData() data.set('name', 'Alice')

                                              HttpResponse.formData(data)

                                            method html

                                            static html: <BodyType extends string>(
                                            body?: BodyType | null,
                                            init?: HttpResponseInit
                                            ) => HttpResponse<BodyType>;
                                            • Create a Response with a Content-Type: "text/html" body.

                                              Example 1

                                              HttpResponse.html(<p class="author">Jane Doe</p>) HttpResponse.html(<main id="abc-123">Main text</main>, { status: 201 })

                                            method json

                                            static json: <BodyType extends JsonBodyType>(
                                            body?: NoInfer<BodyType> | null | undefined,
                                            init?: HttpResponseInit
                                            ) => HttpResponse<BodyType>;
                                            • Create a Response with a Content-Type: "application/json" body.

                                              Example 1

                                              HttpResponse.json({ firstName: 'John' }) HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })

                                            method text

                                            static text: <BodyType extends string>(
                                            body?: NoInfer<BodyType> | null,
                                            init?: HttpResponseInit
                                            ) => HttpResponse<BodyType>;
                                            • Create a Response with a Content-Type: "text/plain" body.

                                              Example 1

                                              HttpResponse.text('hello world') HttpResponse.text('Error', { status: 500 })

                                            method xml

                                            static xml: <BodyType extends string>(
                                            body?: BodyType | null,
                                            init?: HttpResponseInit
                                            ) => HttpResponse<BodyType>;
                                            • Create a Response with a Content-Type: "application/xml" body.

                                              Example 1

                                              HttpResponse.xml(<user name="John" />) HttpResponse.xml(<article id="abc-123" />, { status: 201 })

                                            class RequestHandler

                                            abstract class RequestHandler<
                                            HandlerInfo extends RequestHandlerDefaultInfo = RequestHandlerDefaultInfo,
                                            ParsedResult extends Record<string, any> | undefined = any,
                                            ResolverExtras extends Record<string, unknown> = any,
                                            HandlerOptions extends RequestHandlerOptions = RequestHandlerOptions
                                            > {}

                                              constructor

                                              constructor(args: RequestHandlerArgs<HandlerInfo, HandlerOptions>);

                                                property cache

                                                static cache: WeakMap<
                                                StrictRequest<DefaultBodyType>,
                                                StrictRequest<DefaultBodyType>
                                                >;

                                                  property info

                                                  info: RequestHandlerDefaultInfo & RequestHandlerInternalInfo;

                                                    property isUsed

                                                    isUsed: boolean;
                                                    • Indicates whether this request handler has been used (its resolver has successfully executed).

                                                    property resolver

                                                    protected resolver: ResponseResolver<ResolverExtras, any, any>;

                                                      method extendResolverArgs

                                                      protected extendResolverArgs: (_args: {
                                                      request: Request;
                                                      parsedResult: ParsedResult;
                                                      }) => ResolverExtras;

                                                        method log

                                                        abstract log: (args: {
                                                        request: Request;
                                                        response: Response;
                                                        parsedResult: ParsedResult;
                                                        }) => void;
                                                        • Print out the successfully handled request.

                                                        method parse

                                                        parse: (_args: {
                                                        request: Request;
                                                        resolutionContext?: ResponseResolutionContext;
                                                        }) => Promise<ParsedResult>;
                                                        • Parse the intercepted request to extract additional information from it. Parsed result is then exposed to other methods of this request handler.

                                                        method predicate

                                                        abstract predicate: (args: {
                                                        request: Request;
                                                        parsedResult: ParsedResult;
                                                        resolutionContext?: ResponseResolutionContext;
                                                        }) => boolean;
                                                        • Determine if the intercepted request should be mocked.

                                                        method run

                                                        run: (args: {
                                                        request: StrictRequest<any>;
                                                        requestId: string;
                                                        resolutionContext?: ResponseResolutionContext;
                                                        }) => Promise<RequestHandlerExecutionResult<ParsedResult> | null>;
                                                        • Execute this request handler and produce a mocked response using the given resolver function.

                                                        method test

                                                        test: (args: {
                                                        request: Request;
                                                        resolutionContext?: ResponseResolutionContext;
                                                        }) => Promise<boolean>;
                                                        • Test if this handler matches the given request.

                                                          This method is not used internally but is exposed as a convenience method for consumers writing custom handlers.

                                                        class SetupApi

                                                        abstract class SetupApi<EventsMap extends EventMap> extends Disposable {}
                                                        • Generic class for the mock API setup.

                                                        constructor

                                                        constructor(
                                                        ...initialHandlers: (
                                                        | RequestHandler<
                                                        RequestHandlerDefaultInfo,
                                                        any,
                                                        any,
                                                        RequestHandlerOptions
                                                        >
                                                        | WebSocketHandler
                                                        )[]
                                                        );

                                                          property emitter

                                                          protected readonly emitter: Emitter<EventsMap>;

                                                            property events

                                                            readonly events: LifeCycleEventEmitter<EventsMap>;

                                                              property handlersController

                                                              protected handlersController: HandlersController;

                                                                property publicEmitter

                                                                protected readonly publicEmitter: Emitter<EventsMap>;

                                                                  method listHandlers

                                                                  listHandlers: () => ReadonlyArray<RequestHandler | WebSocketHandler>;

                                                                    method resetHandlers

                                                                    resetHandlers: (
                                                                    ...nextHandlers: Array<RequestHandler | WebSocketHandler>
                                                                    ) => void;

                                                                      method restoreHandlers

                                                                      restoreHandlers: () => void;

                                                                        method use

                                                                        use: (...runtimeHandlers: Array<RequestHandler | WebSocketHandler>) => void;

                                                                          class WebSocketHandler

                                                                          class WebSocketHandler {}

                                                                            constructor

                                                                            constructor(url: Path);

                                                                              property [kEmitter]

                                                                              protected [kEmitter]: Emitter<WebSocketHandlerEventMap>;

                                                                                property callFrame

                                                                                callFrame?: string;

                                                                                  property id

                                                                                  id: string;

                                                                                    method connect

                                                                                    protected connect: (connection: WebSocketHandlerConnection) => boolean;

                                                                                      method parse

                                                                                      parse: (args: { url: URL }) => WebSocketHandlerParsedResult;

                                                                                        method predicate

                                                                                        predicate: (args: {
                                                                                        url: URL;
                                                                                        parsedResult: WebSocketHandlerParsedResult;
                                                                                        }) => boolean;

                                                                                          method run

                                                                                          run: (
                                                                                          connection: Omit<WebSocketHandlerConnection, 'params'>
                                                                                          ) => Promise<boolean>;

                                                                                            Interfaces

                                                                                            interface GraphQLJsonRequestBody

                                                                                            interface GraphQLJsonRequestBody<Variables extends GraphQLVariables> {}

                                                                                              property query

                                                                                              query: string;

                                                                                                property variables

                                                                                                variables?: Variables;

                                                                                                  interface HandleRequestOptions

                                                                                                  interface HandleRequestOptions {}

                                                                                                    property resolutionContext

                                                                                                    resolutionContext?: {
                                                                                                    /**
                                                                                                    * A base url to use when resolving relative urls.
                                                                                                    * @note This is primarily used by the `@mswjs/http-middleware`
                                                                                                    * to resolve relative urls in the context of the running server
                                                                                                    */
                                                                                                    baseUrl?: string;
                                                                                                    };
                                                                                                    • resolutionContext is not part of the general public api but is exposed to aid in creating extensions like @mswjs/http-middleware.

                                                                                                    method onMockedResponse

                                                                                                    onMockedResponse: (
                                                                                                    response: Response,
                                                                                                    handler: RequiredDeep<HandlersExecutionResult>
                                                                                                    ) => void;
                                                                                                    • Invoked when the mocked response is ready to be sent.

                                                                                                    method onPassthroughResponse

                                                                                                    onPassthroughResponse: (request: Request) => void;
                                                                                                    • Invoked whenever a request is performed as-is.

                                                                                                    interface HttpResponseInit

                                                                                                    interface HttpResponseInit extends ResponseInit {}

                                                                                                      property type

                                                                                                      type?: ResponseType;

                                                                                                        interface Match

                                                                                                        interface Match {}

                                                                                                          property matches

                                                                                                          matches: boolean;

                                                                                                            property params

                                                                                                            params?: PathParams;

                                                                                                              interface RequestHandlerOptions

                                                                                                              interface RequestHandlerOptions {}

                                                                                                                property once

                                                                                                                once?: boolean;

                                                                                                                  interface SharedOptions

                                                                                                                  interface SharedOptions {}

                                                                                                                    property onUnhandledRequest

                                                                                                                    onUnhandledRequest?: UnhandledRequestStrategy;
                                                                                                                    • Specifies how to react to a request that has no corresponding request handler. Warns on unhandled requests by default.

                                                                                                                      Example 1

                                                                                                                      worker.start({ onUnhandledRequest: 'bypass' })

                                                                                                                      Example 2

                                                                                                                      worker.start({ onUnhandledRequest: 'warn' })

                                                                                                                      Example 3

                                                                                                                      server.listen({ onUnhandledRequest: 'error' })

                                                                                                                    interface StrictRequest

                                                                                                                    interface StrictRequest<BodyType extends JsonBodyType> extends Request {}

                                                                                                                      method json

                                                                                                                      json: () => Promise<BodyType>;

                                                                                                                        interface WebSocketHandlerConnection

                                                                                                                        interface WebSocketHandlerConnection {}

                                                                                                                          property client

                                                                                                                          client: WebSocketClientConnectionProtocol;

                                                                                                                            property info

                                                                                                                            info: WebSocketConnectionData['info'];

                                                                                                                              property params

                                                                                                                              params: PathParams;

                                                                                                                                property server

                                                                                                                                server: WebSocketServerConnectionProtocol;

                                                                                                                                  Enums

                                                                                                                                  enum HttpMethods

                                                                                                                                  enum HttpMethods {
                                                                                                                                  HEAD = 'HEAD',
                                                                                                                                  GET = 'GET',
                                                                                                                                  POST = 'POST',
                                                                                                                                  PUT = 'PUT',
                                                                                                                                  PATCH = 'PATCH',
                                                                                                                                  OPTIONS = 'OPTIONS',
                                                                                                                                  DELETE = 'DELETE',
                                                                                                                                  }

                                                                                                                                    member DELETE

                                                                                                                                    DELETE = 'DELETE'

                                                                                                                                      member GET

                                                                                                                                      GET = 'GET'

                                                                                                                                        member HEAD

                                                                                                                                        HEAD = 'HEAD'

                                                                                                                                          member OPTIONS

                                                                                                                                          OPTIONS = 'OPTIONS'

                                                                                                                                            member PATCH

                                                                                                                                            PATCH = 'PATCH'

                                                                                                                                              member POST

                                                                                                                                              POST = 'POST'

                                                                                                                                                member PUT

                                                                                                                                                PUT = 'PUT'

                                                                                                                                                  Type Aliases

                                                                                                                                                  type AsyncResponseResolverReturnType

                                                                                                                                                  type AsyncResponseResolverReturnType<ResponseBodyType extends DefaultBodyType> =
                                                                                                                                                  MaybePromise<
                                                                                                                                                  | ResponseResolverReturnType<ResponseBodyType>
                                                                                                                                                  | Iterable<
                                                                                                                                                  MaybeAsyncResponseResolverReturnType<ResponseBodyType>,
                                                                                                                                                  MaybeAsyncResponseResolverReturnType<ResponseBodyType>,
                                                                                                                                                  MaybeAsyncResponseResolverReturnType<ResponseBodyType>
                                                                                                                                                  >
                                                                                                                                                  | AsyncIterable<
                                                                                                                                                  MaybeAsyncResponseResolverReturnType<ResponseBodyType>,
                                                                                                                                                  MaybeAsyncResponseResolverReturnType<ResponseBodyType>,
                                                                                                                                                  MaybeAsyncResponseResolverReturnType<ResponseBodyType>
                                                                                                                                                  >
                                                                                                                                                  >;

                                                                                                                                                    type DefaultBodyType

                                                                                                                                                    type DefaultBodyType =
                                                                                                                                                    | Record<string, any>
                                                                                                                                                    | DefaultRequestMultipartBody
                                                                                                                                                    | string
                                                                                                                                                    | number
                                                                                                                                                    | boolean
                                                                                                                                                    | null
                                                                                                                                                    | undefined;

                                                                                                                                                      type DefaultRequestMultipartBody

                                                                                                                                                      type DefaultRequestMultipartBody = Record<
                                                                                                                                                      string,
                                                                                                                                                      string | File | Array<string | File>
                                                                                                                                                      >;

                                                                                                                                                        type DefaultUnsafeFetchResponse

                                                                                                                                                        type DefaultUnsafeFetchResponse = Response & {
                                                                                                                                                        [bodyType]?: never;
                                                                                                                                                        };

                                                                                                                                                          type DelayMode

                                                                                                                                                          type DelayMode = 'real' | 'infinite';

                                                                                                                                                            type GraphQLQuery

                                                                                                                                                            type GraphQLQuery = Record<string, any> | null;

                                                                                                                                                              type GraphQLRequestBody

                                                                                                                                                              type GraphQLRequestBody<VariablesType extends GraphQLVariables> =
                                                                                                                                                              | GraphQLJsonRequestBody<VariablesType>
                                                                                                                                                              | GraphQLMultipartRequestBody
                                                                                                                                                              | Record<string, any>
                                                                                                                                                              | undefined;

                                                                                                                                                                type GraphQLRequestHandler

                                                                                                                                                                type GraphQLRequestHandler = <
                                                                                                                                                                Query extends GraphQLQuery = GraphQLQuery,
                                                                                                                                                                Variables extends GraphQLVariables = GraphQLVariables
                                                                                                                                                                >(
                                                                                                                                                                operationName:
                                                                                                                                                                | GraphQLHandlerNameSelector
                                                                                                                                                                | DocumentNode
                                                                                                                                                                | TypedDocumentNode<Query, Variables>,
                                                                                                                                                                resolver: GraphQLResponseResolver<
                                                                                                                                                                [Query] extends [never] ? GraphQLQuery : Query,
                                                                                                                                                                Variables
                                                                                                                                                                >,
                                                                                                                                                                options?: RequestHandlerOptions
                                                                                                                                                                ) => GraphQLHandler;

                                                                                                                                                                  type GraphQLResponseResolver

                                                                                                                                                                  type GraphQLResponseResolver<
                                                                                                                                                                  Query extends GraphQLQuery = GraphQLQuery,
                                                                                                                                                                  Variables extends GraphQLVariables = GraphQLVariables
                                                                                                                                                                  > = ResponseResolver<
                                                                                                                                                                  GraphQLResolverExtras<Variables>,
                                                                                                                                                                  null,
                                                                                                                                                                  GraphQLResponseBody<[Query] extends [never] ? GraphQLQuery : Query>
                                                                                                                                                                  >;

                                                                                                                                                                    type GraphQLVariables

                                                                                                                                                                    type GraphQLVariables = Record<string, any>;

                                                                                                                                                                      type HttpRequestHandler

                                                                                                                                                                      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
                                                                                                                                                                      ) => HttpHandler;

                                                                                                                                                                        type HttpRequestParsedResult

                                                                                                                                                                        type HttpRequestParsedResult = {
                                                                                                                                                                        match: Match;
                                                                                                                                                                        cookies: Record<string, string>;
                                                                                                                                                                        };

                                                                                                                                                                          type HttpResponseResolver

                                                                                                                                                                          type HttpResponseResolver<
                                                                                                                                                                          Params extends PathParams<keyof Params> = PathParams,
                                                                                                                                                                          RequestBodyType extends DefaultBodyType = DefaultBodyType,
                                                                                                                                                                          ResponseBodyType extends DefaultBodyType = DefaultBodyType
                                                                                                                                                                          > = ResponseResolver<
                                                                                                                                                                          HttpRequestResolverExtras<Params>,
                                                                                                                                                                          RequestBodyType,
                                                                                                                                                                          ResponseBodyType
                                                                                                                                                                          >;

                                                                                                                                                                            type JsonBodyType

                                                                                                                                                                            type JsonBodyType =
                                                                                                                                                                            | Record<string, any>
                                                                                                                                                                            | string
                                                                                                                                                                            | number
                                                                                                                                                                            | boolean
                                                                                                                                                                            | null
                                                                                                                                                                            | undefined;

                                                                                                                                                                              type LifeCycleEventsMap

                                                                                                                                                                              type LifeCycleEventsMap = {
                                                                                                                                                                              'request:start': [
                                                                                                                                                                              args: {
                                                                                                                                                                              request: Request;
                                                                                                                                                                              requestId: string;
                                                                                                                                                                              }
                                                                                                                                                                              ];
                                                                                                                                                                              'request:match': [
                                                                                                                                                                              args: {
                                                                                                                                                                              request: Request;
                                                                                                                                                                              requestId: string;
                                                                                                                                                                              }
                                                                                                                                                                              ];
                                                                                                                                                                              'request:unhandled': [
                                                                                                                                                                              args: {
                                                                                                                                                                              request: Request;
                                                                                                                                                                              requestId: string;
                                                                                                                                                                              }
                                                                                                                                                                              ];
                                                                                                                                                                              'request:end': [
                                                                                                                                                                              args: {
                                                                                                                                                                              request: Request;
                                                                                                                                                                              requestId: string;
                                                                                                                                                                              }
                                                                                                                                                                              ];
                                                                                                                                                                              'response:mocked': [
                                                                                                                                                                              args: {
                                                                                                                                                                              response: Response;
                                                                                                                                                                              request: Request;
                                                                                                                                                                              requestId: string;
                                                                                                                                                                              }
                                                                                                                                                                              ];
                                                                                                                                                                              'response:bypass': [
                                                                                                                                                                              args: {
                                                                                                                                                                              response: Response;
                                                                                                                                                                              request: Request;
                                                                                                                                                                              requestId: string;
                                                                                                                                                                              }
                                                                                                                                                                              ];
                                                                                                                                                                              unhandledException: [
                                                                                                                                                                              args: {
                                                                                                                                                                              error: Error;
                                                                                                                                                                              request: Request;
                                                                                                                                                                              requestId: string;
                                                                                                                                                                              }
                                                                                                                                                                              ];
                                                                                                                                                                              };

                                                                                                                                                                                type ParsedGraphQLRequest

                                                                                                                                                                                type ParsedGraphQLRequest<
                                                                                                                                                                                VariablesType extends GraphQLVariables = GraphQLVariables
                                                                                                                                                                                > =
                                                                                                                                                                                | (ParsedGraphQLQuery & {
                                                                                                                                                                                query: string;
                                                                                                                                                                                variables?: VariablesType;
                                                                                                                                                                                })
                                                                                                                                                                                | undefined;

                                                                                                                                                                                  type Path

                                                                                                                                                                                  type Path = string | RegExp;

                                                                                                                                                                                    type PathParams

                                                                                                                                                                                    type PathParams<KeyType extends keyof any = string> = {
                                                                                                                                                                                    [ParamName in KeyType]?: string | ReadonlyArray<string>;
                                                                                                                                                                                    };

                                                                                                                                                                                      type RequestQuery

                                                                                                                                                                                      type RequestQuery = {
                                                                                                                                                                                      [queryName: string]: string;
                                                                                                                                                                                      };

                                                                                                                                                                                        type ResponseResolver

                                                                                                                                                                                        type ResponseResolver<
                                                                                                                                                                                        ResolverExtraInfo extends Record<string, unknown> = Record<string, unknown>,
                                                                                                                                                                                        RequestBodyType extends DefaultBodyType = DefaultBodyType,
                                                                                                                                                                                        ResponseBodyType extends DefaultBodyType = undefined
                                                                                                                                                                                        > = (
                                                                                                                                                                                        info: ResponseResolverInfo<ResolverExtraInfo, RequestBodyType>
                                                                                                                                                                                        ) => AsyncResponseResolverReturnType<ResponseBodyType>;

                                                                                                                                                                                          type ResponseResolverReturnType

                                                                                                                                                                                          type ResponseResolverReturnType<
                                                                                                                                                                                          ResponseBodyType extends DefaultBodyType = undefined
                                                                                                                                                                                          > =
                                                                                                                                                                                          | ([ResponseBodyType] extends [undefined]
                                                                                                                                                                                          ? Response
                                                                                                                                                                                          : ResponseBodyType extends GraphQLRequestBody<any>
                                                                                                                                                                                          ? HttpResponse<ResponseBodyType> | DefaultUnsafeFetchResponse
                                                                                                                                                                                          : HttpResponse<ResponseBodyType>)
                                                                                                                                                                                          | undefined
                                                                                                                                                                                          | void;

                                                                                                                                                                                            type StrictResponse

                                                                                                                                                                                            type StrictResponse<BodyType extends DefaultBodyType> = HttpResponse<BodyType>;
                                                                                                                                                                                            • Opaque Response type that supports strict body type.

                                                                                                                                                                                              Deprecated

                                                                                                                                                                                              Please use HttpResponse instead.

                                                                                                                                                                                            type WebSocketEventListener

                                                                                                                                                                                            type WebSocketEventListener<EventType extends keyof WebSocketHandlerEventMap> = (
                                                                                                                                                                                            ...args: WebSocketHandlerEventMap[EventType]
                                                                                                                                                                                            ) => void;

                                                                                                                                                                                              type WebSocketHandlerEventMap

                                                                                                                                                                                              type WebSocketHandlerEventMap = {
                                                                                                                                                                                              connection: [args: WebSocketHandlerConnection];
                                                                                                                                                                                              };
                                                                                                                                                                                                type WebSocketLink = {
                                                                                                                                                                                                /**
                                                                                                                                                                                                * A set of all WebSocket clients connected
                                                                                                                                                                                                * to this link.
                                                                                                                                                                                                *
                                                                                                                                                                                                * @see {@link https://mswjs.io/docs/api/ws#clients `clients` API reference}
                                                                                                                                                                                                */
                                                                                                                                                                                                clients: Set<WebSocketClientConnectionProtocol>;
                                                                                                                                                                                                /**
                                                                                                                                                                                                * Adds an event listener to this WebSocket link.
                                                                                                                                                                                                *
                                                                                                                                                                                                * @example
                                                                                                                                                                                                * const chat = ws.link('wss://chat.example.com')
                                                                                                                                                                                                * chat.addEventListener('connection', listener)
                                                                                                                                                                                                *
                                                                                                                                                                                                * @see {@link https://mswjs.io/docs/api/ws#onevent-listener `on()` API reference}
                                                                                                                                                                                                */
                                                                                                                                                                                                addEventListener<EventType extends keyof WebSocketHandlerEventMap>(
                                                                                                                                                                                                event: EventType,
                                                                                                                                                                                                listener: WebSocketEventListener<EventType>
                                                                                                                                                                                                ): WebSocketHandler;
                                                                                                                                                                                                /**
                                                                                                                                                                                                * Broadcasts the given data to all WebSocket clients.
                                                                                                                                                                                                *
                                                                                                                                                                                                * @example
                                                                                                                                                                                                * const service = ws.link('wss://example.com')
                                                                                                                                                                                                * service.addEventListener('connection', () => {
                                                                                                                                                                                                * service.broadcast('hello, everyone!')
                                                                                                                                                                                                * })
                                                                                                                                                                                                *
                                                                                                                                                                                                * @see {@link https://mswjs.io/docs/api/ws#broadcastdata `broadcast()` API reference}
                                                                                                                                                                                                */
                                                                                                                                                                                                broadcast(data: WebSocketData): void;
                                                                                                                                                                                                /**
                                                                                                                                                                                                * Broadcasts the given data to all WebSocket clients
                                                                                                                                                                                                * except the ones provided in the `clients` argument.
                                                                                                                                                                                                *
                                                                                                                                                                                                * @example
                                                                                                                                                                                                * const service = ws.link('wss://example.com')
                                                                                                                                                                                                * service.addEventListener('connection', ({ client }) => {
                                                                                                                                                                                                * service.broadcastExcept(client, 'hi, the rest of you!')
                                                                                                                                                                                                * })
                                                                                                                                                                                                *
                                                                                                                                                                                                * @see {@link https://mswjs.io/docs/api/ws#broadcastexceptclients-data `broadcast()` API reference}
                                                                                                                                                                                                */
                                                                                                                                                                                                broadcastExcept(
                                                                                                                                                                                                clients:
                                                                                                                                                                                                | WebSocketClientConnectionProtocol
                                                                                                                                                                                                | Array<WebSocketClientConnectionProtocol>,
                                                                                                                                                                                                data: WebSocketData
                                                                                                                                                                                                ): void;
                                                                                                                                                                                                };

                                                                                                                                                                                                  Package Files (17)

                                                                                                                                                                                                  Dependencies (18)

                                                                                                                                                                                                  Dev Dependencies (47)

                                                                                                                                                                                                  Peer Dependencies (1)

                                                                                                                                                                                                  Badge

                                                                                                                                                                                                  To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                                                                                                                                                                                  You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/msw.

                                                                                                                                                                                                  • Markdown
                                                                                                                                                                                                    [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/msw)
                                                                                                                                                                                                  • HTML
                                                                                                                                                                                                    <a href="https://www.jsdocs.io/package/msw"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>