msw 0.42.3 → 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 +67 -21
- package/lib/iife/index.js.map +1 -1
- package/lib/index.js +65 -19
- package/lib/index.js.map +1 -1
- package/lib/mockServiceWorker.js +162 -133
- 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 {
|
|
@@ -1355,24 +1356,69 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1355
1356
|
return transformedResponse;
|
|
1356
1357
|
}
|
|
1357
1358
|
|
|
1358
|
-
// src/utils/
|
|
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
|
|
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
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
|
|
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
|
|
1359
1401
|
var createRequestListener = (context, options) => {
|
|
1360
1402
|
return async (event, message) => {
|
|
1361
|
-
const
|
|
1403
|
+
const messageChannel = createMessageChannel(event);
|
|
1362
1404
|
try {
|
|
1363
1405
|
const request = parseWorkerRequest(message.payload);
|
|
1406
|
+
const operationChannel = new StrictBroadcastChannel(`msw-response-stream-${request.id}`);
|
|
1364
1407
|
await handleRequest(request, context.requestHandlers, options, context.emitter, {
|
|
1365
1408
|
transformResponse,
|
|
1366
1409
|
onPassthroughResponse() {
|
|
1367
|
-
return
|
|
1410
|
+
return messageChannel.send({
|
|
1368
1411
|
type: "MOCK_NOT_FOUND"
|
|
1369
1412
|
});
|
|
1370
1413
|
},
|
|
1371
1414
|
onMockedResponse(response2) {
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1415
|
+
if (response2.body == null) {
|
|
1416
|
+
return messageChannel.send({
|
|
1417
|
+
type: "MOCK_RESPONSE",
|
|
1418
|
+
payload: response2
|
|
1419
|
+
});
|
|
1420
|
+
}
|
|
1421
|
+
streamResponse(operationChannel, messageChannel, response2);
|
|
1376
1422
|
},
|
|
1377
1423
|
onMockedResponseSent(response2, { handler, publicRequest, parsedRequest }) {
|
|
1378
1424
|
if (options.quiet) {
|
|
@@ -1383,7 +1429,7 @@ var createRequestListener = (context, options) => {
|
|
|
1383
1429
|
});
|
|
1384
1430
|
} catch (error2) {
|
|
1385
1431
|
if (error2 instanceof NetworkError) {
|
|
1386
|
-
return
|
|
1432
|
+
return messageChannel.send({
|
|
1387
1433
|
type: "NETWORK_ERROR",
|
|
1388
1434
|
payload: {
|
|
1389
1435
|
name: error2.name,
|
|
@@ -1392,7 +1438,7 @@ var createRequestListener = (context, options) => {
|
|
|
1392
1438
|
});
|
|
1393
1439
|
}
|
|
1394
1440
|
if (error2 instanceof Error) {
|
|
1395
|
-
|
|
1441
|
+
messageChannel.send({
|
|
1396
1442
|
type: "INTERNAL_ERROR",
|
|
1397
1443
|
payload: {
|
|
1398
1444
|
status: 500,
|
|
@@ -1421,8 +1467,8 @@ function transformResponse(response2) {
|
|
|
1421
1467
|
async function requestIntegrityCheck(context, serviceWorker) {
|
|
1422
1468
|
context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
|
|
1423
1469
|
const { payload: actualChecksum } = await context.events.once("INTEGRITY_CHECK_RESPONSE");
|
|
1424
|
-
if (actualChecksum !== "
|
|
1425
|
-
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"}).`);
|
|
1426
1472
|
}
|
|
1427
1473
|
return serviceWorker;
|
|
1428
1474
|
}
|
|
@@ -1445,7 +1491,7 @@ function deferNetworkRequestsUntil(predicatePromise) {
|
|
|
1445
1491
|
};
|
|
1446
1492
|
}
|
|
1447
1493
|
|
|
1448
|
-
// src/
|
|
1494
|
+
// src/setupWorker/start/createResponseListener.ts
|
|
1449
1495
|
function createResponseListener(context) {
|
|
1450
1496
|
return (_, message) => {
|
|
1451
1497
|
var _a;
|
|
@@ -1599,7 +1645,7 @@ function prepareStartHandler(handler, context) {
|
|
|
1599
1645
|
};
|
|
1600
1646
|
}
|
|
1601
1647
|
|
|
1602
|
-
// src/
|
|
1648
|
+
// src/setupWorker/start/createFallbackRequestListener.ts
|
|
1603
1649
|
var import_interceptors = require("@mswjs/interceptors");
|
|
1604
1650
|
var import_fetch3 = require("@mswjs/interceptors/lib/interceptors/fetch");
|
|
1605
1651
|
var import_XMLHttpRequest = require("@mswjs/interceptors/lib/interceptors/XMLHttpRequest");
|
|
@@ -1629,7 +1675,7 @@ function parseIsomorphicRequest(request) {
|
|
|
1629
1675
|
return mockedRequest;
|
|
1630
1676
|
}
|
|
1631
1677
|
|
|
1632
|
-
// src/
|
|
1678
|
+
// src/setupWorker/start/createFallbackRequestListener.ts
|
|
1633
1679
|
function createFallbackRequestListener(context, options) {
|
|
1634
1680
|
const interceptor = new import_interceptors.BatchInterceptor({
|
|
1635
1681
|
name: "fallback",
|