msw 2.3.0-ws.rc-6 → 2.3.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.
Files changed (190) hide show
  1. package/cli/init.js +0 -0
  2. package/config/scripts/postinstall.js +0 -0
  3. package/lib/browser/index.d.mts +6 -7
  4. package/lib/browser/index.d.ts +6 -7
  5. package/lib/browser/index.js +156 -83
  6. package/lib/browser/index.js.map +1 -1
  7. package/lib/browser/index.mjs +156 -83
  8. package/lib/browser/index.mjs.map +1 -1
  9. package/lib/core/{GraphQLHandler-DGyzNtRQ.d.ts → GraphQLHandler-COiPfZ8k.d.ts} +1 -1
  10. package/lib/core/{GraphQLHandler-CzcXr7At.d.mts → GraphQLHandler-Dq_WRbKe.d.mts} +1 -1
  11. package/lib/core/{HttpResponse-BOzDwzB6.d.ts → HttpResponse-B07UKAkU.d.ts} +2 -2
  12. package/lib/core/{HttpResponse-CSyJ1cbO.d.mts → HttpResponse-C7niBMwb.d.mts} +2 -2
  13. package/lib/core/HttpResponse.d.mts +1 -1
  14. package/lib/core/HttpResponse.d.ts +1 -1
  15. package/lib/core/SetupApi.d.mts +12 -15
  16. package/lib/core/SetupApi.d.ts +12 -15
  17. package/lib/core/SetupApi.js +1 -3
  18. package/lib/core/SetupApi.js.map +1 -1
  19. package/lib/core/SetupApi.mjs +1 -3
  20. package/lib/core/SetupApi.mjs.map +1 -1
  21. package/lib/core/getResponse.d.mts +1 -1
  22. package/lib/core/getResponse.d.ts +1 -1
  23. package/lib/core/graphql.d.mts +2 -2
  24. package/lib/core/graphql.d.ts +2 -2
  25. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  26. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  27. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  28. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  29. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  30. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  31. package/lib/core/http.d.mts +1 -1
  32. package/lib/core/http.d.ts +1 -1
  33. package/lib/core/index.d.mts +2 -5
  34. package/lib/core/index.d.ts +2 -5
  35. package/lib/core/index.js +1 -5
  36. package/lib/core/index.js.map +1 -1
  37. package/lib/core/index.mjs +1 -7
  38. package/lib/core/index.mjs.map +1 -1
  39. package/lib/core/passthrough.d.mts +1 -1
  40. package/lib/core/passthrough.d.ts +1 -1
  41. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  42. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  43. package/lib/core/utils/executeHandlers.d.mts +1 -1
  44. package/lib/core/utils/executeHandlers.d.ts +1 -1
  45. package/lib/core/utils/executeHandlers.js +0 -4
  46. package/lib/core/utils/executeHandlers.js.map +1 -1
  47. package/lib/core/utils/executeHandlers.mjs +0 -6
  48. package/lib/core/utils/executeHandlers.mjs.map +1 -1
  49. package/lib/core/utils/handleRequest.d.mts +2 -2
  50. package/lib/core/utils/handleRequest.d.ts +2 -2
  51. package/lib/core/utils/handleRequest.js.map +1 -1
  52. package/lib/core/utils/handleRequest.mjs.map +1 -1
  53. package/lib/core/utils/internal/Disposable.d.mts +2 -2
  54. package/lib/core/utils/internal/Disposable.d.ts +2 -2
  55. package/lib/core/utils/internal/Disposable.js +5 -2
  56. package/lib/core/utils/internal/Disposable.js.map +1 -1
  57. package/lib/core/utils/internal/Disposable.mjs +5 -2
  58. package/lib/core/utils/internal/Disposable.mjs.map +1 -1
  59. package/lib/core/utils/internal/devUtils.d.mts +10 -1
  60. package/lib/core/utils/internal/devUtils.d.ts +10 -1
  61. package/lib/core/utils/internal/devUtils.js +7 -0
  62. package/lib/core/utils/internal/devUtils.js.map +1 -1
  63. package/lib/core/utils/internal/devUtils.mjs +7 -0
  64. package/lib/core/utils/internal/devUtils.mjs.map +1 -1
  65. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  66. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  67. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  68. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  69. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  70. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  71. package/lib/core/utils/logging/getTimestamp.d.mts +1 -4
  72. package/lib/core/utils/logging/getTimestamp.d.ts +1 -4
  73. package/lib/core/utils/logging/getTimestamp.js +2 -6
  74. package/lib/core/utils/logging/getTimestamp.js.map +1 -1
  75. package/lib/core/utils/logging/getTimestamp.mjs +2 -6
  76. package/lib/core/utils/logging/getTimestamp.mjs.map +1 -1
  77. package/lib/core/utils/matching/matchRequestUrl.d.mts +1 -2
  78. package/lib/core/utils/matching/matchRequestUrl.d.ts +1 -2
  79. package/lib/core/utils/matching/matchRequestUrl.js +0 -4
  80. package/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
  81. package/lib/core/utils/matching/matchRequestUrl.mjs +0 -4
  82. package/lib/core/utils/matching/matchRequestUrl.mjs.map +1 -1
  83. package/lib/core/utils/request/onUnhandledRequest.js +3 -3
  84. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
  85. package/lib/core/utils/request/onUnhandledRequest.mjs +4 -4
  86. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
  87. package/lib/iife/index.js +177 -1103
  88. package/lib/iife/index.js.map +1 -1
  89. package/lib/mockServiceWorker.js +1 -1
  90. package/lib/native/index.d.mts +5 -6
  91. package/lib/native/index.d.ts +5 -6
  92. package/lib/native/index.js +5 -13
  93. package/lib/native/index.js.map +1 -1
  94. package/lib/native/index.mjs +6 -14
  95. package/lib/native/index.mjs.map +1 -1
  96. package/lib/node/index.d.mts +7 -8
  97. package/lib/node/index.d.ts +7 -8
  98. package/lib/node/index.js +5 -13
  99. package/lib/node/index.js.map +1 -1
  100. package/lib/node/index.mjs +6 -14
  101. package/lib/node/index.mjs.map +1 -1
  102. package/package.json +36 -29
  103. package/src/browser/setupWorker/glossary.ts +10 -10
  104. package/src/browser/setupWorker/setupWorker.ts +3 -34
  105. package/src/browser/setupWorker/stop/createStop.ts +0 -4
  106. package/src/core/SetupApi.ts +20 -28
  107. package/src/core/index.ts +1 -8
  108. package/src/core/utils/executeHandlers.ts +2 -6
  109. package/src/core/utils/handleRequest.ts +2 -1
  110. package/src/core/utils/internal/Disposable.ts +6 -3
  111. package/src/core/utils/internal/devUtils.test.ts +21 -0
  112. package/src/core/utils/internal/devUtils.ts +13 -0
  113. package/src/core/utils/logging/getTimestamp.test.ts +6 -20
  114. package/src/core/utils/logging/getTimestamp.ts +6 -11
  115. package/src/core/utils/matching/matchRequestUrl.test.ts +0 -44
  116. package/src/core/utils/matching/matchRequestUrl.ts +0 -4
  117. package/src/core/utils/request/onUnhandledRequest.test.ts +30 -4
  118. package/src/core/utils/request/onUnhandledRequest.ts +4 -4
  119. package/src/node/SetupServerApi.ts +7 -8
  120. package/src/node/SetupServerCommonApi.ts +8 -15
  121. package/src/node/glossary.ts +7 -5
  122. package/src/node/setupServer.ts +1 -2
  123. package/lib/core/handlers/WebSocketHandler.d.mts +0 -32
  124. package/lib/core/handlers/WebSocketHandler.d.ts +0 -32
  125. package/lib/core/handlers/WebSocketHandler.js +0 -62
  126. package/lib/core/handlers/WebSocketHandler.js.map +0 -1
  127. package/lib/core/handlers/WebSocketHandler.mjs +0 -44
  128. package/lib/core/handlers/WebSocketHandler.mjs.map +0 -1
  129. package/lib/core/ws/WebSocketClientManager.d.mts +0 -58
  130. package/lib/core/ws/WebSocketClientManager.d.ts +0 -58
  131. package/lib/core/ws/WebSocketClientManager.js +0 -162
  132. package/lib/core/ws/WebSocketClientManager.js.map +0 -1
  133. package/lib/core/ws/WebSocketClientManager.mjs +0 -142
  134. package/lib/core/ws/WebSocketClientManager.mjs.map +0 -1
  135. package/lib/core/ws/handleWebSocketEvent.d.mts +0 -16
  136. package/lib/core/ws/handleWebSocketEvent.d.ts +0 -16
  137. package/lib/core/ws/handleWebSocketEvent.js +0 -56
  138. package/lib/core/ws/handleWebSocketEvent.js.map +0 -1
  139. package/lib/core/ws/handleWebSocketEvent.mjs +0 -36
  140. package/lib/core/ws/handleWebSocketEvent.mjs.map +0 -1
  141. package/lib/core/ws/utils/attachWebSocketLogger.d.mts +0 -34
  142. package/lib/core/ws/utils/attachWebSocketLogger.d.ts +0 -34
  143. package/lib/core/ws/utils/attachWebSocketLogger.js +0 -217
  144. package/lib/core/ws/utils/attachWebSocketLogger.js.map +0 -1
  145. package/lib/core/ws/utils/attachWebSocketLogger.mjs +0 -197
  146. package/lib/core/ws/utils/attachWebSocketLogger.mjs.map +0 -1
  147. package/lib/core/ws/utils/getMessageLength.d.mts +0 -11
  148. package/lib/core/ws/utils/getMessageLength.d.ts +0 -11
  149. package/lib/core/ws/utils/getMessageLength.js +0 -33
  150. package/lib/core/ws/utils/getMessageLength.js.map +0 -1
  151. package/lib/core/ws/utils/getMessageLength.mjs +0 -13
  152. package/lib/core/ws/utils/getMessageLength.mjs.map +0 -1
  153. package/lib/core/ws/utils/getPublicData.d.mts +0 -5
  154. package/lib/core/ws/utils/getPublicData.d.ts +0 -5
  155. package/lib/core/ws/utils/getPublicData.js +0 -36
  156. package/lib/core/ws/utils/getPublicData.js.map +0 -1
  157. package/lib/core/ws/utils/getPublicData.mjs +0 -16
  158. package/lib/core/ws/utils/getPublicData.mjs.map +0 -1
  159. package/lib/core/ws/utils/truncateMessage.d.mts +0 -3
  160. package/lib/core/ws/utils/truncateMessage.d.ts +0 -3
  161. package/lib/core/ws/utils/truncateMessage.js +0 -31
  162. package/lib/core/ws/utils/truncateMessage.js.map +0 -1
  163. package/lib/core/ws/utils/truncateMessage.mjs +0 -11
  164. package/lib/core/ws/utils/truncateMessage.mjs.map +0 -1
  165. package/lib/core/ws/webSocketInterceptor.d.mts +0 -5
  166. package/lib/core/ws/webSocketInterceptor.d.ts +0 -5
  167. package/lib/core/ws/webSocketInterceptor.js +0 -26
  168. package/lib/core/ws/webSocketInterceptor.js.map +0 -1
  169. package/lib/core/ws/webSocketInterceptor.mjs +0 -6
  170. package/lib/core/ws/webSocketInterceptor.mjs.map +0 -1
  171. package/lib/core/ws.d.mts +0 -49
  172. package/lib/core/ws.d.ts +0 -49
  173. package/lib/core/ws.js +0 -65
  174. package/lib/core/ws.js.map +0 -1
  175. package/lib/core/ws.mjs +0 -48
  176. package/lib/core/ws.mjs.map +0 -1
  177. package/src/core/handlers/WebSocketHandler.ts +0 -71
  178. package/src/core/ws/WebSocketClientManager.test.ts +0 -157
  179. package/src/core/ws/WebSocketClientManager.ts +0 -234
  180. package/src/core/ws/handleWebSocketEvent.ts +0 -56
  181. package/src/core/ws/utils/attachWebSocketLogger.ts +0 -269
  182. package/src/core/ws/utils/getMessageLength.test.ts +0 -16
  183. package/src/core/ws/utils/getMessageLength.ts +0 -19
  184. package/src/core/ws/utils/getPublicData.test.ts +0 -38
  185. package/src/core/ws/utils/getPublicData.ts +0 -17
  186. package/src/core/ws/utils/truncateMessage.test.ts +0 -12
  187. package/src/core/ws/utils/truncateMessage.ts +0 -9
  188. package/src/core/ws/webSocketInterceptor.ts +0 -3
  189. package/src/core/ws.test.ts +0 -23
  190. package/src/core/ws.ts +0 -124
