msw 2.6.0 → 2.6.2

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 (99) hide show
  1. package/lib/browser/index.js +121 -30
  2. package/lib/browser/index.js.map +1 -1
  3. package/lib/browser/index.mjs +121 -30
  4. package/lib/browser/index.mjs.map +1 -1
  5. package/lib/core/{GraphQLHandler-Doool6Q_.d.mts → GraphQLHandler-B6uni-E_.d.mts} +1 -1
  6. package/lib/core/{GraphQLHandler-udzgBRPf.d.ts → GraphQLHandler-Cjm7JNGi.d.ts} +1 -1
  7. package/lib/core/{HttpResponse-BLGmJolh.d.mts → HttpResponse-63H9vVoL.d.mts} +2 -1
  8. package/lib/core/{HttpResponse-Cgbkdkje.d.ts → HttpResponse-DzhqZzTK.d.ts} +2 -1
  9. package/lib/core/HttpResponse.d.mts +1 -1
  10. package/lib/core/HttpResponse.d.ts +1 -1
  11. package/lib/core/SetupApi.d.mts +1 -1
  12. package/lib/core/SetupApi.d.ts +1 -1
  13. package/lib/core/getResponse.d.mts +1 -1
  14. package/lib/core/getResponse.d.ts +1 -1
  15. package/lib/core/graphql.d.mts +2 -2
  16. package/lib/core/graphql.d.ts +2 -2
  17. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  18. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  19. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  20. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  21. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  22. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  23. package/lib/core/handlers/RequestHandler.js +2 -0
  24. package/lib/core/handlers/RequestHandler.js.map +1 -1
  25. package/lib/core/handlers/RequestHandler.mjs +2 -0
  26. package/lib/core/handlers/RequestHandler.mjs.map +1 -1
  27. package/lib/core/handlers/WebSocketHandler.d.mts +1 -0
  28. package/lib/core/handlers/WebSocketHandler.d.ts +1 -0
  29. package/lib/core/handlers/WebSocketHandler.js +2 -0
  30. package/lib/core/handlers/WebSocketHandler.js.map +1 -1
  31. package/lib/core/handlers/WebSocketHandler.mjs +2 -0
  32. package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
  33. package/lib/core/handlers/common.d.mts +3 -0
  34. package/lib/core/handlers/common.d.ts +3 -0
  35. package/lib/core/handlers/common.js +17 -0
  36. package/lib/core/handlers/common.js.map +1 -0
  37. package/lib/core/handlers/common.mjs +1 -0
  38. package/lib/core/handlers/common.mjs.map +1 -0
  39. package/lib/core/http.d.mts +1 -1
  40. package/lib/core/http.d.ts +1 -1
  41. package/lib/core/index.d.mts +2 -2
  42. package/lib/core/index.d.ts +2 -2
  43. package/lib/core/passthrough.d.mts +1 -1
  44. package/lib/core/passthrough.d.ts +1 -1
  45. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  46. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  47. package/lib/core/utils/executeHandlers.d.mts +1 -1
  48. package/lib/core/utils/executeHandlers.d.ts +1 -1
  49. package/lib/core/utils/executeHandlers.js +0 -4
  50. package/lib/core/utils/executeHandlers.js.map +1 -1
  51. package/lib/core/utils/executeHandlers.mjs +0 -6
  52. package/lib/core/utils/executeHandlers.mjs.map +1 -1
  53. package/lib/core/utils/handleRequest.d.mts +1 -1
  54. package/lib/core/utils/handleRequest.d.ts +1 -1
  55. package/lib/core/utils/internal/isHandlerKind.d.mts +17 -0
  56. package/lib/core/utils/internal/isHandlerKind.d.ts +17 -0
  57. package/lib/core/utils/internal/isHandlerKind.js +29 -0
  58. package/lib/core/utils/internal/isHandlerKind.js.map +1 -0
  59. package/lib/core/utils/internal/isHandlerKind.mjs +9 -0
  60. package/lib/core/utils/internal/isHandlerKind.mjs.map +1 -0
  61. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  62. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  63. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  64. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  65. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  66. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  67. package/lib/core/utils/request/getRequestCookies.js +12 -2
  68. package/lib/core/utils/request/getRequestCookies.js.map +1 -1
  69. package/lib/core/utils/request/getRequestCookies.mjs +12 -2
  70. package/lib/core/utils/request/getRequestCookies.mjs.map +1 -1
  71. package/lib/core/ws/handleWebSocketEvent.d.mts +1 -1
  72. package/lib/core/ws/handleWebSocketEvent.d.ts +1 -1
  73. package/lib/core/ws/handleWebSocketEvent.js +2 -1
  74. package/lib/core/ws/handleWebSocketEvent.js.map +1 -1
  75. package/lib/core/ws/handleWebSocketEvent.mjs +3 -2
  76. package/lib/core/ws/handleWebSocketEvent.mjs.map +1 -1
  77. package/lib/iife/index.js +216 -73
  78. package/lib/iife/index.js.map +1 -1
  79. package/lib/mockServiceWorker.js +1 -1
  80. package/lib/native/index.js +2 -5
  81. package/lib/native/index.js.map +1 -1
  82. package/lib/native/index.mjs +2 -5
  83. package/lib/native/index.mjs.map +1 -1
  84. package/lib/node/index.js +2 -5
  85. package/lib/node/index.js.map +1 -1
  86. package/lib/node/index.mjs +2 -5
  87. package/lib/node/index.mjs.map +1 -1
  88. package/package.json +2 -2
  89. package/src/browser/setupWorker/start/createFallbackRequestListener.ts +2 -1
  90. package/src/browser/setupWorker/start/createRequestListener.ts +2 -7
  91. package/src/core/handlers/RequestHandler.ts +4 -0
  92. package/src/core/handlers/WebSocketHandler.ts +4 -0
  93. package/src/core/handlers/common.ts +1 -0
  94. package/src/core/utils/executeHandlers.ts +1 -5
  95. package/src/core/utils/internal/isHandlerKind.test.ts +64 -0
  96. package/src/core/utils/internal/isHandlerKind.ts +21 -0
  97. package/src/core/utils/request/getRequestCookies.ts +15 -2
  98. package/src/core/ws/handleWebSocketEvent.ts +2 -1
  99. package/src/node/SetupServerCommonApi.ts +4 -8
