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/cli/init.js +0 -0
- package/config/scripts/postinstall.js +0 -0
- package/lib/{SetupServerApi-39df862c.d.ts → SetupServerApi-1855d9c6.d.ts} +1 -1
- package/lib/iife/index.js +1510 -1442
- package/lib/iife/index.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +547 -345
- package/lib/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/lib/native/index.d.ts +1 -1
- package/lib/native/index.js +329 -248
- package/lib/native/index.mjs +328 -248
- package/lib/node/index.d.ts +3 -4
- package/lib/node/index.js +334 -249
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +333 -249
- package/lib/node/index.mjs.map +1 -1
- package/package.json +30 -27
- package/CHANGELOG.md +0 -4
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(
|
|
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)(
|
|
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(
|
|
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 =
|
|
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
|
|
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(
|
|
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
|
|
478
|
-
const parsedOperations = jsonParse(
|
|
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(
|
|
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(
|
|
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":
|
|
578
|
-
"101":
|
|
579
|
-
"102":
|
|
580
|
-
"103":
|
|
581
|
-
"200":
|
|
582
|
-
"201":
|
|
583
|
-
"202":
|
|
584
|
-
"203":
|
|
585
|
-
"204":
|
|
586
|
-
"205":
|
|
587
|
-
"206":
|
|
588
|
-
"207":
|
|
589
|
-
"208":
|
|
590
|
-
"226":
|
|
591
|
-
"300":
|
|
592
|
-
"301":
|
|
593
|
-
"302":
|
|
594
|
-
"303":
|
|
595
|
-
"304":
|
|
596
|
-
"305":
|
|
597
|
-
"307":
|
|
598
|
-
"308":
|
|
599
|
-
"400":
|
|
600
|
-
"401":
|
|
601
|
-
"402":
|
|
602
|
-
"403":
|
|
603
|
-
"404":
|
|
604
|
-
"405":
|
|
605
|
-
"406":
|
|
606
|
-
"407":
|
|
607
|
-
"408":
|
|
608
|
-
"409":
|
|
609
|
-
"410":
|
|
610
|
-
"411":
|
|
611
|
-
"412":
|
|
612
|
-
"413":
|
|
613
|
-
"414":
|
|
614
|
-
"415":
|
|
615
|
-
"416":
|
|
616
|
-
"417":
|
|
617
|
-
"418":
|
|
618
|
-
"421":
|
|
619
|
-
"422":
|
|
620
|
-
"423":
|
|
621
|
-
"424":
|
|
622
|
-
"425":
|
|
623
|
-
"426":
|
|
624
|
-
"428":
|
|
625
|
-
"429":
|
|
626
|
-
"431":
|
|
627
|
-
"451":
|
|
628
|
-
"500":
|
|
629
|
-
"501":
|
|
630
|
-
"502":
|
|
631
|
-
"503":
|
|
632
|
-
"504":
|
|
633
|
-
"505":
|
|
634
|
-
"506":
|
|
635
|
-
"507":
|
|
636
|
-
"508":
|
|
637
|
-
"509":
|
|
638
|
-
"510":
|
|
639
|
-
"511":
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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(
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
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
|
-
|
|
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(
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
1041
|
-
|
|
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 =
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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)(
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
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 =
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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`,
|
|
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(
|
|
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,
|
|
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(
|
|
1535
|
+
this.resolvedOptions = mergeRight(
|
|
1536
|
+
DEFAULT_LISTEN_OPTIONS,
|
|
1537
|
+
options
|
|
1538
|
+
);
|
|
1466
1539
|
this.interceptor.apply();
|
|
1467
|
-
(0, import_outvariant4.invariant)(
|
|
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(
|
|
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 = {
|