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.
@@ -464,7 +464,7 @@ You can also automate this process and make the worker script update automatical
464
464
  return integrityCheckPromise;
465
465
  }
466
466
 
467
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
467
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
468
468
  var encoder = new TextEncoder();
469
469
  function encodeBuffer(text) {
470
470
  return encoder.encode(text);
@@ -480,100 +480,6 @@ function toArrayBuffer(array) {
480
480
  );
481
481
  }
482
482
 
483
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-3RXCRGL2.mjs
484
- var IS_PATCHED_MODULE = Symbol("isPatchedModule");
485
- function canParseUrl(url) {
486
- try {
487
- new URL(url);
488
- return true;
489
- } catch (_error) {
490
- return false;
491
- }
492
- }
493
- function getValueBySymbol(symbolName, source) {
494
- const ownSymbols = Object.getOwnPropertySymbols(source);
495
- const symbol = ownSymbols.find((symbol2) => {
496
- return symbol2.description === symbolName;
497
- });
498
- if (symbol) {
499
- return Reflect.get(source, symbol);
500
- }
501
- return;
502
- }
503
- var _FetchResponse = class extends Response {
504
- static isConfigurableStatusCode(status) {
505
- return status >= 200 && status <= 599;
506
- }
507
- static isRedirectResponse(status) {
508
- return _FetchResponse.STATUS_CODES_WITH_REDIRECT.includes(status);
509
- }
510
- /**
511
- * Returns a boolean indicating whether the given response status
512
- * code represents a response that can have a body.
513
- */
514
- static isResponseWithBody(status) {
515
- return !_FetchResponse.STATUS_CODES_WITHOUT_BODY.includes(status);
516
- }
517
- static setUrl(url, response) {
518
- if (!url || url === "about:" || !canParseUrl(url)) {
519
- return;
520
- }
521
- const state = getValueBySymbol("state", response);
522
- if (state) {
523
- state.urlList.push(new URL(url));
524
- } else {
525
- Object.defineProperty(response, "url", {
526
- value: url,
527
- enumerable: true,
528
- configurable: true,
529
- writable: false
530
- });
531
- }
532
- }
533
- /**
534
- * Parses the given raw HTTP headers into a Fetch API `Headers` instance.
535
- */
536
- static parseRawHeaders(rawHeaders) {
537
- const headers = new Headers();
538
- for (let line = 0; line < rawHeaders.length; line += 2) {
539
- headers.append(rawHeaders[line], rawHeaders[line + 1]);
540
- }
541
- return headers;
542
- }
543
- constructor(body, init = {}) {
544
- var _a;
545
- const status = (_a = init.status) != null ? _a : 200;
546
- const safeStatus = _FetchResponse.isConfigurableStatusCode(status) ? status : 200;
547
- const finalBody = _FetchResponse.isResponseWithBody(status) ? body : null;
548
- super(finalBody, {
549
- status: safeStatus,
550
- statusText: init.statusText,
551
- headers: init.headers
552
- });
553
- if (status !== safeStatus) {
554
- const state = getValueBySymbol("state", this);
555
- if (state) {
556
- state.status = status;
557
- } else {
558
- Object.defineProperty(this, "status", {
559
- value: status,
560
- enumerable: true,
561
- configurable: true,
562
- writable: false
563
- });
564
- }
565
- }
566
- _FetchResponse.setUrl(init.url, this);
567
- }
568
- };
569
- var FetchResponse = _FetchResponse;
570
- FetchResponse.STATUS_CODES_WITHOUT_BODY = [101, 103, 204, 205, 304];
571
- FetchResponse.STATUS_CODES_WITH_REDIRECT = [301, 302, 303, 307, 308];
572
- var kRawRequest = Symbol("kRawRequest");
573
- function setRawRequest(request, rawRequest) {
574
- Reflect.set(request, kRawRequest, rawRequest);
575
- }
576
-
577
483
  // node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs
578
484
  var __defProp = Object.defineProperty;
