msw 2.3.0-ws.rc-6 → 2.3.0-ws.rc-7
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 +3 -9
- package/lib/browser/index.js +160 -64
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +160 -64
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/handlers/WebSocketHandler.js +1 -2
- package/lib/core/handlers/WebSocketHandler.js.map +1 -1
- package/lib/core/handlers/WebSocketHandler.mjs +1 -2
- package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
- package/lib/core/utils/internal/Disposable.d.mts +2 -2
- package/lib/core/utils/internal/Disposable.d.ts +2 -2
- package/lib/core/utils/internal/Disposable.js +5 -2
- package/lib/core/utils/internal/Disposable.js.map +1 -1
- package/lib/core/utils/internal/Disposable.mjs +5 -2
- package/lib/core/utils/internal/Disposable.mjs.map +1 -1
- package/lib/core/utils/internal/devUtils.d.mts +10 -1
- package/lib/core/utils/internal/devUtils.d.ts +10 -1
- package/lib/core/utils/internal/devUtils.js +7 -0
- package/lib/core/utils/internal/devUtils.js.map +1 -1
- package/lib/core/utils/internal/devUtils.mjs +7 -0
- package/lib/core/utils/internal/devUtils.mjs.map +1 -1
- package/lib/core/utils/matching/normalizePath.d.mts +1 -0
- package/lib/core/utils/matching/normalizePath.d.ts +1 -0
- package/lib/core/utils/matching/normalizePath.js.map +1 -1
- package/lib/core/utils/matching/normalizePath.mjs.map +1 -1
- package/lib/core/utils/request/onUnhandledRequest.js +3 -3
- package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
- package/lib/core/utils/request/onUnhandledRequest.mjs +4 -4
- package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
- package/lib/core/utils/url/cleanUrl.d.mts +2 -1
- package/lib/core/utils/url/cleanUrl.d.ts +2 -1
- package/lib/core/utils/url/cleanUrl.js +3 -0
- package/lib/core/utils/url/cleanUrl.js.map +1 -1
- package/lib/core/utils/url/cleanUrl.mjs +3 -0
- package/lib/core/utils/url/cleanUrl.mjs.map +1 -1
- package/lib/core/ws/WebSocketClientManager.js.map +1 -1
- package/lib/core/ws/WebSocketClientManager.mjs.map +1 -1
- package/lib/iife/index.js +204 -79
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/lib/native/index.js +5 -0
- package/lib/native/index.js.map +1 -1
- package/lib/native/index.mjs +6 -1
- package/lib/native/index.mjs.map +1 -1
- package/lib/node/index.js +5 -0
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +6 -1
- package/lib/node/index.mjs.map +1 -1
- package/package.json +17 -5
- package/src/browser/setupWorker/start/createStartHandler.ts +6 -0
- package/src/core/handlers/WebSocketHandler.ts +1 -2
- package/src/core/utils/internal/Disposable.ts +6 -3
- package/src/core/utils/internal/devUtils.test.ts +21 -0
- package/src/core/utils/internal/devUtils.ts +13 -0
- package/src/core/utils/matching/matchRequestUrl.test.ts +11 -0
- package/src/core/utils/matching/normalizePath.test.ts +7 -1
- package/src/core/utils/matching/normalizePath.ts +1 -0
- package/src/core/utils/request/onUnhandledRequest.test.ts +30 -4
- package/src/core/utils/request/onUnhandledRequest.ts +4 -4
- package/src/core/utils/url/cleanUrl.test.ts +8 -3
- package/src/core/utils/url/cleanUrl.ts +9 -1
- package/src/core/utils/url/getAbsoluteUrl.node.test.ts +3 -3
- package/src/core/utils/url/getAbsoluteUrl.test.ts +5 -5
- package/src/core/utils/url/isAbsoluteUrl.test.ts +7 -7
- package/src/core/ws/WebSocketClientManager.ts +1 -2
- package/src/node/SetupServerCommonApi.ts +7 -1
package/README.md
CHANGED
|
@@ -17,15 +17,9 @@
|
|
|
17
17
|
<p align="center">Mock Service Worker (MSW) is a seamless REST/GraphQL API mocking library for browser and Node.js.</p>
|
|
18
18
|
|
|
19
19
|
<p align="center">
|
|
20
|
-
<a href="https://www.npmjs.com/package/msw" target="_blank">
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<a href="https://www.npmjs.com/package/msw" target="_blank">
|
|
24
|
-
<img src="https://img.shields.io/npm/dm/msw?style=for-the-badge&color=black" alt="Downloads per month" />
|
|
25
|
-
</a>
|
|
26
|
-
<a href="https://kettanaito.com/discord" target="_blank">
|
|
27
|
-
<img src="https://img.shields.io/badge/chat-online-green?style=for-the-badge&color=black" alt="Discord server" />
|
|
28
|
-
</a>
|
|
20
|
+
<a href="https://www.npmjs.com/package/msw" target="_blank"><img src="https://img.shields.io/npm/v/msw.svg?style=for-the-badge&label=Latest&color=black" alt="Package version" /></a>
|
|
21
|
+
<a href="https://www.npmjs.com/package/msw" target="_blank"><img src="https://img.shields.io/npm/dm/msw?style=for-the-badge&color=black" alt="Downloads per month" /></a>
|
|
22
|
+
<a href="https://kettanaito.com/discord" target="_blank"><img src="https://img.shields.io/badge/chat-online-green?style=for-the-badge&color=black" alt="Discord server" /></a>
|
|
29
23
|
</p>
|
|
30
24
|
|
|
31
25
|
<br />
|
package/lib/browser/index.js
CHANGED
|
@@ -124,6 +124,7 @@ function isNodeProcess() {
|
|
|
124
124
|
|
|
125
125
|
// src/browser/setupWorker/start/createStartHandler.ts
|
|
126
126
|
var import_devUtils7 = require("../core/utils/internal/devUtils.js");
|
|
127
|
+
var import_WebSocketClientManager = require("../core/ws/WebSocketClientManager.js");
|
|
127
128
|
|
|
128
129
|
// node_modules/.pnpm/@open-draft+until@2.1.0/node_modules/@open-draft/until/lib/index.mjs
|
|
129
130
|
var until = async (promise) => {
|
|
@@ -397,7 +398,7 @@ You can also automate this process and make the worker script update automatical
|
|
|
397
398
|
}
|
|
398
399
|
}
|
|
399
400
|
|
|
400
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
401
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.30.0/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
|
|
401
402
|
var encoder = new TextEncoder();
|
|
402
403
|
function encodeBuffer(text) {
|
|
403
404
|
return encoder.encode(text);
|
|
@@ -412,6 +413,17 @@ function toArrayBuffer(array) {
|
|
|
412
413
|
array.byteOffset + array.byteLength
|
|
413
414
|
);
|
|
414
415
|
}
|
|
416
|
+
|
|
417
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.30.0/node_modules/@mswjs/interceptors/lib/browser/chunk-OMISYKWR.mjs
|
|
418
|
+
var IS_PATCHED_MODULE = Symbol("isPatchedModule");
|
|
419
|
+
function isPropertyAccessible(obj, key) {
|
|
420
|
+
try {
|
|
421
|
+
obj[key];
|
|
422
|
+
return true;
|
|
423
|
+
} catch (e) {
|
|
424
|
+
return false;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
415
427
|
var RESPONSE_STATUS_CODES_WITHOUT_BODY = /* @__PURE__ */ new Set([
|
|
416
428
|
101,
|
|
417
429
|
103,
|
|
@@ -422,9 +434,27 @@ var RESPONSE_STATUS_CODES_WITHOUT_BODY = /* @__PURE__ */ new Set([
|
|
|
422
434
|
function isResponseWithoutBody(status) {
|
|
423
435
|
return RESPONSE_STATUS_CODES_WITHOUT_BODY.has(status);
|
|
424
436
|
}
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
437
|
+
function createServerErrorResponse(body) {
|
|
438
|
+
return new Response(
|
|
439
|
+
JSON.stringify(
|
|
440
|
+
body instanceof Error ? {
|
|
441
|
+
name: body.name,
|
|
442
|
+
message: body.message,
|
|
443
|
+
stack: body.stack
|
|
444
|
+
} : body
|
|
445
|
+
),
|
|
446
|
+
{
|
|
447
|
+
status: 500,
|
|
448
|
+
statusText: "Unhandled Exception",
|
|
449
|
+
headers: {
|
|
450
|
+
"Content-Type": "application/json"
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
function isResponseError(response) {
|
|
456
|
+
return isPropertyAccessible(response, "type") && response.type === "error";
|
|
457
|
+
}
|
|
428
458
|
|
|
429
459
|
// node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs
|
|
430
460
|
var __defProp2 = Object.defineProperty;
|
|
@@ -863,7 +893,7 @@ var _Emitter = class {
|
|
|
863
893
|
var Emitter = _Emitter;
|
|
864
894
|
Emitter.defaultMaxListeners = 10;
|
|
865
895
|
|
|
866
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
896
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.30.0/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
|
|
867
897
|
var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
|
|
868
898
|
function getGlobalSymbol(symbol) {
|
|
869
899
|
return (
|
|
@@ -1011,7 +1041,7 @@ function createRequestId() {
|
|
|
1011
1041
|
return Math.random().toString(16).slice(2);
|
|
1012
1042
|
}
|
|
1013
1043
|
|
|
1014
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
1044
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.30.0/node_modules/@mswjs/interceptors/lib/browser/index.mjs
|
|
1015
1045
|
var BatchInterceptor = class extends Interceptor {
|
|
1016
1046
|
constructor(options) {
|
|
1017
1047
|
BatchInterceptor.symbol = Symbol(options.name);
|
|
@@ -1147,6 +1177,7 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
1147
1177
|
context.workerChannel.send("CLIENT_CLOSED");
|
|
1148
1178
|
}
|
|
1149
1179
|
window.clearInterval(context.keepAliveInterval);
|
|
1180
|
+
localStorage.removeItem(import_WebSocketClientManager.MSW_WEBSOCKET_CLIENTS_KEY);
|
|
1150
1181
|
});
|
|
1151
1182
|
await checkWorkerIntegrity(context).catch((error2) => {
|
|
1152
1183
|
import_devUtils7.devUtils.error(
|
|
@@ -1185,7 +1216,7 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
1185
1216
|
|
|
1186
1217
|
// src/browser/setupWorker/stop/createStop.ts
|
|
1187
1218
|
var import_devUtils9 = require("../core/utils/internal/devUtils.js");
|
|
1188
|
-
var
|
|
1219
|
+
var import_WebSocketClientManager2 = require("../core/ws/WebSocketClientManager.js");
|
|
1189
1220
|
|
|
1190
1221
|
// src/browser/setupWorker/stop/utils/printStopMessage.ts
|
|
1191
1222
|
var import_devUtils8 = require("../core/utils/internal/devUtils.js");
|
|
@@ -1211,7 +1242,7 @@ var createStop = (context) => {
|
|
|
1211
1242
|
context.workerChannel.send("MOCK_DEACTIVATE");
|
|
1212
1243
|
context.isMockingEnabled = false;
|
|
1213
1244
|
window.clearInterval(context.keepAliveInterval);
|
|
1214
|
-
localStorage.removeItem(
|
|
1245
|
+
localStorage.removeItem(import_WebSocketClientManager2.MSW_WEBSOCKET_CLIENTS_KEY);
|
|
1215
1246
|
printStopMessage({ quiet: context.startOptions?.quiet });
|
|
1216
1247
|
};
|
|
1217
1248
|
};
|
|
@@ -1297,7 +1328,7 @@ var DeferredPromise = class extends Promise {
|
|
|
1297
1328
|
}
|
|
1298
1329
|
};
|
|
1299
1330
|
|
|
1300
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
1331
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.30.0/node_modules/@mswjs/interceptors/lib/browser/chunk-OUWBQF3Z.mjs
|
|
1301
1332
|
var RequestController = class {
|
|
1302
1333
|
constructor(request) {
|
|
1303
1334
|
this.request = request;
|
|
@@ -1335,15 +1366,7 @@ async function emitAsync(emitter, eventName, ...data) {
|
|
|
1335
1366
|
}
|
|
1336
1367
|
}
|
|
1337
1368
|
|
|
1338
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
1339
|
-
function isPropertyAccessible(obj, key) {
|
|
1340
|
-
try {
|
|
1341
|
-
obj[key];
|
|
1342
|
-
return true;
|
|
1343
|
-
} catch (e) {
|
|
1344
|
-
return false;
|
|
1345
|
-
}
|
|
1346
|
-
}
|
|
1369
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.30.0/node_modules/@mswjs/interceptors/lib/browser/chunk-MAEPOYB6.mjs
|
|
1347
1370
|
function canParseUrl(url) {
|
|
1348
1371
|
try {
|
|
1349
1372
|
new URL(url);
|
|
@@ -1396,64 +1419,113 @@ var _FetchInterceptor = class extends Interceptor {
|
|
|
1396
1419
|
{ once: true }
|
|
1397
1420
|
);
|
|
1398
1421
|
}
|
|
1399
|
-
const
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1422
|
+
const responsePromise = new DeferredPromise();
|
|
1423
|
+
const respondWith = (response) => {
|
|
1424
|
+
this.logger.info("responding with a mock response:", response);
|
|
1425
|
+
if (this.emitter.listenerCount("response") > 0) {
|
|
1426
|
+
this.logger.info('emitting the "response" event...');
|
|
1427
|
+
const responseClone = response.clone();
|
|
1428
|
+
this.emitter.emit("response", {
|
|
1429
|
+
response: responseClone,
|
|
1430
|
+
isMockedResponse: true,
|
|
1431
|
+
request: interactiveRequest,
|
|
1432
|
+
requestId
|
|
1433
|
+
});
|
|
1434
|
+
}
|
|
1435
|
+
Object.defineProperty(response, "url", {
|
|
1436
|
+
writable: false,
|
|
1437
|
+
enumerable: true,
|
|
1438
|
+
configurable: false,
|
|
1439
|
+
value: request.url
|
|
1403
1440
|
});
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1441
|
+
responsePromise.resolve(response);
|
|
1442
|
+
};
|
|
1443
|
+
const errorWith = (reason) => {
|
|
1444
|
+
responsePromise.reject(reason);
|
|
1445
|
+
};
|
|
1446
|
+
const resolverResult = await until(
|
|
1447
|
+
async () => {
|
|
1448
|
+
const listenersFinished = emitAsync(this.emitter, "request", {
|
|
1449
|
+
request: interactiveRequest,
|
|
1450
|
+
requestId
|
|
1451
|
+
});
|
|
1452
|
+
await Promise.race([
|
|
1453
|
+
requestAborted,
|
|
1454
|
+
// Put the listeners invocation Promise in the same race condition
|
|
1455
|
+
// with the request abort Promise because otherwise awaiting the listeners
|
|
1456
|
+
// would always yield some response (or undefined).
|
|
1457
|
+
listenersFinished,
|
|
1458
|
+
requestController.responsePromise
|
|
1459
|
+
]);
|
|
1460
|
+
this.logger.info("all request listeners have been resolved!");
|
|
1461
|
+
const mockedResponse2 = await requestController.responsePromise;
|
|
1462
|
+
this.logger.info("event.respondWith called with:", mockedResponse2);
|
|
1463
|
+
return mockedResponse2;
|
|
1464
|
+
}
|
|
1465
|
+
);
|
|
1417
1466
|
if (requestAborted.state === "rejected") {
|
|
1418
|
-
|
|
1467
|
+
this.logger.info(
|
|
1468
|
+
"request has been aborted:",
|
|
1469
|
+
requestAborted.rejectionReason
|
|
1470
|
+
);
|
|
1471
|
+
responsePromise.reject(requestAborted.rejectionReason);
|
|
1472
|
+
return responsePromise;
|
|
1419
1473
|
}
|
|
1420
1474
|
if (resolverResult.error) {
|
|
1421
|
-
|
|
1475
|
+
this.logger.info(
|
|
1476
|
+
"request listerner threw an error:",
|
|
1477
|
+
resolverResult.error
|
|
1478
|
+
);
|
|
1479
|
+
if (resolverResult.error instanceof Response) {
|
|
1480
|
+
if (isResponseError(resolverResult.error)) {
|
|
1481
|
+
errorWith(createNetworkError(resolverResult.error));
|
|
1482
|
+
} else {
|
|
1483
|
+
respondWith(resolverResult.error);
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
if (this.emitter.listenerCount("unhandledException") > 0) {
|
|
1487
|
+
await emitAsync(this.emitter, "unhandledException", {
|
|
1488
|
+
error: resolverResult.error,
|
|
1489
|
+
request,
|
|
1490
|
+
requestId,
|
|
1491
|
+
controller: {
|
|
1492
|
+
respondWith,
|
|
1493
|
+
errorWith
|
|
1494
|
+
}
|
|
1495
|
+
});
|
|
1496
|
+
if (responsePromise.state !== "pending") {
|
|
1497
|
+
return responsePromise;
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
respondWith(createServerErrorResponse(resolverResult.error));
|
|
1501
|
+
return responsePromise;
|
|
1422
1502
|
}
|
|
1423
1503
|
const mockedResponse = resolverResult.data;
|
|
1424
1504
|
if (mockedResponse && !((_a = request.signal) == null ? void 0 : _a.aborted)) {
|
|
1425
1505
|
this.logger.info("received mocked response:", mockedResponse);
|
|
1426
|
-
if (
|
|
1506
|
+
if (isResponseError(mockedResponse)) {
|
|
1427
1507
|
this.logger.info(
|
|
1428
1508
|
"received a network error response, rejecting the request promise..."
|
|
1429
1509
|
);
|
|
1430
|
-
|
|
1510
|
+
errorWith(createNetworkError(mockedResponse));
|
|
1511
|
+
} else {
|
|
1512
|
+
respondWith(mockedResponse);
|
|
1431
1513
|
}
|
|
1432
|
-
|
|
1433
|
-
this.emitter.emit("response", {
|
|
1434
|
-
response: responseClone,
|
|
1435
|
-
isMockedResponse: true,
|
|
1436
|
-
request: interactiveRequest,
|
|
1437
|
-
requestId
|
|
1438
|
-
});
|
|
1439
|
-
Object.defineProperty(mockedResponse, "url", {
|
|
1440
|
-
writable: false,
|
|
1441
|
-
enumerable: true,
|
|
1442
|
-
configurable: false,
|
|
1443
|
-
value: request.url
|
|
1444
|
-
});
|
|
1445
|
-
return mockedResponse;
|
|
1514
|
+
return responsePromise;
|
|
1446
1515
|
}
|
|
1447
1516
|
this.logger.info("no mocked response received!");
|
|
1448
1517
|
return pureFetch(request).then((response) => {
|
|
1449
|
-
|
|
1450
|
-
this.
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1518
|
+
this.logger.info("original fetch performed", response);
|
|
1519
|
+
if (this.emitter.listenerCount("response") > 0) {
|
|
1520
|
+
this.logger.info('emitting the "response" event...');
|
|
1521
|
+
const responseClone = response.clone();
|
|
1522
|
+
this.emitter.emit("response", {
|
|
1523
|
+
response: responseClone,
|
|
1524
|
+
isMockedResponse: false,
|
|
1525
|
+
request: interactiveRequest,
|
|
1526
|
+
requestId
|
|
1527
|
+
});
|
|
1528
|
+
}
|
|
1457
1529
|
return response;
|
|
1458
1530
|
});
|
|
1459
1531
|
};
|
|
@@ -1482,7 +1554,7 @@ function createNetworkError(cause) {
|
|
|
1482
1554
|
});
|
|
1483
1555
|
}
|
|
1484
1556
|
|
|
1485
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
1557
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.30.0/node_modules/@mswjs/interceptors/lib/browser/chunk-732REFPX.mjs
|
|
1486
1558
|
function concatArrayBuffer(left, right) {
|
|
1487
1559
|
const result = new Uint8Array(left.byteLength + right.byteLength);
|
|
1488
1560
|
result.set(left, 0);
|
|
@@ -2133,7 +2205,31 @@ function createXMLHttpRequestProxy({
|
|
|
2133
2205
|
"request listener threw an exception, aborting request...",
|
|
2134
2206
|
resolverResult.error
|
|
2135
2207
|
);
|
|
2136
|
-
|
|
2208
|
+
if (resolverResult.error instanceof Response) {
|
|
2209
|
+
if (isResponseError(resolverResult.error)) {
|
|
2210
|
+
xhrRequestController.errorWith(new TypeError("Network error"));
|
|
2211
|
+
} else {
|
|
2212
|
+
this.respondWith(resolverResult.error);
|
|
2213
|
+
}
|
|
2214
|
+
return;
|
|
2215
|
+
}
|
|
2216
|
+
if (emitter.listenerCount("unhandledException") > 0) {
|
|
2217
|
+
await emitAsync(emitter, "unhandledException", {
|
|
2218
|
+
error: resolverResult.error,
|
|
2219
|
+
request,
|
|
2220
|
+
requestId,
|
|
2221
|
+
controller: {
|
|
2222
|
+
respondWith: xhrRequestController.respondWith.bind(xhrRequestController),
|
|
2223
|
+
errorWith: xhrRequestController.errorWith.bind(xhrRequestController)
|
|
2224
|
+
}
|
|
2225
|
+
});
|
|
2226
|
+
if (originalRequest.readyState > XMLHttpRequest.OPENED) {
|
|
2227
|
+
return;
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
xhrRequestController.respondWith(
|
|
2231
|
+
createServerErrorResponse(resolverResult.error)
|
|
2232
|
+
);
|
|
2137
2233
|
return;
|
|
2138
2234
|
}
|
|
2139
2235
|
const mockedResponse = resolverResult.data;
|
|
@@ -2143,7 +2239,7 @@ function createXMLHttpRequestProxy({
|
|
|
2143
2239
|
mockedResponse.status,
|
|
2144
2240
|
mockedResponse.statusText
|
|
2145
2241
|
);
|
|
2146
|
-
if (mockedResponse
|
|
2242
|
+
if (isResponseError(mockedResponse)) {
|
|
2147
2243
|
this.logger.info(
|
|
2148
2244
|
"received a network error response, rejecting the request promise..."
|
|
2149
2245
|
);
|