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
@@ -272,11 +272,10 @@ function parseWorkerRequest(incomingRequest) {
272
272
 
273
273
  // src/browser/setupWorker/start/createRequestListener.ts
274
274
  import { RequestHandler } from '../core/handlers/RequestHandler.mjs';
275
- import { HttpHandler } from '../core/handlers/HttpHandler.mjs';
276
- import { GraphQLHandler } from '../core/handlers/GraphQLHandler.mjs';
277
275
  import { handleRequest } from '../core/utils/handleRequest.mjs';
278
276
  import { devUtils as devUtils4 } from '../core/utils/internal/devUtils.mjs';
279
277
  import { toResponseInit } from '../core/utils/toResponseInit.mjs';
278
+ import { isHandlerKind } from '../core/utils/internal/isHandlerKind.mjs';
280
279
  var createRequestListener = (context, options) => {
281
280
  return async (event, message) => {
282
281
  const messageChannel = new WorkerChannel(event.ports[0]);
@@ -290,9 +289,7 @@ var createRequestListener = (context, options) => {
290
289
  await handleRequest(
291
290
  request,
292
291
  requestId,
293
- context.getRequestHandlers().filter((handler) => {
294
- return handler instanceof HttpHandler || handler instanceof GraphQLHandler;
295
- }),
292
+ context.getRequestHandlers().filter(isHandlerKind("RequestHandler")),
296
293
  options,
297
294
  context.emitter,
298
295
  {
@@ -379,7 +376,7 @@ You can also automate this process and make the worker script update automatical
379
376
  }
380
377
  }
381
378
 
382
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
379
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
383
380
  var encoder = new TextEncoder();
384
381
  function encodeBuffer(text) {
385
382
  return encoder.encode(text);
@@ -395,7 +392,7 @@ function toArrayBuffer(array) {
395
392
  );
396
393
  }
397
394
 
398
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-XVPRNJO7.mjs
395
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-6MOMO77R.mjs
399
396
  var IS_PATCHED_MODULE = Symbol("isPatchedModule");
400
397
  function isPropertyAccessible(obj, key) {
401
398
  try {
@@ -881,7 +878,7 @@ var _Emitter = class {
881
878
  var Emitter = _Emitter;
882
879
  Emitter.defaultMaxListeners = 10;
883
880
 
884
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
881
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
885
882
  var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
886
883
  function getGlobalSymbol(symbol) {
887
884
  return (
@@ -1029,7 +1026,7 @@ function createRequestId() {
1029
1026
  return Math.random().toString(16).slice(2);
1030
1027
  }
1031
1028
 
1032
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1029
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/index.mjs
1033
1030
  var BatchInterceptor = class extends Interceptor {
1034
1031
  constructor(options) {
1035
1032
  BatchInterceptor.symbol = Symbol(options.name);
@@ -1315,7 +1312,7 @@ var DeferredPromise = class extends Promise {
1315
1312
  }
1316
1313
  };
1317
1314
 
1318
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-THPGBWJQ.mjs
1315
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-4RQHC4IY.mjs
1319
1316
  var InterceptorError = class extends Error {
1320
1317
  constructor(message) {
1321
1318
  super(message);
@@ -1419,13 +1416,17 @@ async function handleRequest2(options) {
1419
1416
  });
1420
1417
  const requestAbortPromise = new DeferredPromise();
1421
1418
  if (options.request.signal) {
1422
- options.request.signal.addEventListener(
1423
- "abort",
1424
- () => {
1425
- requestAbortPromise.reject(options.request.signal.reason);
1426
- },
1427
- { once: true }
1428
- );
1419
+ if (options.request.signal.aborted) {
1420
+ requestAbortPromise.reject(options.request.signal.reason);
1421
+ } else {
1422
+ options.request.signal.addEventListener(
1423
+ "abort",
1424
+ () => {
1425
+ requestAbortPromise.reject(options.request.signal.reason);
1426
+ },
1427
+ { once: true }
1428
+ );
1429
+ }
1429
1430
  }
1430
1431
  const result = await until(async () => {
1431
1432
  const requestListtenersPromise = emitAsync(options.emitter, "request", {
@@ -1483,7 +1484,28 @@ async function handleRequest2(options) {
1483
1484
  return false;
1484
1485
  }
1485
1486
 
1486
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-GHRPKS6J.mjs
1487
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-TX5GBTFY.mjs
1488
+ function hasConfigurableGlobal(propertyName) {
1489
+ const descriptor = Object.getOwnPropertyDescriptor(globalThis, propertyName);
1490
+ if (typeof descriptor === "undefined") {
1491
+ return false;
1492
+ }
1493
+ if (typeof descriptor.get === "function" && typeof descriptor.get() === "undefined") {
1494
+ return false;
1495
+ }
1496
+ if (typeof descriptor.get === "undefined" && descriptor.value == null) {
1497
+ return false;
1498
+ }
1499
+ if (typeof descriptor.set === "undefined" && !descriptor.configurable) {
1500
+ console.error(
1501
+ `[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.`
1502
+ );
1503
+ return false;
1504
+ }
1505
+ return true;
1506
+ }
1507
+
1508
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-VXLPKFY4.mjs
1487
1509
  function canParseUrl(url) {
1488
1510
  try {
1489
1511
  new URL(url);
@@ -1558,12 +1580,78 @@ function sameOrigin(left, right) {
1558
1580
  }
1559
1581
  return false;
1560
1582
  }
1583
+ var BrotliDecompressionStream = class extends TransformStream {
1584
+ constructor() {
1585
+ console.warn(
1586
+ "[Interceptors]: Brotli decompression of response streams is not supported in the browser"
1587
+ );
1588
+ super({
1589
+ transform(chunk, controller) {
1590
+ controller.enqueue(chunk);
1591
+ }
1592
+ });
1593
+ }
1594
+ };
1595
+ var PipelineStream = class extends TransformStream {
1596
+ constructor(transformStreams, ...strategies) {
1597
+ super({}, ...strategies);
1598
+ const readable = [super.readable, ...transformStreams].reduce(
1599
+ (readable2, transform) => readable2.pipeThrough(transform)
1600
+ );
1601
+ Object.defineProperty(this, "readable", {
1602
+ get() {
1603
+ return readable;
1604
+ }
1605
+ });
1606
+ }
1607
+ };
1608
+ function parseContentEncoding(contentEncoding) {
1609
+ return contentEncoding.toLowerCase().split(",").map((coding) => coding.trim());
1610
+ }
1611
+ function createDecompressionStream(contentEncoding) {
1612
+ if (contentEncoding === "") {
1613
+ return null;
1614
+ }
1615
+ const codings = parseContentEncoding(contentEncoding);
1616
+ if (codings.length === 0) {
1617
+ return null;
1618
+ }
1619
+ const transformers = codings.reduceRight(
1620
+ (transformers2, coding) => {
1621
+ if (coding === "gzip" || coding === "x-gzip") {
1622
+ return transformers2.concat(new DecompressionStream("gzip"));
1623
+ } else if (coding === "deflate") {
1624
+ return transformers2.concat(new DecompressionStream("deflate"));
1625
+ } else if (coding === "br") {
1626
+ return transformers2.concat(new BrotliDecompressionStream());
1627
+ } else {
1628
+ transformers2.length = 0;
1629
+ }
1630
+ return transformers2;
1631
+ },
1632
+ []
1633
+ );
1634
+ return new PipelineStream(transformers);
1635
+ }
1636
+ function decompressResponse(response) {
1637
+ if (response.body === null) {
1638
+ return null;
1639
+ }
1640
+ const decompressionStream = createDecompressionStream(
1641
+ response.headers.get("content-encoding") || ""
1642
+ );
1643
+ if (!decompressionStream) {
1644
+ return null;
1645
+ }
1646
+ response.body.pipeTo(decompressionStream.writable);
1647
+ return decompressionStream.readable;
1648
+ }
1561
1649
  var _FetchInterceptor = class extends Interceptor {
1562
1650
  constructor() {
1563
1651
  super(_FetchInterceptor.symbol);
1564
1652
  }
1565
1653
  checkEnvironment() {
1566
- return typeof globalThis !== "undefined" && typeof globalThis.fetch !== "undefined";
1654
+ return hasConfigurableGlobal("fetch");
1567
1655
  }
1568
1656
  async setup() {
1569
1657
  const pureFetch = globalThis.fetch;
@@ -1588,10 +1676,12 @@ var _FetchInterceptor = class extends Interceptor {
1588
1676
  requestId,
1589
1677
  emitter: this.emitter,
1590
1678
  controller,
1591
- onResponse: async (response) => {
1679
+ onResponse: async (rawResponse) => {
1592
1680
  this.logger.info("received mocked response!", {
1593
- response
1681
+ rawResponse
1594
1682
  });
1683
+ const decompressedStream = decompressResponse(rawResponse);
1684
+ const response = decompressedStream === null ? rawResponse : new Response(decompressedStream, rawResponse);
1595
1685
  if (RESPONSE_STATUS_CODES_WITH_REDIRECT.has(response.status)) {
1596
1686
  if (request.redirect === "error") {
1597
1687
  responsePromise.reject(createNetworkError("unexpected redirect"));
@@ -1609,6 +1699,12 @@ var _FetchInterceptor = class extends Interceptor {
1609
1699
  return;
1610
1700
  }
1611
1701
  }
1702
+ Object.defineProperty(response, "url", {
1703
+ writable: false,
1704
+ enumerable: true,
1705
+ configurable: false,
1706
+ value: request.url
1707
+ });
1612
1708
  if (this.emitter.listenerCount("response") > 0) {
1613
1709
  this.logger.info('emitting the "response" event...');
1614
1710
  await emitAsync(this.emitter, "response", {
@@ -1621,12 +1717,6 @@ var _FetchInterceptor = class extends Interceptor {
1621
1717
  requestId
1622
1718
  });
1623
1719
  }
1624
- Object.defineProperty(response, "url", {
1625
- writable: false,
1626
- enumerable: true,
1627
- configurable: false,
1628
- value: request.url
1629
- });
1630
1720
  responsePromise.resolve(response);
1631
1721
  },
1632
1722
  onRequestError: (response) => {
@@ -1680,7 +1770,7 @@ var _FetchInterceptor = class extends Interceptor {
1680
1770
  var FetchInterceptor = _FetchInterceptor;
1681
1771
  FetchInterceptor.symbol = Symbol("fetch");
1682
1772
 
1683
- // node_modules/.pnpm/@mswjs+interceptors@0.36.5/node_modules/@mswjs/interceptors/lib/browser/chunk-SUQ32ZQK.mjs
1773
+ // node_modules/.pnpm/@mswjs+interceptors@0.36.10/node_modules/@mswjs/interceptors/lib/browser/chunk-MMAVIMED.mjs
1684
1774
  function concatArrayBuffer(left, right) {
1685
1775
  const result = new Uint8Array(left.byteLength + right.byteLength);
1686
1776
  result.set(left, 0);
@@ -2427,7 +2517,7 @@ var _XMLHttpRequestInterceptor = class extends Interceptor {
2427
2517
  super(_XMLHttpRequestInterceptor.interceptorSymbol);
2428
2518
  }
2429
2519
  checkEnvironment() {
2430
- return typeof globalThis.XMLHttpRequest !== "undefined";
2520
+ return hasConfigurableGlobal("XMLHttpRequest");
2431
2521
  }
2432
2522
  setup() {
2433
2523
  const logger = this.logger.extend("setup");
@@ -2467,6 +2557,7 @@ XMLHttpRequestInterceptor.interceptorSymbol = Symbol("xhr");
2467
2557
 
2468
2558
  // src/browser/setupWorker/start/createFallbackRequestListener.ts
2469
2559
  import { handleRequest as handleRequest3 } from '../core/utils/handleRequest.mjs';
2560
+ import { isHandlerKind as isHandlerKind2 } from '../core/utils/internal/isHandlerKind.mjs';
2470
2561
  function createFallbackRequestListener(context, options) {
2471
2562
  const interceptor = new BatchInterceptor({
2472
2563
  name: "fallback",
@@ -2477,7 +2568,7 @@ function createFallbackRequestListener(context, options) {
2477
2568
  const response = await handleRequest3(
2478
2569
  request,
2479
2570
  requestId,
2480
- context.getRequestHandlers(),
2571
+ context.getRequestHandlers().filter(isHandlerKind2("RequestHandler")),
2481
2572
  options,
2482
2573
  context.emitter,
2483
2574
  {