579
485
  var __export = (target, all) => {
@@ -1011,7 +917,20 @@ var _Emitter = class {
1011
917
  var Emitter = _Emitter;
1012
918
  Emitter.defaultMaxListeners = 10;
1013
919
 
1014
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
920
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-Z5TSB3T6.mjs
921
+ var __accessCheck = (obj, member, msg) => {
922
+ if (!member.has(obj))
923
+ throw TypeError("Cannot " + msg);
924
+ };
925
+ var __privateGet = (obj, member, getter) => {
926
+ __accessCheck(obj, member, "read from private field");
927
+ return getter ? getter.call(obj) : member.get(obj);
928
+ };
929
+ var __privateAdd = (obj, member, value) => {
930
+ if (member.has(obj))
931
+ throw TypeError("Cannot add the same private member more than once");
932
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
933
+ };
1015
934
  var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
1016
935
  function getGlobalSymbol(symbol) {
1017
936
  return (
@@ -1159,7 +1078,188 @@ function createRequestId() {
1159
1078
  return Math.random().toString(16).slice(2);
1160
1079
  }
1161
1080
 
1162
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1081
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-LIKZF2VU.mjs
1082
+ var IS_PATCHED_MODULE = Symbol("isPatchedModule");
1083
+ var InterceptorError = class extends Error {
1084
+ constructor(message) {
1085
+ super(message);
1086
+ this.name = "InterceptorError";
1087
+ Object.setPrototypeOf(this, InterceptorError.prototype);
1088
+ }
1089
+ };
1090
+ var _handled;
1091
+ var handled_get;
1092
+ var _RequestController = class {
1093
+ constructor(request, source) {
1094
+ this.request = request;
1095
+ this.source = source;
1096
+ __privateAdd(this, _handled);
1097
+ this.readyState = _RequestController.PENDING;
1098
+ this.handled = new DeferredPromise();
1099
+ }
1100
+ /**
1101
+ * Perform this request as-is.
1102
+ */
1103
+ async passthrough() {
1104
+ invariant.as(
1105
+ InterceptorError,
1106
+ this.readyState === _RequestController.PENDING,
1107
+ 'Failed to passthrough the "%s %s" request: the request has already been handled',
1108
+ this.request.method,
1109
+ this.request.url
1110
+ );
1111
+ this.readyState = _RequestController.PASSTHROUGH;
1112
+ await this.source.passthrough();
1113
+ __privateGet(this, _handled, handled_get).resolve();
1114
+ }
1115
+ /**
1116
+ * Respond to this request with the given `Response` instance.
1117
+ *
1118
+ * @example
1119
+ * controller.respondWith(new Response())
1120
+ * controller.respondWith(Response.json({ id }))
1121
+ * controller.respondWith(Response.error())
1122
+ */
1123
+ respondWith(response) {
1124
+ invariant.as(
1125
+ InterceptorError,
1126
+ this.readyState === _RequestController.PENDING,
1127
+ 'Failed to respond to the "%s %s" request with "%d %s": the request has already been handled (%d)',
1128
+ this.request.method,
1129
+ this.request.url,
1130
+ response.status,
1131
+ response.statusText || "OK",
1132
+ this.readyState
1133
+ );
1134
+ this.readyState = _RequestController.RESPONSE;
1135
+ __privateGet(this, _handled, handled_get).resolve();
1136
+ this.source.respondWith(response);
1137
+ }
1138
+ /**
1139
+ * Error this request with the given reason.
1140
+ *
1141
+ * @example
1142
+ * controller.errorWith()
1143
+ * controller.errorWith(new Error('Oops!'))
1144
+ * controller.errorWith({ message: 'Oops!'})
1145
+ */
1146
+ errorWith(reason) {
1147
+ invariant.as(
1148
+ InterceptorError,
1149
+ this.readyState === _RequestController.PENDING,
1150
+ 'Failed to error the "%s %s" request with "%s": the request has already been handled (%d)',
1151
+ this.request.method,
1152
+ this.request.url,
1153
+ reason == null ? void 0 : reason.toString(),
1154
+ this.readyState
1155
+ );
1156
+ this.readyState = _RequestController.ERROR;
1157
+ this.source.errorWith(reason);
1158
+ __privateGet(this, _handled, handled_get).resolve();
1159
+ }
1160
+ };
1161
+ var RequestController = _RequestController;
1162
+ _handled = /* @__PURE__ */ new WeakSet();
1163
+ handled_get = function() {
1164
+ return this.handled;
1165
+ };
1166
+ RequestController.PENDING = 0;
1167
+ RequestController.PASSTHROUGH = 1;
1168
+ RequestController.RESPONSE = 2;
1169
+ RequestController.ERROR = 3;
1170
+ function canParseUrl(url) {
1171
+ try {
1172
+ new URL(url);
1173
+ return true;
1174
+ } catch (_error) {
1175
+ return false;
1176
+ }
1177
+ }
1178
+ function getValueBySymbol(symbolName, source) {
1179
+ const ownSymbols = Object.getOwnPropertySymbols(source);
1180
+ const symbol = ownSymbols.find((symbol2) => {
1181
+ return symbol2.description === symbolName;
1182
+ });
1183
+ if (symbol) {
1184
+ return Reflect.get(source, symbol);
1185
+ }
1186
+ return;
1187
+ }
1188
+ var _FetchResponse = class extends Response {
1189
+ static isConfigurableStatusCode(status) {
1190
+ return status >= 200 && status <= 599;
1191
+ }
1192
+ static isRedirectResponse(status) {
1193
+ return _FetchResponse.STATUS_CODES_WITH_REDIRECT.includes(status);
1194
+ }
1195
+ /**
1196
+ * Returns a boolean indicating whether the given response status
1197
+ * code represents a response that can have a body.
1198
+ */
1199
+ static isResponseWithBody(status) {
1200
+ return !_FetchResponse.STATUS_CODES_WITHOUT_BODY.includes(status);
1201
+ }
1202
+ static setUrl(url, response) {
1203
+ if (!url || url === "about:" || !canParseUrl(url)) {
1204
+ return;
1205
+ }
1206
+ const state = getValueBySymbol("state", response);
1207
+ if (state) {
1208
+ state.urlList.push(new URL(url));
1209
+ } else {
1210
+ Object.defineProperty(response, "url", {
1211
+ value: url,
1212
+ enumerable: true,
1213
+ configurable: true,
1214
+ writable: false
1215
+ });
1216
+ }
1217
+ }
1218
+ /**
1219
+ * Parses the given raw HTTP headers into a Fetch API `Headers` instance.
1220
+ */
1221
+ static parseRawHeaders(rawHeaders) {
1222
+ const headers = new Headers();
1223
+ for (let line = 0; line < rawHeaders.length; line += 2) {
1224
+ headers.append(rawHeaders[line], rawHeaders[line + 1]);
1225
+ }
1226
+ return headers;
1227
+ }
1228
+ constructor(body, init = {}) {
1229
+ var _a;
1230
+ const status = (_a = init.status) != null ? _a : 200;
1231
+ const safeStatus = _FetchResponse.isConfigurableStatusCode(status) ? status : 200;
1232
+ const finalBody = _FetchResponse.isResponseWithBody(status) ? body : null;
1233
+ super(finalBody, {
1234
+ status: safeStatus,
1235
+ statusText: init.statusText,
1236
+ headers: init.headers
1237
+ });
1238
+ if (status !== safeStatus) {
1239
+ const state = getValueBySymbol("state", this);
1240
+ if (state) {
1241
+ state.status = status;
1242
+ } else {
1243
+ Object.defineProperty(this, "status", {
1244
+ value: status,
1245
+ enumerable: true,
1246
+ configurable: true,
1247
+ writable: false
1248
+ });
1249
+ }
1250
+ }
1251
+ _FetchResponse.setUrl(init.url, this);
1252
+ }
1253
+ };
1254
+ var FetchResponse = _FetchResponse;
1255
+ FetchResponse.STATUS_CODES_WITHOUT_BODY = [101, 103, 204, 205, 304];
1256
+ FetchResponse.STATUS_CODES_WITH_REDIRECT = [301, 302, 303, 307, 308];
1257
+ var kRawRequest = Symbol("kRawRequest");
1258
+ function setRawRequest(request, rawRequest) {
1259
+ Reflect.set(request, kRawRequest, rawRequest);
1260
+ }
1261
+
1262
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1163
1263
  var BatchInterceptor = class extends Interceptor {
1164
1264
  constructor(options) {
1165
1265
  BatchInterceptor.symbol = Symbol(options.name);
@@ -1635,6 +1735,36 @@ var WorkerChannel = class extends Emitter2 {
1635
1735
  }
1636
1736
  };
1637
1737
 
1738
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VYSDLBSS.mjs
1739
+ async function emitAsync(emitter, eventName, ...data) {
1740
+ const listeners = emitter.listeners(eventName);
1741
+ if (listeners.length === 0) {
1742
+ return;
1743
+ }
1744
+ for (const listener of listeners) {
1745
+ await listener.apply(emitter, data);
1746
+ }
1747
+ }
1748
+ function hasConfigurableGlobal(propertyName) {
1749
+ const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
1750
+ if (typeof descriptor === "undefined") {
1751
+ return false;
1752
+ }
1753
+ if (typeof descriptor.get === "function" && typeof descriptor.get() === "undefined") {
1754
+ return false;
1755
+ }
1756
+ if (typeof descriptor.get === "undefined" && descriptor.value == null) {
1757
+ return false;
1758
+ }
1759
+ if (typeof descriptor.set === "undefined" && !descriptor.configurable) {
1760
+ console.error(
1761
+ `[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.`
1762
+ );
1763
+ return false;
1764
+ }
1765
+ return true;
1766
+ }
1767
+
1638
1768
  // node_modules/.pnpm/@open-draft+until@2.1.0/node_modules/@open-draft/until/lib/index.mjs
1639
1769
  var until2 = async (promise) => {
1640
1770
  try {
@@ -1647,69 +1777,7 @@ var until2 = async (promise) => {
1647
1777
  }
1648
1778
  };
1649
1779
 
1650
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-L37TY7LC.mjs
1651
- var InterceptorError = class extends Error {
1652
- constructor(message) {
1653
- super(message);
1654
- this.name = "InterceptorError";
1655
- Object.setPrototypeOf(this, InterceptorError.prototype);
1656
- }
1657
- };
1658
- var kRequestHandled = Symbol("kRequestHandled");
1659
- var kResponsePromise = Symbol("kResponsePromise");
1660
- var RequestController = class {
1661
- constructor(request) {
1662
- this.request = request;
1663
- this[kRequestHandled] = false;
1664
- this[kResponsePromise] = new DeferredPromise();
1665
- }
1666
- /**
1667
- * Respond to this request with the given `Response` instance.
1668
- * @example
1669
- * controller.respondWith(new Response())
1670
- * controller.respondWith(Response.json({ id }))
1671
- * controller.respondWith(Response.error())
1672
- */
1673
- respondWith(response) {
1674
- invariant.as(
1675
- InterceptorError,
1676
- !this[kRequestHandled],
1677
- 'Failed to respond to the "%s %s" request: the "request" event has already been handled.',
1678
- this.request.method,
1679
- this.request.url
1680
- );
1681
- this[kRequestHandled] = true;
1682
- this[kResponsePromise].resolve(response);
1683
- }
1684
- /**
1685
- * Error this request with the given reason.
1686
- *
1687
- * @example
1688
- * controller.errorWith()
1689
- * controller.errorWith(new Error('Oops!'))
1690
- * controller.errorWith({ message: 'Oops!'})
1691
- */
1692
- errorWith(reason) {
1693
- invariant.as(
1694
- InterceptorError,
1695
- !this[kRequestHandled],
1696
- 'Failed to error the "%s %s" request: the "request" event has already been handled.',
1697
- this.request.method,
1698
- this.request.url
1699
- );
1700
- this[kRequestHandled] = true;
1701
- this[kResponsePromise].resolve(reason);
1702
- }
1703
- };
1704
- async function emitAsync(emitter, eventName, ...data) {
1705
- const listners = emitter.listeners(eventName);
1706
- if (listners.length === 0) {
1707
- return;
1708
- }
1709
- for (const listener of listners) {
1710
- await listener.apply(emitter, data);
1711
- }
1712
- }
1780
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VOUOVDAW.mjs
1713
1781
  function isObject2(value, loose = false) {
1714
1782
  return loose ? Object.prototype.toString.call(value).startsWith("[object ") : Object.prototype.toString.call(value) === "[object Object]";
1715
1783
  }
@@ -1757,19 +1825,19 @@ function isNodeLikeError(error2) {
1757
1825
  async function handleRequest2(options) {
1758
1826
  const handleResponse = async (response) => {
1759
1827
  if (response instanceof Error) {
1760
- options.onError(response);
1828
+ await options.controller.errorWith(response);
1761
1829
  return true;
1762
1830
  }
1763
1831
  if (isResponseError(response)) {
1764
- options.onRequestError(response);
1832
+ await options.controller.respondWith(response);
1765
1833
  return true;
1766
1834
  }
1767
1835
  if (isResponseLike(response)) {
1768
- await options.onResponse(response);
1836
+ await options.controller.respondWith(response);
1769
1837
  return true;
1770
1838
  }
1771
1839
  if (isObject2(response)) {
1772
- options.onError(response);
1840
+ await options.controller.errorWith(response);
1773
1841
  return true;
1774
1842
  }
1775
1843
  return false;
@@ -1779,7 +1847,7 @@ async function handleRequest2(options) {
1779
1847
  throw result.error;
1780
1848
  }
1781
1849
  if (isNodeLikeError(error2)) {
1782
- options.onError(error2);
1850
+ await options.controller.errorWith(error2);
1783
1851
  return true;
1784
1852
  }
1785
1853
  if (error2 instanceof Response) {
@@ -1787,27 +1855,19 @@ async function handleRequest2(options) {
1787
1855
  }
1788
1856
  return false;
1789
1857
  };
1790
- options.emitter.once("request", ({ requestId: pendingRequestId }) => {
1791
- if (pendingRequestId !== options.requestId) {
1792
- return;
1793
- }
1794
- if (options.controller[kResponsePromise].state === "pending") {
1795
- options.controller[kResponsePromise].resolve(void 0);
1796
- }
1797
- });
1798
1858
  const requestAbortPromise = new DeferredPromise();
1799
1859
  if (options.request.signal) {
1800
1860
  if (options.request.signal.aborted) {
1801
- requestAbortPromise.reject(options.request.signal.reason);
1802
- } else {
1803
- options.request.signal.addEventListener(
1804
- "abort",
1805
- () => {
1806
- requestAbortPromise.reject(options.request.signal.reason);
1807
- },
1808
- { once: true }
1809
- );
1861
+ await options.controller.errorWith(options.request.signal.reason);
1862
+ return;
1810
1863
  }
1864
+ options.request.signal.addEventListener(
1865
+ "abort",
1866
+ () => {
1867
+ requestAbortPromise.reject(options.request.signal.reason);
1868
+ },
1869
+ { once: true }
1870
+ );
1811
1871
  }
1812
1872
  const result = await until2(async () => {
1813
1873
  const requestListenersPromise = emitAsync(options.emitter, "request", {
@@ -1819,73 +1879,58 @@ async function handleRequest2(options) {
1819
1879
  // Short-circuit the request handling promise if the request gets aborted.
1820
1880
  requestAbortPromise,
1821
1881
  requestListenersPromise,
1822
- options.controller[kResponsePromise]
1882
+ options.controller.handled
1823
1883
  ]);
1824
- return await options.controller[kResponsePromise];
1825
1884
  });
1826
1885
  if (requestAbortPromise.state === "rejected") {
1827
- options.onError(requestAbortPromise.rejectionReason);
1828
- return true;
1886
+ await options.controller.errorWith(requestAbortPromise.rejectionReason);
1887
+ return;
1829
1888
  }
1830
1889
  if (result.error) {
1831
1890
  if (await handleResponseError(result.error)) {
1832
- return true;
1891
+ return;
1833
1892
  }
1834
1893
  if (options.emitter.listenerCount("unhandledException") > 0) {
1835
1894
  const unhandledExceptionController = new RequestController(
1836
- options.request
1895
+ options.request,
1896
+ {
1897
+ /**
1898
+ * @note Intentionally empty passthrough handle.
1899
+ * This controller is created within another controller and we only need
1900
+ * to know if `unhandledException` listeners handled the request.
1901
+ */
1902
+ passthrough() {
1903
+ },
1904
+ async respondWith(response) {
1905
+ await handleResponse(response);
1906
+ },
1907
+ async errorWith(reason) {
1908
+ await options.controller.errorWith(reason);
1909
+ }
1910
+ }
1837
1911
  );
1838
1912
  await emitAsync(options.emitter, "unhandledException", {
1839
1913
  error: result.error,
1840
1914
  request: options.request,
1841
1915
  requestId: options.requestId,
1842
1916
  controller: unhandledExceptionController
1843
- }).then(() => {
1844
- if (unhandledExceptionController[kResponsePromise].state === "pending") {
1845
- unhandledExceptionController[kResponsePromise].resolve(void 0);
1846
- }
1847
1917
  });
1848
- const nextResult = await until2(
1849
- () => unhandledExceptionController[kResponsePromise]
1850
- );
1851
- if (nextResult.error) {
1852
- return handleResponseError(nextResult.error);
1853
- }
1854
- if (nextResult.data) {
1855
- return handleResponse(nextResult.data);
1918
+ if (unhandledExceptionController.readyState !== RequestController.PENDING) {
1919
+ return;
1856
1920
  }
1857
1921
  }
1858
- options.onResponse(createServerErrorResponse(result.error));
1859
- return true;
1860
- }
1861
- if (result.data) {
1862
- return handleResponse(result.data);
1863
- }
1864
- return false;
1865
- }
1866
-
1867
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
1868
- function hasConfigurableGlobal(propertyName) {
1869
- const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
1870
- if (typeof descriptor === "undefined") {
1871
- return false;
1872
- }
1873
- if (typeof descriptor.get === "function" && typeof descriptor.get() === "undefined") {
1874
- return false;
1875
- }
1876
- if (typeof descriptor.get === "undefined" && descriptor.value == null) {
1877
- return false;
1878
- }
1879
- if (typeof descriptor.set === "undefined" && !descriptor.configurable) {
1880
- console.error(
1881
- `[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.`
1922
+ await options.controller.respondWith(
1923
+ createServerErrorResponse(result.error)
1882
1924
  );
1883
- return false;
1925
+ return;
1884
1926
  }
1885
- return true;
1927
+ if (options.controller.readyState === RequestController.PENDING) {
1928
+ return await options.controller.passthrough();
1929
+ }
1930
+ return options.controller.handled;
1886
1931
  }
1887
1932
 
1888
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-ARPHZXGT.mjs
1933
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-WOWPV4GR.mjs
1889
1934
  function createNetworkError(cause) {
1890
1935
  return Object.assign(new TypeError("Failed to fetch"), {
1891
1936
  cause
@@ -1941,7 +1986,12 @@ async function followFetchRedirect(request, response) {
1941
1986
  request.headers.delete("host");
1942
1987
  }
1943
1988
  requestInit.headers = request.headers;
1944
- return fetch(new Request(locationUrl, requestInit));
1989
+ const finalResponse = await fetch(new Request(locationUrl, requestInit));
1990
+ Object.defineProperty(finalResponse, "redirected", {
1991
+ value: true,
1992
+ configurable: true
1993
+ });
1994
+ return finalResponse;
1945
1995
  }
1946
1996
  function sameOrigin(left, right) {
1947
1997
  if (left.origin === right.origin && left.origin === "null") {
@@ -2039,19 +2089,35 @@ var _FetchInterceptor = class extends Interceptor {
2039
2089
  setRawRequest(request, input);
2040
2090
  }
2041
2091
  const responsePromise = new DeferredPromise();
2042
- const controller = new RequestController(request);
2043
- this.logger.info("[%s] %s", request.method, request.url);
2044
- this.logger.info("awaiting for the mocked response...");
2045
- this.logger.info(
2046
- 'emitting the "request" event for %s listener(s)...',
2047
- this.emitter.listenerCount("request")
2048
- );
2049
- const isRequestHandled = await handleRequest2({
2050
- request,
2051
- requestId,
2052
- emitter: this.emitter,
2053
- controller,
2054
- onResponse: async (rawResponse) => {
2092
+ const controller = new RequestController(request, {
2093
+ passthrough: async () => {
2094
+ this.logger.info("request has not been handled, passthrough...");
2095
+ const requestCloneForResponseEvent = request.clone();
2096
+ const { error: responseError, data: originalResponse } = await until2(
2097
+ () => pureFetch(request)
2098
+ );
2099
+ if (responseError) {
2100
+ return responsePromise.reject(responseError);
2101
+ }
2102
+ this.logger.info("original fetch performed", originalResponse);
2103
+ if (this.emitter.listenerCount("response") > 0) {
2104
+ this.logger.info('emitting the "response" event...');
2105
+ const responseClone = originalResponse.clone();
2106
+ await emitAsync(this.emitter, "response", {
2107
+ response: responseClone,
2108
+ isMockedResponse: false,
2109
+ request: requestCloneForResponseEvent,
2110
+ requestId
2111
+ });
2112
+ }
2113
+ responsePromise.resolve(originalResponse);
2114
+ },
2115
+ respondWith: async (rawResponse) => {
2116
+ if (isResponseError(rawResponse)) {
2117
+ this.logger.info("request has errored!", { response: rawResponse });
2118
+ responsePromise.reject(createNetworkError(rawResponse));
2119
+ return;
2120
+ }
2055
2121
  this.logger.info("received mocked response!", {
2056
2122
  rawResponse
2057
2123
  });
@@ -2089,37 +2155,24 @@ var _FetchInterceptor = class extends Interceptor {
2089
2155
  }
2090
2156
  responsePromise.resolve(response);
2091
2157
  },
2092
- onRequestError: (response) => {
2093
- this.logger.info("request has errored!", { response });
2094
- responsePromise.reject(createNetworkError(response));
2095
- },
2096
- onError: (error2) => {
2097
- this.logger.info("request has been aborted!", { error: error2 });
2098
- responsePromise.reject(error2);
2158
+ errorWith: (reason) => {
2159
+ this.logger.info("request has been aborted!", { reason });
2160
+ responsePromise.reject(reason);
2099
2161
  }
2100
2162
  });
2101
- if (isRequestHandled) {
2102
- this.logger.info("request has been handled, returning mock promise...");
2103
- return responsePromise;
2104
- }
2163
+ this.logger.info("[%s] %s", request.method, request.url);
2164
+ this.logger.info("awaiting for the mocked response...");
2105
2165
  this.logger.info(
2106
- "no mocked response received, performing request as-is..."
2166
+ 'emitting the "request" event for %s listener(s)...',
2167
+ this.emitter.listenerCount("request")
2107
2168
  );
2108
- const requestCloneForResponseEvent = request.clone();
2109
- return pureFetch(request).then(async (response) => {
2110
- this.logger.info("original fetch performed", response);
2111
- if (this.emitter.listenerCount("response") > 0) {
2112
- this.logger.info('emitting the "response" event...');
2113
- const responseClone = response.clone();
2114
- await emitAsync(this.emitter, "response", {
2115
- response: responseClone,
2116
- isMockedResponse: false,
2117
- request: requestCloneForResponseEvent,
2118
- requestId
2119
- });
2120
- }
2121
- return response;
2169
+ await handleRequest2({
2170
+ request,
2171
+ requestId,
2172
+ emitter: this.emitter,
2173
+ controller
2122
2174
  });
2175
+ return responsePromise;
2123
2176
  };
2124
2177
  Object.defineProperty(globalThis.fetch, IS_PATCHED_MODULE, {
2125
2178
  enumerable: true,
@@ -2141,7 +2194,7 @@ var _FetchInterceptor = class extends Interceptor {
2141
2194
  var FetchInterceptor = _FetchInterceptor;
2142
2195
  FetchInterceptor.symbol = Symbol("fetch");
2143
2196
 
2144
- // node_modules/.pnpm/@mswjs+interceptors@0.39.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QKSBFQDK.mjs
2197
+ // node_modules/.pnpm/@mswjs+interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-WADP6VHN.mjs
2145
2198
  function concatArrayBuffer(left, right) {
2146
2199
  const result = new Uint8Array(left.byteLength + right.byteLength);
2147
2200
  result.set(left, 0);
@@ -2309,12 +2362,12 @@ function createResponse(request, body) {
2309
2362
  url: request.responseURL,
2310
2363
  status: request.status,
2311
2364
  statusText: request.statusText,
2312
- headers: createHeadersFromXMLHttpReqestHeaders(
2365
+ headers: createHeadersFromXMLHttpRequestHeaders(
2313
2366
  request.getAllResponseHeaders()
2314
2367
  )
2315
2368
  });
2316
2369
  }
2317
- function createHeadersFromXMLHttpReqestHeaders(headersString) {
2370
+ function createHeadersFromXMLHttpRequestHeaders(headersString) {
2318
2371
  const headers = new Headers();
2319
2372
  const lines = headersString.split(/[\r\n]+/);
2320
2373
  for (const line of lines) {
@@ -2366,7 +2419,6 @@ var XMLHttpRequestController = class {
2366
2419
  }
2367
2420
  },
2368
2421
  methodCall: ([methodName, args], invoke) => {
2369
- var _a;
2370
2422
  switch (methodName) {
2371
2423
  case "open": {
2372
2424
  const [method, url] = args;
@@ -2417,24 +2469,27 @@ var XMLHttpRequestController = class {
2417
2469
  const requestBody = typeof body === "string" ? encodeBuffer(body) : body;
2418
2470
  const fetchRequest = this.toFetchApiRequest(requestBody);
2419
2471
  this[kFetchRequest] = fetchRequest.clone();
2420
- const onceRequestSettled = ((_a = this.onRequest) == null ? void 0 : _a.call(this, {
2421
- request: fetchRequest,
2422
- requestId: this.requestId
2423
- })) || Promise.resolve();
2424
- onceRequestSettled.finally(() => {
2425
- if (!this[kIsRequestHandled]) {
2426
- this.logger.info(
2427
- "request callback settled but request has not been handled (readystate %d), performing as-is...",
2428
- this.request.readyState
2429
- );
2430
- if (IS_NODE2) {
2431
- this.request.setRequestHeader(
2432
- INTERNAL_REQUEST_ID_HEADER_NAME,
2433
- this.requestId
2472
+ queueMicrotask(() => {
2473
+ var _a;
2474
+ const onceRequestSettled = ((_a = this.onRequest) == null ? void 0 : _a.call(this, {
2475
+ request: fetchRequest,
2476
+ requestId: this.requestId
2477
+ })) || Promise.resolve();
2478
+ onceRequestSettled.finally(() => {
2479
+ if (!this[kIsRequestHandled]) {
2480
+ this.logger.info(
2481
+ "request callback settled but request has not been handled (readystate %d), performing as-is...",
2482
+ this.request.readyState
2434
2483
  );
2484
+ if (IS_NODE2) {
2485
+ this.request.setRequestHeader(
2486
+ INTERNAL_REQUEST_ID_HEADER_NAME,
2487
+ this.requestId
2488
+ );
2489
+ }
2490
+ return invoke();
2435
2491
  }
2436
- return invoke();
2437
- }
2492
+ });
2438
2493
  });
2439
2494
  break;
2440
2495
  }
@@ -2724,7 +2779,7 @@ var XMLHttpRequestController = class {
2724
2779
  define(this.request, "readyState", nextReadyState);
2725
2780
  this.logger.info("set readyState to: %d", nextReadyState);
2726
2781
  if (nextReadyState !== this.request.UNSENT) {
2727
- this.logger.info('triggerring "readystatechange" event...');
2782
+ this.logger.info('triggering "readystatechange" event...');
2728
2783
  this.trigger("readystatechange", this.request);
2729
2784
  }
2730
2785
  }
@@ -2833,35 +2888,37 @@ function createXMLHttpRequestProxy({
2833
2888
  logger
2834
2889
  );
2835
2890
  xhrRequestController.onRequest = async function({ request, requestId }) {
2836
- const controller = new RequestController(request);
2891
+ const controller = new RequestController(request, {
2892
+ passthrough: () => {
2893
+ this.logger.info(
2894
+ "no mocked response received, performing request as-is..."
2895
+ );
2896
+ },
2897
+ respondWith: async (response) => {
2898
+ if (isResponseError(response)) {
2899
+ this.errorWith(new TypeError("Network error"));
2900
+ return;
2901
+ }
2902
+ await this.respondWith(response);
2903
+ },
2904
+ errorWith: (reason) => {
2905
+ this.logger.info("request errored!", { error: reason });
2906
+ if (reason instanceof Error) {
2907
+ this.errorWith(reason);
2908
+ }
2909
+ }
2910
+ });
2837
2911
  this.logger.info("awaiting mocked response...");
2838
2912
  this.logger.info(
2839
2913
  'emitting the "request" event for %s listener(s)...',
2840
2914
  emitter.listenerCount("request")
2841
2915
  );
2842
- const isRequestHandled = await handleRequest2({
2916
+ await handleRequest2({
2843
2917
  request,
2844
2918
  requestId,
2845
2919
  controller,
2846
- emitter,
2847
- onResponse: async (response) => {
2848
- await this.respondWith(response);
2849
- },
2850
- onRequestError: () => {
2851
- this.errorWith(new TypeError("Network error"));
2852
- },
2853
- onError: (error2) => {
2854
- this.logger.info("request errored!", { error: error2 });
2855
- if (error2 instanceof Error) {
2856
- this.errorWith(error2);
2857
- }
2858
- }
2920
+ emitter
2859
2921
  });
2860
- if (!isRequestHandled) {
2861
- this.logger.info(
2862
- "no mocked response received, performing request as-is..."
2863
- );
2864
- }
2865
2922
  };
2866
2923
  xhrRequestController.onResponse = async function({
2867
2924
  response,