msw 0.47.0 → 0.47.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/README.md +70 -76
- package/lib/{glossary-c690f512.d.ts → glossary-3d04462e.d.ts} +1 -1
- package/lib/iife/index.js +75 -23
- package/lib/iife/index.js.map +1 -1
- package/lib/index.d.ts +4 -9
- package/lib/index.js +69 -17
- package/lib/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/lib/native/index.d.ts +1 -1
- package/lib/native/index.js +3 -7
- package/lib/native/index.mjs +3 -7
- package/lib/node/index.d.ts +2 -2
- package/lib/node/index.js +3 -7
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +3 -7
- package/lib/node/index.mjs.map +1 -1
- package/package.json +14 -6
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as ResponseTransformer, s as status, a as set, d as delay, f as fetch, b as RequestHandler, S as SetupWorkerApi, D as DefaultContext, c as DefaultBodyType, M as MockedRequest, e as ResponseResolver, g as ResponseResolutionContext, h as SerializedResponse, i as RequestHandlerDefaultInfo, j as MockedResponse, k as ResponseLookupResult, l as SharedOptions, m as ServerLifecycleEventsMap } from './glossary-
|
|
2
|
-
export { A as AsyncResponseResolverReturnType, c as DefaultBodyType, u as DefaultRequestMultipartBody, y as DelayMode, M as MockedRequest, H as MockedRequestInit, j as MockedResponse, z as RequestCache, E as RequestDestination, b as RequestHandler, B as RequestMode, F as RequestPriority, C as RequestRedirect, G as RequestReferrerPolicy, v as ResponseComposition, w as ResponseCompositionOptions, x as ResponseFunction, e as ResponseResolver, t as ResponseResolverReturnType, R as ResponseTransformer, S as SetupWorkerApi, l as SharedOptions, q as StartOptions, o as createResponseComposition, p as defaultContext, n as defaultResponse, r as response } from './glossary-
|
|
1
|
+
import { R as ResponseTransformer, s as status, a as set, d as delay, f as fetch, b as RequestHandler, S as SetupWorkerApi, D as DefaultContext, c as DefaultBodyType, M as MockedRequest, e as ResponseResolver, g as ResponseResolutionContext, h as SerializedResponse, i as RequestHandlerDefaultInfo, j as MockedResponse, k as ResponseLookupResult, l as SharedOptions, m as ServerLifecycleEventsMap } from './glossary-3d04462e.js';
|
|
2
|
+
export { A as AsyncResponseResolverReturnType, c as DefaultBodyType, u as DefaultRequestMultipartBody, y as DelayMode, M as MockedRequest, H as MockedRequestInit, j as MockedResponse, z as RequestCache, E as RequestDestination, b as RequestHandler, B as RequestMode, F as RequestPriority, C as RequestRedirect, G as RequestReferrerPolicy, v as ResponseComposition, w as ResponseCompositionOptions, x as ResponseFunction, e as ResponseResolver, t as ResponseResolverReturnType, R as ResponseTransformer, S as SetupWorkerApi, l as SharedOptions, q as StartOptions, o as createResponseComposition, p as defaultContext, n as defaultResponse, r as response } from './glossary-3d04462e.js';
|
|
3
3
|
import * as cookieUtils from 'cookie';
|
|
4
4
|
import { GraphQLError, OperationTypeNode, DocumentNode } from 'graphql';
|
|
5
5
|
import { StrictEventEmitter } from 'strict-event-emitter';
|
|
@@ -170,7 +170,7 @@ declare class RestHandler<RequestType extends MockedRequest<DefaultBodyType> = M
|
|
|
170
170
|
parse(request: RequestType, resolutionContext?: ResponseResolutionContext): Match;
|
|
171
171
|
protected getPublicRequest(request: RequestType, parsedResult: ParsedRestRequest): RestRequest<any, PathParams>;
|
|
172
172
|
predicate(request: RequestType, parsedResult: ParsedRestRequest): boolean;
|
|
173
|
-
log(request: RequestType, response: SerializedResponse): void;
|
|
173
|
+
log(request: RequestType, response: SerializedResponse<any>): void;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
declare const rest: {
|
|
@@ -236,7 +236,7 @@ declare class GraphQLHandler<Request extends GraphQLRequest<any> = GraphQLReques
|
|
|
236
236
|
parse(request: MockedRequest): ParsedGraphQLRequest<GraphQLVariables>;
|
|
237
237
|
protected getPublicRequest(request: Request, parsedResult: ParsedGraphQLRequest): GraphQLRequest<any>;
|
|
238
238
|
predicate(request: MockedRequest, parsedResult: ParsedGraphQLRequest): boolean;
|
|
239
|
-
log(request: Request, response: SerializedResponse
|
|
239
|
+
log(request: Request, response: SerializedResponse<any>, parsedRequest: ParsedGraphQLRequest): void;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
interface TypedDocumentNode<Result = {
|
|
@@ -343,11 +343,6 @@ interface HandleRequestOptions<ResponseType> {
|
|
|
343
343
|
* Invoked when the mocked response is ready to be sent.
|
|
344
344
|
*/
|
|
345
345
|
onMockedResponse?(response: ResponseType, handler: RequiredDeep<ResponseLookupResult>): void;
|
|
346
|
-
/**
|
|
347
|
-
* Invoked when the mocked response is sent.
|
|
348
|
-
* Respects the response delay duration.
|
|
349
|
-
*/
|
|
350
|
-
onMockedResponseSent?(response: ResponseType, handler: RequiredDeep<ResponseLookupResult>): void;
|
|
351
346
|
}
|
|
352
347
|
declare function handleRequest<ResponseType extends Record<string, any> = MockedResponse<string>>(request: MockedRequest, handlers: RequestHandler[], options: RequiredDeep<SharedOptions>, emitter: StrictEventEmitter<ServerLifecycleEventsMap>, handleRequestOptions?: HandleRequestOptions<ResponseType>): Promise<ResponseType | undefined>;
|
|
353
348
|
|
package/lib/index.js
CHANGED
|
@@ -1091,10 +1091,7 @@ var RestHandler = class extends RequestHandler {
|
|
|
1091
1091
|
const statusColor = getStatusCodeColor(response2.status);
|
|
1092
1092
|
console.groupCollapsed(devUtils.formatMessage("%s %s %s (%c%s%c)"), getTimestamp(), request.method, publicUrl, `color:${statusColor}`, `${response2.status} ${response2.statusText}`, "color:inherit");
|
|
1093
1093
|
console.log("Request", loggedRequest);
|
|
1094
|
-
console.log("Handler:",
|
|
1095
|
-
mask: this.info.path,
|
|
1096
|
-
resolver: this.resolver
|
|
1097
|
-
});
|
|
1094
|
+
console.log("Handler:", this);
|
|
1098
1095
|
console.log("Response", loggedResponse);
|
|
1099
1096
|
console.groupEnd();
|
|
1100
1097
|
}
|
|
@@ -1196,7 +1193,7 @@ Consider naming this operation or using "graphql.operation" request handler to i
|
|
|
1196
1193
|
const hasMatchingOperationName = this.info.operationName instanceof RegExp ? this.info.operationName.test(parsedResult.operationName || "") : parsedResult.operationName === this.info.operationName;
|
|
1197
1194
|
return hasMatchingUrl.matches && hasMatchingOperationType && hasMatchingOperationName;
|
|
1198
1195
|
}
|
|
1199
|
-
log(request, response2,
|
|
1196
|
+
log(request, response2, parsedRequest) {
|
|
1200
1197
|
const loggedRequest = prepareRequest(request);
|
|
1201
1198
|
const loggedResponse = prepareResponse(response2);
|
|
1202
1199
|
const statusColor = getStatusCodeColor(response2.status);
|
|
@@ -1327,7 +1324,7 @@ function readResponseCookies(request, response2) {
|
|
|
1327
1324
|
|
|
1328
1325
|
// src/utils/handleRequest.ts
|
|
1329
1326
|
async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
|
|
1330
|
-
var _a, _b, _c, _d, _e, _f
|
|
1327
|
+
var _a, _b, _c, _d, _e, _f;
|
|
1331
1328
|
emitter.emit("request:start", request);
|
|
1332
1329
|
if (request.headers.get("x-msw-bypass") === "true") {
|
|
1333
1330
|
emitter.emit("request:end", request);
|
|
@@ -1368,11 +1365,21 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1368
1365
|
const requiredLookupResult = lookupResult;
|
|
1369
1366
|
const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
|
|
1370
1367
|
(_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1371
|
-
(_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1372
1368
|
emitter.emit("request:end", request);
|
|
1373
1369
|
return transformedResponse;
|
|
1374
1370
|
}
|
|
1375
1371
|
|
|
1372
|
+
// src/utils/logging/serializeResponse.ts
|
|
1373
|
+
var import_headers_polyfill8 = require("headers-polyfill");
|
|
1374
|
+
function serializeResponse(source) {
|
|
1375
|
+
return {
|
|
1376
|
+
status: source.status,
|
|
1377
|
+
statusText: source.statusText,
|
|
1378
|
+
headers: (0, import_headers_polyfill8.flattenHeadersObject)((0, import_headers_polyfill8.headersToObject)(source.headers)),
|
|
1379
|
+
body: source.body
|
|
1380
|
+
};
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1376
1383
|
// src/setupWorker/start/createRequestListener.ts
|
|
1377
1384
|
var createRequestListener = (context, options) => {
|
|
1378
1385
|
return async (event, message) => {
|
|
@@ -1384,7 +1391,7 @@ var createRequestListener = (context, options) => {
|
|
|
1384
1391
|
onPassthroughResponse() {
|
|
1385
1392
|
messageChannel.postMessage("NOT_FOUND");
|
|
1386
1393
|
},
|
|
1387
|
-
async onMockedResponse(response2) {
|
|
1394
|
+
async onMockedResponse(response2, { handler, publicRequest, parsedRequest }) {
|
|
1388
1395
|
if (response2.body instanceof ReadableStream) {
|
|
1389
1396
|
throw new Error(devUtils.formatMessage('Failed to construct a mocked response with a "ReadableStream" body: mocked streams are not supported. Follow https://github.com/mswjs/msw/issues/1336 for more details.'));
|
|
1390
1397
|
}
|
|
@@ -1394,12 +1401,11 @@ var createRequestListener = (context, options) => {
|
|
|
1394
1401
|
messageChannel.postMessage("MOCK_RESPONSE", __spreadProps(__spreadValues({}, response2), {
|
|
1395
1402
|
body: responseBody
|
|
1396
1403
|
}), [responseBodyBuffer]);
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1404
|
+
if (!options.quiet) {
|
|
1405
|
+
context.emitter.once("response:mocked", (response3) => {
|
|
1406
|
+
handler.log(publicRequest, serializeResponse(response3), parsedRequest);
|
|
1407
|
+
});
|
|
1401
1408
|
}
|
|
1402
|
-
handler.log(publicRequest, response2, handler, parsedRequest);
|
|
1403
1409
|
}
|
|
1404
1410
|
});
|
|
1405
1411
|
} catch (error2) {
|
|
@@ -1625,11 +1631,44 @@ function prepareStartHandler(handler, context) {
|
|
|
1625
1631
|
}
|
|
1626
1632
|
|
|
1627
1633
|
// src/setupWorker/start/createFallbackRequestListener.ts
|
|
1628
|
-
var
|
|
1634
|
+
var import_interceptors4 = require("@mswjs/interceptors");
|
|
1629
1635
|
var import_fetch3 = require("@mswjs/interceptors/lib/interceptors/fetch");
|
|
1630
1636
|
var import_XMLHttpRequest = require("@mswjs/interceptors/lib/interceptors/XMLHttpRequest");
|
|
1637
|
+
|
|
1638
|
+
// src/utils/request/createResponseFromIsomorphicResponse.ts
|
|
1639
|
+
var import_interceptors3 = require("@mswjs/interceptors");
|
|
1640
|
+
var noop = () => {
|
|
1641
|
+
throw new Error("Not implemented");
|
|
1642
|
+
};
|
|
1643
|
+
function createResponseFromIsomorphicResponse(response2) {
|
|
1644
|
+
return __spreadProps(__spreadValues({}, response2), {
|
|
1645
|
+
ok: response2.status >= 200 && response2.status < 300,
|
|
1646
|
+
url: "",
|
|
1647
|
+
type: "default",
|
|
1648
|
+
status: response2.status,
|
|
1649
|
+
statusText: response2.statusText,
|
|
1650
|
+
headers: response2.headers,
|
|
1651
|
+
body: new ReadableStream(),
|
|
1652
|
+
redirected: response2.headers.get("Location") != null,
|
|
1653
|
+
async text() {
|
|
1654
|
+
return response2.body || "";
|
|
1655
|
+
},
|
|
1656
|
+
async json() {
|
|
1657
|
+
return JSON.parse(response2.body || "");
|
|
1658
|
+
},
|
|
1659
|
+
async arrayBuffer() {
|
|
1660
|
+
return (0, import_interceptors3.encodeBuffer)(response2.body || "");
|
|
1661
|
+
},
|
|
1662
|
+
bodyUsed: false,
|
|
1663
|
+
formData: noop,
|
|
1664
|
+
blob: noop,
|
|
1665
|
+
clone: noop
|
|
1666
|
+
});
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
// src/setupWorker/start/createFallbackRequestListener.ts
|
|
1631
1670
|
function createFallbackRequestListener(context, options) {
|
|
1632
|
-
const interceptor = new
|
|
1671
|
+
const interceptor = new import_interceptors4.BatchInterceptor({
|
|
1633
1672
|
name: "fallback",
|
|
1634
1673
|
interceptors: [new import_fetch3.FetchInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor()]
|
|
1635
1674
|
});
|
|
@@ -1647,9 +1686,11 @@ function createFallbackRequestListener(context, options) {
|
|
|
1647
1686
|
delay: response3.delay
|
|
1648
1687
|
};
|
|
1649
1688
|
},
|
|
1650
|
-
|
|
1689
|
+
onMockedResponse(_, { handler, publicRequest, parsedRequest }) {
|
|
1651
1690
|
if (!options.quiet) {
|
|
1652
|
-
|
|
1691
|
+
context.emitter.once("response:mocked", (response3) => {
|
|
1692
|
+
handler.log(publicRequest, serializeResponse(response3), parsedRequest);
|
|
1693
|
+
});
|
|
1653
1694
|
}
|
|
1654
1695
|
}
|
|
1655
1696
|
});
|
|
@@ -1657,6 +1698,17 @@ function createFallbackRequestListener(context, options) {
|
|
|
1657
1698
|
request.respondWith(response2);
|
|
1658
1699
|
}
|
|
1659
1700
|
});
|
|
1701
|
+
interceptor.on("response", (request, response2) => {
|
|
1702
|
+
if (!request.id) {
|
|
1703
|
+
return;
|
|
1704
|
+
}
|
|
1705
|
+
const browserResponse = createResponseFromIsomorphicResponse(response2);
|
|
1706
|
+
if (response2.headers.get("x-powered-by") === "msw") {
|
|
1707
|
+
context.emitter.emit("response:mocked", browserResponse, request.id);
|
|
1708
|
+
} else {
|
|
1709
|
+
context.emitter.emit("response:bypass", browserResponse, request.id);
|
|
1710
|
+
}
|
|
1711
|
+
});
|
|
1660
1712
|
interceptor.apply();
|
|
1661
1713
|
return interceptor;
|
|
1662
1714
|
}
|