msw 1.0.1 → 1.1.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/node/index.js CHANGED
@@ -1,38 +1,10 @@
1
+ "use strict";
1
2
  var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
6
  var __getProtoOf = Object.getPrototypeOf;
9
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __objRest = (source, exclude) => {
25
- var target = {};
26
- for (var prop in source)
27
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
- target[prop] = source[prop];
29
- if (source != null && __getOwnPropSymbols)
30
- for (var prop of __getOwnPropSymbols(source)) {
31
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
- target[prop] = source[prop];
33
- }
34
- return target;
35
- };
36
8
  var __export = (target, all) => {
37
9
  for (var name in all)
38
10
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -45,7 +17,10 @@ var __copyProps = (to, from, except, desc) => {
45
17
  }
46
18
  return to;
47
19
  };
48
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
49
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
50
25
 
51
26
  // src/node/index.ts
@@ -121,7 +96,13 @@ var SetupApi = class {
121
96
  }
122
97
  validateHandlers(...handlers) {
123
98
  for (const handler of handlers) {
124
- (0, import_outvariant2.invariant)(!Array.isArray(handler), devUtils.formatMessage('Failed to construct "%s" given an Array of request handlers. Make sure you spread the request handlers when calling the respective setup function.'), this.constructor.name);
99
+ (0, import_outvariant2.invariant)(
100
+ !Array.isArray(handler),
101
+ devUtils.formatMessage(
102
+ 'Failed to construct "%s" given an Array of request handlers. Make sure you spread the request handlers when calling the respective setup function.'
103
+ ),
104
+ this.constructor.name
105
+ );
125
106
  }
126
107
  }
