msw 2.8.4 → 2.8.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.
Files changed (52) hide show
  1. package/browser/package.json +3 -2
  2. package/lib/browser/index.js +91 -46
  3. package/lib/browser/index.js.map +1 -1
  4. package/lib/browser/index.mjs +91 -46
  5. package/lib/browser/index.mjs.map +1 -1
  6. package/lib/core/{GraphQLHandler-pSWhHVJp.d.mts → GraphQLHandler-DOXAygvT.d.mts} +1 -1
  7. package/lib/core/{GraphQLHandler-DzcekHIp.d.ts → GraphQLHandler-noP9MRWa.d.ts} +1 -1
  8. package/lib/core/{HttpResponse-DAxViIqi.d.mts → HttpResponse-BOGtXZ-B.d.mts} +4 -4
  9. package/lib/core/{HttpResponse-CSWX6ahe.d.ts → HttpResponse-DzeJL_i8.d.ts} +4 -4
  10. package/lib/core/HttpResponse.d.mts +1 -1
  11. package/lib/core/HttpResponse.d.ts +1 -1
  12. package/lib/core/HttpResponse.js.map +1 -1
  13. package/lib/core/HttpResponse.mjs.map +1 -1
  14. package/lib/core/SetupApi.d.mts +1 -1
  15. package/lib/core/SetupApi.d.ts +1 -1
  16. package/lib/core/getResponse.d.mts +1 -1
  17. package/lib/core/getResponse.d.ts +1 -1
  18. package/lib/core/graphql.d.mts +2 -2
  19. package/lib/core/graphql.d.ts +2 -2
  20. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  21. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  22. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  23. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  24. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  25. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  26. package/lib/core/http.d.mts +1 -1
  27. package/lib/core/http.d.ts +1 -1
  28. package/lib/core/index.d.mts +2 -2
  29. package/lib/core/index.d.ts +2 -2
  30. package/lib/core/passthrough.d.mts +1 -1
  31. package/lib/core/passthrough.d.ts +1 -1
  32. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  33. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  34. package/lib/core/utils/executeHandlers.d.mts +1 -1
  35. package/lib/core/utils/executeHandlers.d.ts +1 -1
  36. package/lib/core/utils/handleRequest.d.mts +1 -1
  37. package/lib/core/utils/handleRequest.d.ts +1 -1
  38. package/lib/core/utils/internal/isHandlerKind.d.mts +1 -1
  39. package/lib/core/utils/internal/isHandlerKind.d.ts +1 -1
  40. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  41. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  42. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  43. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  44. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  45. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  46. package/lib/core/ws/handleWebSocketEvent.d.mts +1 -1
  47. package/lib/core/ws/handleWebSocketEvent.d.ts +1 -1
  48. package/lib/iife/index.js +96 -51
  49. package/lib/iife/index.js.map +1 -1
  50. package/lib/mockServiceWorker.js +1 -1
  51. package/package.json +4 -4
  52. package/src/core/HttpResponse.ts +8 -5
@@ -376,7 +376,7 @@ You can also automate this process and make the worker script update automatical
376
376
  }
377
377
  }
378
378
 
379
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
379
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
380
380
  var encoder = new TextEncoder();
381
381
  function encodeBuffer(text) {
382
382
  return encoder.encode(text);
@@ -392,8 +392,26 @@ function toArrayBuffer(array) {
392
392
  );
393
393
  }
394
394
 
395
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-F4BN745U.mjs
395
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-3RXCRGL2.mjs
396
396
  var IS_PATCHED_MODULE = Symbol("isPatchedModule");
