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/lib/index.js CHANGED
@@ -424,17 +424,18 @@ async function enableMocking(context, options) {
424
424
  });
425
425
  }
426
426
 
427
- // src/utils/createBroadcastChannel.ts
428
- var createBroadcastChannel = (event) => {
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
- port.postMessage(message);
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/worker/createRequestListener.ts
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 channel = createBroadcastChannel(event);
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 channel.send({
1410
+ return messageChannel.send({
1368
1411
  type: "MOCK_NOT_FOUND"
1369
1412
  });
1370
1413
  },
1371
1414
  onMockedResponse(response2) {
1372
- channel.send({
1373
- type: "MOCK_SUCCESS",
1374
- payload: response2
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 channel.send({
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
- channel.send({
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 !== "02f4ad4a2797f85668baf196e553d929") {
1425
- throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"02f4ad4a2797f85668baf196e553d929"}).`);
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/utils/worker/createResponseListener.ts
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/utils/worker/createFallbackRequestListener.ts
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/utils/worker/createFallbackRequestListener.ts
1678
+ // src/setupWorker/start/createFallbackRequestListener.ts
1633
1679
  function createFallbackRequestListener(context, options) {
1634
1680
  const interceptor = new import_interceptors.BatchInterceptor({
1635
1681
  name: "fallback",