msw 0.20.5 → 0.21.3
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/CHANGELOG.md +4 -0
- package/README.md +1 -1
- package/lib/esm/fetch-deps.js +26 -23
- package/lib/esm/graphql.js +92 -79
- package/lib/esm/index.js +90 -44
- package/lib/esm/{matchRequest-deps.js → matchRequestUrl-deps.js} +29 -17
- package/lib/esm/mockServiceWorker.js +8 -1
- package/lib/esm/rest-deps.js +27 -18
- package/lib/esm/rest.js +1 -1
- package/lib/esm/xml-deps.js +3 -3
- package/lib/types/LiveStorage.d.ts +17 -0
- package/lib/types/context/body.d.ts +2 -2
- package/lib/types/context/errors.d.ts +3 -1
- package/lib/types/context/fetch.d.ts +2 -2
- package/lib/types/context/json.d.ts +5 -3
- package/lib/types/context/text.d.ts +2 -2
- package/lib/types/context/xml.d.ts +2 -2
- package/lib/types/graphql.d.ts +8 -10
- package/lib/types/index.d.ts +3 -3
- package/lib/types/native/index.d.ts +7 -1
- package/lib/types/node/createSetupServer.d.ts +29 -0
- package/lib/types/node/setupServer.d.ts +4 -24
- package/lib/types/response.d.ts +10 -7
- package/lib/types/rest.d.ts +158 -16
- package/lib/types/setupWorker/glossary.d.ts +14 -4
- package/lib/types/setupWorker/start/utils/getWorkerByRegistration.d.ts +2 -1
- package/lib/types/setupWorker/start/utils/getWorkerInstance.d.ts +2 -2
- package/lib/types/sharedOptions.d.ts +1 -1
- package/lib/types/utils/getResponse.d.ts +2 -2
- package/lib/types/utils/handlers/requestHandler.d.ts +74 -0
- package/lib/types/utils/{requestHandlerUtils.d.ts → handlers/requestHandlerUtils.d.ts} +2 -2
- package/lib/types/utils/{isNodeProcess.d.ts → internal/isNodeProcess.d.ts} +1 -0
- package/lib/types/utils/{isStringEqual.d.ts → internal/isStringEqual.d.ts} +0 -0
- package/lib/types/utils/{jsonParse.d.ts → internal/jsonParse.d.ts} +0 -0
- package/lib/types/utils/internal/mergeRight.d.ts +5 -0
- package/lib/types/utils/{logger → logging}/getStatusCodeColor.d.ts +0 -0
- package/lib/types/utils/{logger → logging}/getTimestamp.d.ts +0 -0
- package/lib/types/utils/{logger → logging}/prepareRequest.d.ts +3 -3
- package/lib/types/utils/{logger → logging}/prepareResponse.d.ts +2 -2
- package/lib/types/utils/matching/{matchRequest.d.ts → matchRequestUrl.d.ts} +0 -0
- package/lib/types/utils/request/getPublicUrlFromRequest.d.ts +6 -0
- package/lib/types/utils/request/getRequestCookies.d.ts +1 -1
- package/lib/types/{onUnhandledRequest.d.ts → utils/request/onUnhandledRequest.d.ts} +1 -1
- package/lib/types/utils/request/parseBody.d.ts +5 -0
- package/lib/types/utils/url/getAbsoluteUrl.d.ts +6 -0
- package/lib/types/utils/{getAbsoluteWorkerUrl.d.ts → url/getAbsoluteWorkerUrl.d.ts} +0 -0
- package/lib/types/utils/url/getUrlByMask.d.ts +5 -0
- package/lib/umd/index.js +696 -613
- package/lib/umd/mockServiceWorker.js +8 -1
- package/native/index.js +1508 -133
- package/node/context/delay.d.ts +11 -0
- package/node/context/fetch.d.ts +8 -0
- package/node/context/set.d.ts +2 -0
- package/node/context/status.d.ts +2 -0
- package/node/index.js +1507 -133
- package/node/node/createSetupServer.d.ts +29 -0
- package/node/node/index.d.ts +5 -0
- package/node/node/setupServer.d.ts +7 -0
- package/node/response.d.ts +25 -0
- package/node/utils/NetworkError.d.ts +3 -0
- package/node/utils/getResponse.d.ts +14 -0
- package/{lib/types → node/utils}/handlers/requestHandler.d.ts +13 -12
- package/node/utils/handlers/requestHandlerUtils.d.ts +4 -0
- package/node/utils/internal/compose.d.ts +5 -0
- package/node/utils/internal/isNodeProcess.d.ts +5 -0
- package/node/utils/internal/jsonParse.d.ts +5 -0
- package/node/utils/request/getPublicUrlFromRequest.d.ts +6 -0
- package/node/utils/request/onUnhandledRequest.d.ts +5 -0
- package/node/utils/request/parseBody.d.ts +5 -0
- package/package.json +34 -29
- package/lib/types/utils/getJsonBody.d.ts +0 -5
- package/lib/types/utils/request/parseRequestBody.d.ts +0 -2
- package/lib/types/utils/resolveMask.d.ts +0 -6
- package/lib/types/utils/resolveRelativeUrl.d.ts +0 -6
|
@@ -14,11 +14,21 @@ function jsonParse(str) {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
* otherwise returns a given body string as-is.
|
|
17
|
+
* Parses a given request/response body based on the `Content-Type` header.
|
|
19
18
|
*/
|
|
20
|
-
function
|
|
21
|
-
|
|
19
|
+
function parseBody(body, headers) {
|
|
20
|
+
var _a;
|
|
21
|
+
if (body) {
|
|
22
|
+
// If the intercepted request's body has a JSON Content-Type
|
|
23
|
+
// parse it into an object, otherwise leave as-is.
|
|
24
|
+
const hasJsonContent = (_a = headers === null || headers === void 0 ? void 0 : headers.get('content-type')) === null || _a === void 0 ? void 0 : _a.includes('json');
|
|
25
|
+
if (hasJsonContent && typeof body !== 'object') {
|
|
26
|
+
return jsonParse(body) || body;
|
|
27
|
+
}
|
|
28
|
+
return body;
|
|
29
|
+
}
|
|
30
|
+
// Return whatever falsey body value is given.
|
|
31
|
+
return body;
|
|
22
32
|
}
|
|
23
33
|
|
|
24
34
|
/**
|
|
@@ -32,12 +42,10 @@ function prepareRequest(req) {
|
|
|
32
42
|
* Formats a mocked response for introspection in browser's console.
|
|
33
43
|
*/
|
|
34
44
|
function prepareResponse(res) {
|
|
35
|
-
|
|
36
|
-
const resHeaders = lib.listToHeaders(res.headers);
|
|
45
|
+
const responseHeaders = lib.listToHeaders(res.headers);
|
|
37
46
|
return Object.assign(Object.assign({}, res), {
|
|
38
47
|
// Parse a response JSON body for preview in the logs
|
|
39
|
-
body: (
|
|
40
|
-
: res.body });
|
|
48
|
+
body: parseBody(res.body, responseHeaders) });
|
|
41
49
|
}
|
|
42
50
|
|
|
43
51
|
function getTimestamp() {
|
|
@@ -114,10 +122,10 @@ exports.getCleanUrl = getCleanUrl;
|
|
|
114
122
|
});
|
|
115
123
|
|
|
116
124
|
/**
|
|
117
|
-
*
|
|
125
|
+
* Returns an absolute URL based on the given relative URL, if possible.
|
|
118
126
|
* Ignores regular expressions.
|
|
119
127
|
*/
|
|
120
|
-
const
|
|
128
|
+
const getAbsoluteUrl = (mask) => {
|
|
121
129
|
// Global `location` object doesn't exist in Node.
|
|
122
130
|
// Relative request predicate URL cannot become absolute.
|
|
123
131
|
const hasLocation = typeof location !== 'undefined';
|
|
@@ -128,17 +136,21 @@ const resolveRelativeUrl = (mask) => {
|
|
|
128
136
|
|
|
129
137
|
/**
|
|
130
138
|
* Converts a given request handler mask into a URL, if given a valid URL string.
|
|
131
|
-
* Otherwise, returns the mask as-is.
|
|
132
139
|
*/
|
|
133
|
-
function
|
|
134
|
-
|
|
140
|
+
function getUrlByMask(mask) {
|
|
141
|
+
/**
|
|
142
|
+
* If a string mask contains an asterisk (wildcard), return it as-is.
|
|
143
|
+
* Converting a URL-like path string into an actual URL is misleading.
|
|
144
|
+
* @see https://github.com/mswjs/msw/issues/357
|
|
145
|
+
*/
|
|
146
|
+
if (mask instanceof RegExp || mask.includes('*')) {
|
|
135
147
|
return mask;
|
|
136
148
|
}
|
|
137
149
|
try {
|
|
138
150
|
// Attempt to create a URL instance out of the mask string.
|
|
139
151
|
// Resolve mask to an absolute URL, because even a valid relative URL
|
|
140
152
|
// cannot be converted into the URL instance (required absolute URL only).
|
|
141
|
-
return new URL(
|
|
153
|
+
return new URL(getAbsoluteUrl(mask));
|
|
142
154
|
}
|
|
143
155
|
catch (error) {
|
|
144
156
|
// Otherwise, the mask is a path string.
|
|
@@ -151,7 +163,7 @@ function getCleanMask(resolvedMask) {
|
|
|
151
163
|
? getCleanUrl_1.getCleanUrl(resolvedMask)
|
|
152
164
|
: resolvedMask instanceof RegExp
|
|
153
165
|
? resolvedMask
|
|
154
|
-
:
|
|
166
|
+
: getAbsoluteUrl(resolvedMask);
|
|
155
167
|
}
|
|
156
168
|
|
|
157
169
|
/**
|
|
@@ -159,10 +171,10 @@ function getCleanMask(resolvedMask) {
|
|
|
159
171
|
* against a mask.
|
|
160
172
|
*/
|
|
161
173
|
function matchRequestUrl(url, mask) {
|
|
162
|
-
const resolvedMask =
|
|
174
|
+
const resolvedMask = getUrlByMask(mask);
|
|
163
175
|
const cleanMask = getCleanMask(resolvedMask);
|
|
164
176
|
const cleanRequestUrl = getCleanUrl_1.getCleanUrl(url);
|
|
165
177
|
return match(cleanMask, cleanRequestUrl);
|
|
166
178
|
}
|
|
167
179
|
|
|
168
|
-
export {
|
|
180
|
+
export { prepareRequest as a, prepareResponse as b, getTimestamp as c, getStatusCodeColor as d, getUrlByMask as g, jsonParse as j, matchRequestUrl as m, parseBody as p };
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/* eslint-disable */
|
|
8
8
|
/* tslint:disable */
|
|
9
9
|
|
|
10
|
-
const INTEGRITY_CHECKSUM = '
|
|
10
|
+
const INTEGRITY_CHECKSUM = 'd1e0e502f550d40a34bee90822e4bf98'
|
|
11
11
|
const bypassHeaderName = 'x-msw-bypass'
|
|
12
12
|
|
|
13
13
|
let clients = {}
|
|
@@ -27,6 +27,13 @@ self.addEventListener('message', async function (event) {
|
|
|
27
27
|
const allClientIds = allClients.map((client) => client.id)
|
|
28
28
|
|
|
29
29
|
switch (event.data) {
|
|
30
|
+
case 'KEEPALIVE_REQUEST': {
|
|
31
|
+
sendToClient(client, {
|
|
32
|
+
type: 'KEEPALIVE_RESPONSE',
|
|
33
|
+
})
|
|
34
|
+
break
|
|
35
|
+
}
|
|
36
|
+
|
|
30
37
|
case 'INTEGRITY_CHECK_REQUEST': {
|
|
31
38
|
sendToClient(client, {
|
|
32
39
|
type: 'INTEGRITY_CHECK_RESPONSE',
|
package/lib/esm/rest-deps.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { c as createCommonjsModule, b as commonjsGlobal, a as set, s as status, j as json, d as delay, f as fetch } from './fetch-deps.js';
|
|
2
2
|
import { c as cookie, b as body, t as text, x as xml } from './xml-deps.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Performs a case-insensitive comparison of two given strings.
|
|
7
|
-
*/
|
|
8
|
-
function isStringEqual(actual, expected) {
|
|
9
|
-
return actual.toLowerCase() === expected.toLowerCase();
|
|
10
|
-
}
|
|
3
|
+
import { g as getUrlByMask, m as matchRequestUrl, a as prepareRequest, b as prepareResponse, c as getTimestamp, d as getStatusCodeColor } from './matchRequestUrl-deps.js';
|
|
11
4
|
|
|
12
5
|
var punycode = createCommonjsModule(function (module, exports) {
|
|
13
6
|
(function(root) {
|
|
@@ -1350,8 +1343,30 @@ Url.prototype.parseHost = function() {
|
|
|
1350
1343
|
if (host) this.hostname = host;
|
|
1351
1344
|
};
|
|
1352
1345
|
|
|
1346
|
+
/**
|
|
1347
|
+
* Returns a relative URL if the given request URL is relative to the current origin.
|
|
1348
|
+
* Otherwise returns an absolute URL.
|
|
1349
|
+
*/
|
|
1350
|
+
const getPublicUrlFromRequest = (request) => {
|
|
1351
|
+
return request.referrer.startsWith(request.url.origin)
|
|
1352
|
+
? request.url.pathname
|
|
1353
|
+
: format({
|
|
1354
|
+
protocol: request.url.protocol,
|
|
1355
|
+
host: request.url.host,
|
|
1356
|
+
pathname: request.url.pathname,
|
|
1357
|
+
});
|
|
1358
|
+
};
|
|
1359
|
+
|
|
1360
|
+
/**
|
|
1361
|
+
* Performs a case-insensitive comparison of two given strings.
|
|
1362
|
+
*/
|
|
1363
|
+
function isStringEqual(actual, expected) {
|
|
1364
|
+
return actual.toLowerCase() === expected.toLowerCase();
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1353
1367
|
var RESTMethods;
|
|
1354
1368
|
(function (RESTMethods) {
|
|
1369
|
+
RESTMethods["HEAD"] = "HEAD";
|
|
1355
1370
|
RESTMethods["GET"] = "GET";
|
|
1356
1371
|
RESTMethods["POST"] = "POST";
|
|
1357
1372
|
RESTMethods["PUT"] = "PUT";
|
|
@@ -1372,7 +1387,7 @@ const restContext = {
|
|
|
1372
1387
|
};
|
|
1373
1388
|
const createRestHandler = (method) => {
|
|
1374
1389
|
return (mask, resolver) => {
|
|
1375
|
-
const resolvedMask =
|
|
1390
|
+
const resolvedMask = getUrlByMask(mask);
|
|
1376
1391
|
return {
|
|
1377
1392
|
parse(req) {
|
|
1378
1393
|
// Match the request during parsing to prevent matching it twice
|
|
@@ -1411,14 +1426,7 @@ ${queryParams
|
|
|
1411
1426
|
})\
|
|
1412
1427
|
`);
|
|
1413
1428
|
}
|
|
1414
|
-
const
|
|
1415
|
-
const publicUrl = isRelativeRequest
|
|
1416
|
-
? req.url.pathname
|
|
1417
|
-
: format({
|
|
1418
|
-
protocol: req.url.protocol,
|
|
1419
|
-
host: req.url.host,
|
|
1420
|
-
pathname: req.url.pathname,
|
|
1421
|
-
});
|
|
1429
|
+
const publicUrl = getPublicUrlFromRequest(req);
|
|
1422
1430
|
const loggedRequest = prepareRequest(req);
|
|
1423
1431
|
const loggedResponse = prepareResponse(res);
|
|
1424
1432
|
console.groupCollapsed('[MSW] %s %s %s (%c%s%c)', getTimestamp(), req.method, publicUrl, `color:${getStatusCodeColor(res.status)}`, res.status, 'color:inherit');
|
|
@@ -1434,6 +1442,7 @@ ${queryParams
|
|
|
1434
1442
|
};
|
|
1435
1443
|
};
|
|
1436
1444
|
const rest = {
|
|
1445
|
+
head: createRestHandler(RESTMethods.HEAD),
|
|
1437
1446
|
get: createRestHandler(RESTMethods.GET),
|
|
1438
1447
|
post: createRestHandler(RESTMethods.POST),
|
|
1439
1448
|
put: createRestHandler(RESTMethods.PUT),
|
|
@@ -1442,4 +1451,4 @@ const rest = {
|
|
|
1442
1451
|
options: createRestHandler(RESTMethods.OPTIONS),
|
|
1443
1452
|
};
|
|
1444
1453
|
|
|
1445
|
-
export { RESTMethods as R, restContext as a, isStringEqual as i, rest as r };
|
|
1454
|
+
export { RESTMethods as R, restContext as a, getPublicUrlFromRequest as g, isStringEqual as i, rest as r };
|
package/lib/esm/rest.js
CHANGED
package/lib/esm/xml-deps.js
CHANGED
|
@@ -218,7 +218,7 @@ const cookie = (name, value, options) => {
|
|
|
218
218
|
/**
|
|
219
219
|
* Sets the body of the response without any `Content-Type` header.
|
|
220
220
|
* @example
|
|
221
|
-
* res(body('
|
|
221
|
+
* res(body('message'))
|
|
222
222
|
*/
|
|
223
223
|
const body = (value) => {
|
|
224
224
|
return (res) => {
|
|
@@ -230,7 +230,7 @@ const body = (value) => {
|
|
|
230
230
|
/**
|
|
231
231
|
* Sets a given text as a "Cotent-Type: text/plain" body of the response.
|
|
232
232
|
* @example
|
|
233
|
-
* res(text('
|
|
233
|
+
* res(text('message'))
|
|
234
234
|
*/
|
|
235
235
|
const text = (body) => {
|
|
236
236
|
return (res) => {
|
|
@@ -243,7 +243,7 @@ const text = (body) => {
|
|
|
243
243
|
/**
|
|
244
244
|
* Sets the given XML as the body of the response.
|
|
245
245
|
* @example
|
|
246
|
-
* res(xml('<
|
|
246
|
+
* res(xml('<key>value</key>'))
|
|
247
247
|
*/
|
|
248
248
|
const xml = (body) => {
|
|
249
249
|
return (res) => {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class LiveStorage<Value> {
|
|
2
|
+
name: string;
|
|
3
|
+
value: Value;
|
|
4
|
+
channel: BroadcastChannel;
|
|
5
|
+
constructor(name: string, initialValue: Value);
|
|
6
|
+
getValue: () => Value;
|
|
7
|
+
update: (applyUpdate: (prevValue: Value) => Value) => void;
|
|
8
|
+
private broadcastValue;
|
|
9
|
+
/**
|
|
10
|
+
* Flush the value into the presistency layer.
|
|
11
|
+
*/
|
|
12
|
+
private persist;
|
|
13
|
+
/**
|
|
14
|
+
* Hydrate the value from the persistency layer.
|
|
15
|
+
*/
|
|
16
|
+
private hydrate;
|
|
17
|
+
}
|
|
@@ -2,6 +2,6 @@ import { ResponseTransformer } from '../response';
|
|
|
2
2
|
/**
|
|
3
3
|
* Sets the body of the response without any `Content-Type` header.
|
|
4
4
|
* @example
|
|
5
|
-
* res(body('
|
|
5
|
+
* res(body('message'))
|
|
6
6
|
*/
|
|
7
|
-
export declare const body: <
|
|
7
|
+
export declare const body: <BodyType extends string | Blob | ArrayBufferView | ArrayBuffer | ReadableStream<any> | FormData>(value: BodyType) => ResponseTransformer<BodyType>;
|
|
@@ -3,4 +3,6 @@ import { ResponseTransformer } from '../response';
|
|
|
3
3
|
/**
|
|
4
4
|
* Returns a list of GraphQL errors.
|
|
5
5
|
*/
|
|
6
|
-
export declare const errors: (errorsList: Partial<GraphQLError>[]) => ResponseTransformer
|
|
6
|
+
export declare const errors: (errorsList: Partial<GraphQLError>[]) => ResponseTransformer<{
|
|
7
|
+
errors: Partial<GraphQLError>[];
|
|
8
|
+
}>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { MockedRequest } from '../handlers/requestHandler';
|
|
1
|
+
import { MockedRequest } from '../utils/handlers/requestHandler';
|
|
2
2
|
export declare const augmentRequestInit: (requestInit: RequestInit) => RequestInit;
|
|
3
3
|
/**
|
|
4
4
|
* Wrapper around the native `window.fetch()` function that performs
|
|
5
5
|
* a request bypassing MSW. Requests performed using
|
|
6
6
|
* this function will never be mocked.
|
|
7
7
|
*/
|
|
8
|
-
export declare const fetch:
|
|
8
|
+
export declare const fetch: (input: string | MockedRequest, requestInit?: RequestInit) => any;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ResponseTransformer } from '../response';
|
|
2
2
|
/**
|
|
3
|
-
* Sets the given
|
|
3
|
+
* Sets the given value as the JSON body of the response.
|
|
4
4
|
* @example
|
|
5
|
-
* res(json({
|
|
5
|
+
* res(json({ key: 'value' }))
|
|
6
|
+
* res(json('Some string'))
|
|
7
|
+
* res(json([1, '2', false, { ok: true }]))
|
|
6
8
|
*/
|
|
7
|
-
export declare const json: (body:
|
|
9
|
+
export declare const json: <BodyType>(body: BodyType) => ResponseTransformer<BodyType>;
|
|
@@ -2,6 +2,6 @@ import { ResponseTransformer } from '../response';
|
|
|
2
2
|
/**
|
|
3
3
|
* Sets a given text as a "Cotent-Type: text/plain" body of the response.
|
|
4
4
|
* @example
|
|
5
|
-
* res(text('
|
|
5
|
+
* res(text('message'))
|
|
6
6
|
*/
|
|
7
|
-
export declare const text: (body:
|
|
7
|
+
export declare const text: <BodyType extends string>(body: BodyType) => ResponseTransformer<BodyType>;
|
|
@@ -2,6 +2,6 @@ import { ResponseTransformer } from '../response';
|
|
|
2
2
|
/**
|
|
3
3
|
* Sets the given XML as the body of the response.
|
|
4
4
|
* @example
|
|
5
|
-
* res(xml('<
|
|
5
|
+
* res(xml('<key>value</key>'))
|
|
6
6
|
*/
|
|
7
|
-
export declare const xml: (body:
|
|
7
|
+
export declare const xml: <BodyType extends string>(body: BodyType) => ResponseTransformer<BodyType>;
|
package/lib/types/graphql.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OperationTypeNode } from 'graphql';
|
|
2
|
-
import { RequestHandler, MockedRequest, AsyncResponseResolverReturnType } from './handlers/requestHandler';
|
|
2
|
+
import { RequestHandler, MockedRequest, AsyncResponseResolverReturnType } from './utils/handlers/requestHandler';
|
|
3
3
|
import { MockedResponse, ResponseComposition } from './response';
|
|
4
4
|
import { Mask } from './setupWorker/glossary';
|
|
5
5
|
import { set } from './context/set';
|
|
@@ -27,23 +27,21 @@ export interface GraphQLRequestPayload<VariablesType> {
|
|
|
27
27
|
query: string;
|
|
28
28
|
variables?: VariablesType;
|
|
29
29
|
}
|
|
30
|
-
interface GraphQLRequestParsedResult<VariablesType> {
|
|
30
|
+
export interface GraphQLRequestParsedResult<VariablesType> {
|
|
31
31
|
operationType: OperationTypeNode;
|
|
32
32
|
operationName: string | undefined;
|
|
33
33
|
variables: VariablesType | undefined;
|
|
34
34
|
}
|
|
35
|
-
interface ParsedQueryPayload {
|
|
36
|
-
operationName: string | undefined;
|
|
37
|
-
}
|
|
38
|
-
export declare function parseQuery(query: string, definitionOperation?: OperationTypeNode): ParsedQueryPayload;
|
|
39
35
|
declare const graphqlStandardHandlers: {
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
operation: <QueryType, VariablesType = Record<string, any>>(resolver: GraphQLResponseResolver<QueryType, VariablesType>) => RequestHandler<GraphQLMockedRequest<VariablesType>, GraphQLMockedContext<QueryType>, GraphQLRequestParsedResult<VariablesType>, GraphQLMockedRequest<VariablesType>, any>;
|
|
37
|
+
query: <QueryType_1, VariablesType_1 = Record<string, any>>(expectedOperationName: GraphQLRequestHandlerSelector, resolver: GraphQLResponseResolver<QueryType_1, VariablesType_1>) => RequestHandler<GraphQLMockedRequest<VariablesType_1>, GraphQLMockedContext<QueryType_1>, GraphQLRequestParsedResult<VariablesType_1>, GraphQLMockedRequest<VariablesType_1>, any>;
|
|
38
|
+
mutation: <QueryType_1, VariablesType_1 = Record<string, any>>(expectedOperationName: GraphQLRequestHandlerSelector, resolver: GraphQLResponseResolver<QueryType_1, VariablesType_1>) => RequestHandler<GraphQLMockedRequest<VariablesType_1>, GraphQLMockedContext<QueryType_1>, GraphQLRequestParsedResult<VariablesType_1>, GraphQLMockedRequest<VariablesType_1>, any>;
|
|
42
39
|
};
|
|
43
40
|
declare function createGraphQLLink(uri: Mask): typeof graphqlStandardHandlers;
|
|
44
41
|
export declare const graphql: {
|
|
45
42
|
link: typeof createGraphQLLink;
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
operation: <QueryType, VariablesType = Record<string, any>>(resolver: GraphQLResponseResolver<QueryType, VariablesType>) => RequestHandler<GraphQLMockedRequest<VariablesType>, GraphQLMockedContext<QueryType>, GraphQLRequestParsedResult<VariablesType>, GraphQLMockedRequest<VariablesType>, any>;
|
|
44
|
+
query: <QueryType_1, VariablesType_1 = Record<string, any>>(expectedOperationName: GraphQLRequestHandlerSelector, resolver: GraphQLResponseResolver<QueryType_1, VariablesType_1>) => RequestHandler<GraphQLMockedRequest<VariablesType_1>, GraphQLMockedContext<QueryType_1>, GraphQLRequestParsedResult<VariablesType_1>, GraphQLMockedRequest<VariablesType_1>, any>;
|
|
45
|
+
mutation: <QueryType_1, VariablesType_1 = Record<string, any>>(expectedOperationName: GraphQLRequestHandlerSelector, resolver: GraphQLResponseResolver<QueryType_1, VariablesType_1>) => RequestHandler<GraphQLMockedRequest<VariablesType_1>, GraphQLMockedContext<QueryType_1>, GraphQLRequestParsedResult<VariablesType_1>, GraphQLMockedRequest<VariablesType_1>, any>;
|
|
48
46
|
};
|
|
49
47
|
export {};
|
package/lib/types/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as context from './context';
|
|
|
2
2
|
export { setupWorker } from './setupWorker/setupWorker';
|
|
3
3
|
export { MockedResponse, ResponseTransformer, response } from './response';
|
|
4
4
|
export { context };
|
|
5
|
-
export { MockedRequest, RequestHandler, RequestParams, RequestQuery, ResponseResolver, ResponseResolverReturnType, AsyncResponseResolverReturnType, defaultContext, } from './handlers/requestHandler';
|
|
5
|
+
export { MockedRequest, RequestHandler, RequestParams, RequestQuery, ResponseResolver, ResponseResolverReturnType, AsyncResponseResolverReturnType, defaultContext, } from './utils/handlers/requestHandler';
|
|
6
6
|
export { rest, restContext, RESTMethods, ParsedRestRequest } from './rest';
|
|
7
|
-
export { graphql, graphqlContext, GraphQLMockedRequest, GraphQLMockedContext, GraphQLRequestPayload, GraphQLResponseResolver, } from './graphql';
|
|
8
|
-
export { matchRequestUrl } from './utils/matching/
|
|
7
|
+
export { graphql, graphqlContext, GraphQLMockedRequest, GraphQLMockedContext, GraphQLRequestPayload, GraphQLResponseResolver, GraphQLRequestParsedResult, } from './graphql';
|
|
8
|
+
export { matchRequestUrl } from './utils/matching/matchRequestUrl';
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare const setupServer: (...requestHandlers: import("../setupWorker/glossary").RequestHandlersList) => {
|
|
2
|
+
listen(options?: import("../sharedOptions").SharedOptions | undefined): void;
|
|
3
|
+
use(...handlers: import("../setupWorker/glossary").RequestHandlersList): void;
|
|
4
|
+
restoreHandlers(): void;
|
|
5
|
+
resetHandlers(...nextHandlers: import("../setupWorker/glossary").RequestHandlersList): void;
|
|
6
|
+
close(): void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Interceptor } from 'node-request-interceptor';
|
|
2
|
+
import { RequestHandlersList } from '../setupWorker/glossary';
|
|
3
|
+
import { SharedOptions } from '../sharedOptions';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a `setupServer` API using given request interceptors.
|
|
6
|
+
* Useful to generate identical API using different patches to request issuing modules.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createSetupServer(...interceptors: Interceptor[]): (...requestHandlers: RequestHandlersList) => {
|
|
9
|
+
/**
|
|
10
|
+
* Enables requests interception based on the previously provided mock definition.
|
|
11
|
+
*/
|
|
12
|
+
listen(options?: SharedOptions | undefined): void;
|
|
13
|
+
/**
|
|
14
|
+
* Prepends given request handlers to the list of existing handlers.
|
|
15
|
+
*/
|
|
16
|
+
use(...handlers: RequestHandlersList): void;
|
|
17
|
+
/**
|
|
18
|
+
* Marks all request handlers that respond using `res.once()` as unused.
|
|
19
|
+
*/
|
|
20
|
+
restoreHandlers(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
|
|
23
|
+
*/
|
|
24
|
+
resetHandlers(...nextHandlers: RequestHandlersList): void;
|
|
25
|
+
/**
|
|
26
|
+
* Stops requests interception by restoring all augmented modules.
|
|
27
|
+
*/
|
|
28
|
+
close(): void;
|
|
29
|
+
};
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
* Sets up a server-side requests interception with the given mock definition.
|
|
5
|
-
*/
|
|
6
|
-
export declare const setupServer: (...requestHandlers: RequestHandlersList) => {
|
|
7
|
-
/**
|
|
8
|
-
* Enables requests interception based on the previously provided mock definition.
|
|
9
|
-
*/
|
|
10
|
-
listen(options?: SharedOptions | undefined): void;
|
|
11
|
-
/**
|
|
12
|
-
* Prepends given request handlers to the list of existing handlers.
|
|
13
|
-
*/
|
|
14
|
-
use(...handlers: RequestHandlersList): void;
|
|
15
|
-
/**
|
|
16
|
-
* Marks all request handlers that respond using `res.once()` as unused.
|
|
17
|
-
*/
|
|
1
|
+
export declare const setupServer: (...requestHandlers: import("../setupWorker/glossary").RequestHandlersList) => {
|
|
2
|
+
listen(options?: import("../sharedOptions").SharedOptions | undefined): void;
|
|
3
|
+
use(...handlers: import("../setupWorker/glossary").RequestHandlersList): void;
|
|
18
4
|
restoreHandlers(): void;
|
|
19
|
-
|
|
20
|
-
* Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
|
|
21
|
-
*/
|
|
22
|
-
resetHandlers(...nextHandlers: RequestHandlersList): void;
|
|
23
|
-
/**
|
|
24
|
-
* Stops requests interception by restoring all augmented modules.
|
|
25
|
-
*/
|
|
5
|
+
resetHandlers(...nextHandlers: import("../setupWorker/glossary").RequestHandlersList): void;
|
|
26
6
|
close(): void;
|
|
27
7
|
};
|
package/lib/types/response.d.ts
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import { Headers } from 'headers-utils';
|
|
2
|
-
export interface MockedResponse {
|
|
3
|
-
body:
|
|
2
|
+
export interface MockedResponse<BodyType = any> {
|
|
3
|
+
body: BodyType;
|
|
4
4
|
status: number;
|
|
5
5
|
statusText: string;
|
|
6
6
|
headers: Headers;
|
|
7
7
|
once: boolean;
|
|
8
8
|
delay?: number;
|
|
9
9
|
}
|
|
10
|
-
export declare type ResponseTransformer = (res: MockedResponse) => MockedResponse
|
|
11
|
-
declare type ResponseFunction = (...transformers: ResponseTransformer[]) => MockedResponse
|
|
12
|
-
export declare type ResponseComposition = ResponseFunction & {
|
|
10
|
+
export declare type ResponseTransformer<BodyType = any> = (res: MockedResponse<BodyType>) => MockedResponse<BodyType>;
|
|
11
|
+
declare type ResponseFunction<BodyType = any> = (...transformers: ResponseTransformer<BodyType>[]) => MockedResponse<BodyType>;
|
|
12
|
+
export declare type ResponseComposition<BodyType = any> = ResponseFunction<BodyType> & {
|
|
13
13
|
/**
|
|
14
14
|
* Respond using a given mocked response to the first captured request.
|
|
15
15
|
* Does not affect any subsequent captured requests.
|
|
16
16
|
*/
|
|
17
|
-
once: ResponseFunction
|
|
17
|
+
once: ResponseFunction<BodyType>;
|
|
18
18
|
networkError: (message: string) => void;
|
|
19
19
|
};
|
|
20
20
|
export declare const defaultResponse: Omit<MockedResponse, 'headers'>;
|
|
21
|
-
export declare const response:
|
|
21
|
+
export declare const response: ResponseFunction<any> & {
|
|
22
|
+
once: ResponseFunction<any>;
|
|
23
|
+
networkError(message: string): never;
|
|
24
|
+
};
|
|
22
25
|
export {};
|