msw 0.44.0 → 0.45.0

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.
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as ResponseTransformer, s as status, a as set, d as delay, f as fetch, b as RequestHandler, S as SetupWorkerApi, D as DefaultContext, c as DefaultBodyType, M as MockedRequest, e as ResponseResolver, g as ResponseResolutionContext, h as SerializedResponse, i as RequestHandlerDefaultInfo, j as MockedResponse, k as ResponseLookupResult, l as SharedOptions, m as ServerLifecycleEventsMap } from './glossary-17949ef9.js';
2
- export { A as AsyncResponseResolverReturnType, c as DefaultBodyType, u as DefaultRequestMultipartBody, y as DelayMode, M as MockedRequest, H as MockedRequestInit, j as MockedResponse, z as RequestCache, E as RequestDestination, b as RequestHandler, B as RequestMode, F as RequestPriority, C as RequestRedirect, G as RequestReferrerPolicy, v as ResponseComposition, w as ResponseCompositionOptions, x as ResponseFunction, e as ResponseResolver, t as ResponseResolverReturnType, R as ResponseTransformer, S as SetupWorkerApi, l as SharedOptions, q as StartOptions, o as createResponseComposition, p as defaultContext, n as defaultResponse, r as response } from './glossary-17949ef9.js';
1
+ import { R as ResponseTransformer, s as status, a as set, d as delay, f as fetch, b as RequestHandler, S as SetupWorkerApi, D as DefaultContext, c as DefaultBodyType, M as MockedRequest, e as ResponseResolver, g as ResponseResolutionContext, h as SerializedResponse, i as RequestHandlerDefaultInfo, j as MockedResponse, k as ResponseLookupResult, l as SharedOptions, m as ServerLifecycleEventsMap } from './glossary-297d38ba.js';
2
+ export { A as AsyncResponseResolverReturnType, c as DefaultBodyType, u as DefaultRequestMultipartBody, y as DelayMode, M as MockedRequest, H as MockedRequestInit, j as MockedResponse, z as RequestCache, E as RequestDestination, b as RequestHandler, B as RequestMode, F as RequestPriority, C as RequestRedirect, G as RequestReferrerPolicy, v as ResponseComposition, w as ResponseCompositionOptions, x as ResponseFunction, e as ResponseResolver, t as ResponseResolverReturnType, R as ResponseTransformer, S as SetupWorkerApi, l as SharedOptions, q as StartOptions, o as createResponseComposition, p as defaultContext, n as defaultResponse, r as response } from './glossary-297d38ba.js';
3
3
  import * as cookieUtils from 'cookie';
4
4
  import { GraphQLError, OperationTypeNode, DocumentNode } from 'graphql';
5
5
  import { StrictEventEmitter } from 'strict-event-emitter';
package/lib/index.js CHANGED
@@ -425,17 +425,15 @@ async function enableMocking(context, options) {
425
425
  }
426
426
 
427
427
  // src/setupWorker/start/utils/createMessageChannel.ts
428
- function createMessageChannel(event) {
429
- const port = event.ports[0];
430
- return {
431
- send(message) {
432
- if (!port) {
433
- return;
434
- }
435
- port.postMessage(message);
436
- }
437
- };
438
- }
428
+ var WorkerChannel = class {
429
+ constructor(port) {
430
+ this.port = port;
431
+ }
432
+ postMessage(event, ...rest2) {
433
+ const [data2, transfer] = rest2;
434
+ this.port.postMessage({ type: event, data: data2 }, { transfer });
435
+ }
436
+ };
439
437
 
440
438
  // src/utils/NetworkError.ts