127
108
  dispose() {
@@ -341,15 +322,23 @@ var MockedRequest = class extends import_interceptors.IsomorphicRequest {
341
322
  const requestCookiesString = this.headers.get("cookie");
342
323
  const ownCookies = requestCookiesString ? cookieUtils2.parse(requestCookiesString) : {};
343
324
  import_cookies.store.hydrate();
344
- const cookiesFromStore = Array.from((_a = import_cookies.store.get(__spreadProps(__spreadValues({}, this), { url: this.url.href }))) == null ? void 0 : _a.entries()).reduce((cookies, [name, { value }]) => {
325
+ const cookiesFromStore = Array.from(
326
+ (_a = import_cookies.store.get({ ...this, url: this.url.href })) == null ? void 0 : _a.entries()
327
+ ).reduce((cookies, [name, { value }]) => {
345
328
  return Object.assign(cookies, { [name.trim()]: value });
346
329
  }, {});
347
330
  const cookiesFromDocument = getRequestCookies(this);
348
- const forwardedCookies = __spreadValues(__spreadValues({}, cookiesFromDocument), cookiesFromStore);
331
+ const forwardedCookies = {
332
+ ...cookiesFromDocument,
333
+ ...cookiesFromStore
334
+ };
349
335
  for (const [name, value] of Object.entries(forwardedCookies)) {
350
336
  this.headers.append("cookie", `${name}=${value}`);
351
337
  }
352
- return __spreadValues(__spreadValues({}, forwardedCookies), ownCookies);
338
+ return {
339
+ ...forwardedCookies,
340
+ ...ownCookies
341
+ };
353
342
  }
354
343
  };
355
344
 
@@ -411,7 +400,10 @@ var import_graphql = require("graphql");
411
400
 
412
401
  // src/utils/request/getPublicUrlFromRequest.ts
413
402
  var getPublicUrlFromRequest = (request) => {
414
- return request.referrer.startsWith(request.url.origin) ? request.url.pathname : new URL(request.url.pathname, `${request.url.protocol}//${request.url.host}`).href;
403
+ return request.referrer.startsWith(request.url.origin) ? request.url.pathname : new URL(
404
+ request.url.pathname,
405
+ `${request.url.protocol}//${request.url.host}`
406
+ ).href;
415
407
  };
416
408
 
417
409
  // src/utils/internal/parseGraphQLRequest.ts
@@ -474,13 +466,19 @@ function getGraphQLInput(request) {
474
466
  };
475
467
  }
476
468
  if ((_b = request.body) == null ? void 0 : _b.operations) {
477
- const _c = request.body, { operations, map } = _c, files = __objRest(_c, ["operations", "map"]);
478
- const parsedOperations = jsonParse(operations) || {};
469
+ const { operations, map, ...files } = request.body;
470
+ const parsedOperations = jsonParse(
471
+ operations
472
+ ) || {};
479
473
  if (!parsedOperations.query) {
480
474
  return null;
481
475
  }
482
476
  const parsedMap = jsonParse(map || "") || {};
483
- const variables = parsedOperations.variables ? extractMultipartVariables(parsedOperations.variables, parsedMap, files) : {};
477
+ const variables = parsedOperations.variables ? extractMultipartVariables(
478
+ parsedOperations.variables,
479
+ parsedMap,
480
+ files
481
+ ) : {};
484
482
  return {
485
483
  query: parsedOperations.query,
486
484
  variables
@@ -500,7 +498,14 @@ function parseGraphQLRequest(request) {
500
498
  const parsedResult = parseQuery(query);
501
499
  if (parsedResult instanceof Error) {
502
500
  const requestPublicUrl = getPublicUrlFromRequest(request);
503
- throw new Error(devUtils.formatMessage('Failed to intercept a GraphQL request to "%s %s": cannot parse query. See the error message from the parser below.\n\n%s', request.method, requestPublicUrl, parsedResult.message));
501
+ throw new Error(
502
+ devUtils.formatMessage(
503
+ 'Failed to intercept a GraphQL request to "%s %s": cannot parse query. See the error message from the parser below.\n\n%s',
504
+ request.method,
505
+ requestPublicUrl,
506
+ parsedResult.message
507
+ )
508
+ );
504
509
  }
505
510
  return {
506
511
  operationType: parsedResult.operationType,
@@ -509,134 +514,71 @@ function parseGraphQLRequest(request) {
509
514
  };
510
515
  }
511
516
 
512
- // node_modules/statuses/codes.json
513
- var _00 = "Continue";
514
- var _01 = "Switching Protocols";
515
- var _02 = "Processing";
516
- var _03 = "Early Hints";
517
- var _002 = "OK";
518
- var _012 = "Created";
519
- var _022 = "Accepted";
520
- var _032 = "Non-Authoritative Information";
521
- var _04 = "No Content";
522
- var _05 = "Reset Content";
523
- var _06 = "Partial Content";
524
- var _07 = "Multi-Status";
525
- var _08 = "Already Reported";
526
- var _26 = "IM Used";
527
- var _003 = "Multiple Choices";
528
- var _013 = "Moved Permanently";
529
- var _023 = "Found";
530
- var _033 = "See Other";
531
- var _042 = "Not Modified";
532
- var _052 = "Use Proxy";
533
- var _072 = "Temporary Redirect";
534
- var _082 = "Permanent Redirect";
535
- var _004 = "Bad Request";
536
- var _014 = "Unauthorized";
537
- var _024 = "Payment Required";
538
- var _034 = "Forbidden";
539
- var _043 = "Not Found";
540
- var _053 = "Method Not Allowed";
541
- var _062 = "Not Acceptable";
542
- var _073 = "Proxy Authentication Required";
543
- var _083 = "Request Timeout";
544
- var _09 = "Conflict";
545
- var _10 = "Gone";
546
- var _11 = "Length Required";
547
- var _12 = "Precondition Failed";
548
- var _13 = "Payload Too Large";
549
- var _14 = "URI Too Long";
550
- var _15 = "Unsupported Media Type";
551
- var _16 = "Range Not Satisfiable";
552
- var _17 = "Expectation Failed";
553
- var _18 = "I'm a Teapot";
554
- var _21 = "Misdirected Request";
555
- var _22 = "Unprocessable Entity";
556
- var _23 = "Locked";
557
- var _24 = "Failed Dependency";
558
- var _25 = "Too Early";
559
- var _262 = "Upgrade Required";
560
- var _28 = "Precondition Required";
561
- var _29 = "Too Many Requests";
562
- var _31 = "Request Header Fields Too Large";
563
- var _51 = "Unavailable For Legal Reasons";
564
- var _005 = "Internal Server Error";
565
- var _015 = "Not Implemented";
566
- var _025 = "Bad Gateway";
567
- var _035 = "Service Unavailable";
568
- var _044 = "Gateway Timeout";
569
- var _054 = "HTTP Version Not Supported";
570
- var _063 = "Variant Also Negotiates";
571
- var _074 = "Insufficient Storage";
572
- var _084 = "Loop Detected";
573
- var _092 = "Bandwidth Limit Exceeded";
574
- var _102 = "Not Extended";
575
- var _112 = "Network Authentication Required";
517
+ // node_modules/.pnpm/statuses@2.0.1/node_modules/statuses/codes.json
576
518
  var codes_default = {
577
- "100": _00,
578
- "101": _01,
579
- "102": _02,
580
- "103": _03,
581
- "200": _002,
582
- "201": _012,
583
- "202": _022,
584
- "203": _032,
585
- "204": _04,
586
- "205": _05,
587
- "206": _06,
588
- "207": _07,
589
- "208": _08,
590
- "226": _26,
591
- "300": _003,
592
- "301": _013,
593
- "302": _023,
594
- "303": _033,
595
- "304": _042,
596
- "305": _052,
597
- "307": _072,
598
- "308": _082,
599
- "400": _004,
600
- "401": _014,
601
- "402": _024,
602
- "403": _034,
603
- "404": _043,
604
- "405": _053,
605
- "406": _062,
606
- "407": _073,
607
- "408": _083,
608
- "409": _09,
609
- "410": _10,
610
- "411": _11,
611
- "412": _12,
612
- "413": _13,
613
- "414": _14,
614
- "415": _15,
615
- "416": _16,
616
- "417": _17,
617
- "418": _18,
618
- "421": _21,
619
- "422": _22,
620
- "423": _23,
621
- "424": _24,
622
- "425": _25,
623
- "426": _262,
624
- "428": _28,
625
- "429": _29,
626
- "431": _31,
627
- "451": _51,
628
- "500": _005,
629
- "501": _015,
630
- "502": _025,
631
- "503": _035,
632
- "504": _044,
633
- "505": _054,
634
- "506": _063,
635
- "507": _074,
636
- "508": _084,
637
- "509": _092,
638
- "510": _102,
639
- "511": _112
519
+ "100": "Continue",
520
+ "101": "Switching Protocols",
521
+ "102": "Processing",
522
+ "103": "Early Hints",
523
+ "200": "OK",
524
+ "201": "Created",
525
+ "202": "Accepted",
526
+ "203": "Non-Authoritative Information",
527
+ "204": "No Content",
528
+ "205": "Reset Content",
529
+ "206": "Partial Content",
530
+ "207": "Multi-Status",
531
+ "208": "Already Reported",
532
+ "226": "IM Used",
533
+ "300": "Multiple Choices",
534
+ "301": "Moved Permanently",
535
+ "302": "Found",
536
+ "303": "See Other",
537
+ "304": "Not Modified",
538
+ "305": "Use Proxy",
539
+ "307": "Temporary Redirect",
540
+ "308": "Permanent Redirect",
541
+ "400": "Bad Request",
542
+ "401": "Unauthorized",
543
+ "402": "Payment Required",
544
+ "403": "Forbidden",
545
+ "404": "Not Found",
546
+ "405": "Method Not Allowed",
547
+ "406": "Not Acceptable",
548
+ "407": "Proxy Authentication Required",
549
+ "408": "Request Timeout",
550
+ "409": "Conflict",
551
+ "410": "Gone",
552
+ "411": "Length Required",
553
+ "412": "Precondition Failed",
554
+ "413": "Payload Too Large",
555
+ "414": "URI Too Long",
556
+ "415": "Unsupported Media Type",
557
+ "416": "Range Not Satisfiable",
558
+ "417": "Expectation Failed",
559
+ "418": "I'm a Teapot",
560
+ "421": "Misdirected Request",
561
+ "422": "Unprocessable Entity",
562
+ "423": "Locked",
563
+ "424": "Failed Dependency",
564
+ "425": "Too Early",
565
+ "426": "Upgrade Required",
566
+ "428": "Precondition Required",
567
+ "429": "Too Many Requests",
568
+ "431": "Request Header Fields Too Large",
569
+ "451": "Unavailable For Legal Reasons",
570
+ "500": "Internal Server Error",
571
+ "501": "Not Implemented",
572
+ "502": "Bad Gateway",
573
+ "503": "Service Unavailable",
574
+ "504": "Gateway Timeout",
575
+ "505": "HTTP Version Not Supported",
576
+ "506": "Variant Also Negotiates",
577
+ "507": "Insufficient Storage",
578
+ "508": "Loop Detected",
579
+ "509": "Bandwidth Limit Exceeded",
580
+ "510": "Not Extended",
581
+ "511": "Network Authentication Required"
640
582
  };
641
583
 
642
584
  // src/context/status.ts
@@ -723,7 +665,9 @@ var getRandomServerResponseTime = () => {
723
665
  if ((0, import_is_node_process.isNodeProcess)()) {
724
666
  return NODE_SERVER_RESPONSE_TIME;
725
667
  }
726
- return Math.floor(Math.random() * (MAX_SERVER_RESPONSE_TIME - MIN_SERVER_RESPONSE_TIME) + MIN_SERVER_RESPONSE_TIME);
668
+ return Math.floor(
669
+ Math.random() * (MAX_SERVER_RESPONSE_TIME - MIN_SERVER_RESPONSE_TIME) + MIN_SERVER_RESPONSE_TIME
670
+ );
727
671
  };
728
672
  var delay = (durationOrMode) => {
729
673
  return (res) => {
@@ -739,14 +683,18 @@ var delay = (durationOrMode) => {
739
683
  break;
740
684
  }
741
685
  default: {
742
- throw new Error(`Failed to delay a response: unknown delay mode "${durationOrMode}". Please make sure you provide one of the supported modes ("real", "infinite") or a number to "ctx.delay".`);
686
+ throw new Error(
687
+ `Failed to delay a response: unknown delay mode "${durationOrMode}". Please make sure you provide one of the supported modes ("real", "infinite") or a number to "ctx.delay".`
688
+ );
743
689
  }
744
690
  }
745
691
  } else if (typeof durationOrMode === "undefined") {
746
692
  delayTime = getRandomServerResponseTime();
747
693
  } else {
748
694
  if (durationOrMode > SET_TIMEOUT_MAX_ALLOWED_INT) {
749
- throw new Error(`Failed to delay a response: provided delay duration (${durationOrMode}) exceeds the maximum allowed duration for "setTimeout" (${SET_TIMEOUT_MAX_ALLOWED_INT}). This will cause the response to be returned immediately. Please use a number within the allowed range to delay the response by exact duration, or consider the "infinite" delay mode to delay the response indefinitely.`);
695
+ throw new Error(
696
+ `Failed to delay a response: provided delay duration (${durationOrMode}) exceeds the maximum allowed duration for "setTimeout" (${SET_TIMEOUT_MAX_ALLOWED_INT}). This will cause the response to be returned immediately. Please use a number within the allowed range to delay the response by exact duration, or consider the "infinite" delay mode to delay the response indefinitely.`
697
+ );
750
698
  }
751
699
  delayTime = durationOrMode;
752
700
  }
@@ -770,19 +718,23 @@ var errors = (errorsList) => {
770
718
  // src/context/fetch.ts
771
719
  var import_is_node_process2 = require("is-node-process");
772
720
  var import_headers_polyfill4 = require("headers-polyfill");
773
- var useFetch = (0, import_is_node_process2.isNodeProcess)() ? (input, init) => Promise.resolve().then(() => __toESM(require("node-fetch"))).then(({ default: nodeFetch }) => nodeFetch(input, init)) : globalThis.fetch;
721
+ var useFetch = (0, import_is_node_process2.isNodeProcess)() ? (input, init) => Promise.resolve().then(() => __toESM(require("node-fetch"))).then(
722
+ ({ default: nodeFetch }) => nodeFetch(input, init)
723
+ ) : globalThis.fetch;
774
724
  var augmentRequestInit = (requestInit) => {
775
725
  const headers = new import_headers_polyfill4.Headers(requestInit.headers);
776
726
  headers.set("x-msw-bypass", "true");
777
- return __spreadProps(__spreadValues({}, requestInit), {
727
+ return {
728
+ ...requestInit,
778
729
  headers: headers.all()
779
- });
730
+ };
780
731
  };
781
732
  var createFetchRequestParameters = (input) => {
782
733
  const { body: body2, method } = input;
783
- const requestParameters = __spreadProps(__spreadValues({}, input), {
734
+ const requestParameters = {
735
+ ...input,
784
736
  body: void 0
785
- });
737
+ };
786
738
  if (["GET", "HEAD"].includes(method)) {
787
739
  return requestParameters;
788
740
  }
@@ -839,19 +791,21 @@ function getTimestamp() {
839
791
 
840
792
  // src/utils/logging/prepareRequest.ts
841
793
  function prepareRequest(request) {
842
- return __spreadProps(__spreadValues({}, request), {
794
+ return {
795
+ ...request,
843
796
  body: request.body,
844
797
  headers: request.headers.all()
845
- });
798
+ };
846
799
  }
847
800
 
848
801
  // src/utils/logging/prepareResponse.ts
849
802
  var import_headers_polyfill5 = require("headers-polyfill");
850
803
  function prepareResponse(res) {
851
804
  const responseHeaders = (0, import_headers_polyfill5.objectToHeaders)(res.headers);
852
- return __spreadProps(__spreadValues({}, res), {
805
+ return {
806
+ ...res,
853
807
  body: parseBody(res.body, responseHeaders)
854
- });
808
+ };
855
809
  }
856
810
 
857
811
  // src/utils/matching/matchRequestUrl.ts
@@ -895,13 +849,16 @@ function normalizePath(path, baseUrl) {
895
849
 
896
850
  // src/utils/matching/matchRequestUrl.ts
897
851
  function coercePath(path) {
898
- return path.replace(/([:a-zA-Z_-]*)(\*{1,2})+/g, (_, parameterName, wildcard) => {
899
- const expression = "(.*)";
900
- if (!parameterName) {
901
- return expression;
852
+ return path.replace(
853
+ /([:a-zA-Z_-]*)(\*{1,2})+/g,
854
+ (_, parameterName, wildcard) => {
855
+ const expression = "(.*)";
856
+ if (!parameterName) {
857
+ return expression;
858
+ }
859
+ return parameterName.startsWith(":") ? `${parameterName}${wildcard}` : `${parameterName}${expression}`;
902
860
  }
903
- return parameterName.startsWith(":") ? `${parameterName}${wildcard}` : `${parameterName}${expression}`;
904
- }).replace(/([^\/])(:)(?=\d+)/, "$1\\$2").replace(/^([^\/]+)(:)(?=\/\/)/, "$1\\$2");
861
+ ).replace(/([^\/])(:)(?=\d+)/, "$1\\$2").replace(/^([^\/]+)(:)(?=\/\/)/, "$1\\$2");
905
862
  }
906
863
  function matchRequestUrl(url, path, baseUrl) {
907
864
  const normalizedPath = normalizePath(path, baseUrl);
@@ -950,11 +907,16 @@ var defaultResponse = {
950
907
  var defaultResponseTransformers = [];
951
908
  function createResponseComposition(responseOverrides, defaultTransformers = defaultResponseTransformers) {
952
909
  return async (...transformers) => {
953
- const initialResponse = Object.assign({}, defaultResponse, {
954
- headers: new import_headers_polyfill6.Headers({
955
- "x-powered-by": "msw"
956
- })
957
- }, responseOverrides);
910
+ const initialResponse = Object.assign(
911
+ {},
912
+ defaultResponse,
913
+ {
914
+ headers: new import_headers_polyfill6.Headers({
915
+ "x-powered-by": "msw"
916
+ })
917
+ },
918
+ responseOverrides
919
+ );
958
920
  const resolvedTransformers = [
959
921
  ...defaultTransformers,
960
922
  ...transformers
@@ -1010,15 +972,20 @@ var RequestHandler = class {
1010
972
  this.ctx = options.ctx || defaultContext;
1011
973
  this.resolver = options.resolver;
1012
974
  const callFrame = getCallFrame(new Error());
1013
- this.info = __spreadProps(__spreadValues({}, options.info), {
975
+ this.info = {
976
+ ...options.info,
1014
977
  callFrame
1015
- });
978
+ };
1016
979
  }
1017
980
  parse(_request, _resolutionContext) {
1018
981
  return null;
1019
982
  }
1020
983
  test(request, resolutionContext) {
1021
- return this.predicate(request, this.parse(request, resolutionContext), resolutionContext);
984
+ return this.predicate(
985
+ request,
986
+ this.parse(request, resolutionContext),
987
+ resolutionContext
988
+ );
1022
989
  }
1023
990
  getPublicRequest(request, _parsedResult) {
1024
991
  return request;
@@ -1031,14 +998,26 @@ var RequestHandler = class {
1031
998
  return null;
1032
999
  }
1033
1000
  const parsedResult = this.parse(request, resolutionContext);
1034
- const shouldIntercept = this.predicate(request, parsedResult, resolutionContext);
1001
+ const shouldIntercept = this.predicate(
1002
+ request,
1003
+ parsedResult,
1004
+ resolutionContext
1005
+ );
1035
1006
  if (!shouldIntercept) {
1036
1007
  return null;
1037
1008
  }
1038
1009
  const publicRequest = this.getPublicRequest(request, parsedResult);
1039
1010
  const executeResolver = this.wrapResolver(this.resolver);
1040
- const mockedResponse = await executeResolver(publicRequest, response, this.ctx);
1041
- return this.createExecutionResult(parsedResult, publicRequest, mockedResponse);
1011
+ const mockedResponse = await executeResolver(
1012
+ publicRequest,
1013
+ response,
1014
+ this.ctx
1015
+ );
1016
+ return this.createExecutionResult(
1017
+ parsedResult,
1018
+ publicRequest,
1019
+ mockedResponse
1020
+ );
1042
1021
  }
1043
1022
  wrapResolver(resolver) {
1044
1023
  return async (req, res, ctx) => {
@@ -1069,18 +1048,20 @@ var RequestHandler = class {
1069
1048
  };
1070
1049
 
1071
1050
  // src/handlers/RestHandler.ts
1072
- var restContext = __spreadProps(__spreadValues({}, defaultContext), {
1051
+ var restContext = {
1052
+ ...defaultContext,
1073
1053
  cookie,
1074
1054
  body,
1075
1055
  text,
1076
1056
  json,
1077
1057
  xml
1078
- });
1058
+ };
1079
1059
  var RestRequest = class extends MockedRequest {
1080
1060
  constructor(request, params) {
1081
- super(request.url, __spreadProps(__spreadValues({}, request), {
1061
+ super(request.url, {
1062
+ ...request,
1082
1063
  body: request["_body"]
1083
- }));
1064
+ });
1084
1065
  this.params = params;
1085
1066
  this.id = request.id;
1086
1067
  }
@@ -1112,10 +1093,16 @@ var RestHandler = class extends RequestHandler {
1112
1093
  searchParams.forEach((_, paramName) => {
1113
1094
  queryParams.push(paramName);
1114
1095
  });
1115
- devUtils.warn(`Found a redundant usage of query parameters in the request handler URL for "${method} ${path}". Please match against a path instead and access query parameters in the response resolver function using "req.url.searchParams".`);
1096
+ devUtils.warn(
1097
+ `Found a redundant usage of query parameters in the request handler URL for "${method} ${path}". Please match against a path instead and access query parameters in the response resolver function using "req.url.searchParams".`
1098
+ );
1116
1099
  }
1117
1100
  parse(request, resolutionContext) {
1118
- return matchRequestUrl(request.url, this.info.path, resolutionContext == null ? void 0 : resolutionContext.baseUrl);
1101
+ return matchRequestUrl(
1102
+ request.url,
1103
+ this.info.path,
1104
+ resolutionContext == null ? void 0 : resolutionContext.baseUrl
1105
+ );
1119
1106
  }
1120
1107
  getPublicRequest(request, parsedResult) {
1121
1108
  return new RestRequest(request, parsedResult.params || {});
@@ -1129,7 +1116,15 @@ var RestHandler = class extends RequestHandler {
1129
1116
  const loggedRequest = prepareRequest(request);
1130
1117
  const loggedResponse = prepareResponse(response2);
1131
1118
  const statusColor = getStatusCodeColor(response2.status);
1132
- console.groupCollapsed(devUtils.formatMessage("%s %s %s (%c%s%c)"), getTimestamp(), request.method, publicUrl, `color:${statusColor}`, `${response2.status} ${response2.statusText}`, "color:inherit");
1119
+ console.groupCollapsed(
1120
+ devUtils.formatMessage("%s %s %s (%c%s%c)"),
1121
+ getTimestamp(),
1122
+ request.method,
1123
+ publicUrl,
1124
+ `color:${statusColor}`,
1125
+ `${response2.status} ${response2.statusText}`,
1126
+ "color:inherit"
1127
+ );
1133
1128
  console.log("Request", loggedRequest);
1134
1129
  console.log("Handler:", this);
1135
1130
  console.log("Response", loggedResponse);
@@ -1148,10 +1143,33 @@ var field = (fieldName, fieldValue) => {
1148
1143
  };
1149
1144
  };
1150
1145
  function validateFieldName(fieldName) {
1151
- (0, import_outvariant3.invariant)(fieldName.trim() !== "", devUtils.formatMessage("Failed to set a custom field on a GraphQL response: field name cannot be empty."));
1152
- (0, import_outvariant3.invariant)(fieldName !== "data", devUtils.formatMessage('Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.data()" instead?', fieldName));
1153
- (0, import_outvariant3.invariant)(fieldName !== "errors", devUtils.formatMessage('Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.errors()" instead?', fieldName));
1154
- (0, import_outvariant3.invariant)(fieldName !== "extensions", devUtils.formatMessage('Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.extensions()" instead?', fieldName));
1146
+ (0, import_outvariant3.invariant)(
1147
+ fieldName.trim() !== "",
1148
+ devUtils.formatMessage(
1149
+ "Failed to set a custom field on a GraphQL response: field name cannot be empty."
1150
+ )
1151
+ );
1152
+ (0, import_outvariant3.invariant)(
1153
+ fieldName !== "data",
1154
+ devUtils.formatMessage(
1155
+ 'Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.data()" instead?',
1156
+ fieldName
1157
+ )
1158
+ );
1159
+ (0, import_outvariant3.invariant)(
1160
+ fieldName !== "errors",
1161
+ devUtils.formatMessage(
1162
+ 'Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.errors()" instead?',
1163
+ fieldName
1164
+ )
1165
+ );
1166
+ (0, import_outvariant3.invariant)(
1167
+ fieldName !== "extensions",
1168
+ devUtils.formatMessage(
1169
+ 'Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.extensions()" instead?',
1170
+ fieldName
1171
+ )
1172
+ );
1155
1173
  }
1156
1174
 
1157
1175
  // src/utils/internal/tryCatch.ts
@@ -1165,13 +1183,14 @@ function tryCatch(fn, onException) {
1165
1183
  }
1166
1184
 
1167
1185
  // src/handlers/GraphQLHandler.ts
1168
- var graphqlContext = __spreadProps(__spreadValues({}, defaultContext), {
1186
+ var graphqlContext = {
1187
+ ...defaultContext,
1169
1188
  data,
1170
1189
  extensions,
1171
1190
  errors,
1172
1191
  cookie,
1173
1192
  field
1174
- });
1193
+ };
1175
1194
  function isDocumentNode(value) {
1176
1195
  if (value == null) {
1177
1196
  return false;
@@ -1180,9 +1199,10 @@ function isDocumentNode(value) {
1180
1199
  }
1181
1200
  var GraphQLRequest = class extends MockedRequest {
1182
1201
  constructor(request, variables) {
1183
- super(request.url, __spreadProps(__spreadValues({}, request), {
1202
+ super(request.url, {
1203
+ ...request,
1184
1204
  body: request["_body"]
1185
- }));
1205
+ });
1186
1206
  this.variables = variables;
1187
1207
  }
1188
1208
  };
@@ -1192,10 +1212,14 @@ var GraphQLHandler = class extends RequestHandler {
1192
1212
  if (isDocumentNode(operationName)) {
1193
1213
  const parsedNode = parseDocumentNode(operationName);
1194
1214
  if (parsedNode.operationType !== operationType) {
1195
- throw new Error(`Failed to create a GraphQL handler: provided a DocumentNode with a mismatched operation type (expected "${operationType}", but got "${parsedNode.operationType}").`);
1215
+ throw new Error(
1216
+ `Failed to create a GraphQL handler: provided a DocumentNode with a mismatched operation type (expected "${operationType}", but got "${parsedNode.operationType}").`
1217
+ );
1196
1218
  }
1197
1219
  if (!parsedNode.operationName) {
1198
- throw new Error(`Failed to create a GraphQL handler: provided a DocumentNode with no operation name.`);
1220
+ throw new Error(
1221
+ `Failed to create a GraphQL handler: provided a DocumentNode with no operation name.`
1222
+ );
1199
1223
  }
1200
1224
  resolvedOperationName = parsedNode.operationName;
1201
1225
  }
@@ -1212,7 +1236,10 @@ var GraphQLHandler = class extends RequestHandler {
1212
1236
  this.endpoint = endpoint;
1213
1237
  }
1214
1238
  parse(request) {
1215
- return tryCatch(() => parseGraphQLRequest(request), (error2) => console.error(error2.message));
1239
+ return tryCatch(
1240
+ () => parseGraphQLRequest(request),
1241
+ (error2) => console.error(error2.message)
1242
+ );
1216
1243
  }
1217
1244
  getPublicRequest(request, parsedResult) {
1218
1245
  return new GraphQLRequest(request, (parsedResult == null ? void 0 : parsedResult.variables) || {});
@@ -1225,7 +1252,7 @@ var GraphQLHandler = class extends RequestHandler {
1225
1252
  const publicUrl = getPublicUrlFromRequest(request);
1226
1253
  devUtils.warn(`Failed to intercept a GraphQL request at "${request.method} ${publicUrl}": anonymous GraphQL operations are not supported.
1227
1254
 
1228
- Consider naming this operation or using "graphql.operation" request handler to intercept GraphQL requests regardless of their operation name/type. Read more: https://mswjs.io/docs/api/graphql/operation `);
1255
+ Consider naming this operation or using "graphql.operation()" request handler to intercept GraphQL requests regardless of their operation name/type. Read more: https://mswjs.io/docs/api/graphql/operation `);
1229
1256
  return false;
1230
1257
  }
1231
1258
  const hasMatchingUrl = matchRequestUrl(request.url, this.endpoint);
@@ -1238,7 +1265,14 @@ Consider naming this operation or using "graphql.operation" request handler to i
1238
1265
  const loggedResponse = prepareResponse(response2);
1239
1266
  const statusColor = getStatusCodeColor(response2.status);
1240
1267
  const requestInfo = (parsedRequest == null ? void 0 : parsedRequest.operationName) ? `${parsedRequest == null ? void 0 : parsedRequest.operationType} ${parsedRequest == null ? void 0 : parsedRequest.operationName}` : `anonymous ${parsedRequest == null ? void 0 : parsedRequest.operationType}`;
1241
- console.groupCollapsed(devUtils.formatMessage("%s %s (%c%s%c)"), getTimestamp(), `${requestInfo}`, `color:${statusColor}`, `${response2.status} ${response2.statusText}`, "color:inherit");
1268
+ console.groupCollapsed(
1269
+ devUtils.formatMessage("%s %s (%c%s%c)"),
1270
+ getTimestamp(),
1271
+ `${requestInfo}`,
1272
+ `color:${statusColor}`,
1273
+ `${response2.status} ${response2.statusText}`,
1274
+ "color:inherit"
1275
+ );
1242
1276
  console.log("Request:", loggedRequest);
1243
1277
  console.log("Handler:", this);
1244
1278
  console.log("Response:", loggedResponse);
@@ -1251,18 +1285,21 @@ var MAX_MATCH_SCORE = 3;
1251
1285
  var MAX_SUGGESTION_COUNT = 4;
1252
1286
  var TYPE_MATCH_DELTA = 0.5;
1253
1287
  function groupHandlersByType(handlers) {
1254
- return handlers.reduce((groups, handler) => {
1255
- if (handler instanceof RestHandler) {
1256
- groups.rest.push(handler);
1257
- }
1258
- if (handler instanceof GraphQLHandler) {
1259
- groups.graphql.push(handler);
1288
+ return handlers.reduce(
1289
+ (groups, handler) => {
1290
+ if (handler instanceof RestHandler) {
1291
+ groups.rest.push(handler);
1292
+ }
1293
+ if (handler instanceof GraphQLHandler) {
1294
+ groups.graphql.push(handler);
1295
+ }
1296
+ return groups;
1297
+ },
1298
+ {
1299
+ rest: [],
1300
+ graphql: []
1260
1301
  }
1261
- return groups;
1262
- }, {
1263
- rest: [],
1264
- graphql: []
1265
- });
1302
+ );
1266
1303
  }
1267
1304
  function getRestHandlerScore() {
1268
1305
  return (request, handler) => {
@@ -1312,7 +1349,11 @@ function onUnhandledRequest(request, handlers, strategy = "warn") {
1312
1349
  function generateHandlerSuggestion() {
1313
1350
  const handlerGroups = groupHandlersByType(handlers);
1314
1351
  const relevantHandlers = parsedGraphQLQuery ? handlerGroups.graphql : handlerGroups.rest;
1315
- const suggestedHandlers = getSuggestedHandler(request, relevantHandlers, parsedGraphQLQuery ? getGraphQLHandlerScore(parsedGraphQLQuery) : getRestHandlerScore());
1352
+ const suggestedHandlers = getSuggestedHandler(
1353
+ request,
1354
+ relevantHandlers,
1355
+ parsedGraphQLQuery ? getGraphQLHandlerScore(parsedGraphQLQuery) : getRestHandlerScore()
1356
+ );
1316
1357
  return suggestedHandlers.length > 0 ? getSuggestedHandlersMessage(suggestedHandlers) : "";
1317
1358
  }
1318
1359
  function generateUnhandledRequestMessage() {
@@ -1333,7 +1374,11 @@ Read more: https://mswjs.io/docs/getting-started/mocks`
1333
1374
  switch (strategy2) {
1334
1375
  case "error": {
1335
1376
  devUtils.error("Error: %s", message);
1336
- throw new Error(devUtils.formatMessage('Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'));
1377
+ throw new Error(
1378
+ devUtils.formatMessage(
1379
+ 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
1380
+ )
1381
+ );
1337
1382
  }
1338
1383
  case "warn": {
1339
1384
  devUtils.warn("Warning: %s", message);
@@ -1342,7 +1387,12 @@ Read more: https://mswjs.io/docs/getting-started/mocks`
1342
1387
  case "bypass":
1343
1388
  break;
1344
1389
  default:
1345
- throw new Error(devUtils.formatMessage('Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.', strategy2));
1390
+ throw new Error(
1391
+ devUtils.formatMessage(
1392
+ 'Failed to react to an unhandled request: unknown strategy "%s". Please provide one of the supported strategies ("bypass", "warn", "error") or a custom callback function as the value of the "onUnhandledRequest" option.',
1393
+ strategy2
1394
+ )
1395
+ );
1346
1396
  }
1347
1397
  }
1348
1398
  if (typeof strategy === "function") {
@@ -1358,7 +1408,7 @@ Read more: https://mswjs.io/docs/getting-started/mocks`
1358
1408
  // src/utils/request/readResponseCookies.ts
1359
1409
  var import_cookies2 = require("@mswjs/cookies");
1360
1410
  function readResponseCookies(request, response2) {
1361
- import_cookies2.store.add(__spreadProps(__spreadValues({}, request), { url: request.url.toString() }), response2);
1411
+ import_cookies2.store.add({ ...request, url: request.url.toString() }, response2);
1362
1412
  import_cookies2.store.persist();
1363
1413
  }
1364
1414
 
@@ -1372,7 +1422,11 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
1372
1422
  return;
1373
1423
  }
1374
1424
  const [lookupError, lookupResult] = await (0, import_until.until)(() => {
1375
- return getResponse(request, handlers, handleRequestOptions == null ? void 0 : handleRequestOptions.resolutionContext);
1425
+ return getResponse(
1426
+ request,
1427
+ handlers,
1428
+ handleRequestOptions == null ? void 0 : handleRequestOptions.resolutionContext
1429
+ );
1376
1430
  });
1377
1431
  if (lookupError) {
1378
1432
  emitter.emit("unhandledException", lookupError, request);
@@ -1387,10 +1441,15 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
1387
1441
  return;
1388
1442
  }
1389
1443
  if (!response2) {
1390
- devUtils.warn(`Expected response resolver to return a mocked response Object, but got %s. The original response is going to be used instead.
1444
+ devUtils.warn(
1445
+ `Expected response resolver to return a mocked response Object, but got %s. The original response is going to be used instead.
1391
1446
 
1392
1447
  \u2022 %s
1393
- %s`, response2, handler.info.header, handler.info.callFrame);
1448
+ %s`,
1449
+ response2,
1450
+ handler.info.header,
1451
+ handler.info.callFrame
1452
+ );
1394
1453
  emitter.emit("request:end", request);
1395
1454
  (_c = handleRequestOptions == null ? void 0 : handleRequestOptions.onPassthroughResponse) == null ? void 0 : _c.call(handleRequestOptions, request);
1396
1455
  return;
@@ -1404,7 +1463,11 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
1404
1463
  emitter.emit("request:match", request);
1405
1464
  const requiredLookupResult = lookupResult;
1406
1465
  const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
1407
- (_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
1466
+ (_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(
1467
+ handleRequestOptions,
1468
+ transformedResponse,
1469
+ requiredLookupResult
1470
+ );
1408
1471
  emitter.emit("request:end", request);
1409
1472
  return transformedResponse;
1410
1473
  }
@@ -1426,20 +1489,27 @@ var SetupServerApi = class extends SetupApi {
1426
1489
  }
1427
1490
  init() {
1428
1491
  this.interceptor.on("request", async (request) => {
1429
- const mockedRequest = new MockedRequest(request.url, __spreadProps(__spreadValues({}, request), {
1492
+ const mockedRequest = new MockedRequest(request.url, {
1493
+ ...request,
1430
1494
  body: await request.arrayBuffer()
1431
- }));
1432
- const response2 = await handleRequest(mockedRequest, this.currentHandlers, this.resolvedOptions, this.emitter, {
1433
- transformResponse(response3) {
1434
- return {
1435
- status: response3.status,
1436
- statusText: response3.statusText,
1437
- headers: response3.headers.all(),
1438
- body: response3.body,
1439
- delay: response3.delay
1440
- };
1441
- }
1442
1495
  });
1496
+ const response2 = await handleRequest(
1497
+ mockedRequest,
1498
+ this.currentHandlers,
1499
+ this.resolvedOptions,
1500
+ this.emitter,
1501
+ {
1502
+ transformResponse(response3) {
1503
+ return {
1504
+ status: response3.status,
1505
+ statusText: response3.statusText,
1506
+ headers: response3.headers.all(),
1507
+ body: response3.body,
1508
+ delay: response3.delay
1509
+ };
1510
+ }
1511
+ }
1512
+ );
1443
1513
  if (response2) {
1444
1514
  if (response2.delay) {
1445
1515
  await new Promise((resolve) => {
@@ -1462,9 +1532,20 @@ var SetupServerApi = class extends SetupApi {
1462
1532
  });
1463
1533
  }
1464
1534
  listen(options = {}) {
1465
- this.resolvedOptions = mergeRight(DEFAULT_LISTEN_OPTIONS, options);
1535
+ this.resolvedOptions = mergeRight(
1536
+ DEFAULT_LISTEN_OPTIONS,
1537
+ options
1538
+ );
1466
1539
  this.interceptor.apply();
1467
- (0, import_outvariant4.invariant)([import_interceptors2.InterceptorReadyState.APPLYING, import_interceptors2.InterceptorReadyState.APPLIED].includes(this.interceptor.readyState), devUtils.formatMessage('Failed to start "setupServer": the interceptor failed to apply. This is likely an issue with the library and you should report it at "%s".'), "https://github.com/mswjs/msw/issues/new/choose");
1540
+ (0, import_outvariant4.invariant)(
1541
+ [import_interceptors2.InterceptorReadyState.APPLYING, import_interceptors2.InterceptorReadyState.APPLIED].includes(
1542
+ this.interceptor.readyState
1543
+ ),
1544
+ devUtils.formatMessage(
1545
+ 'Failed to start "setupServer": the interceptor failed to apply. This is likely an issue with the library and you should report it at "%s".'
1546
+ ),
1547
+ "https://github.com/mswjs/msw/issues/new/choose"
1548
+ );
1468
1549
  }
1469
1550
  printHandlers() {
1470
1551
  const handlers = this.listHandlers();
@@ -1485,8 +1566,12 @@ var SetupServerApi = class extends SetupApi {
1485
1566
  // src/node/setupServer.ts
1486
1567
  var import_ClientRequest = require("@mswjs/interceptors/lib/interceptors/ClientRequest/index.js");
1487
1568
  var import_XMLHttpRequest = require("@mswjs/interceptors/lib/interceptors/XMLHttpRequest/index.js");
1569
+ var import_fetch2 = require("@mswjs/interceptors/lib/interceptors/fetch/index.js");
1488
1570
  var setupServer = (...handlers) => {
1489
- return new SetupServerApi([import_ClientRequest.ClientRequestInterceptor, import_XMLHttpRequest.XMLHttpRequestInterceptor], ...handlers);
1571
+ return new SetupServerApi(
1572
+ [import_ClientRequest.ClientRequestInterceptor, import_XMLHttpRequest.XMLHttpRequestInterceptor, import_fetch2.FetchInterceptor],
1573
+ ...handlers
1574
+ );
1490
1575
  };
1491
1576
  // Annotate the CommonJS export names for ESM import in node:
1492
1577
  0 && (module.exports = {