msw 0.44.1 → 0.46.0
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/{glossary-297d38ba.d.ts → glossary-c690f512.d.ts} +17 -7
- package/lib/iife/index.js +14293 -5456
- package/lib/iife/index.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +61 -93
- package/lib/index.js.map +1 -1
- package/lib/mockServiceWorker.js +5 -69
- package/lib/native/index.d.ts +1 -1
- package/lib/native/index.js +14 -5
- package/lib/native/index.mjs +14 -7
- package/lib/node/index.d.ts +2 -2
- package/lib/node/index.js +14 -5
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +14 -7
- package/lib/node/index.mjs.map +1 -1
- package/package.json +9 -5
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-c690f512.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-c690f512.js';
|
|
3
3
|
import * as cookieUtils from 'cookie';
|
|
4
4
|
import { GraphQLError, OperationTypeNode, DocumentNode } from 'graphql';
|
|
5
5
|
import { StrictEventEmitter } from 'strict-event-emitter';
|
package/lib/index.js
CHANGED
|
@@ -425,17 +425,15 @@ async function enableMocking(context, options) {
|
|
|
425
425
|
}
|
|
426
426
|
|
|
427
427
|
// src/setupWorker/start/utils/createMessageChannel.ts
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
};
|
|
438
|
-
}
|
|
428
|
+
var WorkerChannel = class {
|
|
429
|
+
constructor(port) {
|
|
430
|
+
this.port = port;
|
|
431
|
+
}
|
|
432
|
+
postMessage(event, ...rest2) {
|
|
433
|
+
const [data2, transfer] = rest2;
|
|
434
|
+
this.port.postMessage({ type: event, data: data2 }, { transfer });
|
|
435
|
+
}
|
|
436
|
+
};
|
|
439
437
|
|
|
440
438
|
// src/utils/NetworkError.ts
|
|
441
439
|
var NetworkError = class extends Error {
|
|
@@ -677,9 +675,6 @@ var getResponse = async (request, handlers, resolutionContext) => {
|
|
|
677
675
|
// src/utils/request/onUnhandledRequest.ts
|
|
678
676
|
var import_js_levenshtein = __toESM(require("js-levenshtein"));
|
|
679
677
|
|
|
680
|
-
// src/utils/internal/parseGraphQLRequest.ts
|
|
681
|
-
var import_graphql = require("graphql");
|
|
682
|
-
|
|
683
678
|
// src/utils/request/getPublicUrlFromRequest.ts
|
|
684
679
|
var getPublicUrlFromRequest = (request) => {
|
|
685
680
|
return request.referrer.startsWith(request.url.origin) ? request.url.pathname : new URL(request.url.pathname, `${request.url.protocol}//${request.url.host}`).href;
|
|
@@ -698,7 +693,8 @@ function parseDocumentNode(node) {
|
|
|
698
693
|
}
|
|
699
694
|
function parseQuery(query) {
|
|
700
695
|
try {
|
|
701
|
-
const
|
|
696
|
+
const { parse: parse3 } = require("graphql");
|
|
697
|
+
const ast = parse3(query);
|
|
702
698
|
return parseDocumentNode(ast);
|
|
703
699
|
} catch (error2) {
|
|
704
700
|
return error2;
|
|
@@ -1375,69 +1371,27 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1375
1371
|
return transformedResponse;
|
|
1376
1372
|
}
|
|
1377
1373
|
|
|
1378
|
-
// src/setupWorker/start/utils/streamResponse.ts
|
|
1379
|
-
var import_outvariant3 = require("outvariant");
|
|
1380
|
-
async function streamResponse(operationChannel, messageChannel, mockedResponse) {
|
|
1381
|
-
const response2 = new Response(mockedResponse.body, mockedResponse);
|
|
1382
|
-
delete mockedResponse.body;
|
|
1383
|
-
messageChannel.send({
|
|
1384
|
-
type: "MOCK_RESPONSE_START",
|
|
1385
|
-
payload: mockedResponse
|
|
1386
|
-
});
|
|
1387
|
-
(0, import_outvariant3.invariant)(response2.body, "Failed to stream mocked response with no body");
|
|
1388
|
-
const reader = response2.body.getReader();
|
|
1389
|
-
while (true) {
|
|
1390
|
-
const { done, value } = await reader.read();
|
|
1391
|
-
if (!done) {
|
|
1392
|
-
operationChannel.postMessage({
|
|
1393
|
-
type: "MOCK_RESPONSE_CHUNK",
|
|
1394
|
-
payload: value
|
|
1395
|
-
});
|
|
1396
|
-
continue;
|
|
1397
|
-
}
|
|
1398
|
-
operationChannel.postMessage({
|
|
1399
|
-
type: "MOCK_RESPONSE_END"
|
|
1400
|
-
});
|
|
1401
|
-
operationChannel.close();
|
|
1402
|
-
reader.releaseLock();
|
|
1403
|
-
break;
|
|
1404
|
-
}
|
|
1405
|
-
}
|
|
1406
|
-
|
|
1407
|
-
// src/utils/internal/StrictBroadcastChannel.ts
|
|
1408
|
-
var ParentClass = typeof BroadcastChannel == "undefined" ? class UnsupportedEnvironment {
|
|
1409
|
-
constructor() {
|
|
1410
|
-
throw new Error("Cannot construct BroadcastChannel in a non-browser environment");
|
|
1411
|
-
}
|
|
1412
|
-
} : BroadcastChannel;
|
|
1413
|
-
var StrictBroadcastChannel = class extends ParentClass {
|
|
1414
|
-
postMessage(message) {
|
|
1415
|
-
return super.postMessage(message);
|
|
1416
|
-
}
|
|
1417
|
-
};
|
|
1418
|
-
|
|
1419
1374
|
// src/setupWorker/start/createRequestListener.ts
|
|
1420
1375
|
var createRequestListener = (context, options) => {
|
|
1421
1376
|
return async (event, message) => {
|
|
1422
|
-
const messageChannel =
|
|
1377
|
+
const messageChannel = new WorkerChannel(event.ports[0]);
|
|
1378
|
+
const request = parseWorkerRequest(message.payload);
|
|
1423
1379
|
try {
|
|
1424
|
-
const request = parseWorkerRequest(message.payload);
|
|
1425
|
-
const operationChannel = new StrictBroadcastChannel(`msw-response-stream-${request.id}`);
|
|
1426
1380
|
await handleRequest(request, context.requestHandlers, options, context.emitter, {
|
|
1427
1381
|
transformResponse,
|
|
1428
1382
|
onPassthroughResponse() {
|
|
1429
|
-
|
|
1430
|
-
type: "MOCK_NOT_FOUND"
|
|
1431
|
-
});
|
|
1383
|
+
messageChannel.postMessage("NOT_FOUND");
|
|
1432
1384
|
},
|
|
1433
|
-
onMockedResponse(response2) {
|
|
1434
|
-
if (response2.body
|
|
1435
|
-
|
|
1436
|
-
type: "MOCK_RESPONSE",
|
|
1437
|
-
payload: response2
|
|
1438
|
-
});
|
|
1385
|
+
async onMockedResponse(response2) {
|
|
1386
|
+
if (response2.body instanceof ReadableStream) {
|
|
1387
|
+
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.'));
|
|
1439
1388
|
}
|
|
1440
|
-
|
|
1389
|
+
const responseInstance = new Response(response2.body, response2);
|
|
1390
|
+
const responseBodyBuffer = await responseInstance.arrayBuffer();
|
|
1391
|
+
const responseBody = response2.body == null ? null : responseBodyBuffer;
|
|
1392
|
+
messageChannel.postMessage("MOCK_RESPONSE", __spreadProps(__spreadValues({}, response2), {
|
|
1393
|
+
body: responseBody
|
|
1394
|
+
}), [responseBodyBuffer]);
|
|
1441
1395
|
},
|
|
1442
1396
|
onMockedResponseSent(response2, { handler, publicRequest, parsedRequest }) {
|
|
1443
1397
|
if (options.quiet) {
|
|
@@ -1448,25 +1402,29 @@ var createRequestListener = (context, options) => {
|
|
|
1448
1402
|
});
|
|
1449
1403
|
} catch (error2) {
|
|
1450
1404
|
if (error2 instanceof NetworkError) {
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
name: error2.name,
|
|
1455
|
-
message: error2.message
|
|
1456
|
-
}
|
|
1405
|
+
messageChannel.postMessage("NETWORK_ERROR", {
|
|
1406
|
+
name: error2.name,
|
|
1407
|
+
message: error2.message
|
|
1457
1408
|
});
|
|
1409
|
+
return;
|
|
1458
1410
|
}
|
|
1459
1411
|
if (error2 instanceof Error) {
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1412
|
+
devUtils.error(`Uncaught exception in the request handler for "%s %s":
|
|
1413
|
+
|
|
1414
|
+
%s
|
|
1415
|
+
|
|
1416
|
+
This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/recipes/mocking-error-responses`, request.method, request.url, error2);
|
|
1417
|
+
messageChannel.postMessage("MOCK_RESPONSE", {
|
|
1418
|
+
status: 500,
|
|
1419
|
+
statusText: "Request Handler Error",
|
|
1420
|
+
headers: {
|
|
1421
|
+
"Content-Type": "application/json"
|
|
1422
|
+
},
|
|
1423
|
+
body: JSON.stringify({
|
|
1424
|
+
name: error2.name,
|
|
1425
|
+
message: error2.message,
|
|
1426
|
+
stack: error2.stack
|
|
1427
|
+
})
|
|
1470
1428
|
});
|
|
1471
1429
|
}
|
|
1472
1430
|
}
|
|
@@ -1486,8 +1444,8 @@ function transformResponse(response2) {
|
|
|
1486
1444
|
async function requestIntegrityCheck(context, serviceWorker) {
|
|
1487
1445
|
context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
|
|
1488
1446
|
const { payload: actualChecksum } = await context.events.once("INTEGRITY_CHECK_RESPONSE");
|
|
1489
|
-
if (actualChecksum !== "
|
|
1490
|
-
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"
|
|
1447
|
+
if (actualChecksum !== "b3066ef78c2f9090b4ce87e874965995") {
|
|
1448
|
+
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"b3066ef78c2f9090b4ce87e874965995"}).`);
|
|
1491
1449
|
}
|
|
1492
1450
|
return serviceWorker;
|
|
1493
1451
|
}
|
|
@@ -1735,6 +1693,13 @@ function pipeEvents(source, destination) {
|
|
|
1735
1693
|
source.emit._isPiped = true;
|
|
1736
1694
|
}
|
|
1737
1695
|
|
|
1696
|
+
// src/utils/internal/toReadonlyArray.ts
|
|
1697
|
+
function toReadonlyArray(source) {
|
|
1698
|
+
const clone = [...source];
|
|
1699
|
+
Object.freeze(clone);
|
|
1700
|
+
return clone;
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1738
1703
|
// src/setupWorker/setupWorker.ts
|
|
1739
1704
|
var listeners = [];
|
|
1740
1705
|
function setupWorker(...requestHandlers) {
|
|
@@ -1829,8 +1794,12 @@ function setupWorker(...requestHandlers) {
|
|
|
1829
1794
|
resetHandlers(...nextHandlers) {
|
|
1830
1795
|
context.requestHandlers = resetHandlers(requestHandlers, ...nextHandlers);
|
|
1831
1796
|
},
|
|
1797
|
+
listHandlers() {
|
|
1798
|
+
return toReadonlyArray(context.requestHandlers);
|
|
1799
|
+
},
|
|
1832
1800
|
printHandlers() {
|
|
1833
|
-
|
|
1801
|
+
const handlers = this.listHandlers();
|
|
1802
|
+
handlers.forEach((handler) => {
|
|
1834
1803
|
const { header, callFrame } = handler.info;
|
|
1835
1804
|
const pragma = handler.info.hasOwnProperty("operationType") ? "[graphql]" : "[rest]";
|
|
1836
1805
|
console.groupCollapsed(`${pragma} ${header}`);
|
|
@@ -1876,7 +1845,6 @@ var rest = {
|
|
|
1876
1845
|
};
|
|
1877
1846
|
|
|
1878
1847
|
// src/graphql.ts
|
|
1879
|
-
var import_graphql2 = require("graphql");
|
|
1880
1848
|
function createScopedGraphQLHandler(operationType, url) {
|
|
1881
1849
|
return (operationName, resolver) => {
|
|
1882
1850
|
return new GraphQLHandler(operationType, operationName, url, resolver);
|
|
@@ -1889,14 +1857,14 @@ function createGraphQLOperationHandler(url) {
|
|
|
1889
1857
|
}
|
|
1890
1858
|
var standardGraphQLHandlers = {
|
|
1891
1859
|
operation: createGraphQLOperationHandler("*"),
|
|
1892
|
-
query: createScopedGraphQLHandler(
|
|
1893
|
-
mutation: createScopedGraphQLHandler(
|
|
1860
|
+
query: createScopedGraphQLHandler("query", "*"),
|
|
1861
|
+
mutation: createScopedGraphQLHandler("mutation", "*")
|
|
1894
1862
|
};
|
|
1895
1863
|
function createGraphQLLink(url) {
|
|
1896
1864
|
return {
|
|
1897
1865
|
operation: createGraphQLOperationHandler(url),
|
|
1898
|
-
query: createScopedGraphQLHandler(
|
|
1899
|
-
mutation: createScopedGraphQLHandler(
|
|
1866
|
+
query: createScopedGraphQLHandler("query", url),
|
|
1867
|
+
mutation: createScopedGraphQLHandler("mutation", url)
|
|
1900
1868
|
};
|
|
1901
1869
|
}
|
|
1902
1870
|
var graphql = __spreadProps(__spreadValues({}, standardGraphQLHandlers), {
|