441
439
  var NetworkError = class extends Error {
@@ -563,15 +561,8 @@ function isStringEqual(actual, expected) {
563
561
 
564
562
  // src/utils/request/MockedRequest.ts
565
563
  var MockedRequest = class extends import_interceptors.IsomorphicRequest {
566
- constructor(input, init = {}) {
567
- var __super = (...args) => {
568
- super(...args);
569
- };
570
- if (input instanceof import_interceptors.IsomorphicRequest) {
571
- __super(input);
572
- } else {
573
- __super(input, init);
574
- }
564
+ constructor(url, init = {}) {
565
+ super(url, init);
575
566
  if (init.id) {
576
567
  this.id = init.id;
577
568
  }
@@ -684,9 +675,6 @@ var getResponse = async (request, handlers, resolutionContext) => {
684
675
  // src/utils/request/onUnhandledRequest.ts
685
676
  var import_js_levenshtein = __toESM(require("js-levenshtein"));
686
677
 
687
- // src/utils/internal/parseGraphQLRequest.ts
688
- var import_graphql = require("graphql");
689
-
690
678
  // src/utils/request/getPublicUrlFromRequest.ts
691
679
  var getPublicUrlFromRequest = (request) => {
692
680
  return request.referrer.startsWith(request.url.origin) ? request.url.pathname : new URL(request.url.pathname, `${request.url.protocol}//${request.url.host}`).href;
@@ -705,7 +693,8 @@ function parseDocumentNode(node) {
705
693
  }
706
694
  function parseQuery(query) {
707
695
  try {
708
- const ast = (0, import_graphql.parse)(query);
696
+ const { parse: parse3 } = require("graphql");
697
+ const ast = parse3(query);
709
698
  return parseDocumentNode(ast);
710
699
  } catch (error2) {
711
700
  return error2;
@@ -1382,69 +1371,27 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
1382
1371
  return transformedResponse;
1383
1372
  }
1384
1373
 
1385
- // src/setupWorker/start/utils/streamResponse.ts
1386
- var import_outvariant3 = require("outvariant");
1387
- async function streamResponse(operationChannel, messageChannel, mockedResponse) {
1388
- const response2 = new Response(mockedResponse.body, mockedResponse);
1389
- delete mockedResponse.body;
1390
- messageChannel.send({
1391
- type: "MOCK_RESPONSE_START",
1392
- payload: mockedResponse
1393
- });
1394
- (0, import_outvariant3.invariant)(response2.body, "Failed to stream mocked response with no body");
1395
- const reader = response2.body.getReader();
1396
- while (true) {
1397
- const { done, value } = await reader.read();
1398
- if (!done) {
1399
- operationChannel.postMessage({
1400
- type: "MOCK_RESPONSE_CHUNK",
1401
- payload: value
1402
- });
1403
- continue;
1404
- }
1405
- operationChannel.postMessage({
1406
- type: "MOCK_RESPONSE_END"
1407
- });
1408
- operationChannel.close();
1409
- reader.releaseLock();
1410
- break;
1411
- }
1412
- }
1413
-
1414
- // src/utils/internal/StrictBroadcastChannel.ts
1415
- var ParentClass = typeof BroadcastChannel == "undefined" ? class UnsupportedEnvironment {
1416
- constructor() {
1417
- throw new Error("Cannot construct BroadcastChannel in a non-browser environment");
1418
- }
1419
- } : BroadcastChannel;
1420
- var StrictBroadcastChannel = class extends ParentClass {
1421
- postMessage(message) {
1422
- return super.postMessage(message);
1423
- }
1424
- };
1425
-
1426
1374
  // src/setupWorker/start/createRequestListener.ts
1427
1375
  var createRequestListener = (context, options) => {
1428
1376
  return async (event, message) => {
1429
- const messageChannel = createMessageChannel(event);
1377
+ const messageChannel = new WorkerChannel(event.ports[0]);
1378
+ const request = parseWorkerRequest(message.payload);
1430
1379
  try {
1431
- const request = parseWorkerRequest(message.payload);
1432
- const operationChannel = new StrictBroadcastChannel(`msw-response-stream-${request.id}`);
1433
1380
  await handleRequest(request, context.requestHandlers, options, context.emitter, {
1434
1381
  transformResponse,
1435
1382
  onPassthroughResponse() {
1436
- return messageChannel.send({
1437
- type: "MOCK_NOT_FOUND"
1438
- });
1383
+ messageChannel.postMessage("NOT_FOUND");
1439
1384
  },
1440
- onMockedResponse(response2) {
1441
- if (response2.body == null) {
1442
- return messageChannel.send({
1443
- type: "MOCK_RESPONSE",
1444
- payload: response2
1445
- });
1385
+ async onMockedResponse(response2) {
1386
+ if (response2.body instanceof ReadableStream) {
1387
+ throw new Error(devUtils.formatMessage('Failed to construct a mocked response with a "ReadableStream" body: mocked streams are not supported. Follow https://github.com/mswjs/msw/issues/1336 for more details.'));
1446
1388
  }
1447
- streamResponse(operationChannel, messageChannel, response2);
1389
+ const responseInstance = new Response(response2.body, response2);
1390
+ const responseBodyBuffer = await responseInstance.arrayBuffer();
1391
+ const responseBody = response2.body == null ? null : responseBodyBuffer;
1392
+ messageChannel.postMessage("MOCK_RESPONSE", __spreadProps(__spreadValues({}, response2), {
1393
+ body: responseBody
1394
+ }), [responseBodyBuffer]);
1448
1395
  },
1449
1396
  onMockedResponseSent(response2, { handler, publicRequest, parsedRequest }) {
1450
1397
  if (options.quiet) {
@@ -1455,25 +1402,29 @@ var createRequestListener = (context, options) => {
1455
1402
  });
1456
1403
  } catch (error2) {
1457
1404
  if (error2 instanceof NetworkError) {
1458
- return messageChannel.send({
1459
- type: "NETWORK_ERROR",
1460
- payload: {
1461
- name: error2.name,
1462
- message: error2.message
1463
- }
1405
+ messageChannel.postMessage("NETWORK_ERROR", {
1406
+ name: error2.name,
1407
+ message: error2.message
1464
1408
  });
1409
+ return;
1465
1410
  }
1466
1411
  if (error2 instanceof Error) {
1467
- messageChannel.send({
1468
- type: "INTERNAL_ERROR",
1469
- payload: {
1470
- status: 500,
1471
- body: JSON.stringify({
1472
- errorType: error2.constructor.name,
1473
- message: error2.message,
1474
- location: error2.stack
1475
- })
1476
- }
1412
+ devUtils.error(`Uncaught exception in the request handler for "%s %s":
1413
+
1414
+ %s
1415
+
1416
+ This exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/recipes/mocking-error-responses`, request.method, request.url, error2);
1417
+ messageChannel.postMessage("MOCK_RESPONSE", {
1418
+ status: 500,
1419
+ statusText: "Request Handler Error",
1420
+ headers: {
1421
+ "Content-Type": "application/json"
1422
+ },
1423
+ body: JSON.stringify({
1424
+ name: error2.name,
1425
+ message: error2.message,
1426
+ stack: error2.stack
1427
+ })
1477
1428
  });
1478
1429
  }
1479
1430
  }
@@ -1493,8 +1444,8 @@ function transformResponse(response2) {
1493
1444
  async function requestIntegrityCheck(context, serviceWorker) {
1494
1445
  context.workerChannel.send("INTEGRITY_CHECK_REQUEST");
1495
1446
  const { payload: actualChecksum } = await context.events.once("INTEGRITY_CHECK_RESPONSE");
1496
- if (actualChecksum !== "df0d85222361310ecbe1792c606e08f2") {
1497
- throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"df0d85222361310ecbe1792c606e08f2"}).`);
1447
+ if (actualChecksum !== "b3066ef78c2f9090b4ce87e874965995") {
1448
+ throw new Error(`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"b3066ef78c2f9090b4ce87e874965995"}).`);
1498
1449
  }
1499
1450
  return serviceWorker;
1500
1451
  }
@@ -1681,7 +1632,9 @@ function createFallbackRequestListener(context, options) {
1681
1632
  interceptors: [new import_fetch3.FetchInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor()]
1682
1633
  });
1683
1634
  interceptor.on("request", async (request) => {
1684
- const mockedRequest = new MockedRequest(request);
1635
+ const mockedRequest = new MockedRequest(request.url, __spreadProps(__spreadValues({}, request), {
1636
+ body: await request.arrayBuffer()
1637
+ }));
1685
1638
  const response2 = await handleRequest(mockedRequest, context.requestHandlers, options, context.emitter, {
1686
1639
  transformResponse(response3) {
1687
1640
  return {
@@ -1881,7 +1834,6 @@ var rest = {
1881
1834
  };
1882
1835
 
1883
1836
  // src/graphql.ts
1884
- var import_graphql2 = require("graphql");
1885
1837
  function createScopedGraphQLHandler(operationType, url) {
1886
1838
  return (operationName, resolver) => {
1887
1839
  return new GraphQLHandler(operationType, operationName, url, resolver);
@@ -1894,14 +1846,14 @@ function createGraphQLOperationHandler(url) {
1894
1846
  }
1895
1847
  var standardGraphQLHandlers = {
1896
1848
  operation: createGraphQLOperationHandler("*"),
1897
- query: createScopedGraphQLHandler(import_graphql2.OperationTypeNode.QUERY, "*"),
1898
- mutation: createScopedGraphQLHandler(import_graphql2.OperationTypeNode.MUTATION, "*")
1849
+ query: createScopedGraphQLHandler("query", "*"),
1850
+ mutation: createScopedGraphQLHandler("mutation", "*")
1899
1851
  };
1900
1852
  function createGraphQLLink(url) {
1901
1853
  return {
1902
1854
  operation: createGraphQLOperationHandler(url),
1903
- query: createScopedGraphQLHandler(import_graphql2.OperationTypeNode.QUERY, url),
1904
- mutation: createScopedGraphQLHandler(import_graphql2.OperationTypeNode.MUTATION, url)
1855
+ query: createScopedGraphQLHandler("query", url),
1856
+ mutation: createScopedGraphQLHandler("mutation", url)
1905
1857
  };
1906
1858
  }
1907
1859
  var graphql = __spreadProps(__spreadValues({}, standardGraphQLHandlers), {