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.
- package/lib/esm/errors-deps.js +6 -1
- package/lib/esm/fetch-deps.js +25 -9
- package/lib/esm/graphql.js +32 -0
- package/lib/esm/index.js +6 -0
- package/lib/esm/rest-deps.js +61 -0
- package/lib/esm/xml-deps.js +14 -10
- package/lib/types/context/body.d.ts +4 -2
- package/lib/types/context/cookie.d.ts +2 -3
- package/lib/types/context/data.d.ts +5 -3
- package/lib/types/context/delay.d.ts +4 -3
- package/lib/types/context/errors.d.ts +2 -0
- package/lib/types/context/fetch.d.ts +4 -3
- package/lib/types/context/json.d.ts +6 -3
- package/lib/types/context/set.d.ts +4 -0
- package/lib/types/context/status.d.ts +7 -0
- package/lib/types/context/text.d.ts +4 -3
- package/lib/types/context/xml.d.ts +4 -2
- package/lib/types/graphql.d.ts +58 -2
- package/lib/types/node/glossary.d.ts +11 -5
- package/lib/types/node/setupServer.d.ts +5 -0
- package/lib/types/rest.d.ts +87 -157
- package/lib/types/setupWorker/glossary.d.ts +19 -2
- package/lib/types/setupWorker/setupWorker.d.ts +6 -0
- package/lib/umd/index.js +144 -20
- package/native/index.js +19 -9
- package/node/index.js +24 -9
- package/package.json +1 -1
package/lib/types/rest.d.ts
CHANGED
|
@@ -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
|
|
22
|
+
export interface RestContext {
|
|
15
23
|
set: typeof set;
|
|
16
|
-
status:
|
|
17
|
-
cookie:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
json:
|
|
21
|
-
xml:
|
|
22
|
-
delay:
|
|
23
|
-
fetch:
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
*
|
|
45
|
+
* Disables the logging of captured requests
|
|
43
46
|
* into browser's console.
|
|
44
47
|
*/
|
|
45
48
|
quiet?: boolean;
|
|
46
49
|
/**
|
|
47
|
-
*
|
|
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
|
|
580
|
+
* Sets a raw response body. Does not append any `Content-Type` headers.
|
|
571
581
|
* @example
|
|
572
|
-
* res(body('
|
|
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(
|
|
625
|
-
* res(json('
|
|
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
|
-
*
|
|
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
|
|
692
|
+
* Delays the response by the given duration (ms).
|
|
675
693
|
* @example
|
|
676
|
-
* res(delay()) // realistic server response time
|
|
677
|
-
* res(delay(
|
|
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
|
-
*
|
|
718
|
-
*
|
|
719
|
-
*
|
|
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
|
|
733
|
-
*
|
|
734
|
-
* res(text('
|
|
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
|
|
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>
|
|
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),
|