@@ -370,7 +370,7 @@ You can also automate this process and make the worker script update automatical
370
370
  }
371
371
  }
372
372
 
373
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-UJZOJSMP.mjs
373
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
374
374
  var encoder = new TextEncoder();
375
375
  function encodeBuffer(text) {
376
376
  return encoder.encode(text);
@@ -385,6 +385,17 @@ function toArrayBuffer(array) {
385
385
  array.byteOffset + array.byteLength
386
386
  );
387
387
  }
388
+
389
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-OMISYKWR.mjs
390
+ var IS_PATCHED_MODULE = Symbol("isPatchedModule");
391
+ function isPropertyAccessible(obj, key) {
392
+ try {
393
+ obj[key];
394
+ return true;
395
+ } catch (e) {
396
+ return false;
397
+ }
398
+ }
388
399
  var RESPONSE_STATUS_CODES_WITHOUT_BODY = /* @__PURE__ */ new Set([
389
400
  101,
390
401
  103,
@@ -395,9 +406,27 @@ var RESPONSE_STATUS_CODES_WITHOUT_BODY = /* @__PURE__ */ new Set([
395
406
  function isResponseWithoutBody(status) {
396
407
  return RESPONSE_STATUS_CODES_WITHOUT_BODY.has(status);
397
408
  }
398
-
399
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-HAGW22AN.mjs
400
- var IS_PATCHED_MODULE = Symbol("isPatchedModule");
409
+ function createServerErrorResponse(body) {
410
+ return new Response(
411
+ JSON.stringify(
412
+ body instanceof Error ? {
413
+ name: body.name,
414
+ message: body.message,
415
+ stack: body.stack
416
+ } : body
417
+ ),
418
+ {
419
+ status: 500,
420
+ statusText: "Unhandled Exception",
421
+ headers: {
422
+ "Content-Type": "application/json"
423
+ }
424
+ }
425
+ );
426
+ }
427
+ function isResponseError(response) {
428
+ return isPropertyAccessible(response, "type") && response.type === "error";
429
+ }
401
430
 
402
431
  // node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs
403
432
  var __defProp = Object.defineProperty;
@@ -836,7 +865,7 @@ var _Emitter = class {
836
865
  var Emitter = _Emitter;
837
866
  Emitter.defaultMaxListeners = 10;
838
867
 
839
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
868
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
840
869
  var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
841
870
  function getGlobalSymbol(symbol) {
842
871
  return (
@@ -984,7 +1013,7 @@ function createRequestId() {
984
1013
  return Math.random().toString(16).slice(2);
985
1014
  }
986
1015
 
987
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1016
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/index.mjs
988
1017
  var BatchInterceptor = class extends Interceptor {
989
1018
  constructor(options) {
990
1019
  BatchInterceptor.symbol = Symbol(options.name);
@@ -1158,7 +1187,6 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
1158
1187
 
1159
1188
  // src/browser/setupWorker/stop/createStop.ts
1160
1189
  import { devUtils as devUtils9 } from '../core/utils/internal/devUtils.mjs';
1161
- import { MSW_WEBSOCKET_CLIENTS_KEY } from '../core/ws/WebSocketClientManager.mjs';
1162
1190
 
1163
1191
  // src/browser/setupWorker/stop/utils/printStopMessage.ts
1164
1192
  import { devUtils as devUtils8 } from '../core/utils/internal/devUtils.mjs';
@@ -1184,7 +1212,6 @@ var createStop = (context) => {
1184
1212
  context.workerChannel.send("MOCK_DEACTIVATE");
1185
1213
  context.isMockingEnabled = false;
1186
1214
  window.clearInterval(context.keepAliveInterval);
1187
- localStorage.removeItem(MSW_WEBSOCKET_CLIENTS_KEY);
1188
1215
  printStopMessage({ quiet: context.startOptions?.quiet });
1189
1216
  };
1190
1217
  };
@@ -1270,7 +1297,7 @@ var DeferredPromise = class extends Promise {
1270
1297
  }
1271
1298
  };
1272
1299
 
1273
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-OUWBQF3Z.mjs
1300
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-OUWBQF3Z.mjs
1274
1301
  var RequestController = class {
1275
1302
  constructor(request) {
1276
1303
  this.request = request;
@@ -1308,15 +1335,7 @@ async function emitAsync(emitter, eventName, ...data) {
1308
1335
  }
1309
1336
  }
1310
1337
 
1311
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-3FNUI33J.mjs
1312
- function isPropertyAccessible(obj, key) {
1313
- try {
1314
- obj[key];
1315
- return true;
1316
- } catch (e) {
1317
- return false;
1318
- }
1319
- }
1338
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-MAEPOYB6.mjs
1320
1339
  function canParseUrl(url) {
1321
1340
  try {
1322
1341
  new URL(url);
@@ -1369,64 +1388,113 @@ var _FetchInterceptor = class extends Interceptor {
1369
1388
  { once: true }
1370
1389
  );
1371
1390
  }
1372
- const resolverResult = await until(async () => {
1373
- const listenersFinished = emitAsync(this.emitter, "request", {
1374
- request: interactiveRequest,
1375
- requestId
1391
+ const responsePromise = new DeferredPromise();
1392
+ const respondWith = (response) => {
1393
+ this.logger.info("responding with a mock response:", response);
1394
+ if (this.emitter.listenerCount("response") > 0) {
1395
+ this.logger.info('emitting the "response" event...');
1396
+ const responseClone = response.clone();
1397
+ this.emitter.emit("response", {
1398
+ response: responseClone,
1399
+ isMockedResponse: true,
1400
+ request: interactiveRequest,
1401
+ requestId
1402
+ });
1403
+ }
1404
+ Object.defineProperty(response, "url", {
1405
+ writable: false,
1406
+ enumerable: true,
1407
+ configurable: false,
1408
+ value: request.url
1376
1409
  });
1377
- await Promise.race([
1378
- requestAborted,
1379
- // Put the listeners invocation Promise in the same race condition
1380
- // with the request abort Promise because otherwise awaiting the listeners
1381
- // would always yield some response (or undefined).
1382
- listenersFinished,
1383
- requestController.responsePromise
1384
- ]);
1385
- this.logger.info("all request listeners have been resolved!");
1386
- const mockedResponse2 = await requestController.responsePromise;
1387
- this.logger.info("event.respondWith called with:", mockedResponse2);
1388
- return mockedResponse2;
1389
- });
1410
+ responsePromise.resolve(response);
1411
+ };
1412
+ const errorWith = (reason) => {
1413
+ responsePromise.reject(reason);
1414
+ };
1415
+ const resolverResult = await until(
1416
+ async () => {
1417
+ const listenersFinished = emitAsync(this.emitter, "request", {
1418
+ request: interactiveRequest,
1419
+ requestId
1420
+ });
1421
+ await Promise.race([
1422
+ requestAborted,
1423
+ // Put the listeners invocation Promise in the same race condition
1424
+ // with the request abort Promise because otherwise awaiting the listeners
1425
+ // would always yield some response (or undefined).
1426
+ listenersFinished,
1427
+ requestController.responsePromise
1428
+ ]);
1429
+ this.logger.info("all request listeners have been resolved!");
1430
+ const mockedResponse2 = await requestController.responsePromise;
1431
+ this.logger.info("event.respondWith called with:", mockedResponse2);
1432
+ return mockedResponse2;
1433
+ }
1434
+ );
1390
1435
  if (requestAborted.state === "rejected") {
1391
- return Promise.reject(requestAborted.rejectionReason);
1436
+ this.logger.info(
1437
+ "request has been aborted:",
1438
+ requestAborted.rejectionReason
1439
+ );
1440
+ responsePromise.reject(requestAborted.rejectionReason);
1441
+ return responsePromise;
1392
1442
  }
1393
1443
  if (resolverResult.error) {
1394
- return Promise.reject(createNetworkError(resolverResult.error));
1444
+ this.logger.info(
1445
+ "request listerner threw an error:",
1446
+ resolverResult.error
1447
+ );
1448
+ if (resolverResult.error instanceof Response) {
1449
+ if (isResponseError(resolverResult.error)) {
1450
+ errorWith(createNetworkError(resolverResult.error));
1451
+ } else {
1452
+ respondWith(resolverResult.error);
1453
+ }
1454
+ }
1455
+ if (this.emitter.listenerCount("unhandledException") > 0) {
1456
+ await emitAsync(this.emitter, "unhandledException", {
1457
+ error: resolverResult.error,
1458
+ request,
1459
+ requestId,
1460
+ controller: {
1461
+ respondWith,
1462
+ errorWith
1463
+ }
1464
+ });
1465
+ if (responsePromise.state !== "pending") {
1466
+ return responsePromise;
1467
+ }
1468
+ }
1469
+ respondWith(createServerErrorResponse(resolverResult.error));
1470
+ return responsePromise;
1395
1471
  }
1396
1472
  const mockedResponse = resolverResult.data;
1397
1473
  if (mockedResponse && !((_a = request.signal) == null ? void 0 : _a.aborted)) {
1398
1474
  this.logger.info("received mocked response:", mockedResponse);
1399
- if (isPropertyAccessible(mockedResponse, "type") && mockedResponse.type === "error") {
1475
+ if (isResponseError(mockedResponse)) {
1400
1476
  this.logger.info(
1401
1477
  "received a network error response, rejecting the request promise..."
1402
1478
  );
1403
- return Promise.reject(createNetworkError(mockedResponse));
1479
+ errorWith(createNetworkError(mockedResponse));
1480
+ } else {
1481
+ respondWith(mockedResponse);
1404
1482
  }
1405
- const responseClone = mockedResponse.clone();
1406
- this.emitter.emit("response", {
1407
- response: responseClone,
1408
- isMockedResponse: true,
1409
- request: interactiveRequest,
1410
- requestId
1411
- });
1412
- Object.defineProperty(mockedResponse, "url", {
1413
- writable: false,
1414
- enumerable: true,
1415
- configurable: false,
1416
- value: request.url
1417
- });
1418
- return mockedResponse;
1483
+ return responsePromise;
1419
1484
  }
1420
1485
  this.logger.info("no mocked response received!");
1421
1486
  return pureFetch(request).then((response) => {
1422
- const responseClone = response.clone();
1423
- this.logger.info("original fetch performed", responseClone);
1424
- this.emitter.emit("response", {
1425
- response: responseClone,
1426
- isMockedResponse: false,
1427
- request: interactiveRequest,
1428
- requestId
1429
- });
1487
+ this.logger.info("original fetch performed", response);
1488
+ if (this.emitter.listenerCount("response") > 0) {
1489
+ this.logger.info('emitting the "response" event...');
1490
+ const responseClone = response.clone();
1491
+ this.emitter.emit("response", {
1492
+ response: responseClone,
1493
+ isMockedResponse: false,
1494
+ request: interactiveRequest,
1495
+ requestId
1496
+ });
1497
+ }
1430
1498
  return response;
1431
1499
  });
1432
1500
  };
@@ -1455,7 +1523,7 @@ function createNetworkError(cause) {
1455
1523
  });
1456
1524
  }
1457
1525
 
1458
- // node_modules/.pnpm/@mswjs+interceptors@0.27.1/node_modules/@mswjs/interceptors/lib/browser/chunk-VYFS2IF2.mjs
1526
+ // node_modules/.pnpm/@mswjs+interceptors@0.29.0/node_modules/@mswjs/interceptors/lib/browser/chunk-732REFPX.mjs
1459
1527
  function concatArrayBuffer(left, right) {
1460
1528
  const result = new Uint8Array(left.byteLength + right.byteLength);
1461
1529
  result.set(left, 0);
@@ -2106,7 +2174,31 @@ function createXMLHttpRequestProxy({
2106
2174
  "request listener threw an exception, aborting request...",
2107
2175
  resolverResult.error
2108
2176
  );
2109
- xhrRequestController.errorWith(resolverResult.error);
2177
+ if (resolverResult.error instanceof Response) {
2178
+ if (isResponseError(resolverResult.error)) {
2179
+ xhrRequestController.errorWith(new TypeError("Network error"));
2180
+ } else {
2181
+ this.respondWith(resolverResult.error);
2182
+ }
2183
+ return;
2184
+ }
2185
+ if (emitter.listenerCount("unhandledException") > 0) {
2186
+ await emitAsync(emitter, "unhandledException", {
2187
+ error: resolverResult.error,
2188
+ request,
2189
+ requestId,
2190
+ controller: {
2191
+ respondWith: xhrRequestController.respondWith.bind(xhrRequestController),
2192
+ errorWith: xhrRequestController.errorWith.bind(xhrRequestController)
2193
+ }
2194
+ });
2195
+ if (originalRequest.readyState > XMLHttpRequest.OPENED) {
2196
+ return;
2197
+ }
2198
+ }
2199
+ xhrRequestController.respondWith(
2200
+ createServerErrorResponse(resolverResult.error)
2201
+ );
2110
2202
  return;
2111
2203
  }
2112
2204
  const mockedResponse = resolverResult.data;
@@ -2116,7 +2208,7 @@ function createXMLHttpRequestProxy({
2116
2208
  mockedResponse.status,
2117
2209
  mockedResponse.statusText
2118
2210
  );
2119
- if (mockedResponse.type === "error") {
2211
+ if (isResponseError(mockedResponse)) {
2120
2212
  this.logger.info(
2121
2213
  "received a network error response, rejecting the request promise..."
2122
2214
  );
@@ -2287,9 +2379,6 @@ function supportsReadableStreamTransfer() {
2287
2379
  }
2288
2380
 
2289
2381
  // src/browser/setupWorker/setupWorker.ts
2290
- import { webSocketInterceptor } from '../core/ws/webSocketInterceptor.mjs';
2291
- import { handleWebSocketEvent } from '../core/ws/handleWebSocketEvent.mjs';
2292
- import { attachWebSocketLogger } from '../core/ws/utils/attachWebSocketLogger.mjs';
2293
2382
  var SetupWorkerApi = class extends SetupApi {
2294
2383
  context;
2295
2384
  startHandler = null;
@@ -2405,22 +2494,6 @@ var SetupWorkerApi = class extends SetupApi {
2405
2494
  DEFAULT_START_OPTIONS,
2406
2495
  options
2407
2496
  );
2408
- handleWebSocketEvent({
2409
- getHandlers: () => {
2410
- return this.handlersController.currentHandlers();
2411
- },
2412
- onMockedConnection: (connection) => {
2413
- if (!this.context.startOptions.quiet) {
2414
- attachWebSocketLogger(connection);
2415
- }
2416
- },
2417
- onPassthroughConnection() {
2418
- }
2419
- });
2420
- webSocketInterceptor.apply();
2421
- this.subscriptions.push(() => {
2422
- webSocketInterceptor.dispose();
2423
- });
2424
2497
  return await this.startHandler(this.context.startOptions, options);
2425
2498
  }
2426
2499
  stop() {