msw 0.42.1 → 0.43.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/README.md +10 -1
- package/lib/iife/index.js +73 -33
- package/lib/iife/index.js.map +1 -1
- package/lib/index.js +71 -31
- package/lib/index.js.map +1 -1
- package/lib/mockServiceWorker.js +162 -133
- package/lib/native/index.js +16 -16
- package/lib/native/index.mjs +16 -16
- package/lib/node/index.js +16 -16
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +16 -16
- package/lib/node/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -424,17 +424,18 @@ async function enableMocking(context, options) {
|
|
|
424
424
|
});
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
// src/utils/
|
|
428
|
-
|
|
427
|
+
// src/setupWorker/start/utils/createMessageChannel.ts
|
|
428
|
+
function createMessageChannel(event) {
|
|
429
429
|
const port = event.ports[0];
|
|
430
430
|
return {
|
|
431
431
|
send(message) {
|
|
432
|
-
if (port) {
|
|
433
|
-
|
|
432
|
+
if (!port) {
|
|
433
|
+
return;
|
|
434
434
|
}
|
|
435
|
+
port.postMessage(message);
|
|
435
436
|
}
|
|
436
437
|
};
|
|
437
|
-
}
|
|
438
|
+
}
|
|
438
439
|
|
|
439
440
|
// src/utils/NetworkError.ts
|
|
440
441
|
var NetworkError = class extends Error {
|
|
@@ -1309,7 +1310,7 @@ function readResponseCookies(request, response2) {
|
|
|
1309
1310
|
|
|
1310
1311
|
// src/utils/handleRequest.ts
|
|
1311
1312
|
async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
|
|
1312
|
-
var _a, _b, _c, _d;
|
|
1313
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1313
1314
|
emitter.emit("request:start", request);
|
|
1314
1315
|
if (request.headers.get("x-msw-bypass") === "true") {
|
|
1315
1316
|
emitter.emit("request:end", request);
|
|
@@ -1347,38 +1348,77 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1347
1348
|
}
|
|
1348
1349
|
readResponseCookies(request, response2);
|
|
1349
1350
|
emitter.emit("request:match", request);
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1351
|
+
const requiredLookupResult = lookupResult;
|
|
1352
|
+
const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
|
|
1353
|
+
(_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1354
|
+
(_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1355
|
+
emitter.emit("request:end", request);
|
|
1356
|
+
return transformedResponse;
|
|
1357
|
+
}
|
|
1358
|
+
|
|
1359
|
+
// src/setupWorker/start/utils/streamResponse.ts
|
|
1360
|
+
var import_outvariant3 = require("outvariant");
|
|
1361
|
+
async function streamResponse(operationChannel, messageChannel, mockedResponse) {
|
|
1362
|
+
const response2 = new Response(mockedResponse.body, mockedResponse);
|
|
1363
|
+
delete mockedResponse.body;
|
|
1364
|
+
messageChannel.send({
|
|
1365
|
+
type: "MOCK_RESPONSE_START",
|
|
1366
|
+
payload: mockedResponse
|
|
1361
1367
|
});
|
|
1368
|
+
(0, import_outvariant3.invariant)(response2.body, "Failed to stream mocked response with no body");
|
|
1369
|
+
const reader = response2.body.getReader();
|
|
1370
|
+
while (true) {
|
|
1371
|
+
const { done, value } = await reader.read();
|
|
1372
|
+
if (!done) {
|
|
1373
|
+
operationChannel.postMessage({
|
|
1374
|
+
type: "MOCK_RESPONSE_CHUNK",
|
|
1375
|
+
payload: value
|
|
1376
|
+
});
|
|
1377
|
+
continue;
|
|
1378
|
+
}
|
|
1379
|
+
operationChannel.postMessage({
|
|
1380
|
+
type: "MOCK_RESPONSE_END"
|
|
1381
|
+
});
|
|
1382
|
+
operationChannel.close();
|
|
1383
|
+
reader.releaseLock();
|
|
1384
|
+
break;
|
|
1385
|
+
}
|
|
1362
1386
|
}
|
|
1363
1387
|
|
|
1364
|
-
// src/utils/
|
|
1388
|
+
// src/utils/internal/StrictBroadcastChannel.ts
|
|
1389
|
+
var ParentClass = typeof BroadcastChannel == "undefined" ? class UnsupportedEnvironment {
|
|
1390
|
+
constructor() {
|
|
1391
|
+
throw new Error("Cannot construct BroadcastChannel in a non-browser environment");
|
|
1392
|
+
}
|
|
1393
|
+
} : BroadcastChannel;
|
|
1394
|
+
var StrictBroadcastChannel = class extends ParentClass {
|
|
1395
|
+
postMessage(message) {
|
|
1396
|
+
return super.postMessage(message);
|
|
1397
|
+
}
|
|
1398
|
+
};
|
|
1399
|
+
|
|
1400
|
+
// src/setupWorker/start/createRequestListener.ts
|
|
1365
1401
|
var createRequestListener = (context, options) => {
|
|
1366
1402
|
return async (event, message) => {
|
|
1367
|
-
const
|
|
1403
|
+
const messageChannel = createMessageChannel(event);
|
|
1368
1404
|
try {
|
|
1369
1405
|
const request = parseWorkerRequest(message.payload);
|
|
1406
|
+
const operationChannel = new StrictBroadcastChannel(`msw-response-stream-${request.id}`);
|
|
1370
1407
|
await handleRequest(request, context.requestHandlers, options, context.emitter, {
|
|
1371
1408
|
transformResponse,
|
|
1372
1409
|
onPassthroughResponse() {
|
|
1373
|
-
return
|
|
1410
|
+
return messageChannel.send({
|
|
1374
1411
|
type: "MOCK_NOT_FOUND"
|
|
1375
1412
|
});
|
|
1376
1413
|
},
|
|
1377
1414
|
onMockedResponse(response2) {
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1415
|
+
if (response2.body == null) {
|
|
1416
|
+
return messageChannel.send({
|
|
1417
|
+
type: "MOCK_RESPONSE",
|
|
1418
|
+
payload: response2
|
|
1419
|
+
});
|
|
1420
|
+
}
|
|
1421
|
+
streamResponse(operationChannel, messageChannel, response2);
|
|
1382
1422
|
},
|
|
1383
1423
|
onMockedResponseSent(response2, { handler, publicRequest, parsedRequest }) {
|
|
1384
1424
|
if (options.quiet) {
|
|
@@ -1389,7 +1429,7 @@ var createRequestListener = (context, options) => {
|
|
|
1389
1429
|
});
|
|
1390
1430
|
} catch (error2) {
|
|
1391
1431
|
if (error2 instanceof NetworkError) {
|
|
1392
|
-
return
|
|
1432
|
+
return messageChannel.send({
|
|
1393
1433
|
type: "NETWORK_ERROR",
|
|
1394
1434
|
payload: {
|
|
1395
1435
|
name: error2.name,
|
|
@@ -1398,7 +1438,7 @@ var createRequestListener = (context, options) => {
|
|
|
1398
1438
|
});
|
|
1399
1439
|
}
|
|
1400
1440
|
if (error2 instanceof Error) {
|
|
1401
|
-
|
|
1441
|
+
messageChannel.send({
|
|
1402
1442
|
type: "INTERNAL_ERROR",
|
|
1403
1443
|
payload: {
|
|
1404
1444
|
status: 500,
|
|
@@ -1427,8 +1467,8 @@ function transformResponse(response2) {
|
|
|
1427
1467
|
async function requestIntegrityCheck(context, serviceWorker) {
|
|
1428
1468
|
context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
|
|
1429
1469
|
const { payload: actualChecksum } = await context.events.once("INTEGRITY_CHECK_RESPONSE");
|
|
1430
|
-
if (actualChecksum !== "
|
|
1431
|
-
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"
|
|
1470
|
+
if (actualChecksum !== "c9450df6e4dc5e45740c3b0b640727a2") {
|
|
1471
|
+
throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"c9450df6e4dc5e45740c3b0b640727a2"}).`);
|
|
1432
1472
|
}
|
|
1433
1473
|
return serviceWorker;
|
|
1434
1474
|
}
|
|
@@ -1451,7 +1491,7 @@ function deferNetworkRequestsUntil(predicatePromise) {
|
|
|
1451
1491
|
};
|
|
1452
1492
|
}
|
|
1453
1493
|
|
|
1454
|
-
// src/
|
|
1494
|
+
// src/setupWorker/start/createResponseListener.ts
|
|
1455
1495
|
function createResponseListener(context) {
|
|
1456
1496
|
return (_, message) => {
|
|
1457
1497
|
var _a;
|
|
@@ -1605,7 +1645,7 @@ function prepareStartHandler(handler, context) {
|
|
|
1605
1645
|
};
|
|
1606
1646
|
}
|
|
1607
1647
|
|
|
1608
|
-
// src/
|
|
1648
|
+
// src/setupWorker/start/createFallbackRequestListener.ts
|
|
1609
1649
|
var import_interceptors = require("@mswjs/interceptors");
|
|
1610
1650
|
var import_fetch3 = require("@mswjs/interceptors/lib/interceptors/fetch");
|
|
1611
1651
|
var import_XMLHttpRequest = require("@mswjs/interceptors/lib/interceptors/XMLHttpRequest");
|
|
@@ -1635,7 +1675,7 @@ function parseIsomorphicRequest(request) {
|
|
|
1635
1675
|
return mockedRequest;
|
|
1636
1676
|
}
|
|
1637
1677
|
|
|
1638
|
-
// src/
|
|
1678
|
+
// src/setupWorker/start/createFallbackRequestListener.ts
|
|
1639
1679
|
function createFallbackRequestListener(context, options) {
|
|
1640
1680
|
const interceptor = new import_interceptors.BatchInterceptor({
|
|
1641
1681
|
name: "fallback",
|