397
+ function canParseUrl(url) {
398
+ try {
399
+ new URL(url);
400
+ return true;
401
+ } catch (_error) {
402
+ return false;
403
+ }
404
+ }
405
+ function getValueBySymbol(symbolName, source) {
406
+ const ownSymbols = Object.getOwnPropertySymbols(source);
407
+ const symbol = ownSymbols.find((symbol2) => {
408
+ return symbol2.description === symbolName;
409
+ });
410
+ if (symbol) {
411
+ return Reflect.get(source, symbol);
412
+ }
413
+ return;
414
+ }
397
415
  var _FetchResponse = class extends Response {
398
416
  static isConfigurableStatusCode(status) {
399
417
  return status >= 200 && status <= 599;
@@ -409,18 +427,30 @@ var _FetchResponse = class extends Response {
409
427
  return !_FetchResponse.STATUS_CODES_WITHOUT_BODY.includes(status);
410
428
  }
411
429
  static setUrl(url, response) {
412
- if (!url) {
430
+ if (!url || url === "about:" || !canParseUrl(url)) {
413
431
  return;
414
432
  }
415
- if (response.url != "") {
416
- return;
433
+ const state = getValueBySymbol("state", response);
434
+ if (state) {
435
+ state.urlList.push(new URL(url));
436
+ } else {
437
+ Object.defineProperty(response, "url", {
438
+ value: url,
439
+ enumerable: true,
440
+ configurable: true,
441
+ writable: false
442
+ });
417
443
  }
418
- Object.defineProperty(response, "url", {
419
- value: url,
420
- enumerable: true,
421
- configurable: true,
422
- writable: false
423
- });
444
+ }
445
+ /**
446
+ * Parses the given raw HTTP headers into a Fetch API `Headers` instance.
447
+ */
448
+ static parseRawHeaders(rawHeaders) {
449
+ const headers = new Headers();
450
+ for (let line = 0; line < rawHeaders.length; line += 2) {
451
+ headers.append(rawHeaders[line], rawHeaders[line + 1]);
452
+ }
453
+ return headers;
424
454
  }
425
455
  constructor(body, init = {}) {
426
456
  var _a;
@@ -428,16 +458,14 @@ var _FetchResponse = class extends Response {
428
458
  const safeStatus = _FetchResponse.isConfigurableStatusCode(status) ? status : 200;
429
459
  const finalBody = _FetchResponse.isResponseWithBody(status) ? body : null;
430
460
  super(finalBody, {
431
- ...init,
432
- status: safeStatus
461
+ status: safeStatus,
462
+ statusText: init.statusText,
463
+ headers: init.headers
433
464
  });
434
465
  if (status !== safeStatus) {
435
- const stateSymbol = Object.getOwnPropertySymbols(this).find(
436
- (symbol) => symbol.description === "state"
437
- );
438
- if (stateSymbol) {
439
- const state = Reflect.get(this, stateSymbol);
440
- Reflect.set(state, "status", status);
466
+ const state = getValueBySymbol("state", this);
467
+ if (state) {
468
+ state.status = status;
441
469
  } else {
442
470
  Object.defineProperty(this, "status", {
443
471
  value: status,
@@ -453,6 +481,10 @@ var _FetchResponse = class extends Response {
453
481
  var FetchResponse = _FetchResponse;
454
482
  FetchResponse.STATUS_CODES_WITHOUT_BODY = [101, 103, 204, 205, 304];
455
483
  FetchResponse.STATUS_CODES_WITH_REDIRECT = [301, 302, 303, 307, 308];
484
+ var kRawRequest = Symbol("kRawRequest");
485
+ function setRawRequest(request, rawRequest) {
486
+ Reflect.set(request, kRawRequest, rawRequest);
487
+ }
456
488
 
457
489
  // node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs
458
490
  var __defProp = Object.defineProperty;
@@ -891,7 +923,7 @@ var _Emitter = class {
891
923
  var Emitter = _Emitter;
892
924
  Emitter.defaultMaxListeners = 10;
893
925
 
894
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
926
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
895
927
  var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
896
928
  function getGlobalSymbol(symbol) {
897
929
  return (
@@ -1039,7 +1071,7 @@ function createRequestId() {
1039
1071
  return Math.random().toString(16).slice(2);
1040
1072
  }
1041
1073
 
1042
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1074
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1043
1075
  var BatchInterceptor = class extends Interceptor {
1044
1076
  constructor(options) {
1045
1077
  BatchInterceptor.symbol = Symbol(options.name);
@@ -1326,7 +1358,7 @@ var DeferredPromise = class extends Promise {
1326
1358
  }
1327
1359
  };
1328
1360
 
1329
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-H5O73WD2.mjs
1361
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-L37TY7LC.mjs
1330
1362
  var InterceptorError = class extends Error {
1331
1363
  constructor(message) {
1332
1364
  super(message);
@@ -1361,12 +1393,14 @@ var RequestController = class {
1361
1393
  this[kResponsePromise].resolve(response);
1362
1394
  }
1363
1395
  /**
1364
- * Error this request with the given error.
1396
+ * Error this request with the given reason.
1397
+ *
1365
1398
  * @example
1366
1399
  * controller.errorWith()
1367
1400
  * controller.errorWith(new Error('Oops!'))
1401
+ * controller.errorWith({ message: 'Oops!'})
1368
1402
  */
1369
- errorWith(error2) {
1403
+ errorWith(reason) {
1370
1404
  invariant.as(
1371
1405
  InterceptorError,
1372
1406
  !this[kRequestHandled],
@@ -1375,7 +1409,7 @@ var RequestController = class {
1375
1409
  this.request.url
1376
1410
  );
1377
1411
  this[kRequestHandled] = true;
1378
- this[kResponsePromise].resolve(error2);
1412
+ this[kResponsePromise].resolve(reason);
1379
1413
  }
1380
1414
  };
1381
1415
  async function emitAsync(emitter, eventName, ...data) {
@@ -1387,6 +1421,9 @@ async function emitAsync(emitter, eventName, ...data) {
1387
1421
  await listener.apply(emitter, data);
1388
1422
  }
1389
1423
  }
1424
+ function isObject(value, loose = false) {
1425
+ return loose ? Object.prototype.toString.call(value).startsWith("[object ") : Object.prototype.toString.call(value) === "[object Object]";
1426
+ }
1390
1427
  function isPropertyAccessible(obj, key) {
1391
1428
  try {
1392
1429
  obj[key];
@@ -1414,7 +1451,10 @@ function createServerErrorResponse(body) {
1414
1451
  );
1415
1452
  }
1416
1453
  function isResponseError(response) {
1417
- return isPropertyAccessible(response, "type") && response.type === "error";
1454
+ return response != null && response instanceof Response && isPropertyAccessible(response, "type") && response.type === "error";
1455
+ }
1456
+ function isResponseLike(value) {
1457
+ return isObject(value, true) && isPropertyAccessible(value, "status") && isPropertyAccessible(value, "statusText") && isPropertyAccessible(value, "bodyUsed");
1418
1458
  }
1419
1459
  function isNodeLikeError(error2) {
1420
1460
  if (error2 == null) {
@@ -1429,12 +1469,21 @@ async function handleRequest2(options) {
1429
1469
  const handleResponse = async (response) => {
1430
1470
  if (response instanceof Error) {
1431
1471
  options.onError(response);
1432
- } else if (isResponseError(response)) {
1472
+ return true;
1473
+ }
1474
+ if (isResponseError(response)) {
1433
1475
  options.onRequestError(response);
1434
- } else {
1476
+ return true;
1477
+ }
1478
+ if (isResponseLike(response)) {
1435
1479
  await options.onResponse(response);
1480
+ return true;
1436
1481
  }
1437
- return true;
1482
+ if (isObject(response)) {
1483
+ options.onError(response);
1484
+ return true;
1485
+ }
1486
+ return false;
1438
1487
  };
1439
1488
  const handleResponseError = async (error2) => {
1440
1489
  if (error2 instanceof InterceptorError) {
@@ -1472,7 +1521,7 @@ async function handleRequest2(options) {
1472
1521
  }
1473
1522
  }
1474
1523
  const result = await until(async () => {
1475
- const requestListtenersPromise = emitAsync(options.emitter, "request", {
1524
+ const requestListenersPromise = emitAsync(options.emitter, "request", {
1476
1525
  requestId: options.requestId,
1477
1526
  request: options.request,
1478
1527
  controller: options.controller
@@ -1480,11 +1529,10 @@ async function handleRequest2(options) {
1480
1529
  await Promise.race([
1481
1530
  // Short-circuit the request handling promise if the request gets aborted.
1482
1531
  requestAbortPromise,
1483
- requestListtenersPromise,
1532
+ requestListenersPromise,
1484
1533
  options.controller[kResponsePromise]
1485
1534
  ]);
1486
- const mockedResponse = await options.controller[kResponsePromise];
1487
- return mockedResponse;
1535
+ return await options.controller[kResponsePromise];
1488
1536
  });
1489
1537
  if (requestAbortPromise.state === "rejected") {
1490
1538
  options.onError(requestAbortPromise.rejectionReason);
@@ -1527,7 +1575,7 @@ async function handleRequest2(options) {
1527
1575
  return false;
1528
1576
  }
1529
1577
 
1530
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
1578
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
1531
1579
  function hasConfigurableGlobal(propertyName) {
1532
1580
  const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
1533
1581
  if (typeof descriptor === "undefined") {
@@ -1548,15 +1596,7 @@ function hasConfigurableGlobal(propertyName) {
1548
1596
  return true;
1549
1597
  }
1550
1598
 
1551
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-HER3NHBG.mjs
1552
- function canParseUrl(url) {
1553
- try {
1554
- new URL(url);
1555
- return true;
1556
- } catch (_error) {
1557
- return false;
1558
- }
1559
- }
1599
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-ARPHZXGT.mjs
1560
1600
  function createNetworkError(cause) {
1561
1601
  return Object.assign(new TypeError("Failed to fetch"), {
1562
1602
  cause
@@ -1704,8 +1744,11 @@ var _FetchInterceptor = class extends Interceptor {
1704
1744
  );
1705
1745
  globalThis.fetch = async (input, init) => {
1706
1746
  const requestId = createRequestId();
1707
- const resolvedInput = typeof input === "string" && typeof location !== "undefined" && !canParseUrl(input) ? new URL(input, location.origin) : input;
1747
+ const resolvedInput = typeof input === "string" && typeof location !== "undefined" && !canParseUrl(input) ? new URL(input, location.href) : input;
1708
1748
  const request = new Request(resolvedInput, init);
1749
+ if (input instanceof Request) {
1750
+ setRawRequest(request, input);
1751
+ }
1709
1752
  const responsePromise = new DeferredPromise();
1710
1753
  const controller = new RequestController(request);
1711
1754
  this.logger.info("[%s] %s", request.method, request.url);
@@ -1773,6 +1816,7 @@ var _FetchInterceptor = class extends Interceptor {
1773
1816
  this.logger.info(
1774
1817
  "no mocked response received, performing request as-is..."
1775
1818
  );
1819
+ const requestCloneForResponseEvent = request.clone();
1776
1820
  return pureFetch(request).then(async (response) => {
1777
1821
  this.logger.info("original fetch performed", response);
1778
1822
  if (this.emitter.listenerCount("response") > 0) {
@@ -1781,7 +1825,7 @@ var _FetchInterceptor = class extends Interceptor {
1781
1825
  await emitAsync(this.emitter, "response", {
1782
1826
  response: responseClone,
1783
1827
  isMockedResponse: false,
1784
- request,
1828
+ request: requestCloneForResponseEvent,
1785
1829
  requestId
1786
1830
  });
1787
1831
  }
@@ -1808,7 +1852,7 @@ var _FetchInterceptor = class extends Interceptor {
1808
1852
  var FetchInterceptor = _FetchInterceptor;
1809
1853
  FetchInterceptor.symbol = Symbol("fetch");
1810
1854
 
1811
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-4SRQFK76.mjs
1855
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-QKSBFQDK.mjs
1812
1856
  function concatArrayBuffer(left, right) {
1813
1857
  const result = new Uint8Array(left.byteLength + right.byteLength);
1814
1858
  result.set(left, 0);
@@ -2454,6 +2498,7 @@ var XMLHttpRequestController = class {
2454
2498
  }
2455
2499
  });
2456
2500
  define(fetchRequest, "headers", proxyHeaders);
2501
+ setRawRequest(fetchRequest, this.request);
2457
2502
  this.logger.info("converted request to a Fetch API Request!", fetchRequest);
2458
2503
  return fetchRequest;
2459
2504
  }