msw 2.11.5 → 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.
@@ -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.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
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.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
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.39.1/node_modules/@mswjs/interceptors/lib/browser/index.mjs
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.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-L37TY7LC.mjs
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.onError(response);
1855
+ await options.controller.errorWith(response);
1788
1856
  return true;
1789
1857
  }
1790
1858
  if (isResponseError(response)) {
1791
- options.onRequestError(response);
1859
+ await options.controller.respondWith(response);
1792
1860
  return true;
1793
1861
  }
1794
1862
  if (isResponseLike(response)) {
1795
- await options.onResponse(response);
1863
+ await options.controller.respondWith(response);
1796
1864
  return true;
1797
1865
  }
1798
1866
  if (isObject2(response)) {
1799
- options.onError(response);
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.onError(error2);
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
- requestAbortPromise.reject(options.request.signal.reason);
1829
- } else {
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[kResponsePromise]
1909
+ options.controller.handled
1850
1910
  ]);
1851
- return await options.controller[kResponsePromise];
1852
1911
  });
1853
1912
  if (requestAbortPromise.state === "rejected") {
1854
- options.onError(requestAbortPromise.rejectionReason);
1855
- return true;
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 true;
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
- const nextResult = await until2(
1876
- () => unhandledExceptionController[kResponsePromise]
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.onResponse(createServerErrorResponse(result.error));
1886
- return true;
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 false;
1952
+ return;
1911
1953
  }
1912
- return true;
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.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-ARPHZXGT.mjs
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
- return fetch(new Request(locationUrl, requestInit));
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
- this.logger.info("[%s] %s", request.method, request.url);
2071
- this.logger.info("awaiting for the mocked response...");
2072
- this.logger.info(
2073
- 'emitting the "request" event for %s listener(s)...',
2074
- this.emitter.listenerCount("request")
2075
- );
2076
- const isRequestHandled = await handleRequest2({
2077
- request,
2078
- requestId,
2079
- emitter: this.emitter,
2080
- controller,
2081
- onResponse: async (rawResponse) => {
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
- onRequestError: (response) => {
2120
- this.logger.info("request has errored!", { response });
2121
- responsePromise.reject(createNetworkError(response));
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
- if (isRequestHandled) {
2129
- this.logger.info("request has been handled, returning mock promise...");
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
- "no mocked response received, performing request as-is..."
2193
+ 'emitting the "request" event for %s listener(s)...',
2194
+ this.emitter.listenerCount("request")
2134
2195
  );
2135
- const requestCloneForResponseEvent = request.clone();
2136
- return pureFetch(request).then(async (response) => {
2137
- this.logger.info("original fetch performed", response);
2138
- if (this.emitter.listenerCount("response") > 0) {
2139
- this.logger.info('emitting the "response" event...');
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.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QKSBFQDK.mjs
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: createHeadersFromXMLHttpReqestHeaders(
2392
+ headers: createHeadersFromXMLHttpRequestHeaders(
2340
2393
  request.getAllResponseHeaders()
2341
2394
  )
2342
2395
  });
2343
2396
  }
2344
- function createHeadersFromXMLHttpReqestHeaders(headersString) {
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
- const onceRequestSettled = ((_a = this.onRequest) == null ? void 0 : _a.call(this, {
2448
- request: fetchRequest,
2449
- requestId: this.requestId
2450
- })) || Promise.resolve();
2451
- onceRequestSettled.finally(() => {
2452
- if (!this[kIsRequestHandled]) {
2453
- this.logger.info(
2454
- "request callback settled but request has not been handled (readystate %d), performing as-is...",
2455
- this.request.readyState
2456
- );
2457
- if (IS_NODE2) {
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
- return invoke();
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('triggerring "readystatechange" event...');
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
- const isRequestHandled = await handleRequest2({
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,