@@ -299,11 +299,10 @@ function parseWorkerRequest(incomingRequest) {
299
299
 
300
300
  // src/browser/setupWorker/start/createRequestListener.ts
301
301
  var import_RequestHandler = require("../core/handlers/RequestHandler.js");
302
- var import_HttpHandler = require("../core/handlers/HttpHandler.js");
303
- var import_GraphQLHandler = require("../core/handlers/GraphQLHandler.js");
304
302
  var import_handleRequest = require("../core/utils/handleRequest.js");
305
303
  var import_devUtils4 = require("../core/utils/internal/devUtils.js");
306
304
  var import_toResponseInit = require("../core/utils/toResponseInit.js");
305
+ var import_isHandlerKind = require("../core/utils/internal/isHandlerKind.js");
307
306
  var createRequestListener = (context, options) => {
308
307
  return async (event, message) => {
309
308
  const messageChannel = new WorkerChannel(event.ports[0]);
@@ -317,9 +316,7 @@ var createRequestListener = (context, options) => {
317
316
  await (0, import_handleRequest.handleRequest)(
318
317
  request,
319
318
  requestId,
320
- context.getRequestHandlers().filter((handler) => {
321
- return handler instanceof import_HttpHandler.HttpHandler || handler instanceof import_GraphQLHandler.GraphQLHandler;
322
- }),
319
+ context.getRequestHandlers().filter((0, import_isHandlerKind.isHandlerKind)("RequestHandler")),
323
320
  options,
324
321
  context.emitter,
325
322
  {
@@ -406,7 +403,7 @@ You can also automate this process and make the worker script update automatical
406
403
  }
407
404
  }
408
405
 
409
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
406
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
410
407
  var encoder = new TextEncoder();
411
408
  function encodeBuffer(text) {
412
409
  return encoder.encode(text);
@@ -422,7 +419,7 @@ function toArrayBuffer(array) {
422
419
  );
423
420
  }
424
421
 
425
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-XVPRNJO7.mjs
422
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-6MOMO77R.mjs
426
423
  var IS_PATCHED_MODULE = Symbol("isPatchedModule");
427
424
  function isPropertyAccessible(obj, key) {
428
425
  try {
@@ -908,7 +905,7 @@ var _Emitter = class {
908
905
  var Emitter = _Emitter;
909
906
  Emitter.defaultMaxListeners = 10;
910
907
 
911
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
908
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
912
909
  var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
913
910
  function getGlobalSymbol(symbol) {
914
911
  return (
@@ -1056,7 +1053,7 @@ function createRequestId() {
1056
1053
  return Math.random().toString(16).slice(2);
1057
1054
  }
1058
1055
 
1059
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1056
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1060
1057
  var BatchInterceptor = class extends Interceptor {
1061
1058
  constructor(options) {
1062
1059
  BatchInterceptor.symbol = Symbol(options.name);
@@ -1342,7 +1339,7 @@ var DeferredPromise = class extends Promise {
1342
1339
  }
1343
1340
  };
1344
1341
 
1345
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-THPGBWJQ.mjs
1342
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-4RQHC4IY.mjs
1346
1343
  var InterceptorError = class extends Error {
1347
1344
  constructor(message) {
1348
1345
  super(message);
@@ -1446,13 +1443,17 @@ async function handleRequest2(options) {
1446
1443
  });
1447
1444
  const requestAbortPromise = new DeferredPromise();
1448
1445
  if (options.request.signal) {
1449
- options.request.signal.addEventListener(
1450
- "abort",
1451
- () => {
1452
- requestAbortPromise.reject(options.request.signal.reason);
1453
- },
1454
- { once: true }
1455
- );
1446
+ if (options.request.signal.aborted) {
1447
+ requestAbortPromise.reject(options.request.signal.reason);
1448
+ } else {
1449
+ options.request.signal.addEventListener(
1450
+ "abort",
1451
+ () => {
1452
+ requestAbortPromise.reject(options.request.signal.reason);
1453
+ },
1454
+ { once: true }
1455
+ );
1456
+ }
1456
1457
  }
1457
1458
  const result = await until(async () => {
1458
1459
  const requestListtenersPromise = emitAsync(options.emitter, "request", {
@@ -1510,7 +1511,28 @@ async function handleRequest2(options) {
1510
1511
  return false;
1511
1512
  }
1512
1513
 
1513
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-GHRPKS6J.mjs
1514
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
1515
+ function hasConfigurableGlobal(propertyName) {
1516
+ const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
1517
+ if (typeof descriptor === "undefined") {
1518
+ return false;
1519
+ }
1520
+ if (typeof descriptor.get === "function" && typeof descriptor.get() === "undefined") {
1521
+ return false;
1522
+ }
1523
+ if (typeof descriptor.get === "undefined" && descriptor.value == null) {
1524
+ return false;
1525
+ }
1526
+ if (typeof descriptor.set === "undefined" && !descriptor.configurable) {
1527
+ console.error(
1528
+ `[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.`
1529
+ );
1530
+ return false;
1531
+ }
1532
+ return true;
1533
+ }
1534
+
1535
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-VXLPKFY4.mjs
1514
1536
  function canParseUrl(url) {
1515
1537
  try {
1516
1538
  new URL(url);
@@ -1585,12 +1607,78 @@ function sameOrigin(left, right) {
1585
1607
  }
1586
1608
  return false;
1587
1609
  }
1610
+ var BrotliDecompressionStream = class extends TransformStream {
1611
+ constructor() {
1612
+ console.warn(
1613
+ "[Interceptors]: Brotli decompression of response streams is not supported in the browser"
1614
+ );
1615
+ super({
1616
+ transform(chunk, controller) {
1617
+ controller.enqueue(chunk);
1618
+ }
1619
+ });
1620
+ }
1621
+ };
1622
+ var PipelineStream = class extends TransformStream {
1623
+ constructor(transformStreams, ...strategies) {
1624
+ super({}, ...strategies);
1625
+ const readable = [super.readable, ...transformStreams].reduce(
1626
+ (readable2, transform) => readable2.pipeThrough(transform)
1627
+ );
1628
+ Object.defineProperty(this, "readable", {
1629
+ get() {
1630
+ return readable;
1631
+ }
1632
+ });
1633
+ }
1634
+ };
1635
+ function parseContentEncoding(contentEncoding) {
1636
+ return contentEncoding.toLowerCase().split(",").map((coding) => coding.trim());
1637
+ }
1638
+ function createDecompressionStream(contentEncoding) {
1639
+ if (contentEncoding === "") {
1640
+ return null;
1641
+ }
1642
+ const codings = parseContentEncoding(contentEncoding);
1643
+ if (codings.length === 0) {
1644
+ return null;
1645
+ }
1646
+ const transformers = codings.reduceRight(
1647
+ (transformers2, coding) => {
1648
+ if (coding === "gzip" || coding === "x-gzip") {
1649
+ return transformers2.concat(new DecompressionStream("gzip"));
1650
+ } else if (coding === "deflate") {
1651
+ return transformers2.concat(new DecompressionStream("deflate"));
1652
+ } else if (coding === "br") {
1653
+ return transformers2.concat(new BrotliDecompressionStream());
1654
+ } else {
1655
+ transformers2.length = 0;
1656
+ }
1657
+ return transformers2;
1658
+ },
1659
+ []
1660
+ );
1661
+ return new PipelineStream(transformers);
1662
+ }
1663
+ function decompressResponse(response) {
1664
+ if (response.body === null) {
1665
+ return null;
1666
+ }
1667
+ const decompressionStream = createDecompressionStream(
1668
+ response.headers.get("content-encoding") || ""
1669
+ );
1670
+ if (!decompressionStream) {
1671
+ return null;
1672
+ }
1673
+ response.body.pipeTo(decompressionStream.writable);
1674
+ return decompressionStream.readable;
1675
+ }
1588
1676
  var _FetchInterceptor = class extends Interceptor {
1589
1677
  constructor() {
1590
1678
  super(_FetchInterceptor.symbol);
1591
1679
  }
1592
1680
  checkEnvironment() {
1593
- return typeof globalThis !== "undefined" && typeof globalThis.fetch !== "undefined";
1681
+ return hasConfigurableGlobal("fetch");
1594
1682
  }
1595
1683
  async setup() {
1596
1684
  const pureFetch = globalThis.fetch;
@@ -1615,10 +1703,12 @@ var _FetchInterceptor = class extends Interceptor {
1615
1703
  requestId,
1616
1704
  emitter: this.emitter,
1617
1705
  controller,
1618
- onResponse: async (response) => {
1706
+ onResponse: async (rawResponse) => {
1619
1707
  this.logger.info("received mocked response!", {
1620
- response
1708
+ rawResponse
1621
1709
  });
1710
+ const decompressedStream = decompressResponse(rawResponse);
1711
+ const response = decompressedStream === null ? rawResponse : new Response(decompressedStream, rawResponse);
1622
1712
  if (RESPONSE_STATUS_CODES_WITH_REDIRECT.has(response.status)) {
1623
1713
  if (request.redirect === "error") {
1624
1714
  responsePromise.reject(createNetworkError("unexpected redirect"));
@@ -1636,6 +1726,12 @@ var _FetchInterceptor = class extends Interceptor {
1636
1726
  return;
1637
1727
  }
1638
1728
  }
1729
+ Object.defineProperty(response, "url", {
1730
+ writable: false,
1731
+ enumerable: true,
1732
+ configurable: false,
1733
+ value: request.url
1734
+ });
1639
1735
  if (this.emitter.listenerCount("response") > 0) {
1640
1736
  this.logger.info('emitting the "response" event...');
1641
1737
  await emitAsync(this.emitter, "response", {
@@ -1648,12 +1744,6 @@ var _FetchInterceptor = class extends Interceptor {
1648
1744
  requestId
1649
1745
  });
1650
1746
  }
1651
- Object.defineProperty(response, "url", {
1652
- writable: false,
1653
- enumerable: true,
1654
- configurable: false,
1655
- value: request.url
1656
- });
1657
1747
  responsePromise.resolve(response);
1658
1748
  },
1659
1749
  onRequestError: (response) => {
@@ -1707,7 +1797,7 @@ var _FetchInterceptor = class extends Interceptor {
1707
1797
  var FetchInterceptor = _FetchInterceptor;
1708
1798
  FetchInterceptor.symbol = Symbol("fetch");
1709
1799
 
1710
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-SUQ32ZQK.mjs
1800
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-MMAVIMED.mjs
1711
1801
  function concatArrayBuffer(left, right) {
1712
1802
  const result = new Uint8Array(left.byteLength + right.byteLength);
1713
1803
  result.set(left, 0);
@@ -2454,7 +2544,7 @@ var _XMLHttpRequestInterceptor = class extends Interceptor {
2454
2544
  super(_XMLHttpRequestInterceptor.interceptorSymbol);
2455
2545
  }
2456
2546
  checkEnvironment() {
2457
- return typeof globalThis.XMLHttpRequest !== "undefined";
2547
+ return hasConfigurableGlobal("XMLHttpRequest");
2458
2548
  }
2459
2549
  setup() {
2460
2550
  const logger = this.logger.extend("setup");
@@ -2494,6 +2584,7 @@ XMLHttpRequestInterceptor.interceptorSymbol = Symbol("xhr");
2494
2584
 
2495
2585
  // src/browser/setupWorker/start/createFallbackRequestListener.ts
2496
2586
  var import_handleRequest2 = require("../core/utils/handleRequest.js");
2587
+ var import_isHandlerKind2 = require("../core/utils/internal/isHandlerKind.js");
2497
2588
  function createFallbackRequestListener(context, options) {
2498
2589
  const interceptor = new BatchInterceptor({
2499
2590
  name: "fallback",
@@ -2504,7 +2595,7 @@ function createFallbackRequestListener(context, options) {
2504
2595
  const response = await (0, import_handleRequest2.handleRequest)(
2505
2596
  request,
2506
2597
  requestId,
2507
- context.getRequestHandlers(),
2598
+ context.getRequestHandlers().filter((0, import_isHandlerKind2.isHandlerKind)("RequestHandler")),
2508
2599
  options,
2509
2600
  context.emitter,
2510
2601
  {