msw 2.11.4 → 2.11.6
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/browser/index.js +365 -308
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +365 -308
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/index.d.mts +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.js +2 -0
- package/lib/core/index.js.map +1 -1
- package/lib/core/index.mjs +4 -0
- package/lib/core/index.mjs.map +1 -1
- package/lib/iife/index.js +416 -357
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/package.json +4 -3
- package/src/core/index.ts +5 -0
package/lib/browser/index.js
CHANGED
|
@@ -491,7 +491,7 @@ You can also automate this process and make the worker script update automatical
|
|
|
491
491
|
return integrityCheckPromise;
|
|
492
492
|
}
|
|
493
493
|
|
|
494
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
494
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
|
|
495
495
|
var encoder = new TextEncoder();
|
|
496
496
|
function encodeBuffer(text) {
|
|
497
497
|
return encoder.encode(text);
|
|
@@ -507,100 +507,6 @@ function toArrayBuffer(array) {
|
|
|
507
507
|
);
|
|
508
508
|
}
|
|
509
509
|
|
|
510
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-3RXCRGL2.mjs
|
|
511
|
-
var IS_PATCHED_MODULE = Symbol("isPatchedModule");
|
|
512
|
-
function canParseUrl(url) {
|
|
513
|
-
try {
|
|
514
|
-
new URL(url);
|
|
515
|
-
return true;
|
|
516
|
-
} catch (_error) {
|
|
517
|
-
return false;
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
function getValueBySymbol(symbolName, source) {
|
|
521
|
-
const ownSymbols = Object.getOwnPropertySymbols(source);
|
|
522
|
-
const symbol = ownSymbols.find((symbol2) => {
|
|
523
|
-
return symbol2.description === symbolName;
|
|
524
|
-
});
|
|
525
|
-
if (symbol) {
|
|
526
|
-
return Reflect.get(source, symbol);
|
|
527
|
-
}
|
|
528
|
-
return;
|
|
529
|
-
}
|
|
530
|
-
var _FetchResponse = class extends Response {
|
|
531
|
-
static isConfigurableStatusCode(status) {
|
|
532
|
-
return status >= 200 && status <= 599;
|
|
533
|
-
}
|
|
534
|
-
static isRedirectResponse(status) {
|
|
535
|
-
return _FetchResponse.STATUS_CODES_WITH_REDIRECT.includes(status);
|
|
536
|
-
}
|
|
537
|
-
/**
|
|
538
|
-
* Returns a boolean indicating whether the given response status
|
|
539
|
-
* code represents a response that can have a body.
|
|
540
|
-
*/
|
|
541
|
-
static isResponseWithBody(status) {
|
|
542
|
-
return !_FetchResponse.STATUS_CODES_WITHOUT_BODY.includes(status);
|
|
543
|
-
}
|
|
544
|
-
static setUrl(url, response) {
|
|
545
|
-
if (!url || url === "about:" || !canParseUrl(url)) {
|
|
546
|
-
return;
|
|
547
|
-
}
|
|
548
|
-
const state = getValueBySymbol("state", response);
|
|
549
|
-
if (state) {
|
|
550
|
-
state.urlList.push(new URL(url));
|
|
551
|
-
} else {
|
|
552
|
-
Object.defineProperty(response, "url", {
|
|
553
|
-
value: url,
|
|
554
|
-
enumerable: true,
|
|
555
|
-
configurable: true,
|
|
556
|
-
writable: false
|
|
557
|
-
});
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
/**
|
|
561
|
-
* Parses the given raw HTTP headers into a Fetch API `Headers` instance.
|
|
562
|
-
*/
|
|
563
|
-
static parseRawHeaders(rawHeaders) {
|
|
564
|
-
const headers = new Headers();
|
|
565
|
-
for (let line = 0; line < rawHeaders.length; line += 2) {
|
|
566
|
-
headers.append(rawHeaders[line], rawHeaders[line + 1]);
|
|
567
|
-
}
|
|
568
|
-
return headers;
|
|
569
|
-
}
|
|
570
|
-
constructor(body, init = {}) {
|
|
571
|
-
var _a;
|
|
572
|
-
const status = (_a = init.status) != null ? _a : 200;
|
|
573
|
-
const safeStatus = _FetchResponse.isConfigurableStatusCode(status) ? status : 200;
|
|
574
|
-
const finalBody = _FetchResponse.isResponseWithBody(status) ? body : null;
|
|
575
|
-
super(finalBody, {
|
|
576
|
-
status: safeStatus,
|
|
577
|
-
statusText: init.statusText,
|
|
578
|
-
headers: init.headers
|
|
579
|
-
});
|
|
580
|
-
if (status !== safeStatus) {
|
|
581
|
-
const state = getValueBySymbol("state", this);
|
|
582
|
-
if (state) {
|
|
583
|
-
state.status = status;
|
|
584
|
-
} else {
|
|
585
|
-
Object.defineProperty(this, "status", {
|
|
586
|
-
value: status,
|
|
587
|
-
enumerable: true,
|
|
588
|
-
configurable: true,
|
|
589
|
-
writable: false
|
|
590
|
-
});
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
_FetchResponse.setUrl(init.url, this);
|
|
594
|
-
}
|
|
595
|
-
};
|
|
596
|
-
var FetchResponse = _FetchResponse;
|
|
597
|
-
FetchResponse.STATUS_CODES_WITHOUT_BODY = [101, 103, 204, 205, 304];
|
|
598
|
-
FetchResponse.STATUS_CODES_WITH_REDIRECT = [301, 302, 303, 307, 308];
|
|
599
|
-
var kRawRequest = Symbol("kRawRequest");
|
|
600
|
-
function setRawRequest(request, rawRequest) {
|
|
601
|
-
Reflect.set(request, kRawRequest, rawRequest);
|
|
602
|
-
}
|
|
603
|
-
|
|
604
510
|
// node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs
|
|
605
511
|
var __defProp2 = Object.defineProperty;
|
|
606
512
|
var __export2 = (target, all) => {
|
|
@@ -1038,7 +944,20 @@ var _Emitter = class {
|
|
|
1038
944
|
var Emitter = _Emitter;
|
|
1039
945
|
Emitter.defaultMaxListeners = 10;
|
|
1040
946
|
|
|
1041
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
947
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-Z5TSB3T6.mjs
|
|
948
|
+
var __accessCheck = (obj, member, msg) => {
|
|
949
|
+
if (!member.has(obj))
|
|
950
|
+
throw TypeError("Cannot " + msg);
|
|
951
|
+
};
|
|
952
|
+
var __privateGet = (obj, member, getter) => {
|
|
953
|
+
__accessCheck(obj, member, "read from private field");
|
|
954
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
955
|
+
};
|
|
956
|
+
var __privateAdd = (obj, member, value) => {
|
|
957
|
+
if (member.has(obj))
|
|
958
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
959
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
960
|
+
};
|
|
1042
961
|
var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
|
|
1043
962
|
function getGlobalSymbol(symbol) {
|
|
1044
963
|
return (
|
|
@@ -1186,7 +1105,188 @@ function createRequestId() {
|
|
|
1186
1105
|
return Math.random().toString(16).slice(2);
|
|
1187
1106
|
}
|
|
1188
1107
|
|
|
1189
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
1108
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-LIKZF2VU.mjs
|
|
1109
|
+
var IS_PATCHED_MODULE = Symbol("isPatchedModule");
|
|
1110
|
+
var InterceptorError = class extends Error {
|
|
1111
|
+
constructor(message) {
|
|
1112
|
+
super(message);
|
|
1113
|
+
this.name = "InterceptorError";
|
|
1114
|
+
Object.setPrototypeOf(this, InterceptorError.prototype);
|
|
1115
|
+
}
|
|
1116
|
+
};
|
|
1117
|
+
var _handled;
|
|
1118
|
+
var handled_get;
|
|
1119
|
+
var _RequestController = class {
|
|
1120
|
+
constructor(request, source) {
|
|
1121
|
+
this.request = request;
|
|
1122
|
+
this.source = source;
|
|
1123
|
+
__privateAdd(this, _handled);
|
|
1124
|
+
this.readyState = _RequestController.PENDING;
|
|
1125
|
+
this.handled = new DeferredPromise();
|
|
1126
|
+
}
|
|
1127
|
+
/**
|
|
1128
|
+
* Perform this request as-is.
|
|
1129
|
+
*/
|
|
1130
|
+
async passthrough() {
|
|
1131
|
+
invariant.as(
|
|
1132
|
+
InterceptorError,
|
|
1133
|
+
this.readyState === _RequestController.PENDING,
|
|
1134
|
+
'Failed to passthrough the "%s %s" request: the request has already been handled',
|
|
1135
|
+
this.request.method,
|
|
1136
|
+
this.request.url
|
|
1137
|
+
);
|
|
1138
|
+
this.readyState = _RequestController.PASSTHROUGH;
|
|
1139
|
+
await this.source.passthrough();
|
|
1140
|
+
__privateGet(this, _handled, handled_get).resolve();
|
|
1141
|
+
}
|
|
1142
|
+
/**
|
|
1143
|
+
* Respond to this request with the given `Response` instance.
|
|
1144
|
+
*
|
|
1145
|
+
* @example
|
|
1146
|
+
* controller.respondWith(new Response())
|
|
1147
|
+
* controller.respondWith(Response.json({ id }))
|
|
1148
|
+
* controller.respondWith(Response.error())
|
|
1149
|
+
*/
|
|
1150
|
+
respondWith(response) {
|
|
1151
|
+
invariant.as(
|
|
1152
|
+
InterceptorError,
|
|
1153
|
+
this.readyState === _RequestController.PENDING,
|
|
1154
|
+
'Failed to respond to the "%s %s" request with "%d %s": the request has already been handled (%d)',
|
|
1155
|
+
this.request.method,
|
|
1156
|
+
this.request.url,
|
|
1157
|
+
response.status,
|
|
1158
|
+
response.statusText || "OK",
|
|
1159
|
+
this.readyState
|
|
1160
|
+
);
|
|
1161
|
+
this.readyState = _RequestController.RESPONSE;
|
|
1162
|
+
__privateGet(this, _handled, handled_get).resolve();
|
|
1163
|
+
this.source.respondWith(response);
|
|
1164
|
+
}
|
|
1165
|
+
/**
|
|
1166
|
+
* Error this request with the given reason.
|
|
1167
|
+
*
|
|
1168
|
+
* @example
|
|
1169
|
+
* controller.errorWith()
|
|
1170
|
+
* controller.errorWith(new Error('Oops!'))
|
|
1171
|
+
* controller.errorWith({ message: 'Oops!'})
|
|
1172
|
+
*/
|
|
1173
|
+
errorWith(reason) {
|
|
1174
|
+
invariant.as(
|
|
1175
|
+
InterceptorError,
|
|
1176
|
+
this.readyState === _RequestController.PENDING,
|
|
1177
|
+
'Failed to error the "%s %s" request with "%s": the request has already been handled (%d)',
|
|
1178
|
+
this.request.method,
|
|
1179
|
+
this.request.url,
|
|
1180
|
+
reason == null ? void 0 : reason.toString(),
|
|
1181
|
+
this.readyState
|
|
1182
|
+
);
|
|
1183
|
+
this.readyState = _RequestController.ERROR;
|
|
1184
|
+
this.source.errorWith(reason);
|
|
1185
|
+
__privateGet(this, _handled, handled_get).resolve();
|
|
1186
|
+
}
|
|
1187
|
+
};
|
|
1188
|
+
var RequestController = _RequestController;
|
|
1189
|
+
_handled = /* @__PURE__ */ new WeakSet();
|
|
1190
|
+
handled_get = function() {
|
|
1191
|
+
return this.handled;
|
|
1192
|
+
};
|
|
1193
|
+
RequestController.PENDING = 0;
|
|
1194
|
+
RequestController.PASSTHROUGH = 1;
|
|
1195
|
+
RequestController.RESPONSE = 2;
|
|
1196
|
+
RequestController.ERROR = 3;
|
|
1197
|
+
function canParseUrl(url) {
|
|
1198
|
+
try {
|
|
1199
|
+
new URL(url);
|
|
1200
|
+
return true;
|
|
1201
|
+
} catch (_error) {
|
|
1202
|
+
return false;
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1205
|
+
function getValueBySymbol(symbolName, source) {
|
|
1206
|
+
const ownSymbols = Object.getOwnPropertySymbols(source);
|
|
1207
|
+
const symbol = ownSymbols.find((symbol2) => {
|
|
1208
|
+
return symbol2.description === symbolName;
|
|
1209
|
+
});
|
|
1210
|
+
if (symbol) {
|
|
1211
|
+
return Reflect.get(source, symbol);
|
|
1212
|
+
}
|
|
1213
|
+
return;
|
|
1214
|
+
}
|
|
1215
|
+
var _FetchResponse = class extends Response {
|
|
1216
|
+
static isConfigurableStatusCode(status) {
|
|
1217
|
+
return status >= 200 && status <= 599;
|
|
1218
|
+
}
|
|
1219
|
+
static isRedirectResponse(status) {
|
|
1220
|
+
return _FetchResponse.STATUS_CODES_WITH_REDIRECT.includes(status);
|
|
1221
|
+
}
|
|
1222
|
+
/**
|
|
1223
|
+
* Returns a boolean indicating whether the given response status
|
|
1224
|
+
* code represents a response that can have a body.
|
|
1225
|
+
*/
|
|
1226
|
+
static isResponseWithBody(status) {
|
|
1227
|
+
return !_FetchResponse.STATUS_CODES_WITHOUT_BODY.includes(status);
|
|
1228
|
+
}
|
|
1229
|
+
static setUrl(url, response) {
|
|
1230
|
+
if (!url || url === "about:" || !canParseUrl(url)) {
|
|
1231
|
+
return;
|
|
1232
|
+
}
|
|
1233
|
+
const state = getValueBySymbol("state", response);
|
|
1234
|
+
if (state) {
|
|
1235
|
+
state.urlList.push(new URL(url));
|
|
1236
|
+
} else {
|
|
1237
|
+
Object.defineProperty(response, "url", {
|
|
1238
|
+
value: url,
|
|
1239
|
+
enumerable: true,
|
|
1240
|
+
configurable: true,
|
|
1241
|
+
writable: false
|
|
1242
|
+
});
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
/**
|
|
1246
|
+
* Parses the given raw HTTP headers into a Fetch API `Headers` instance.
|
|
1247
|
+
*/
|
|
1248
|
+
static parseRawHeaders(rawHeaders) {
|
|
1249
|
+
const headers = new Headers();
|
|
1250
|
+
for (let line = 0; line < rawHeaders.length; line += 2) {
|
|
1251
|
+
headers.append(rawHeaders[line], rawHeaders[line + 1]);
|
|
1252
|
+
}
|
|
1253
|
+
return headers;
|
|
1254
|
+
}
|
|
1255
|
+
constructor(body, init = {}) {
|
|
1256
|
+
var _a;
|
|
1257
|
+
const status = (_a = init.status) != null ? _a : 200;
|
|
1258
|
+
const safeStatus = _FetchResponse.isConfigurableStatusCode(status) ? status : 200;
|
|
1259
|
+
const finalBody = _FetchResponse.isResponseWithBody(status) ? body : null;
|
|
1260
|
+
super(finalBody, {
|
|
1261
|
+
status: safeStatus,
|
|
1262
|
+
statusText: init.statusText,
|
|
1263
|
+
headers: init.headers
|
|
1264
|
+
});
|
|
1265
|
+
if (status !== safeStatus) {
|
|
1266
|
+
const state = getValueBySymbol("state", this);
|
|
1267
|
+
if (state) {
|
|
1268
|
+
state.status = status;
|
|
1269
|
+
} else {
|
|
1270
|
+
Object.defineProperty(this, "status", {
|
|
1271
|
+
value: status,
|
|
1272
|
+
enumerable: true,
|
|
1273
|
+
configurable: true,
|
|
1274
|
+
writable: false
|
|
1275
|
+
});
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
_FetchResponse.setUrl(init.url, this);
|
|
1279
|
+
}
|
|
1280
|
+
};
|
|
1281
|
+
var FetchResponse = _FetchResponse;
|
|
1282
|
+
FetchResponse.STATUS_CODES_WITHOUT_BODY = [101, 103, 204, 205, 304];
|
|
1283
|
+
FetchResponse.STATUS_CODES_WITH_REDIRECT = [301, 302, 303, 307, 308];
|
|
1284
|
+
var kRawRequest = Symbol("kRawRequest");
|
|
1285
|
+
function setRawRequest(request, rawRequest) {
|
|
1286
|
+
Reflect.set(request, kRawRequest, rawRequest);
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/index.mjs
|
|
1190
1290
|
var BatchInterceptor = class extends Interceptor {
|
|
1191
1291
|
constructor(options) {
|
|
1192
1292
|
BatchInterceptor.symbol = Symbol(options.name);
|
|
@@ -1662,6 +1762,36 @@ var WorkerChannel = class extends Emitter2 {
|
|
|
1662
1762
|
}
|
|
1663
1763
|
};
|
|
1664
1764
|
|
|
1765
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VYSDLBSS.mjs
|
|
1766
|
+
async function emitAsync(emitter, eventName, ...data) {
|
|
1767
|
+
const listeners = emitter.listeners(eventName);
|
|
1768
|
+
if (listeners.length === 0) {
|
|
1769
|
+
return;
|
|
1770
|
+
}
|
|
1771
|
+
for (const listener of listeners) {
|
|
1772
|
+
await listener.apply(emitter, data);
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
function hasConfigurableGlobal(propertyName) {
|
|
1776
|
+
const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
|
|
1777
|
+
if (typeof descriptor === "undefined") {
|
|
1778
|
+
return false;
|
|
1779
|
+
}
|
|
1780
|
+
if (typeof descriptor.get === "function" && typeof descriptor.get() === "undefined") {
|
|
1781
|
+
return false;
|
|
1782
|
+
}
|
|
1783
|
+
if (typeof descriptor.get === "undefined" && descriptor.value == null) {
|
|
1784
|
+
return false;
|
|
1785
|
+
}
|
|
1786
|
+
if (typeof descriptor.set === "undefined" && !descriptor.configurable) {
|
|
1787
|
+
console.error(
|
|
1788
|
+
`[MSW] Failed to apply interceptor: the global \`${propertyName}\` property is non-configurable. This is likely an issue with your environment. If you are using a framework, please open an issue about this in their repository.`
|
|
1789
|
+
);
|
|
1790
|
+
return false;
|
|
1791
|
+
}
|
|
1792
|
+
return true;
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1665
1795
|
// node_modules/.pnpm/@open-draft+until@2.1.0/node_modules/@open-draft/until/lib/index.mjs
|
|
1666
1796
|
var until2 = async (promise) => {
|
|
1667
1797
|
try {
|
|
@@ -1674,69 +1804,7 @@ var until2 = async (promise) => {
|
|
|
1674
1804
|
}
|
|
1675
1805
|
};
|
|
1676
1806
|
|
|
1677
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
1678
|
-
var InterceptorError = class extends Error {
|
|
1679
|
-
constructor(message) {
|
|
1680
|
-
super(message);
|
|
1681
|
-
this.name = "InterceptorError";
|
|
1682
|
-
Object.setPrototypeOf(this, InterceptorError.prototype);
|
|
1683
|
-
}
|
|
1684
|
-
};
|
|
1685
|
-
var kRequestHandled = Symbol("kRequestHandled");
|
|
1686
|
-
var kResponsePromise = Symbol("kResponsePromise");
|
|
1687
|
-
var RequestController = class {
|
|
1688
|
-
constructor(request) {
|
|
1689
|
-
this.request = request;
|
|
1690
|
-
this[kRequestHandled] = false;
|
|
1691
|
-
this[kResponsePromise] = new DeferredPromise();
|
|
1692
|
-
}
|
|
1693
|
-
/**
|
|
1694
|
-
* Respond to this request with the given `Response` instance.
|
|
1695
|
-
* @example
|
|
1696
|
-
* controller.respondWith(new Response())
|
|
1697
|
-
* controller.respondWith(Response.json({ id }))
|
|
1698
|
-
* controller.respondWith(Response.error())
|
|
1699
|
-
*/
|
|
1700
|
-
respondWith(response) {
|
|
1701
|
-
invariant.as(
|
|
1702
|
-
InterceptorError,
|
|
1703
|
-
!this[kRequestHandled],
|
|
1704
|
-
'Failed to respond to the "%s %s" request: the "request" event has already been handled.',
|
|
1705
|
-
this.request.method,
|
|
1706
|
-
this.request.url
|
|
1707
|
-
);
|
|
1708
|
-
this[kRequestHandled] = true;
|
|
1709
|
-
this[kResponsePromise].resolve(response);
|
|
1710
|
-
}
|
|
1711
|
-
/**
|
|
1712
|
-
* Error this request with the given reason.
|
|
1713
|
-
*
|
|
1714
|
-
* @example
|
|
1715
|
-
* controller.errorWith()
|
|
1716
|
-
* controller.errorWith(new Error('Oops!'))
|
|
1717
|
-
* controller.errorWith({ message: 'Oops!'})
|
|
1718
|
-
*/
|
|
1719
|
-
errorWith(reason) {
|
|
1720
|
-
invariant.as(
|
|
1721
|
-
InterceptorError,
|
|
1722
|
-
!this[kRequestHandled],
|
|
1723
|
-
'Failed to error the "%s %s" request: the "request" event has already been handled.',
|
|
1724
|
-
this.request.method,
|
|
1725
|
-
this.request.url
|
|
1726
|
-
);
|
|
1727
|
-
this[kRequestHandled] = true;
|
|
1728
|
-
this[kResponsePromise].resolve(reason);
|
|
1729
|
-
}
|
|
1730
|
-
};
|
|
1731
|
-
async function emitAsync(emitter, eventName, ...data) {
|
|
1732
|
-
const listners = emitter.listeners(eventName);
|
|
1733
|
-
if (listners.length === 0) {
|
|
1734
|
-
return;
|
|
1735
|
-
}
|
|
1736
|
-
for (const listener of listners) {
|
|
1737
|
-
await listener.apply(emitter, data);
|
|
1738
|
-
}
|
|
1739
|
-
}
|
|
1807
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VOUOVDAW.mjs
|
|
1740
1808
|
function isObject2(value, loose = false) {
|
|
1741
1809
|
return loose ? Object.prototype.toString.call(value).startsWith("[object ") : Object.prototype.toString.call(value) === "[object Object]";
|
|
1742
1810
|
}
|
|
@@ -1784,19 +1852,19 @@ function isNodeLikeError(error2) {
|
|
|
1784
1852
|
async function handleRequest2(options) {
|
|
1785
1853
|
const handleResponse = async (response) => {
|
|
1786
1854
|
if (response instanceof Error) {
|
|
1787
|
-
options.
|
|
1855
|
+
await options.controller.errorWith(response);
|
|
1788
1856
|
return true;
|
|
1789
1857
|
}
|
|
1790
1858
|
if (isResponseError(response)) {
|
|
1791
|
-
options.
|
|
1859
|
+
await options.controller.respondWith(response);
|
|
1792
1860
|
return true;
|
|
1793
1861
|
}
|
|
1794
1862
|
if (isResponseLike(response)) {
|
|
1795
|
-
await options.
|
|
1863
|
+
await options.controller.respondWith(response);
|
|
1796
1864
|
return true;
|
|
1797
1865
|
}
|
|
1798
1866
|
if (isObject2(response)) {
|
|
1799
|
-
options.
|
|
1867
|
+
await options.controller.errorWith(response);
|
|
1800
1868
|
return true;
|
|
1801
1869
|
}
|
|
1802
1870
|
return false;
|
|
@@ -1806,7 +1874,7 @@ async function handleRequest2(options) {
|
|
|
1806
1874
|
throw result.error;
|
|
1807
1875
|
}
|
|
1808
1876
|
if (isNodeLikeError(error2)) {
|
|
1809
|
-
options.
|
|
1877
|
+
await options.controller.errorWith(error2);
|
|
1810
1878
|
return true;
|
|
1811
1879
|
}
|
|
1812
1880
|
if (error2 instanceof Response) {
|
|
@@ -1814,27 +1882,19 @@ async function handleRequest2(options) {
|
|
|
1814
1882
|
}
|
|
1815
1883
|
return false;
|
|
1816
1884
|
};
|
|
1817
|
-
options.emitter.once("request", ({ requestId: pendingRequestId }) => {
|
|
1818
|
-
if (pendingRequestId !== options.requestId) {
|
|
1819
|
-
return;
|
|
1820
|
-
}
|
|
1821
|
-
if (options.controller[kResponsePromise].state === "pending") {
|
|
1822
|
-
options.controller[kResponsePromise].resolve(void 0);
|
|
1823
|
-
}
|
|
1824
|
-
});
|
|
1825
1885
|
const requestAbortPromise = new DeferredPromise();
|
|
1826
1886
|
if (options.request.signal) {
|
|
1827
1887
|
if (options.request.signal.aborted) {
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
options.request.signal.addEventListener(
|
|
1831
|
-
"abort",
|
|
1832
|
-
() => {
|
|
1833
|
-
requestAbortPromise.reject(options.request.signal.reason);
|
|
1834
|
-
},
|
|
1835
|
-
{ once: true }
|
|
1836
|
-
);
|
|
1888
|
+
await options.controller.errorWith(options.request.signal.reason);
|
|
1889
|
+
return;
|
|
1837
1890
|
}
|
|
1891
|
+
options.request.signal.addEventListener(
|
|
1892
|
+
"abort",
|
|
1893
|
+
() => {
|
|
1894
|
+
requestAbortPromise.reject(options.request.signal.reason);
|
|
1895
|
+
},
|
|
1896
|
+
{ once: true }
|
|
1897
|
+
);
|
|
1838
1898
|
}
|
|
1839
1899
|
const result = await until2(async () => {
|
|
1840
1900
|
const requestListenersPromise = emitAsync(options.emitter, "request", {
|
|
@@ -1846,73 +1906,58 @@ async function handleRequest2(options) {
|
|
|
1846
1906
|
// Short-circuit the request handling promise if the request gets aborted.
|
|
1847
1907
|
requestAbortPromise,
|
|
1848
1908
|
requestListenersPromise,
|
|
1849
|
-
options.controller
|
|
1909
|
+
options.controller.handled
|
|
1850
1910
|
]);
|
|
1851
|
-
return await options.controller[kResponsePromise];
|
|
1852
1911
|
});
|
|
1853
1912
|
if (requestAbortPromise.state === "rejected") {
|
|
1854
|
-
options.
|
|
1855
|
-
return
|
|
1913
|
+
await options.controller.errorWith(requestAbortPromise.rejectionReason);
|
|
1914
|
+
return;
|
|
1856
1915
|
}
|
|
1857
1916
|
if (result.error) {
|
|
1858
1917
|
if (await handleResponseError(result.error)) {
|
|
1859
|
-
return
|
|
1918
|
+
return;
|
|
1860
1919
|
}
|
|
1861
1920
|
if (options.emitter.listenerCount("unhandledException") > 0) {
|
|
1862
1921
|
const unhandledExceptionController = new RequestController(
|
|
1863
|
-
options.request
|
|
1922
|
+
options.request,
|
|
1923
|
+
{
|
|
1924
|
+
/**
|
|
1925
|
+
* @note Intentionally empty passthrough handle.
|
|
1926
|
+
* This controller is created within another controller and we only need
|
|
1927
|
+
* to know if `unhandledException` listeners handled the request.
|
|
1928
|
+
*/
|
|
1929
|
+
passthrough() {
|
|
1930
|
+
},
|
|
1931
|
+
async respondWith(response) {
|
|
1932
|
+
await handleResponse(response);
|
|
1933
|
+
},
|
|
1934
|
+
async errorWith(reason) {
|
|
1935
|
+
await options.controller.errorWith(reason);
|
|
1936
|
+
}
|
|
1937
|
+
}
|
|
1864
1938
|
);
|
|
1865
1939
|
await emitAsync(options.emitter, "unhandledException", {
|
|
1866
1940
|
error: result.error,
|
|
1867
1941
|
request: options.request,
|
|
1868
1942
|
requestId: options.requestId,
|
|
1869
1943
|
controller: unhandledExceptionController
|
|
1870
|
-
}).then(() => {
|
|
1871
|
-
if (unhandledExceptionController[kResponsePromise].state === "pending") {
|
|
1872
|
-
unhandledExceptionController[kResponsePromise].resolve(void 0);
|
|
1873
|
-
}
|
|
1874
1944
|
});
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
);
|
|
1878
|
-
if (nextResult.error) {
|
|
1879
|
-
return handleResponseError(nextResult.error);
|
|
1880
|
-
}
|
|
1881
|
-
if (nextResult.data) {
|
|
1882
|
-
return handleResponse(nextResult.data);
|
|
1945
|
+
if (unhandledExceptionController.readyState !== RequestController.PENDING) {
|
|
1946
|
+
return;
|
|
1883
1947
|
}
|
|
1884
1948
|
}
|
|
1885
|
-
options.
|
|
1886
|
-
|
|
1887
|
-
}
|
|
1888
|
-
if (result.data) {
|
|
1889
|
-
return handleResponse(result.data);
|
|
1890
|
-
}
|
|
1891
|
-
return false;
|
|
1892
|
-
}
|
|
1893
|
-
|
|
1894
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
|
|
1895
|
-
function hasConfigurableGlobal(propertyName) {
|
|
1896
|
-
const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
|
|
1897
|
-
if (typeof descriptor === "undefined") {
|
|
1898
|
-
return false;
|
|
1899
|
-
}
|
|
1900
|
-
if (typeof descriptor.get === "function" && typeof descriptor.get() === "undefined") {
|
|
1901
|
-
return false;
|
|
1902
|
-
}
|
|
1903
|
-
if (typeof descriptor.get === "undefined" && descriptor.value == null) {
|
|
1904
|
-
return false;
|
|
1905
|
-
}
|
|
1906
|
-
if (typeof descriptor.set === "undefined" && !descriptor.configurable) {
|
|
1907
|
-
console.error(
|
|
1908
|
-
`[MSW] Failed to apply interceptor: the global \`${propertyName}\` property is non-configurable. This is likely an issue with your environment. If you are using a framework, please open an issue about this in their repository.`
|
|
1949
|
+
await options.controller.respondWith(
|
|
1950
|
+
createServerErrorResponse(result.error)
|
|
1909
1951
|
);
|
|
1910
|
-
return
|
|
1952
|
+
return;
|
|
1911
1953
|
}
|
|
1912
|
-
|
|
1954
|
+
if (options.controller.readyState === RequestController.PENDING) {
|
|
1955
|
+
return await options.controller.passthrough();
|
|
1956
|
+
}
|
|
1957
|
+
return options.controller.handled;
|
|
1913
1958
|
}
|
|
1914
1959
|
|
|
1915
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
1960
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-WOWPV4GR.mjs
|
|
1916
1961
|
function createNetworkError(cause) {
|
|
1917
1962
|
return Object.assign(new TypeError("Failed to fetch"), {
|
|
1918
1963
|
cause
|
|
@@ -1968,7 +2013,12 @@ async function followFetchRedirect(request, response) {
|
|
|
1968
2013
|
request.headers.delete("host");
|
|
1969
2014
|
}
|
|
1970
2015
|
requestInit.headers = request.headers;
|
|
1971
|
-
|
|
2016
|
+
const finalResponse = await fetch(new Request(locationUrl, requestInit));
|
|
2017
|
+
Object.defineProperty(finalResponse, "redirected", {
|
|
2018
|
+
value: true,
|
|
2019
|
+
configurable: true
|
|
2020
|
+
});
|
|
2021
|
+
return finalResponse;
|
|
1972
2022
|
}
|
|
1973
2023
|
function sameOrigin(left, right) {
|
|
1974
2024
|
if (left.origin === right.origin && left.origin === "null") {
|
|
@@ -2066,19 +2116,35 @@ var _FetchInterceptor = class extends Interceptor {
|
|
|
2066
2116
|
setRawRequest(request, input);
|
|
2067
2117
|
}
|
|
2068
2118
|
const responsePromise = new DeferredPromise();
|
|
2069
|
-
const controller = new RequestController(request
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2119
|
+
const controller = new RequestController(request, {
|
|
2120
|
+
passthrough: async () => {
|
|
2121
|
+
this.logger.info("request has not been handled, passthrough...");
|
|
2122
|
+
const requestCloneForResponseEvent = request.clone();
|
|
2123
|
+
const { error: responseError, data: originalResponse } = await until2(
|
|
2124
|
+
() => pureFetch(request)
|
|
2125
|
+
);
|
|
2126
|
+
if (responseError) {
|
|
2127
|
+
return responsePromise.reject(responseError);
|
|
2128
|
+
}
|
|
2129
|
+
this.logger.info("original fetch performed", originalResponse);
|
|
2130
|
+
if (this.emitter.listenerCount("response") > 0) {
|
|
2131
|
+
this.logger.info('emitting the "response" event...');
|
|
2132
|
+
const responseClone = originalResponse.clone();
|
|
2133
|
+
await emitAsync(this.emitter, "response", {
|
|
2134
|
+
response: responseClone,
|
|
2135
|
+
isMockedResponse: false,
|
|
2136
|
+
request: requestCloneForResponseEvent,
|
|
2137
|
+
requestId
|
|
2138
|
+
});
|
|
2139
|
+
}
|
|
2140
|
+
responsePromise.resolve(originalResponse);
|
|
2141
|
+
},
|
|
2142
|
+
respondWith: async (rawResponse) => {
|
|
2143
|
+
if (isResponseError(rawResponse)) {
|
|
2144
|
+
this.logger.info("request has errored!", { response: rawResponse });
|
|
2145
|
+
responsePromise.reject(createNetworkError(rawResponse));
|
|
2146
|
+
return;
|
|
2147
|
+
}
|
|
2082
2148
|
this.logger.info("received mocked response!", {
|
|
2083
2149
|
rawResponse
|
|
2084
2150
|
});
|
|
@@ -2116,37 +2182,24 @@ var _FetchInterceptor = class extends Interceptor {
|
|
|
2116
2182
|
}
|
|
2117
2183
|
responsePromise.resolve(response);
|
|
2118
2184
|
},
|
|
2119
|
-
|
|
2120
|
-
this.logger.info("request has
|
|
2121
|
-
responsePromise.reject(
|
|
2122
|
-
},
|
|
2123
|
-
onError: (error2) => {
|
|
2124
|
-
this.logger.info("request has been aborted!", { error: error2 });
|
|
2125
|
-
responsePromise.reject(error2);
|
|
2185
|
+
errorWith: (reason) => {
|
|
2186
|
+
this.logger.info("request has been aborted!", { reason });
|
|
2187
|
+
responsePromise.reject(reason);
|
|
2126
2188
|
}
|
|
2127
2189
|
});
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
return responsePromise;
|
|
2131
|
-
}
|
|
2190
|
+
this.logger.info("[%s] %s", request.method, request.url);
|
|
2191
|
+
this.logger.info("awaiting for the mocked response...");
|
|
2132
2192
|
this.logger.info(
|
|
2133
|
-
|
|
2193
|
+
'emitting the "request" event for %s listener(s)...',
|
|
2194
|
+
this.emitter.listenerCount("request")
|
|
2134
2195
|
);
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
const responseClone = response.clone();
|
|
2141
|
-
await emitAsync(this.emitter, "response", {
|
|
2142
|
-
response: responseClone,
|
|
2143
|
-
isMockedResponse: false,
|
|
2144
|
-
request: requestCloneForResponseEvent,
|
|
2145
|
-
requestId
|
|
2146
|
-
});
|
|
2147
|
-
}
|
|
2148
|
-
return response;
|
|
2196
|
+
await handleRequest2({
|
|
2197
|
+
request,
|
|
2198
|
+
requestId,
|
|
2199
|
+
emitter: this.emitter,
|
|
2200
|
+
controller
|
|
2149
2201
|
});
|
|
2202
|
+
return responsePromise;
|
|
2150
2203
|
};
|
|
2151
2204
|
Object.defineProperty(globalThis.fetch, IS_PATCHED_MODULE, {
|
|
2152
2205
|
enumerable: true,
|
|
@@ -2168,7 +2221,7 @@ var _FetchInterceptor = class extends Interceptor {
|
|
|
2168
2221
|
var FetchInterceptor = _FetchInterceptor;
|
|
2169
2222
|
FetchInterceptor.symbol = Symbol("fetch");
|
|
2170
2223
|
|
|
2171
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.
|
|
2224
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-WADP6VHN.mjs
|
|
2172
2225
|
function concatArrayBuffer(left, right) {
|
|
2173
2226
|
const result = new Uint8Array(left.byteLength + right.byteLength);
|
|
2174
2227
|
result.set(left, 0);
|
|
@@ -2336,12 +2389,12 @@ function createResponse(request, body) {
|
|
|
2336
2389
|
url: request.responseURL,
|
|
2337
2390
|
status: request.status,
|
|
2338
2391
|
statusText: request.statusText,
|
|
2339
|
-
headers:
|
|
2392
|
+
headers: createHeadersFromXMLHttpRequestHeaders(
|
|
2340
2393
|
request.getAllResponseHeaders()
|
|
2341
2394
|
)
|
|
2342
2395
|
});
|
|
2343
2396
|
}
|
|
2344
|
-
function
|
|
2397
|
+
function createHeadersFromXMLHttpRequestHeaders(headersString) {
|
|
2345
2398
|
const headers = new Headers();
|
|
2346
2399
|
const lines = headersString.split(/[\r\n]+/);
|
|
2347
2400
|
for (const line of lines) {
|
|
@@ -2393,7 +2446,6 @@ var XMLHttpRequestController = class {
|
|
|
2393
2446
|
}
|
|
2394
2447
|
},
|
|
2395
2448
|
methodCall: ([methodName, args], invoke) => {
|
|
2396
|
-
var _a;
|
|
2397
2449
|
switch (methodName) {
|
|
2398
2450
|
case "open": {
|
|
2399
2451
|
const [method, url] = args;
|
|
@@ -2444,24 +2496,27 @@ var XMLHttpRequestController = class {
|
|
|
2444
2496
|
const requestBody = typeof body === "string" ? encodeBuffer(body) : body;
|
|
2445
2497
|
const fetchRequest = this.toFetchApiRequest(requestBody);
|
|
2446
2498
|
this[kFetchRequest] = fetchRequest.clone();
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
this.
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
this.request.setRequestHeader(
|
|
2459
|
-
INTERNAL_REQUEST_ID_HEADER_NAME,
|
|
2460
|
-
this.requestId
|
|
2499
|
+
queueMicrotask(() => {
|
|
2500
|
+
var _a;
|
|
2501
|
+
const onceRequestSettled = ((_a = this.onRequest) == null ? void 0 : _a.call(this, {
|
|
2502
|
+
request: fetchRequest,
|
|
2503
|
+
requestId: this.requestId
|
|
2504
|
+
})) || Promise.resolve();
|
|
2505
|
+
onceRequestSettled.finally(() => {
|
|
2506
|
+
if (!this[kIsRequestHandled]) {
|
|
2507
|
+
this.logger.info(
|
|
2508
|
+
"request callback settled but request has not been handled (readystate %d), performing as-is...",
|
|
2509
|
+
this.request.readyState
|
|
2461
2510
|
);
|
|
2511
|
+
if (IS_NODE2) {
|
|
2512
|
+
this.request.setRequestHeader(
|
|
2513
|
+
INTERNAL_REQUEST_ID_HEADER_NAME,
|
|
2514
|
+
this.requestId
|
|
2515
|
+
);
|
|
2516
|
+
}
|
|
2517
|
+
return invoke();
|
|
2462
2518
|
}
|
|
2463
|
-
|
|
2464
|
-
}
|
|
2519
|
+
});
|
|
2465
2520
|
});
|
|
2466
2521
|
break;
|
|
2467
2522
|
}
|
|
@@ -2751,7 +2806,7 @@ var XMLHttpRequestController = class {
|
|
|
2751
2806
|
define(this.request, "readyState", nextReadyState);
|
|
2752
2807
|
this.logger.info("set readyState to: %d", nextReadyState);
|
|
2753
2808
|
if (nextReadyState !== this.request.UNSENT) {
|
|
2754
|
-
this.logger.info('
|
|
2809
|
+
this.logger.info('triggering "readystatechange" event...');
|
|
2755
2810
|
this.trigger("readystatechange", this.request);
|
|
2756
2811
|
}
|
|
2757
2812
|
}
|
|
@@ -2860,35 +2915,37 @@ function createXMLHttpRequestProxy({
|
|
|
2860
2915
|
logger
|
|
2861
2916
|
);
|
|
2862
2917
|
xhrRequestController.onRequest = async function({ request, requestId }) {
|
|
2863
|
-
const controller = new RequestController(request
|
|
2918
|
+
const controller = new RequestController(request, {
|
|
2919
|
+
passthrough: () => {
|
|
2920
|
+
this.logger.info(
|
|
2921
|
+
"no mocked response received, performing request as-is..."
|
|
2922
|
+
);
|
|
2923
|
+
},
|
|
2924
|
+
respondWith: async (response) => {
|
|
2925
|
+
if (isResponseError(response)) {
|
|
2926
|
+
this.errorWith(new TypeError("Network error"));
|
|
2927
|
+
return;
|
|
2928
|
+
}
|
|
2929
|
+
await this.respondWith(response);
|
|
2930
|
+
},
|
|
2931
|
+
errorWith: (reason) => {
|
|
2932
|
+
this.logger.info("request errored!", { error: reason });
|
|
2933
|
+
if (reason instanceof Error) {
|
|
2934
|
+
this.errorWith(reason);
|
|
2935
|
+
}
|
|
2936
|
+
}
|
|
2937
|
+
});
|
|
2864
2938
|
this.logger.info("awaiting mocked response...");
|
|
2865
2939
|
this.logger.info(
|
|
2866
2940
|
'emitting the "request" event for %s listener(s)...',
|
|
2867
2941
|
emitter.listenerCount("request")
|
|
2868
2942
|
);
|
|
2869
|
-
|
|
2943
|
+
await handleRequest2({
|
|
2870
2944
|
request,
|
|
2871
2945
|
requestId,
|
|
2872
2946
|
controller,
|
|
2873
|
-
emitter
|
|
2874
|
-
onResponse: async (response) => {
|
|
2875
|
-
await this.respondWith(response);
|
|
2876
|
-
},
|
|
2877
|
-
onRequestError: () => {
|
|
2878
|
-
this.errorWith(new TypeError("Network error"));
|
|
2879
|
-
},
|
|
2880
|
-
onError: (error2) => {
|
|
2881
|
-
this.logger.info("request errored!", { error: error2 });
|
|
2882
|
-
if (error2 instanceof Error) {
|
|
2883
|
-
this.errorWith(error2);
|
|
2884
|
-
}
|
|
2885
|
-
}
|
|
2947
|
+
emitter
|
|
2886
2948
|
});
|
|
2887
|
-
if (!isRequestHandled) {
|
|
2888
|
-
this.logger.info(
|
|
2889
|
-
"no mocked response received, performing request as-is..."
|
|
2890
|
-
);
|
|
2891
|
-
}
|
|
2892
2949
|
};
|
|
2893
2950
|
xhrRequestController.onResponse = async function({
|
|
2894
2951
|
response,
|