msw 0.24.0 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,14 @@
1
1
  import { RequestHandler, ResponseResolver, MockedRequest, DefaultRequestBodyType, RequestParams } from './utils/handlers/requestHandler';
2
2
  import { Mask } from './setupWorker/glossary';
3
3
  import { set } from './context/set';
4
+ import { status } from './context/status';
5
+ import { cookie } from './context/cookie';
6
+ import { body } from './context/body';
7
+ import { text } from './context/text';
8
+ import { json } from './context/json';
9
+ import { xml } from './context/xml';
10
+ import { delay } from './context/delay';
11
+ import { fetch } from './context/fetch';
4
12
  import { matchRequestUrl } from './utils/matching/matchRequestUrl';
5
13
  export declare enum RESTMethods {
6
14
  HEAD = "HEAD",
@@ -11,166 +19,88 @@ export declare enum RESTMethods {
11
19
  OPTIONS = "OPTIONS",
12
20
  DELETE = "DELETE"
13
21
  }
14
- export declare const restContext: {
22
+ export interface RestContext {
15
23
  set: typeof set;
16
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
17
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
18
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
19
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
20
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
21
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
22
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
23
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
24
- };
24
+ status: typeof status;
25
+ cookie: typeof cookie;
26
+ text: typeof text;
27
+ body: typeof body;
28
+ json: typeof json;
29
+ xml: typeof xml;
30
+ delay: typeof delay;
31
+ fetch: typeof fetch;
32
+ }
33
+ export declare const restContext: RestContext;
25
34
  export interface ParsedRestRequest {
26
35
  match: ReturnType<typeof matchRequestUrl>;
27
36
  }
28
37
  export declare const rest: {
29
- head: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, {
30
- set: typeof set;
31
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
32
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
33
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
34
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
35
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
36
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
37
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
38
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
39
- }, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, {
40
- set: typeof set;
41
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
42
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
43
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
44
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
45
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
46
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
47
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
48
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
49
- }, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
50
- get: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, {
51
- set: typeof set;
52
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
53
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
54
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
55
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
56
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
57
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
58
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
59
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
60
- }, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, {
61
- set: typeof set;
62
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
63
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
64
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
65
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
66
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
67
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
68
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
69
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
70
- }, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
71
- post: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, {
72
- set: typeof set;
73
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
74
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
75
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
76
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
77
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
78
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
79
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
80
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
81
- }, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, {
82
- set: typeof set;
83
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
84
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
85
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
86
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
87
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
88
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
89
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
90
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
91
- }, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
92
- put: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, {
93
- set: typeof set;
94
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
95
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
96
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
97
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
98
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
99
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
100
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
101
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
102
- }, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, {
103
- set: typeof set;
104
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
105
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
106
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
107
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
108
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
109
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
110
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
111
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
112
- }, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
113
- delete: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, {
114
- set: typeof set;
115
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
116
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
117
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
118
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
119
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
120
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
121
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
122
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
123
- }, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, {
124
- set: typeof set;
125
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
126
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
127
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
128
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
129
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
130
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
131
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
132
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
133
- }, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
134
- patch: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, {
135
- set: typeof set;
136
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
137
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
138
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
139
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
140
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
141
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
142
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
143
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
144
- }, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, {
145
- set: typeof set;
146
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
147
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
148
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
149
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
150
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
151
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
152
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
153
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
154
- }, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
155
- options: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, {
156
- set: typeof set;
157
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
158
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
159
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
160
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
161
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
162
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
163
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
164
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
165
- }, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, {
166
- set: typeof set;
167
- status: (statusCode: number, statusText?: string | undefined) => import("./response").ResponseTransformer<any>;
168
- cookie: (name: string, value: string, options?: import("cookie").CookieSerializeOptions | undefined) => import("./response").ResponseTransformer<any>;
169
- body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => import("./response").ResponseTransformer<BodyType>;
170
- text: <BodyType_1 extends string>(body: BodyType_1) => import("./response").ResponseTransformer<BodyType_1>;
171
- json: <BodyTypeJSON>(body: BodyTypeJSON) => import("./response").ResponseTransformer<string>;
172
- xml: <BodyType_2 extends string>(body: BodyType_2) => import("./response").ResponseTransformer<BodyType_2>;
173
- delay: (durationMs?: number | undefined) => import("./response").ResponseTransformer<any>;
174
- fetch: (input: string | MockedRequest<DefaultRequestBodyType, RequestParams>, requestInit?: RequestInit) => any;
175
- }, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
38
+ /**
39
+ * Captures a HEAD request by a given path.
40
+ * @example
41
+ * rest.head('/numbers', (req, res, ctx) => {
42
+ * return res(ctx.status(302))
43
+ * })
44
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
45
+ */
46
+ head: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
47
+ /**
48
+ * Captures a GET request by a given path.
49
+ * @example
50
+ * rest.get('/numbers', (req, res, ctx) => {
51
+ * return res(ctx.json([1, 2, 3]))
52
+ * })
53
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
54
+ */
55
+ get: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
56
+ /**
57
+ * Captures a POST request by a given path.
58
+ * @example
59
+ * rest.post('/numbers', (req, res, ctx) => {
60
+ * return res(ctx.text('success'))
61
+ * })
62
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
63
+ */
64
+ post: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
65
+ /**
66
+ * Captures a PUT request by a given path.
67
+ * @example
68
+ * rest.put('/numbers', (req, res, ctx) => {
69
+ * const { numbers } = req.body
70
+ * return res(ctx.json(numbers))
71
+ * })
72
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
73
+ */
74
+ put: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
75
+ /**
76
+ * Captures a DELETE request by a given path.
77
+ * @example
78
+ * rest.delete('/numbers', (req, res, ctx) => {
79
+ * const index = req.url.searchParams.get('index')
80
+ * prevNumbers.splice(index, 1)
81
+ * return res(ctx.json(nextNumbers))
82
+ * })
83
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
84
+ */
85
+ delete: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
86
+ /**
87
+ * Captures a PATCH request by a given path.
88
+ * @example
89
+ * rest.patch('/numbers', (req, res, ctx) => {
90
+ * const { numbers } = req.body
91
+ * const nextNumbers = prevNumbers.concat(number)
92
+ * return res(ctx.json(nextNumbers))
93
+ * })
94
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
95
+ */
96
+ patch: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
97
+ /**
98
+ * Captures an OPTIONS request by a given path.
99
+ * @example
100
+ * rest.options('/numbers', (req, res, ctx) => {
101
+ * return res(ctx.set('Allow', 'GET,HEAD,POST'))
102
+ * })
103
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
104
+ */
105
+ options: <RequestBodyType = DefaultRequestBodyType, ResponseBodyType = any, RequestParamsType extends RequestParams = RequestParams>(mask: Mask, resolver: ResponseResolver<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ResponseBodyType>) => RequestHandler<MockedRequest<RequestBodyType, RequestParamsType>, RestContext, ParsedRestRequest, MockedRequest<RequestBodyType, RequestParams>, ResponseBodyType>;
176
106
  };
@@ -34,17 +34,20 @@ export declare type ServiceWorkerInstanceTuple = [
34
34
  ];
35
35
  export declare type FindWorker = (scriptUrl: string, mockServiceWorkerUrl: string) => boolean;
36
36
  export declare type StartOptions = SharedOptions & {
37
+ /**
38
+ * Service Worker instance options.
39
+ */
37
40
  serviceWorker?: {
38
41
  url?: string;
39
42
  options?: RegistrationOptions;
40
43
  };
41
44
  /**
42
- * Disable the logging of captured requests
45
+ * Disables the logging of captured requests
43
46
  * into browser's console.
44
47
  */
45
48
  quiet?: boolean;
46
49
  /**
47
- * Defer any network requests until the Service Worker
50
+ * Defers any network requests until the Service Worker
48
51
  * instance is ready. Defaults to `true`.
49
52
  */
50
53
  waitUntilReady?: boolean;
@@ -59,22 +62,36 @@ export declare type ResponseWithSerializedHeaders<BodyType = any> = Omit<MockedR
59
62
  headers: HeadersList;
60
63
  };
61
64
  export interface SetupWorkerApi {
65
+ /**
66
+ * Registers and activates the mock Service Worker.
67
+ * @see {@link https://mswjs.io/docs/api/setup-worker/start `worker.start()`}
68
+ */
62
69
  start: ReturnType<typeof createStart>;
70
+ /**
71
+ * Stops requests interception for the current client.
72
+ * @see {@link https://mswjs.io/docs/api/setup-worker/stop `worker.stop()`}
73
+ */
63
74
  stop: ReturnType<typeof createStop>;
64
75
  /**
65
76
  * Prepends given request handlers to the list of existing handlers.
77
+ * @param {RequestHandler[]} handlers List of runtime request handlers.
78
+ * @see {@link https://mswjs.io/docs/api/setup-worker/use `worker.use()`}
66
79
  */
67
80
  use: (...handlers: RequestHandlersList) => void;
68
81
  /**
69
82
  * Marks all request handlers that respond using `res.once()` as unused.
83
+ * @see {@link https://mswjs.io/docs/api/setup-worker/restore-handlers `worker.restoreHandlers()`}
70
84
  */
71
85
  restoreHandlers: () => void;
72
86
  /**
73
87
  * Resets request handlers to the initial list given to the `setupWorker` call, or to the explicit next request handlers list, if given.
88
+ * @param {RequestHandler[]} nextHandlers List of the new initial request handlers.
89
+ * @see {@link https://mswjs.io/docs/api/setup-worker/reset-handlers `worker.resetHandlers()`}
74
90
  */
75
91
  resetHandlers: (...nextHandlers: RequestHandlersList) => void;
76
92
  /**
77
93
  * Lists all active request handlers.
94
+ * @see {@link https://mswjs.io/docs/api/setup-worker/print-handlers `worker.printHandlers()`}
78
95
  */
79
96
  printHandlers: () => void;
80
97
  }
@@ -1,2 +1,8 @@
1
1
  import { RequestHandlersList, SetupWorkerApi } from './glossary';
2
+ /**
3
+ * Creates a new mock Service Worker registration
4
+ * with the given request handlers.
5
+ * @param {RequestHandler[]} requestHandlers List of request handlers
6
+ * @see {@link https://mswjs.io/docs/api/setup-worker `setupWorker`}
7
+ */
2
8
  export declare function setupWorker(...requestHandlers: RequestHandlersList): SetupWorkerApi;
package/lib/umd/index.js CHANGED
@@ -70,6 +70,13 @@
70
70
  "511": "Network Authentication Required"
71
71
  };
