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
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "type": "module",
3
- "main": "../lib/browser/index.mjs",
4
- "types": "../lib/browser/index.d.mts",
3
+ "main": "../lib/browser/index.js",
4
+ "module": "../lib/browser/index.mjs",
5
+ "types": "../lib/browser/index.d.ts",
5
6
  "exports": {
6
7
  ".": {
7
8
  "module-sync": {
@@ -403,7 +403,7 @@ You can also automate this process and make the worker script update automatical
403
403
  }
404
404
  }
405
405
 
406
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
406
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
407
407
  var encoder = new TextEncoder();
408
408
  function encodeBuffer(text) {
409
409
  return encoder.encode(text);
@@ -419,8 +419,26 @@ function toArrayBuffer(array) {
419
419
  );
420
420
  }
421
421
 
422
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-F4BN745U.mjs
422
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-3RXCRGL2.mjs
423
423
  var IS_PATCHED_MODULE = Symbol("isPatchedModule");
424
+ function canParseUrl(url) {
425
+ try {
426
+ new URL(url);
427
+ return true;
428
+ } catch (_error) {
429
+ return false;
430
+ }
431
+ }
432
+ function getValueBySymbol(symbolName, source) {
433
+ const ownSymbols = Object.getOwnPropertySymbols(source);
434
+ const symbol = ownSymbols.find((symbol2) => {
435
+ return symbol2.description === symbolName;
436
+ });
437
+ if (symbol) {
438
+ return Reflect.get(source, symbol);
439
+ }
440
+ return;
441
+ }
424
442
  var _FetchResponse = class extends Response {
425
443
  static isConfigurableStatusCode(status) {
426
444
  return status >= 200 && status <= 599;
@@ -436,18 +454,30 @@ var _FetchResponse = class extends Response {
436
454
  return !_FetchResponse.STATUS_CODES_WITHOUT_BODY.includes(status);
437
455
  }
438
456
  static setUrl(url, response) {
439
- if (!url) {
457
+ if (!url || url === "about:" || !canParseUrl(url)) {
440
458
  return;
441
459
  }
442
- if (response.url != "") {
443
- return;
460
+ const state = getValueBySymbol("state", response);
461
+ if (state) {
462
+ state.urlList.push(new URL(url));
463
+ } else {
464
+ Object.defineProperty(response, "url", {
465
+ value: url,
466
+ enumerable: true,
467
+ configurable: true,
468
+ writable: false
469
+ });
444
470
  }
445
- Object.defineProperty(response, "url", {
446
- value: url,
447
- enumerable: true,
448
- configurable: true,
449
- writable: false
450
- });
471
+ }
472
+ /**
473
+ * Parses the given raw HTTP headers into a Fetch API `Headers` instance.
474
+ */
475
+ static parseRawHeaders(rawHeaders) {
476
+ const headers = new Headers();
477
+ for (let line = 0; line < rawHeaders.length; line += 2) {
478
+ headers.append(rawHeaders[line], rawHeaders[line + 1]);
479
+ }
480
+ return headers;
451
481
  }
452
482
  constructor(body, init = {}) {
453
483
  var _a;
@@ -455,16 +485,14 @@ var _FetchResponse = class extends Response {
455
485
  const safeStatus = _FetchResponse.isConfigurableStatusCode(status) ? status : 200;
456
486
  const finalBody = _FetchResponse.isResponseWithBody(status) ? body : null;
457
487
  super(finalBody, {
458
- ...init,
459
- status: safeStatus
488
+ status: safeStatus,
489
+ statusText: init.statusText,
490
+ headers: init.headers
460
491
  });
461
492
  if (status !== safeStatus) {
462
- const stateSymbol = Object.getOwnPropertySymbols(this).find(
463
- (symbol) => symbol.description === "state"
464
- );
465
- if (stateSymbol) {
466
- const state = Reflect.get(this, stateSymbol);
467
- Reflect.set(state, "status", status);
493
+ const state = getValueBySymbol("state", this);
494
+ if (state) {
495
+ state.status = status;
468
496
  } else {
469
497
  Object.defineProperty(this, "status", {
470
498
  value: status,
@@ -480,6 +508,10 @@ var _FetchResponse = class extends Response {
480
508
  var FetchResponse = _FetchResponse;
481
509
  FetchResponse.STATUS_CODES_WITHOUT_BODY = [101, 103, 204, 205, 304];
482
510
  FetchResponse.STATUS_CODES_WITH_REDIRECT = [301, 302, 303, 307, 308];
511
+ var kRawRequest = Symbol("kRawRequest");
512
+ function setRawRequest(request, rawRequest) {
513
+ Reflect.set(request, kRawRequest, rawRequest);
514
+ }
483
515
 
484
516
  // node_modules/.pnpm/@open-draft+logger@0.3.0/node_modules/@open-draft/logger/lib/index.mjs
485
517
  var __defProp2 = Object.defineProperty;
@@ -918,7 +950,7 @@ var _Emitter = class {
918
950
  var Emitter = _Emitter;
919
951
  Emitter.defaultMaxListeners = 10;
920
952
 
921
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
953
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
922
954
  var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
923
955
  function getGlobalSymbol(symbol) {
924
956
  return (
@@ -1066,7 +1098,7 @@ function createRequestId() {
1066
1098
  return Math.random().toString(16).slice(2);
1067
1099
  }
1068
1100
 
1069
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1101
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1070
1102
  var BatchInterceptor = class extends Interceptor {
1071
1103
  constructor(options) {
1072
1104
  BatchInterceptor.symbol = Symbol(options.name);
@@ -1353,7 +1385,7 @@ var DeferredPromise = class extends Promise {
1353
1385
  }
1354
1386
  };
1355
1387
 
1356
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-H5O73WD2.mjs
1388
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-L37TY7LC.mjs
1357
1389
  var InterceptorError = class extends Error {
1358
1390
  constructor(message) {
1359
1391
  super(message);
@@ -1388,12 +1420,14 @@ var RequestController = class {
1388
1420
  this[kResponsePromise].resolve(response);
1389
1421
  }
1390
1422
  /**
1391
- * Error this request with the given error.
1423
+ * Error this request with the given reason.
1424
+ *
1392
1425
  * @example
1393
1426
  * controller.errorWith()
1394
1427
  * controller.errorWith(new Error('Oops!'))
1428
+ * controller.errorWith({ message: 'Oops!'})
1395
1429
  */
1396
- errorWith(error2) {
1430
+ errorWith(reason) {
1397
1431
  invariant.as(
1398
1432
  InterceptorError,
1399
1433
  !this[kRequestHandled],
@@ -1402,7 +1436,7 @@ var RequestController = class {
1402
1436
  this.request.url
1403
1437
  );
1404
1438
  this[kRequestHandled] = true;
1405
- this[kResponsePromise].resolve(error2);
1439
+ this[kResponsePromise].resolve(reason);
1406
1440
  }
1407
1441
  };
1408
1442
  async function emitAsync(emitter, eventName, ...data) {
@@ -1414,6 +1448,9 @@ async function emitAsync(emitter, eventName, ...data) {
1414
1448
  await listener.apply(emitter, data);
1415
1449
  }
1416
1450
  }
1451
+ function isObject(value, loose = false) {
1452
+ return loose ? Object.prototype.toString.call(value).startsWith("[object ") : Object.prototype.toString.call(value) === "[object Object]";
1453
+ }
1417
1454
  function isPropertyAccessible(obj, key) {
1418
1455
  try {
1419
1456
  obj[key];
@@ -1441,7 +1478,10 @@ function createServerErrorResponse(body) {
1441
1478
  );
1442
1479
  }
1443
1480
  function isResponseError(response) {
1444
- return isPropertyAccessible(response, "type") && response.type === "error";
1481
+ return response != null && response instanceof Response && isPropertyAccessible(response, "type") && response.type === "error";
1482
+ }
1483
+ function isResponseLike(value) {
1484
+ return isObject(value, true) && isPropertyAccessible(value, "status") && isPropertyAccessible(value, "statusText") && isPropertyAccessible(value, "bodyUsed");
1445
1485
  }
1446
1486
  function isNodeLikeError(error2) {
1447
1487
  if (error2 == null) {
@@ -1456,12 +1496,21 @@ async function handleRequest2(options) {
1456
1496
  const handleResponse = async (response) => {
1457
1497
  if (response instanceof Error) {
1458
1498
  options.onError(response);
1459
- } else if (isResponseError(response)) {
1499
+ return true;
1500
+ }
1501
+ if (isResponseError(response)) {
1460
1502
  options.onRequestError(response);
1461
- } else {
1503
+ return true;
1504
+ }
1505
+ if (isResponseLike(response)) {
1462
1506
  await options.onResponse(response);
1507
+ return true;
1463
1508
  }
1464
- return true;
1509
+ if (isObject(response)) {
1510
+ options.onError(response);
1511
+ return true;
1512
+ }
1513
+ return false;
1465
1514
  };
1466
1515
  const handleResponseError = async (error2) => {
1467
1516
  if (error2 instanceof InterceptorError) {
@@ -1499,7 +1548,7 @@ async function handleRequest2(options) {
1499
1548
  }
1500
1549
  }
1501
1550
  const result = await until(async () => {
1502
- const requestListtenersPromise = emitAsync(options.emitter, "request", {
1551
+ const requestListenersPromise = emitAsync(options.emitter, "request", {
1503
1552
  requestId: options.requestId,
1504
1553
  request: options.request,
1505
1554
  controller: options.controller
@@ -1507,11 +1556,10 @@ async function handleRequest2(options) {
1507
1556
  await Promise.race([
1508
1557
  // Short-circuit the request handling promise if the request gets aborted.
1509
1558
  requestAbortPromise,
1510
- requestListtenersPromise,
1559
+ requestListenersPromise,
1511
1560
  options.controller[kResponsePromise]
1512
1561
  ]);
1513
- const mockedResponse = await options.controller[kResponsePromise];
1514
- return mockedResponse;
1562
+ return await options.controller[kResponsePromise];
1515
1563
  });
1516
1564
  if (requestAbortPromise.state === "rejected") {
1517
1565
  options.onError(requestAbortPromise.rejectionReason);
@@ -1554,7 +1602,7 @@ async function handleRequest2(options) {
1554
1602
  return false;
1555
1603
  }
1556
1604
 
1557
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
1605
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
1558
1606
  function hasConfigurableGlobal(propertyName) {
1559
1607
  const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
1560
1608
  if (typeof descriptor === "undefined") {
@@ -1575,15 +1623,7 @@ function hasConfigurableGlobal(propertyName) {
1575
1623
  return true;
1576
1624
  }
1577
1625
 
1578
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-HER3NHBG.mjs
1579
- function canParseUrl(url) {
1580
- try {
1581
- new URL(url);
1582
- return true;
1583
- } catch (_error) {
1584
- return false;
1585
- }
1586
- }
1626
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-ARPHZXGT.mjs
1587
1627
  function createNetworkError(cause) {
1588
1628
  return Object.assign(new TypeError("Failed to fetch"), {
1589
1629
  cause
@@ -1731,8 +1771,11 @@ var _FetchInterceptor = class extends Interceptor {
1731
1771
  );
1732
1772
  globalThis.fetch = async (input, init) => {
1733
1773
  const requestId = createRequestId();
1734
- const resolvedInput = typeof input === "string" && typeof location !== "undefined" && !canParseUrl(input) ? new URL(input, location.origin) : input;
1774
+ const resolvedInput = typeof input === "string" && typeof location !== "undefined" && !canParseUrl(input) ? new URL(input, location.href) : input;
1735
1775
  const request = new Request(resolvedInput, init);
1776
+ if (input instanceof Request) {
1777
+ setRawRequest(request, input);
1778
+ }
1736
1779
  const responsePromise = new DeferredPromise();
1737
1780
  const controller = new RequestController(request);
1738
1781
  this.logger.info("[%s] %s", request.method, request.url);
@@ -1800,6 +1843,7 @@ var _FetchInterceptor = class extends Interceptor {
1800
1843
  this.logger.info(
1801
1844
  "no mocked response received, performing request as-is..."
1802
1845
  );
1846
+ const requestCloneForResponseEvent = request.clone();
1803
1847
  return pureFetch(request).then(async (response) => {
1804
1848
  this.logger.info("original fetch performed", response);
1805
1849
  if (this.emitter.listenerCount("response") > 0) {
@@ -1808,7 +1852,7 @@ var _FetchInterceptor = class extends Interceptor {
1808
1852
  await emitAsync(this.emitter, "response", {
1809
1853
  response: responseClone,
1810
1854
  isMockedResponse: false,
1811
- request,
1855
+ request: requestCloneForResponseEvent,
1812
1856
  requestId
1813
1857
  });
1814
1858
  }
@@ -1835,7 +1879,7 @@ var _FetchInterceptor = class extends Interceptor {
1835
1879
  var FetchInterceptor = _FetchInterceptor;
1836
1880
  FetchInterceptor.symbol = Symbol("fetch");
1837
1881
 
1838
- // node_modules/.pnpm/@mswjs+interceptors@0.37.1/node_modules/@mswjs/interceptors/lib/browser/chunk-4SRQFK76.mjs
1882
+ // node_modules/.pnpm/@mswjs+interceptors@0.38.7/node_modules/@mswjs/interceptors/lib/browser/chunk-QKSBFQDK.mjs
1839
1883
  function concatArrayBuffer(left, right) {
1840
1884
  const result = new Uint8Array(left.byteLength + right.byteLength);
1841
1885
  result.set(left, 0);
@@ -2481,6 +2525,7 @@ var XMLHttpRequestController = class {
2481
2525
  }
2482
2526
  });
2483
2527
  define(fetchRequest, "headers", proxyHeaders);
2528
+ setRawRequest(fetchRequest, this.request);
2484
2529
  this.logger.info("converted request to a Fetch API Request!", fetchRequest);
2485
2530
  return fetchRequest;
2486
2531
  }