72
72
 
73
+ /**
74
+ * Sets a response status code and text.
75
+ * @example
76
+ * res(ctx.status(301))
77
+ * res(ctx.status(400, 'Custom status text'))
78
+ * @see {@link https://mswjs.io/docs/api/context/status `ctx.status()`}
79
+ */
73
80
  const status = (statusCode, statusText) => {
74
81
  return (res) => {
75
82
  res.status = statusCode;
@@ -333,6 +340,10 @@
333
340
  exports.flattenHeadersObject = flattenHeadersObject_1.flattenHeadersObject;
334
341
  });
335
342
 
343
+ /**
344
+ * Sets one or multiple response headers.
345
+ * @see {@link https://mswjs.io/docs/api/context/set `ctx.set()`}
346
+ */
336
347
  function set(...args) {
337
348
  return (res) => {
338
349
  const [name, value] = args;
@@ -551,9 +562,8 @@
551
562
  }
552
563
 
553
564
  /**
554
- * Sets a given cookie on the response.
555
- * @example
556
- * res(cookie('name', 'value'))
565
+ * Sets a given cookie on the mocked response.
566
+ * @example res(ctx.cookie('name', 'value'))
557
567
  */
558
568
  const cookie = (name, value, options) => {
559
569
  return (res) => {
@@ -567,9 +577,11 @@
567
577
  };
568
578
 
569
579
  /**
570
- * Sets the body of the response without any `Content-Type` header.
580
+ * Sets a raw response body. Does not append any `Content-Type` headers.
571
581
  * @example
572
- * res(body('message'))
582
+ * res(ctx.body('Successful response'))
583
+ * res(ctx.body(JSON.stringify({ key: 'value' })))
584
+ * @see {@link https://mswjs.io/docs/api/context/body `ctx.body()`}
573
585
  */
574
586
  const body = (value) => {
575
587
  return (res) => {
@@ -620,10 +632,13 @@
620
632
 
621
633
  /**
622
634
  * Sets the given value as the JSON body of the response.
635
+ * Appends a `Content-Type: application/json` header on the
636
+ * mocked response.
623
637
  * @example
624
- * res(json({ key: 'value' }))
625
- * res(json('Some string'))
626
- * res(json([1, '2', false, { ok: true }]))
638
+ * res(ctx.json('Some string'))
639
+ * res(ctx.json({ key: 'value' }))
640
+ * res(ctx.json([1, '2', false, { ok: true }]))
641
+ * @see {@link https://mswjs.io/docs/api/context/json `ctx.json()`}
627
642
  */
628
643
  const json = (body) => {
629
644
  return (res) => {
@@ -634,7 +649,10 @@
634
649
  };
635
650
 
636
651
  /**
637
- * Returns a GraphQL body payload.
652
+ * Sets a given payload as a GraphQL response body.
653
+ * @example
654
+ * res(ctx.data({ user: { firstName: 'John' }}))
655
+ * @see {@link https://mswjs.io/docs/api/context/data `ctx.data()`}
638
656
  */
639
657
  const data = (payload) => {
640
658
  return (res) => {
@@ -671,10 +689,11 @@
671
689
  MIN_SERVER_RESPONSE_TIME);
672
690
  };
673
691
  /**
674
- * Delays the current response for the given duration (in ms)
692
+ * Delays the response by the given duration (ms).
675
693
  * @example
676
- * res(delay()) // realistic server response time
677
- * res(delay(1500)) // explicit response delay duration
694
+ * res(ctx.delay()) // realistic server response time
695
+ * res(ctx.delay(1200))
696
+ * @see {@link https://mswjs.io/docs/api/context/delay `ctx.delay()`}
678
697
  */
679
698
  const delay = (durationMs) => {
680
699
  return (res) => {
@@ -685,6 +704,8 @@
685
704
 
686
705
  /**
687
706
  * Sets a given list of GraphQL errors on the mocked response.
707
+ * @example res(ctx.errors([{ message: 'Unauthorized' }]))
708
+ * @see {@link https://mswjs.io/docs/api/context/errors}
688
709
  */
689
710
  const errors = (errorsList) => {
690
711
  return (res) => {
@@ -714,9 +735,10 @@
714
735
  return requestParameters;
715
736
  };
716
737
  /**
717
- * Wrapper around the native `window.fetch()` function that performs
718
- * a request bypassing MSW. Requests performed using
719
- * this function will never be mocked.
738
+ * Performs a bypassed request inside a request handler.
739
+ * @example
740
+ * const originalResponse = await ctx.fetch(req)
741
+ * @see {@link https://mswjs.io/docs/api/context/fetch `ctx.fetch()`}
720
742
  */
721
743
  const fetch = (input, requestInit = {}) => {
722
744
  // Keep the default `window.fetch()` call signature
@@ -729,9 +751,10 @@
729
751
  };
730
752
 
731
753
  /**
732
- * Sets a given text as a "Cotent-Type: text/plain" body of the response.
733
- * @example
734
- * res(text('message'))
754
+ * Sets a textual response body. Appends a `Content-Type: text/plain`
755
+ * header on the mocked response.
756
+ * @example res(ctx.text('Successful response'))
757
+ * @see {@link https://mswjs.io/docs/api/context/text `ctx.text()`}
735
758
  */
736
759
  const text = (body) => {
737
760
  return (res) => {
@@ -742,9 +765,11 @@
742
765
  };
743
766
 
744
767
  /**
745
- * Sets the given XML as the body of the response.
768
+ * Sets an XML response body. Appends a `Content-Type: text/xml` header
769
+ * on the mocked response.
746
770
  * @example
747
- * res(xml('<key>value</key>'))
771
+ * res(ctx.xml('<node key="value">Content</node>'))
772
+ * @see {@link https://mswjs.io/docs/api/context/xml `ctx.xml()`}
748
773
  */
749
774
  const xml = (body) => {
750
775
  return (res) => {
@@ -2759,6 +2784,12 @@ If this message still persists after updating, please report an issue: https://g
2759
2784
  // Declare the list of event handlers on the module's scope
2760
2785
  // so it persists between Fash refreshes of the application's code.
2761
2786
  let listeners = [];
2787
+ /**
2788
+ * Creates a new mock Service Worker registration
2789
+ * with the given request handlers.
2790
+ * @param {RequestHandler[]} requestHandlers List of request handlers
2791
+ * @see {@link https://mswjs.io/docs/api/setup-worker `setupWorker`}
2792
+ */
2762
2793
  function setupWorker(...requestHandlers) {
2763
2794
  requestHandlers.forEach((handler) => {
2764
2795
  if (Array.isArray(handler))
@@ -3093,12 +3124,73 @@ ${queryParams
3093
3124
  };
3094
3125
  };
3095
3126
  const rest = {
3127
+ /**
3128
+ * Captures a HEAD request by a given path.
3129
+ * @example
3130
+ * rest.head('/numbers', (req, res, ctx) => {
3131
+ * return res(ctx.status(302))
3132
+ * })
3133
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
3134
+ */
3096
3135
  head: createRestHandler(exports.RESTMethods.HEAD),
3136
+ /**
3137
+ * Captures a GET request by a given path.
3138
+ * @example
3139
+ * rest.get('/numbers', (req, res, ctx) => {
3140
+ * return res(ctx.json([1, 2, 3]))
3141
+ * })
3142
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
3143
+ */
3097
3144
  get: createRestHandler(exports.RESTMethods.GET),
3145
+ /**
3146
+ * Captures a POST request by a given path.
3147
+ * @example
3148
+ * rest.post('/numbers', (req, res, ctx) => {
3149
+ * return res(ctx.text('success'))
3150
+ * })
3151
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
3152
+ */
3098
3153
  post: createRestHandler(exports.RESTMethods.POST),
3154
+ /**
3155
+ * Captures a PUT request by a given path.
3156
+ * @example
3157
+ * rest.put('/numbers', (req, res, ctx) => {
3158
+ * const { numbers } = req.body
3159
+ * return res(ctx.json(numbers))
3160
+ * })
3161
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
3162
+ */
3099
3163
  put: createRestHandler(exports.RESTMethods.PUT),
3164
+ /**
3165
+ * Captures a DELETE request by a given path.
3166
+ * @example
3167
+ * rest.delete('/numbers', (req, res, ctx) => {
3168
+ * const index = req.url.searchParams.get('index')
3169
+ * prevNumbers.splice(index, 1)
3170
+ * return res(ctx.json(nextNumbers))
3171
+ * })
3172
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
3173
+ */
3100
3174
  delete: createRestHandler(exports.RESTMethods.DELETE),
3175
+ /**
3176
+ * Captures a PATCH request by a given path.
3177
+ * @example
3178
+ * rest.patch('/numbers', (req, res, ctx) => {
3179
+ * const { numbers } = req.body
3180
+ * const nextNumbers = prevNumbers.concat(number)
3181
+ * return res(ctx.json(nextNumbers))
3182
+ * })
3183
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
3184
+ */
3101
3185
  patch: createRestHandler(exports.RESTMethods.PATCH),
3186
+ /**
3187
+ * Captures an OPTIONS request by a given path.
3188
+ * @example
3189
+ * rest.options('/numbers', (req, res, ctx) => {
3190
+ * return res(ctx.set('Allow', 'GET,HEAD,POST'))
3191
+ * })
3192
+ * @see {@link https://mswjs.io/docs/api/rest `rest`}
3193
+ */
3102
3194
  options: createRestHandler(exports.RESTMethods.OPTIONS),
3103
3195
  };
3104
3196
 
@@ -6339,10 +6431,42 @@ ${queryParams
6339
6431
  };
6340
6432
  };
6341
6433
  const graphqlStandardHandlers = {
6434
+ /**
6435
+ * Captures any GraphQL operation, regardless of its name, under the current scope.
6436
+ * @example
6437
+ * graphql.operation((req, res, ctx) => {
6438
+ * return res(ctx.data({ name: 'John' }))
6439
+ * })
6440
+ * @see {@link https://mswjs.io/docs/api/graphql/operation `graphql.operation()`}
6441
+ */
6342
6442
  operation: createGraphQLOperationHandler('*'),
6443
+ /**
6444
+ * Captures a GraphQL query by a given name.
6445
+ * @example
6446
+ * graphql.query('GetUser', (req, res, ctx) => {
6447
+ * return res(ctx.data({ user: { name: 'John' } }))
6448
+ * })
6449
+ * @see {@link https://mswjs.io/docs/api/graphql/query `graphql.query()`}
6450
+ */
6343
6451
  query: createGraphQLScopedHandler('query', '*'),
6452
+ /**
6453
+ * Captures a GraphQL mutation by a given name.
6454
+ * @example
6455
+ * graphql.mutation('SavePost', (req, res, ctx) => {
6456
+ * return res(ctx.data({ post: { id: 'abc-123' } }))
6457
+ * })
6458
+ * @see {@link https://mswjs.io/docs/api/graphql/mutation `graphql.mutation()`}
6459
+ */
6344
6460
  mutation: createGraphQLScopedHandler('mutation', '*'),
6345
6461
  };
6462
+ /**
6463
+ * Creates a GraphQL mocking API scoped to the given endpoint.
6464
+ * @param uri Endpoint URL, or path.
6465
+ * @example
6466
+ * const api = graphql.link('https://api.site.com/graphql)
6467
+ * api.query('GetUser', resolver)
6468
+ * @see {@link https://mswjs.io/docs/api/graphql/link `graphql.link()`}
6469
+ */
6346
6470
  function createGraphQLLink(uri) {
6347
6471
  return {
6348
6472
  operation: createGraphQLOperationHandler(uri),