msw 1.3.1 → 2.0.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.
Files changed (169) hide show
  1. package/README.md +32 -29
  2. package/browser/package.json +5 -0
  3. package/cli/init.js +3 -3
  4. package/config/constants.js +1 -2
  5. package/lib/browser/index.d.ts +104 -0
  6. package/lib/browser/index.js +751 -0
  7. package/lib/browser/index.mjs +733 -0
  8. package/lib/core/GraphQLHandler-b42ca96f.d.ts +74 -0
  9. package/lib/core/HttpResponse.d.ts +2 -0
  10. package/lib/core/HttpResponse.js +94 -0
  11. package/lib/core/HttpResponse.mjs +77 -0
  12. package/lib/core/RequestHandler-1a5dbdc7.d.ts +172 -0
  13. package/lib/core/SetupApi.d.ts +26 -0
  14. package/lib/core/SetupApi.js +83 -0
  15. package/lib/core/SetupApi.mjs +63 -0
  16. package/lib/core/bypass.d.ts +16 -0
  17. package/lib/core/bypass.js +36 -0
  18. package/lib/core/bypass.mjs +16 -0
  19. package/lib/core/delay.d.ts +18 -0
  20. package/lib/core/delay.js +92 -0
  21. package/lib/core/delay.mjs +72 -0
  22. package/lib/core/graphql.d.ts +109 -0
  23. package/lib/core/graphql.js +112 -0
  24. package/lib/core/graphql.mjs +96 -0
  25. package/lib/core/handlers/GraphQLHandler.d.ts +5 -0
  26. package/lib/core/handlers/GraphQLHandler.js +145 -0
  27. package/lib/core/handlers/GraphQLHandler.mjs +130 -0
  28. package/lib/core/handlers/HttpHandler.d.ts +62 -0
  29. package/lib/core/handlers/HttpHandler.js +149 -0
  30. package/lib/core/handlers/HttpHandler.mjs +133 -0
  31. package/lib/core/handlers/RequestHandler.d.ts +2 -0
  32. package/lib/core/handlers/RequestHandler.js +180 -0
  33. package/lib/core/handlers/RequestHandler.mjs +162 -0
  34. package/lib/core/http.d.ts +26 -0
  35. package/lib/core/http.js +39 -0
  36. package/lib/core/http.mjs +22 -0
  37. package/lib/core/http.spec.d.ts +2 -0
  38. package/lib/core/http.spec.js +15 -0
  39. package/lib/core/http.spec.mjs +14 -0
  40. package/lib/core/index.d.ts +18 -0
  41. package/lib/core/index.js +49 -0
  42. package/lib/core/index.mjs +28 -0
  43. package/lib/core/passthrough.d.ts +17 -0
  44. package/lib/core/passthrough.js +32 -0
  45. package/lib/core/passthrough.mjs +12 -0
  46. package/lib/core/sharedOptions.d.ts +66 -0
  47. package/lib/core/sharedOptions.js +16 -0
  48. package/lib/core/sharedOptions.mjs +0 -0
  49. package/lib/core/typeUtils.d.ts +7 -0
  50. package/lib/core/typeUtils.js +16 -0
  51. package/lib/core/typeUtils.mjs +0 -0
  52. package/lib/core/utils/HttpResponse/decorators.d.ts +12 -0
  53. package/lib/core/utils/HttpResponse/decorators.js +80 -0
  54. package/lib/core/utils/HttpResponse/decorators.mjs +52 -0
  55. package/lib/core/utils/getResponse.d.ts +2 -0
  56. package/lib/core/utils/getResponse.js +64 -0
  57. package/lib/core/utils/getResponse.mjs +44 -0
  58. package/lib/core/utils/handleRequest.d.ts +30 -0
  59. package/lib/core/utils/handleRequest.js +102 -0
  60. package/lib/core/utils/handleRequest.mjs +82 -0
  61. package/lib/core/utils/internal/Disposable.d.ts +7 -0
  62. package/lib/core/utils/internal/Disposable.js +53 -0
  63. package/lib/core/utils/internal/Disposable.mjs +33 -0
  64. package/lib/core/utils/internal/checkGlobals.d.ts +3 -0
  65. package/lib/core/utils/internal/checkGlobals.js +33 -0
  66. package/lib/core/utils/internal/checkGlobals.mjs +13 -0
  67. package/lib/core/utils/internal/devUtils.d.ts +19 -0
  68. package/lib/core/utils/internal/devUtils.js +40 -0
  69. package/lib/core/utils/internal/devUtils.mjs +20 -0
  70. package/lib/core/utils/internal/getCallFrame.d.ts +6 -0
  71. package/lib/core/utils/internal/getCallFrame.js +40 -0
  72. package/lib/core/utils/internal/getCallFrame.mjs +20 -0
  73. package/lib/core/utils/internal/isIterable.d.ts +6 -0
  74. package/lib/core/utils/internal/isIterable.js +29 -0
  75. package/lib/core/utils/internal/isIterable.mjs +9 -0
  76. package/lib/core/utils/internal/isObject.d.ts +6 -0
  77. package/lib/core/utils/internal/isObject.js +26 -0
  78. package/lib/core/utils/internal/isObject.mjs +6 -0
  79. package/lib/core/utils/internal/isStringEqual.d.ts +6 -0
  80. package/lib/core/utils/internal/isStringEqual.js +26 -0
  81. package/lib/core/utils/internal/isStringEqual.mjs +6 -0
  82. package/lib/core/utils/internal/jsonParse.d.ts +7 -0
  83. package/lib/core/utils/internal/jsonParse.js +30 -0
  84. package/lib/core/utils/internal/jsonParse.mjs +10 -0
  85. package/lib/core/utils/internal/mergeRight.d.ts +7 -0
  86. package/lib/core/utils/internal/mergeRight.js +39 -0
  87. package/lib/core/utils/internal/mergeRight.mjs +19 -0
  88. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +5 -0
  89. package/lib/core/utils/internal/parseGraphQLRequest.js +184 -0
  90. package/lib/core/utils/internal/parseGraphQLRequest.mjs +165 -0
  91. package/lib/core/utils/internal/parseMultipartData.d.ts +10 -0
  92. package/lib/core/utils/internal/parseMultipartData.js +81 -0
  93. package/lib/core/utils/internal/parseMultipartData.mjs +61 -0
  94. package/lib/core/utils/internal/pipeEvents.d.ts +8 -0
  95. package/lib/core/utils/internal/pipeEvents.js +34 -0
  96. package/lib/core/utils/internal/pipeEvents.mjs +14 -0
  97. package/lib/core/utils/internal/requestHandlerUtils.d.ts +8 -0
  98. package/lib/core/utils/internal/requestHandlerUtils.js +36 -0
  99. package/lib/core/utils/internal/requestHandlerUtils.mjs +16 -0
  100. package/lib/core/utils/internal/toReadonlyArray.d.ts +6 -0
  101. package/lib/core/utils/internal/toReadonlyArray.js +28 -0
  102. package/lib/core/utils/internal/toReadonlyArray.mjs +8 -0
  103. package/lib/core/utils/internal/tryCatch.d.ts +3 -0
  104. package/lib/core/utils/internal/tryCatch.js +31 -0
  105. package/lib/core/utils/internal/tryCatch.mjs +11 -0
  106. package/lib/core/utils/internal/uuidv4.d.ts +3 -0
  107. package/lib/core/utils/internal/uuidv4.js +26 -0
  108. package/lib/core/utils/internal/uuidv4.mjs +6 -0
  109. package/lib/core/utils/logging/getStatusCodeColor.d.ts +11 -0
  110. package/lib/core/utils/logging/getStatusCodeColor.js +39 -0
  111. package/lib/core/utils/logging/getStatusCodeColor.mjs +19 -0
  112. package/lib/core/utils/logging/getTimestamp.d.ts +6 -0
  113. package/lib/core/utils/logging/getTimestamp.js +27 -0
  114. package/lib/core/utils/logging/getTimestamp.mjs +7 -0
  115. package/lib/core/utils/logging/serializeRequest.d.ts +12 -0
  116. package/lib/core/utils/logging/serializeRequest.js +55 -0
  117. package/lib/core/utils/logging/serializeRequest.mjs +35 -0
  118. package/lib/core/utils/logging/serializeResponse.d.ts +9 -0
  119. package/lib/core/utils/logging/serializeResponse.js +69 -0
  120. package/lib/core/utils/logging/serializeResponse.mjs +39 -0
  121. package/lib/core/utils/matching/matchRequestUrl.d.ts +19 -0
  122. package/lib/core/utils/matching/matchRequestUrl.js +50 -0
  123. package/lib/core/utils/matching/matchRequestUrl.mjs +30 -0
  124. package/lib/core/utils/matching/normalizePath.d.ts +12 -0
  125. package/lib/core/utils/matching/normalizePath.js +32 -0
  126. package/lib/core/utils/matching/normalizePath.mjs +12 -0
  127. package/lib/core/utils/request/getPublicUrlFromRequest.d.ts +7 -0
  128. package/lib/core/utils/request/getPublicUrlFromRequest.js +30 -0
  129. package/lib/core/utils/request/getPublicUrlFromRequest.mjs +10 -0
  130. package/lib/core/utils/request/getRequestCookies.d.ts +8 -0
  131. package/lib/core/utils/request/getRequestCookies.js +88 -0
  132. package/lib/core/utils/request/getRequestCookies.mjs +60 -0
  133. package/lib/core/utils/request/onUnhandledRequest.d.ts +12 -0
  134. package/lib/core/utils/request/onUnhandledRequest.js +193 -0
  135. package/lib/core/utils/request/onUnhandledRequest.mjs +165 -0
  136. package/lib/core/utils/request/readResponseCookies.d.ts +3 -0
  137. package/lib/core/utils/request/readResponseCookies.js +45 -0
  138. package/lib/core/utils/request/readResponseCookies.mjs +27 -0
  139. package/lib/core/utils/toResponseInit.d.ts +3 -0
  140. package/lib/core/utils/toResponseInit.js +30 -0
  141. package/lib/core/utils/toResponseInit.mjs +10 -0
  142. package/lib/core/utils/url/cleanUrl.d.ts +7 -0
  143. package/lib/core/utils/url/cleanUrl.js +31 -0
  144. package/lib/core/utils/url/cleanUrl.mjs +11 -0
  145. package/lib/core/utils/url/getAbsoluteUrl.d.ts +6 -0
  146. package/lib/core/utils/url/getAbsoluteUrl.js +37 -0
  147. package/lib/core/utils/url/getAbsoluteUrl.mjs +17 -0
  148. package/lib/core/utils/url/isAbsoluteUrl.d.ts +6 -0
  149. package/lib/core/utils/url/isAbsoluteUrl.js +26 -0
  150. package/lib/core/utils/url/isAbsoluteUrl.mjs +6 -0
  151. package/lib/iife/index.js +6238 -12395
  152. package/lib/mockServiceWorker.js +82 -93
  153. package/lib/native/index.d.ts +67 -7
  154. package/lib/native/index.js +74 -1500
  155. package/lib/native/index.mjs +69 -1514
  156. package/lib/node/index.d.ts +68 -9
  157. package/lib/node/index.js +77 -1508
  158. package/lib/node/index.mjs +71 -1521
  159. package/native/package.json +2 -1
  160. package/node/package.json +2 -1
  161. package/package.json +55 -25
  162. package/lib/SetupServerApi-1855d9c6.d.ts +0 -20
  163. package/lib/glossary-de6278a9.d.ts +0 -385
  164. package/lib/iife/index.js.map +0 -1
  165. package/lib/index.d.ts +0 -365
  166. package/lib/index.js +0 -2295
  167. package/lib/index.js.map +0 -1
  168. package/lib/node/index.js.map +0 -1
  169. package/lib/node/index.mjs.map +0 -1
package/lib/node/index.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,11 +15,27 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
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
- ));
24
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var __async = (__this, __arguments, generator) => {
20
+ return new Promise((resolve, reject) => {
21
+ var fulfilled = (value) => {
22
+ try {
23
+ step(generator.next(value));
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ };
28
+ var rejected = (value) => {
29
+ try {
30
+ step(generator.throw(value));
31
+ } catch (e) {
32
+ reject(e);
33
+ }
34
+ };
35
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
36
+ step((generator = generator.apply(__this, __arguments)).next());
37
+ });
38
+ };
25
39
 
26
40
  // src/node/index.ts
27
41
  var node_exports = {};
@@ -31,1552 +45,108 @@ __export(node_exports, {
31
45
  });
32
46
  module.exports = __toCommonJS(node_exports);
33
47
 
34
- // config/polyfills-node.ts
35
- var import_timers = require("timers");
36
- var setTimeout = import_timers.setTimeout;
37
-
38
48
  // src/node/SetupServerApi.ts
39
- var import_chalk = __toESM(require("chalk"));
40
- var import_outvariant4 = require("outvariant");
41
- var import_interceptors2 = require("@mswjs/interceptors");
42
-
43
- // src/SetupApi.ts
44
- var import_outvariant2 = require("outvariant");
45
- var import_strict_event_emitter = require("strict-event-emitter");
46
-
47
- // src/utils/internal/devUtils.ts
49
+ var import_node_events = require("events");
48
50
  var import_outvariant = require("outvariant");
49
- var LIBRARY_PREFIX = "[MSW]";
50
- function formatMessage(message, ...positionals) {
51
- const interpolatedMessage = (0, import_outvariant.format)(message, ...positionals);
52
- return `${LIBRARY_PREFIX} ${interpolatedMessage}`;
53
- }
54
- function warn(message, ...positionals) {
55
- console.warn(formatMessage(message, ...positionals));
56
- }
57
- function error(message, ...positionals) {
58
- console.error(formatMessage(message, ...positionals));
59
- }
60
- var devUtils = {
61
- formatMessage,
62
- warn,
63
- error
64
- };
65
-
66
- // src/utils/internal/pipeEvents.ts
67
- function pipeEvents(source, destination) {
68
- const rawEmit = source.emit;
69
- if (rawEmit._isPiped) {
70
- return;
71
- }
72
- source.emit = function(event, ...data2) {
73
- destination.emit(event, ...data2);
74
- return rawEmit.call(this, event, ...data2);
75
- };
76
- source.emit._isPiped = true;
77
- }
78
-
79
- // src/utils/internal/toReadonlyArray.ts
80
- function toReadonlyArray(source) {
81
- const clone = [...source];
82
- Object.freeze(clone);
83
- return clone;
84
- }
85
-
86
- // src/SetupApi.ts
87
- var SetupApi = class {
88
- constructor(...initialHandlers) {
89
- this.validateHandlers(...initialHandlers);
90
- this.initialHandlers = toReadonlyArray(initialHandlers);
91
- this.currentHandlers = [...initialHandlers];
92
- this.emitter = new import_strict_event_emitter.Emitter();
93
- this.publicEmitter = new import_strict_event_emitter.Emitter();
94
- pipeEvents(this.emitter, this.publicEmitter);
95
- this.events = this.createLifeCycleEvents();
96
- }
97
- validateHandlers(...handlers) {
98
- for (const handler of handlers) {
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
- );
106
- }
107
- }
108
- dispose() {
109
- this.emitter.removeAllListeners();
110
- this.publicEmitter.removeAllListeners();
111
- }
112
- use(...runtimeHandlers) {
113
- this.currentHandlers.unshift(...runtimeHandlers);
114
- }
115
- restoreHandlers() {
116
- this.currentHandlers.forEach((handler) => {
117
- handler.markAsSkipped(false);
118
- });
119
- }
120
- resetHandlers(...nextHandlers) {
121
- this.currentHandlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
122
- }
123
- listHandlers() {
124
- return toReadonlyArray(this.currentHandlers);
125
- }
126
- createLifeCycleEvents() {
127
- return {
128
- on: (...args) => {
129
- return this.publicEmitter.on(...args);
130
- },
131
- removeListener: (...args) => {
132
- return this.publicEmitter.removeListener(...args);
133
- },
134
- removeAllListeners: (...args) => {
135
- return this.publicEmitter.removeAllListeners(...args);
136
- }
137
- };
138
- }
139
- };
140
-
141
- // src/utils/internal/isObject.ts
142
- function isObject(value) {
143
- return value != null && typeof value === "object" && !Array.isArray(value);
144
- }
145
-
146
- // src/utils/internal/mergeRight.ts
147
- function mergeRight(left, right) {
148
- return Object.entries(right).reduce((result, [key, rightValue]) => {
149
- const leftValue = result[key];
150
- if (Array.isArray(leftValue) && Array.isArray(rightValue)) {
151
- result[key] = leftValue.concat(rightValue);
152
- return result;
153
- }
154
- if (isObject(leftValue) && isObject(rightValue)) {
155
- result[key] = mergeRight(leftValue, rightValue);
156
- return result;
157
- }
158
- result[key] = rightValue;
159
- return result;
160
- }, Object.assign({}, left));
161
- }
162
-
163
- // src/utils/request/MockedRequest.ts
164
- var cookieUtils2 = __toESM(require("cookie"));
165
- var import_cookies = require("@mswjs/cookies");
166
51
  var import_interceptors = require("@mswjs/interceptors");
167
- var import_bufferUtils = require("@mswjs/interceptors/lib/utils/bufferUtils.js");
168
- var import_headers_polyfill2 = require("headers-polyfill");
169
-
170
- // src/utils/request/getRequestCookies.ts
171
- var cookieUtils = __toESM(require("cookie"));
172
- function getAllCookies() {
173
- return cookieUtils.parse(document.cookie);
174
- }
175
- function getRequestCookies(request) {
176
- if (typeof document === "undefined" || typeof location === "undefined") {
177
- return {};
178
- }
179
- switch (request.credentials) {
180
- case "same-origin": {
181
- return location.origin === request.url.origin ? getAllCookies() : {};
182
- }
183
- case "include": {
184
- return getAllCookies();
185
- }
186
- default: {
187
- return {};
188
- }
189
- }
190
- }
191
-
192
- // src/utils/internal/jsonParse.ts
193
- function jsonParse(value) {
194
- try {
195
- return JSON.parse(value);
196
- } catch (error2) {
197
- return void 0;
198
- }
199
- }
200
-
201
- // src/utils/internal/parseMultipartData.ts
202
- var import_headers_polyfill = require("headers-polyfill");
203
- function parseContentHeaders(headersString) {
204
- var _a, _b;
205
- const headers = (0, import_headers_polyfill.stringToHeaders)(headersString);
206
- const contentType = headers.get("content-type") || "text/plain";
207
- const disposition = headers.get("content-disposition");
208
- if (!disposition) {
209
- throw new Error('"Content-Disposition" header is required.');
210
- }
211
- const directives = disposition.split(";").reduce((acc, chunk) => {
212
- const [name2, ...rest] = chunk.trim().split("=");
213
- acc[name2] = rest.join("=");
214
- return acc;
215
- }, {});
216
- const name = (_a = directives.name) == null ? void 0 : _a.slice(1, -1);
217
- const filename = (_b = directives.filename) == null ? void 0 : _b.slice(1, -1);
218
- return {
219
- name,
220
- filename,
221
- contentType
222
- };
223
- }
224
- function parseMultipartData(data2, headers) {
225
- const contentType = headers == null ? void 0 : headers.get("content-type");
226
- if (!contentType) {
227
- return void 0;
228
- }
229
- const [, ...directives] = contentType.split(/; */);
230
- const boundary = directives.filter((d) => d.startsWith("boundary=")).map((s) => s.replace(/^boundary=/, ""))[0];
231
- if (!boundary) {
232
- return void 0;
233
- }
234
- const boundaryRegExp = new RegExp(`--+${boundary}`);
235
- const fields = data2.split(boundaryRegExp).filter((chunk) => chunk.startsWith("\r\n") && chunk.endsWith("\r\n")).map((chunk) => chunk.trimStart().replace(/\r\n$/, ""));
236
- if (!fields.length) {
237
- return void 0;
238
- }
239
- const parsedBody = {};
240
- try {
241
- for (const field2 of fields) {
242
- const [contentHeaders, ...rest] = field2.split("\r\n\r\n");
243
- const contentBody = rest.join("\r\n\r\n");
244
- const { contentType: contentType2, filename, name } = parseContentHeaders(contentHeaders);
245
- const value = filename === void 0 ? contentBody : new File([contentBody], filename, { type: contentType2 });
246
- const parsedValue = parsedBody[name];
247
- if (parsedValue === void 0) {
248
- parsedBody[name] = value;
249
- } else if (Array.isArray(parsedValue)) {
250
- parsedBody[name] = [...parsedValue, value];
251
- } else {
252
- parsedBody[name] = [parsedValue, value];
253
- }
254
- }
255
- return parsedBody;
256
- } catch (error2) {
257
- return void 0;
258
- }
259
- }
260
-
261
- // src/utils/request/parseBody.ts
262
- function parseBody(body2, headers) {
263
- var _a;
264
- if (!body2) {
265
- return body2;
266
- }
267
- const contentType = ((_a = headers == null ? void 0 : headers.get("content-type")) == null ? void 0 : _a.toLowerCase()) || "";
268
- const hasMultipartContent = contentType.startsWith("multipart/form-data");
269
- if (hasMultipartContent && typeof body2 !== "object") {
270
- return parseMultipartData(body2.toString(), headers) || body2;
271
- }
272
- const hasJsonContent = contentType.includes("json");
273
- if (hasJsonContent && typeof body2 !== "object") {
274
- return jsonParse(body2.toString()) || body2;
275
- }
276
- return body2;
277
- }
278
-
279
- // src/utils/internal/isStringEqual.ts
280
- function isStringEqual(actual, expected) {
281
- return actual.toLowerCase() === expected.toLowerCase();
282
- }
283
-
284
- // src/utils/request/MockedRequest.ts
285
- var MockedRequest = class extends import_interceptors.IsomorphicRequest {
286
- constructor(url, init = {}) {
287
- super(url, init);
288
- if (init.id) {
289
- this.id = init.id;
290
- }
291
- this.cache = init.cache || "default";
292
- this.destination = init.destination || "";
293
- this.integrity = init.integrity || "";
294
- this.keepalive = init.keepalive || false;
295
- this.mode = init.mode || "cors";
296
- this.priority = init.priority || "auto";
297
- this.redirect = init.redirect || "follow";
298
- this.referrer = init.referrer || "";
299
- this.referrerPolicy = init.referrerPolicy || "no-referrer";
300
- this.cookies = init.cookies || this.getCookies();
301
- }
302
- get body() {
303
- const text2 = (0, import_bufferUtils.decodeBuffer)(this["_body"]);
304
- const body2 = parseBody(text2, this.headers);
305
- if (isStringEqual(this.method, "GET") && body2 === "") {
306
- return void 0;
307
- }
308
- return body2;
309
- }
310
- passthrough() {
311
- return {
312
- status: 101,
313
- statusText: "Continue",
314
- headers: new import_headers_polyfill2.Headers(),
315
- body: null,
316
- passthrough: true,
317
- once: false
318
- };
319
- }
320
- getCookies() {
321
- var _a;
322
- const requestCookiesString = this.headers.get("cookie");
323
- const ownCookies = requestCookiesString ? cookieUtils2.parse(requestCookiesString) : {};
324
- import_cookies.store.hydrate();
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 }]) => {
328
- return Object.assign(cookies, { [name.trim()]: value });
329
- }, {});
330
- const cookiesFromDocument = getRequestCookies(this);
331
- const forwardedCookies = {
332
- ...cookiesFromDocument,
333
- ...cookiesFromStore
334
- };
335
- for (const [name, value] of Object.entries(forwardedCookies)) {
336
- this.headers.append("cookie", `${name}=${value}`);
337
- }
338
- return {
339
- ...forwardedCookies,
340
- ...ownCookies
341
- };
342
- }
343
- };
344
-
345
- // src/utils/handleRequest.ts
346
- var import_until = require("@open-draft/until");
347
-
348
- // src/utils/getResponse.ts
349
- var getResponse = async (request, handlers, resolutionContext) => {
350
- const relevantHandlers = handlers.filter((handler) => {
351
- return handler.test(request, resolutionContext);
352
- });
353
- if (relevantHandlers.length === 0) {
354
- return {
355
- handler: void 0,
356
- response: void 0
357
- };
358
- }
359
- const result = await relevantHandlers.reduce(async (executionResult, handler) => {
360
- const previousResults = await executionResult;
361
- if (!!(previousResults == null ? void 0 : previousResults.response)) {
362
- return executionResult;
363
- }
364
- const result2 = await handler.run(request, resolutionContext);
365
- if (result2 === null || result2.handler.shouldSkip) {
366
- return null;
367
- }
368
- if (!result2.response) {
369
- return {
370
- request: result2.request,
371
- handler: result2.handler,
372
- response: void 0,
373
- parsedResult: result2.parsedResult
374
- };
375
- }
376
- if (result2.response.once) {
377
- handler.markAsSkipped(true);
378
- }
379
- return result2;
380
- }, Promise.resolve(null));
381
- if (!result) {
382
- return {
383
- handler: void 0,
384
- response: void 0
385
- };
386
- }
387
- return {
388
- handler: result.handler,
389
- publicRequest: result.request,
390
- parsedRequest: result.parsedResult,
391
- response: result.response
392
- };
393
- };
52
+ var import_SetupApi = require("../core/SetupApi.js");
53
+ var import_mergeRight = require("../core/utils/internal/mergeRight.js");
54
+ var import_handleRequest = require("../core/utils/handleRequest.js");
55
+ var import_devUtils = require("../core/utils/internal/devUtils.js");
394
56
 
395
- // src/utils/request/onUnhandledRequest.ts
396
- var import_js_levenshtein = __toESM(require("js-levenshtein"));
397
-
398
- // src/utils/internal/parseGraphQLRequest.ts
399
- var import_graphql = require("graphql");
400
-
401
- // src/utils/request/getPublicUrlFromRequest.ts
402
- var getPublicUrlFromRequest = (request) => {
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;
407
- };
408
-
409
- // src/utils/internal/parseGraphQLRequest.ts
410
- function parseDocumentNode(node) {
411
- var _a;
412
- const operationDef = node.definitions.find((def) => {
413
- return def.kind === "OperationDefinition";
414
- });
415
- return {
416
- operationType: operationDef == null ? void 0 : operationDef.operation,
417
- operationName: (_a = operationDef == null ? void 0 : operationDef.name) == null ? void 0 : _a.value
418
- };
419
- }
420
- function parseQuery(query) {
421
- try {
422
- const ast = (0, import_graphql.parse)(query);
423
- return parseDocumentNode(ast);
424
- } catch (error2) {
425
- return error2;
426
- }
427
- }
428
- function extractMultipartVariables(variables, map, files) {
429
- const operations = { variables };
430
- for (const [key, pathArray] of Object.entries(map)) {
431
- if (!(key in files)) {
432
- throw new Error(`Given files do not have a key '${key}' .`);
433
- }
434
- for (const dotPath of pathArray) {
435
- const [lastPath, ...reversedPaths] = dotPath.split(".").reverse();
436
- const paths = reversedPaths.reverse();
437
- let target = operations;
438
- for (const path of paths) {
439
- if (!(path in target)) {
440
- throw new Error(`Property '${paths}' is not in operations.`);
441
- }
442
- target = target[path];
443
- }
444
- target[lastPath] = files[key];
445
- }
446
- }
447
- return operations.variables;
448
- }
449
- function getGraphQLInput(request) {
450
- var _a, _b;
451
- switch (request.method) {
452
- case "GET": {
453
- const query = request.url.searchParams.get("query");
454
- const variables = request.url.searchParams.get("variables") || "";
455
- return {
456
- query,
457
- variables: jsonParse(variables)
458
- };
459
- }
460
- case "POST": {
461
- if ((_a = request.body) == null ? void 0 : _a.query) {
462
- const { query, variables } = request.body;
463
- return {
464
- query,
465
- variables
466
- };
467
- }
468
- if ((_b = request.body) == null ? void 0 : _b.operations) {
469
- const { operations, map, ...files } = request.body;
470
- const parsedOperations = jsonParse(
471
- operations
472
- ) || {};
473
- if (!parsedOperations.query) {
474
- return null;
475
- }
476
- const parsedMap = jsonParse(map || "") || {};
477
- const variables = parsedOperations.variables ? extractMultipartVariables(
478
- parsedOperations.variables,
479
- parsedMap,
480
- files
481
- ) : {};
482
- return {
483
- query: parsedOperations.query,
484
- variables
485
- };
486
- }
487
- }
488
- default:
489
- return null;
490
- }
491
- }
492
- function parseGraphQLRequest(request) {
493
- const input = getGraphQLInput(request);
494
- if (!input || !input.query) {
495
- return void 0;
496
- }
497
- const { query, variables } = input;
498
- const parsedResult = parseQuery(query);
499
- if (parsedResult instanceof Error) {
500
- const requestPublicUrl = getPublicUrlFromRequest(request);
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
- );
509
- }
510
- return {
511
- operationType: parsedResult.operationType,
512
- operationName: parsedResult.operationName,
513
- variables
514
- };
515
- }
516
-
517
- // node_modules/.pnpm/statuses@2.0.1/node_modules/statuses/codes.json
518
- var codes_default = {
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"
582
- };
583
-
584
- // src/context/status.ts
585
- var status = (statusCode, statusText) => {
586
- return (res) => {
587
- res.status = statusCode;
588
- res.statusText = statusText || codes_default[String(statusCode)];
589
- return res;
590
- };
591
- };
592
-
593
- // src/context/set.ts
594
- var import_headers_polyfill3 = require("headers-polyfill");
595
- function set(...args) {
596
- return (res) => {
597
- const [name, value] = args;
598
- if (typeof name === "string") {
599
- res.headers.append(name, value);
600
- } else {
601
- const headers = (0, import_headers_polyfill3.objectToHeaders)(name);
602
- headers.forEach((value2, name2) => {
603
- res.headers.append(name2, value2);
604
- });
605
- }
606
- return res;
607
- };
608
- }
609
-
610
- // src/context/cookie.ts
611
- var cookieUtils3 = __toESM(require("cookie"));
612
- var cookie = (name, value, options) => {
613
- return (res) => {
614
- const serializedCookie = cookieUtils3.serialize(name, value, options);
615
- res.headers.append("Set-Cookie", serializedCookie);
616
- if (typeof document !== "undefined") {
617
- document.cookie = serializedCookie;
618
- }
619
- return res;
620
- };
621
- };
622
-
623
- // src/context/body.ts
624
- var body = (value) => {
625
- return (res) => {
626
- res.body = value;
627
- return res;
628
- };
629
- };
630
-
631
- // src/context/json.ts
632
- var json = (body2) => {
633
- return (res) => {
634
- res.headers.set("Content-Type", "application/json");
635
- res.body = JSON.stringify(body2);
636
- return res;
637
- };
638
- };
639
-
640
- // src/context/data.ts
641
- var data = (payload) => {
642
- return (res) => {
643
- const prevBody = jsonParse(res.body) || {};
644
- const nextBody = mergeRight(prevBody, { data: payload });
645
- return json(nextBody)(res);
646
- };
647
- };
648
-
649
- // src/context/extensions.ts
650
- var extensions = (payload) => {
651
- return (res) => {
652
- const prevBody = jsonParse(res.body) || {};
653
- const nextBody = mergeRight(prevBody, { extensions: payload });
654
- return json(nextBody)(res);
655
- };
656
- };
657
-
658
- // src/context/delay.ts
659
- var import_is_node_process = require("is-node-process");
660
- var SET_TIMEOUT_MAX_ALLOWED_INT = 2147483647;
661
- var MIN_SERVER_RESPONSE_TIME = 100;
662
- var MAX_SERVER_RESPONSE_TIME = 400;
663
- var NODE_SERVER_RESPONSE_TIME = 5;
664
- var getRandomServerResponseTime = () => {
665
- if ((0, import_is_node_process.isNodeProcess)()) {
666
- return NODE_SERVER_RESPONSE_TIME;
667
- }
668
- return Math.floor(
669
- Math.random() * (MAX_SERVER_RESPONSE_TIME - MIN_SERVER_RESPONSE_TIME) + MIN_SERVER_RESPONSE_TIME
670
- );
671
- };
672
- var delay = (durationOrMode) => {
673
- return (res) => {
674
- let delayTime;
675
- if (typeof durationOrMode === "string") {
676
- switch (durationOrMode) {
677
- case "infinite": {
678
- delayTime = SET_TIMEOUT_MAX_ALLOWED_INT;
679
- break;
680
- }
681
- case "real": {
682
- delayTime = getRandomServerResponseTime();
683
- break;
684
- }
685
- default: {
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
- );
689
- }
690
- }
691
- } else if (typeof durationOrMode === "undefined") {
692
- delayTime = getRandomServerResponseTime();
693
- } else {
694
- if (durationOrMode > SET_TIMEOUT_MAX_ALLOWED_INT) {
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
- );
698
- }
699
- delayTime = durationOrMode;
700
- }
701
- res.delay = delayTime;
702
- return res;
703
- };
704
- };
705
-
706
- // src/context/errors.ts
707
- var errors = (errorsList) => {
708
- return (res) => {
709
- if (errorsList == null) {
710
- return res;
711
- }
712
- const prevBody = jsonParse(res.body) || {};
713
- const nextBody = mergeRight(prevBody, { errors: errorsList });
714
- return json(nextBody)(res);
715
- };
716
- };
717
-
718
- // src/context/fetch.ts
719
- var import_is_node_process2 = require("is-node-process");
720
- var import_headers_polyfill4 = require("headers-polyfill");
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;
724
- var augmentRequestInit = (requestInit) => {
725
- const headers = new import_headers_polyfill4.Headers(requestInit.headers);
726
- headers.set("x-msw-bypass", "true");
727
- return {
728
- ...requestInit,
729
- headers: headers.all()
730
- };
731
- };
732
- var createFetchRequestParameters = (input) => {
733
- const { body: body2, method } = input;
734
- const requestParameters = {
735
- ...input,
736
- body: void 0
737
- };
738
- if (["GET", "HEAD"].includes(method)) {
739
- return requestParameters;
740
- }
741
- if (typeof body2 === "object" || typeof body2 === "number" || typeof body2 === "boolean") {
742
- requestParameters.body = JSON.stringify(body2);
743
- } else {
744
- requestParameters.body = body2;
745
- }
746
- return requestParameters;
747
- };
748
- var fetch = (input, requestInit = {}) => {
749
- if (typeof input === "string") {
750
- return useFetch(input, augmentRequestInit(requestInit));
751
- }
752
- const requestParameters = createFetchRequestParameters(input);
753
- const derivedRequestInit = augmentRequestInit(requestParameters);
754
- return useFetch(input.url.href, derivedRequestInit);
755
- };
756
-
757
- // src/context/text.ts
758
- var text = (body2) => {
759
- return (res) => {
760
- res.headers.set("Content-Type", "text/plain");
761
- res.body = body2;
762
- return res;
763
- };
764
- };
765
-
766
- // src/context/xml.ts
767
- var xml = (body2) => {
768
- return (res) => {
769
- res.headers.set("Content-Type", "text/xml");
770
- res.body = body2;
771
- return res;
772
- };
773
- };
774
-
775
- // src/utils/logging/getStatusCodeColor.ts
776
- function getStatusCodeColor(status2) {
777
- if (status2 < 300) {
778
- return "#69AB32" /* Success */;
779
- }
780
- if (status2 < 400) {
781
- return "#F0BB4B" /* Warning */;
782
- }
783
- return "#E95F5D" /* Danger */;
784
- }
785
-
786
- // src/utils/logging/getTimestamp.ts
787
- function getTimestamp() {
788
- const now = new Date();
789
- return [now.getHours(), now.getMinutes(), now.getSeconds()].map(String).map((chunk) => chunk.slice(0, 2)).map((chunk) => chunk.padStart(2, "0")).join(":");
790
- }
791
-
792
- // src/utils/logging/prepareRequest.ts
793
- function prepareRequest(request) {
794
- return {
795
- ...request,
796
- body: request.body,
797
- headers: request.headers.all()
798
- };
799
- }
800
-
801
- // src/utils/logging/prepareResponse.ts
802
- var import_headers_polyfill5 = require("headers-polyfill");
803
- function prepareResponse(res) {
804
- const responseHeaders = (0, import_headers_polyfill5.objectToHeaders)(res.headers);
805
- const parsedBody = parseBody(res.body, responseHeaders);
806
- return {
807
- ...res,
808
- body: parsedBody
809
- };
810
- }
811
-
812
- // src/utils/matching/matchRequestUrl.ts
813
- var import_path_to_regexp = require("path-to-regexp");
814
- var import_getCleanUrl = require("@mswjs/interceptors/lib/utils/getCleanUrl.js");
815
-
816
- // src/utils/url/cleanUrl.ts
817
- var REDUNDANT_CHARACTERS_EXP = /[\?|#].*$/g;
818
- function getSearchParams(path) {
819
- return new URL(`/${path}`, "http://localhost").searchParams;
820
- }
821
- function cleanUrl(path) {
822
- return path.replace(REDUNDANT_CHARACTERS_EXP, "");
823
- }
824
-
825
- // src/utils/url/isAbsoluteUrl.ts
826
- function isAbsoluteUrl(url) {
827
- return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
828
- }
829
-
830
- // src/utils/url/getAbsoluteUrl.ts
831
- function getAbsoluteUrl(path, baseUrl) {
832
- if (isAbsoluteUrl(path)) {
833
- return path;
834
- }
835
- if (path.startsWith("*")) {
836
- return path;
837
- }
838
- const origin = baseUrl || typeof document !== "undefined" && document.baseURI;
839
- return origin ? decodeURI(new URL(encodeURI(path), origin).href) : path;
840
- }
841
-
842
- // src/utils/matching/normalizePath.ts
843
- function normalizePath(path, baseUrl) {
844
- if (path instanceof RegExp) {
845
- return path;
846
- }
847
- const maybeAbsoluteUrl = getAbsoluteUrl(path, baseUrl);
848
- return cleanUrl(maybeAbsoluteUrl);
849
- }
850
-
851
- // src/utils/matching/matchRequestUrl.ts
852
- function coercePath(path) {
853
- return path.replace(
854
- /([:a-zA-Z_-]*)(\*{1,2})+/g,
855
- (_, parameterName, wildcard) => {
856
- const expression = "(.*)";
857
- if (!parameterName) {
858
- return expression;
859
- }
860
- return parameterName.startsWith(":") ? `${parameterName}${wildcard}` : `${parameterName}${expression}`;
861
- }
862
- ).replace(/([^\/])(:)(?=\d+)/, "$1\\$2").replace(/^([^\/]+)(:)(?=\/\/)/, "$1\\$2");
863
- }
864
- function matchRequestUrl(url, path, baseUrl) {
865
- const normalizedPath = normalizePath(path, baseUrl);
866
- const cleanPath = typeof normalizedPath === "string" ? coercePath(normalizedPath) : normalizedPath;
867
- const cleanUrl2 = (0, import_getCleanUrl.getCleanUrl)(url);
868
- const result = (0, import_path_to_regexp.match)(cleanPath, { decode: decodeURIComponent })(cleanUrl2);
869
- const params = result && result.params || {};
870
- return {
871
- matches: result !== false,
872
- params
873
- };
874
- }
875
-
876
- // src/handlers/RequestHandler.ts
877
- var import_headers_polyfill7 = require("headers-polyfill");
878
-
879
- // src/response.ts
880
- var import_headers_polyfill6 = require("headers-polyfill");
881
-
882
- // src/utils/internal/compose.ts
883
- function compose(...fns) {
884
- return (...args) => {
885
- return fns.reduceRight((leftFn, rightFn) => {
886
- return leftFn instanceof Promise ? Promise.resolve(leftFn).then(rightFn) : rightFn(leftFn);
887
- }, args[0]);
888
- };
889
- }
890
-
891
- // src/utils/NetworkError.ts
892
- var NetworkError = class extends Error {
893
- constructor(message) {
894
- super(message);
895
- this.name = "NetworkError";
896
- }
897
- };
898
-
899
- // src/response.ts
900
- var defaultResponse = {
901
- status: 200,
902
- statusText: "OK",
903
- body: null,
904
- delay: 0,
905
- once: false,
906
- passthrough: false
907
- };
908
- var defaultResponseTransformers = [];
909
- function createResponseComposition(responseOverrides, defaultTransformers = defaultResponseTransformers) {
910
- return async (...transformers) => {
911
- const initialResponse = Object.assign(
912
- {},
913
- defaultResponse,
914
- {
915
- headers: new import_headers_polyfill6.Headers({
916
- "x-powered-by": "msw"
917
- })
918
- },
919
- responseOverrides
920
- );
921
- const resolvedTransformers = [
922
- ...defaultTransformers,
923
- ...transformers
924
- ].filter(Boolean);
925
- const resolvedResponse = resolvedTransformers.length > 0 ? compose(...resolvedTransformers)(initialResponse) : initialResponse;
926
- return resolvedResponse;
927
- };
928
- }
929
- var response = Object.assign(createResponseComposition(), {
930
- once: createResponseComposition({ once: true }),
931
- networkError(message) {
932
- throw new NetworkError(message);
933
- }
934
- });
935
-
936
- // src/utils/internal/getCallFrame.ts
937
- var SOURCE_FRAME = /[\/\\]msw[\/\\]src[\/\\](.+)/;
938
- var BUILD_FRAME = /(node_modules)?[\/\\]lib[\/\\](umd|esm|iief|cjs)[\/\\]|^[^\/\\]*$/;
939
- function getCallFrame(error2) {
940
- const stack = error2.stack;
941
- if (!stack) {
942
- return;
943
- }
944
- const frames = stack.split("\n").slice(1);
945
- const declarationFrame = frames.find((frame) => {
946
- return !(SOURCE_FRAME.test(frame) || BUILD_FRAME.test(frame));
947
- });
948
- if (!declarationFrame) {
949
- return;
950
- }
951
- const declarationPath = declarationFrame.replace(/\s*at [^()]*\(([^)]+)\)/, "$1").replace(/^@/, "");
952
- return declarationPath;
953
- }
954
-
955
- // src/utils/internal/isIterable.ts
956
- function isIterable(fn) {
957
- if (!fn) {
958
- return false;
959
- }
960
- return typeof fn[Symbol.iterator] == "function";
961
- }
962
-
963
- // src/handlers/RequestHandler.ts
964
- var defaultContext = {
965
- status,
966
- set,
967
- delay,
968
- fetch
969
- };
970
- var RequestHandler = class {
971
- constructor(options) {
972
- this.shouldSkip = false;
973
- this.ctx = options.ctx || defaultContext;
974
- this.resolver = options.resolver;
975
- const callFrame = getCallFrame(new Error());
976
- this.info = {
977
- ...options.info,
978
- callFrame
979
- };
980
- }
981
- parse(_request, _resolutionContext) {
982
- return null;
983
- }
984
- test(request, resolutionContext) {
985
- return this.predicate(
986
- request,
987
- this.parse(request, resolutionContext),
988
- resolutionContext
989
- );
990
- }
991
- getPublicRequest(request, _parsedResult) {
992
- return request;
993
- }
994
- markAsSkipped(shouldSkip = true) {
995
- this.shouldSkip = shouldSkip;
996
- }
997
- async run(request, resolutionContext) {
998
- if (this.shouldSkip) {
999
- return null;
1000
- }
1001
- const parsedResult = this.parse(request, resolutionContext);
1002
- const shouldIntercept = this.predicate(
1003
- request,
1004
- parsedResult,
1005
- resolutionContext
1006
- );
1007
- if (!shouldIntercept) {
1008
- return null;
1009
- }
1010
- const publicRequest = this.getPublicRequest(request, parsedResult);
1011
- const executeResolver = this.wrapResolver(this.resolver);
1012
- const mockedResponse = await executeResolver(
1013
- publicRequest,
1014
- response,
1015
- this.ctx
1016
- );
1017
- return this.createExecutionResult(
1018
- parsedResult,
1019
- publicRequest,
1020
- mockedResponse
1021
- );
1022
- }
1023
- wrapResolver(resolver) {
1024
- return async (req, res, ctx) => {
1025
- const result = this.resolverGenerator || await resolver(req, res, ctx);
1026
- if (isIterable(result)) {
1027
- const { value, done } = result[Symbol.iterator]().next();
1028
- const nextResponse = await value;
1029
- if (!nextResponse && done) {
1030
- return this.resolverGeneratorResult;
1031
- }
1032
- if (!this.resolverGenerator) {
1033
- this.resolverGenerator = result;
1034
- }
1035
- this.resolverGeneratorResult = nextResponse;
1036
- return nextResponse;
1037
- }
1038
- return result;
1039
- };
1040
- }
1041
- createExecutionResult(parsedResult, request, response2) {
1042
- return {
1043
- handler: this,
1044
- parsedResult: parsedResult || null,
1045
- request,
1046
- response: response2 || null
1047
- };
1048
- }
1049
- };
1050
-
1051
- // src/handlers/RestHandler.ts
1052
- var restContext = {
1053
- ...defaultContext,
1054
- cookie,
1055
- body,
1056
- text,
1057
- json,
1058
- xml
1059
- };
1060
- var RestRequest = class extends MockedRequest {
1061
- constructor(request, params) {
1062
- super(request.url, {
1063
- ...request,
1064
- body: request["_body"]
1065
- });
1066
- this.params = params;
1067
- this.id = request.id;
1068
- }
1069
- };
1070
- var RestHandler = class extends RequestHandler {
1071
- constructor(method, path, resolver) {
1072
- super({
1073
- info: {
1074
- header: `${method} ${path}`,
1075
- path,
1076
- method
1077
- },
1078
- ctx: restContext,
1079
- resolver
1080
- });
1081
- this.checkRedundantQueryParameters();
1082
- }
1083
- checkRedundantQueryParameters() {
1084
- const { method, path } = this.info;
1085
- if (path instanceof RegExp) {
1086
- return;
1087
- }
1088
- const url = cleanUrl(path);
1089
- if (url === path) {
1090
- return;
1091
- }
1092
- const searchParams = getSearchParams(path);
1093
- const queryParams = [];
1094
- searchParams.forEach((_, paramName) => {
1095
- queryParams.push(paramName);
1096
- });
1097
- devUtils.warn(
1098
- `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".`
1099
- );
1100
- }
1101
- parse(request, resolutionContext) {
1102
- return matchRequestUrl(
1103
- request.url,
1104
- this.info.path,
1105
- resolutionContext == null ? void 0 : resolutionContext.baseUrl
1106
- );
1107
- }
1108
- getPublicRequest(request, parsedResult) {
1109
- return new RestRequest(request, parsedResult.params || {});
1110
- }
1111
- predicate(request, parsedResult) {
1112
- const matchesMethod = this.info.method instanceof RegExp ? this.info.method.test(request.method) : isStringEqual(this.info.method, request.method);
1113
- return matchesMethod && parsedResult.matches;
1114
- }
1115
- log(request, response2) {
1116
- const publicUrl = getPublicUrlFromRequest(request);
1117
- const loggedRequest = prepareRequest(request);
1118
- const loggedResponse = prepareResponse(response2);
1119
- const statusColor = getStatusCodeColor(response2.status);
1120
- console.groupCollapsed(
1121
- devUtils.formatMessage("%s %s %s (%c%s%c)"),
1122
- getTimestamp(),
1123
- request.method,
1124
- publicUrl,
1125
- `color:${statusColor}`,
1126
- `${response2.status} ${response2.statusText}`,
1127
- "color:inherit"
1128
- );
1129
- console.log("Request", loggedRequest);
1130
- console.log("Handler:", this);
1131
- console.log("Response", loggedResponse);
1132
- console.groupEnd();
1133
- }
1134
- };
1135
-
1136
- // src/context/field.ts
1137
- var import_outvariant3 = require("outvariant");
1138
- var field = (fieldName, fieldValue) => {
1139
- return (res) => {
1140
- validateFieldName(fieldName);
1141
- const prevBody = jsonParse(res.body) || {};
1142
- const nextBody = mergeRight(prevBody, { [fieldName]: fieldValue });
1143
- return json(nextBody)(res);
1144
- };
1145
- };
1146
- function validateFieldName(fieldName) {
1147
- (0, import_outvariant3.invariant)(
1148
- fieldName.trim() !== "",
1149
- devUtils.formatMessage(
1150
- "Failed to set a custom field on a GraphQL response: field name cannot be empty."
1151
- )
1152
- );
1153
- (0, import_outvariant3.invariant)(
1154
- fieldName !== "data",
1155
- devUtils.formatMessage(
1156
- 'Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.data()" instead?',
1157
- fieldName
1158
- )
1159
- );
1160
- (0, import_outvariant3.invariant)(
1161
- fieldName !== "errors",
1162
- devUtils.formatMessage(
1163
- 'Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.errors()" instead?',
1164
- fieldName
1165
- )
1166
- );
1167
- (0, import_outvariant3.invariant)(
1168
- fieldName !== "extensions",
1169
- devUtils.formatMessage(
1170
- 'Failed to set a custom "%s" field on a mocked GraphQL response: forbidden field name. Did you mean to call "ctx.extensions()" instead?',
1171
- fieldName
1172
- )
1173
- );
1174
- }
1175
-
1176
- // src/utils/internal/tryCatch.ts
1177
- function tryCatch(fn, onException) {
1178
- try {
1179
- const result = fn();
1180
- return result;
1181
- } catch (error2) {
1182
- onException == null ? void 0 : onException(error2);
1183
- }
1184
- }
1185
-
1186
- // src/handlers/GraphQLHandler.ts
1187
- var graphqlContext = {
1188
- ...defaultContext,
1189
- data,
1190
- extensions,
1191
- errors,
1192
- cookie,
1193
- field
1194
- };
1195
- function isDocumentNode(value) {
1196
- if (value == null) {
1197
- return false;
1198
- }
1199
- return typeof value === "object" && "kind" in value && "definitions" in value;
1200
- }
1201
- var GraphQLRequest = class extends MockedRequest {
1202
- constructor(request, variables, operationName) {
1203
- super(request.url, {
1204
- ...request,
1205
- body: request["_body"]
1206
- });
1207
- this.variables = variables;
1208
- this.operationName = operationName;
1209
- }
1210
- };
1211
- var GraphQLHandler = class extends RequestHandler {
1212
- constructor(operationType, operationName, endpoint, resolver) {
1213
- let resolvedOperationName = operationName;
1214
- if (isDocumentNode(operationName)) {
1215
- const parsedNode = parseDocumentNode(operationName);
1216
- if (parsedNode.operationType !== operationType) {
1217
- throw new Error(
1218
- `Failed to create a GraphQL handler: provided a DocumentNode with a mismatched operation type (expected "${operationType}", but got "${parsedNode.operationType}").`
1219
- );
1220
- }
1221
- if (!parsedNode.operationName) {
1222
- throw new Error(
1223
- `Failed to create a GraphQL handler: provided a DocumentNode with no operation name.`
1224
- );
1225
- }
1226
- resolvedOperationName = parsedNode.operationName;
1227
- }
1228
- const header = operationType === "all" ? `${operationType} (origin: ${endpoint.toString()})` : `${operationType} ${resolvedOperationName} (origin: ${endpoint.toString()})`;
1229
- super({
1230
- info: {
1231
- header,
1232
- operationType,
1233
- operationName: resolvedOperationName
1234
- },
1235
- ctx: graphqlContext,
1236
- resolver
1237
- });
1238
- this.endpoint = endpoint;
1239
- }
1240
- parse(request) {
1241
- return tryCatch(
1242
- () => parseGraphQLRequest(request),
1243
- (error2) => console.error(error2.message)
1244
- );
1245
- }
1246
- getPublicRequest(request, parsedResult) {
1247
- var _a, _b;
1248
- return new GraphQLRequest(
1249
- request,
1250
- (_a = parsedResult == null ? void 0 : parsedResult.variables) != null ? _a : {},
1251
- (_b = parsedResult == null ? void 0 : parsedResult.operationName) != null ? _b : ""
1252
- );
1253
- }
1254
- predicate(request, parsedResult) {
1255
- if (!parsedResult) {
1256
- return false;
1257
- }
1258
- if (!parsedResult.operationName && this.info.operationType !== "all") {
1259
- const publicUrl = getPublicUrlFromRequest(request);
1260
- devUtils.warn(`Failed to intercept a GraphQL request at "${request.method} ${publicUrl}": anonymous GraphQL operations are not supported.
1261
-
1262
- 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 `);
1263
- return false;
1264
- }
1265
- const hasMatchingUrl = matchRequestUrl(request.url, this.endpoint);
1266
- const hasMatchingOperationType = this.info.operationType === "all" || parsedResult.operationType === this.info.operationType;
1267
- const hasMatchingOperationName = this.info.operationName instanceof RegExp ? this.info.operationName.test(parsedResult.operationName || "") : parsedResult.operationName === this.info.operationName;
1268
- return hasMatchingUrl.matches && hasMatchingOperationType && hasMatchingOperationName;
1269
- }
1270
- log(request, response2, parsedRequest) {
1271
- const loggedRequest = prepareRequest(request);
1272
- const loggedResponse = prepareResponse(response2);
1273
- const statusColor = getStatusCodeColor(response2.status);
1274
- 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}`;
1275
- console.groupCollapsed(
1276
- devUtils.formatMessage("%s %s (%c%s%c)"),
1277
- getTimestamp(),
1278
- `${requestInfo}`,
1279
- `color:${statusColor}`,
1280
- `${response2.status} ${response2.statusText}`,
1281
- "color:inherit"
1282
- );
1283
- console.log("Request:", loggedRequest);
1284
- console.log("Handler:", this);
1285
- console.log("Response:", loggedResponse);
1286
- console.groupEnd();
1287
- }
1288
- };
1289
-
1290
- // src/utils/request/onUnhandledRequest.ts
1291
- var MAX_MATCH_SCORE = 3;
1292
- var MAX_SUGGESTION_COUNT = 4;
1293
- var TYPE_MATCH_DELTA = 0.5;
1294
- function groupHandlersByType(handlers) {
1295
- return handlers.reduce(
1296
- (groups, handler) => {
1297
- if (handler instanceof RestHandler) {
1298
- groups.rest.push(handler);
1299
- }
1300
- if (handler instanceof GraphQLHandler) {
1301
- groups.graphql.push(handler);
1302
- }
1303
- return groups;
1304
- },
1305
- {
1306
- rest: [],
1307
- graphql: []
1308
- }
1309
- );
1310
- }
1311
- function getRestHandlerScore() {
1312
- return (request, handler) => {
1313
- const { path, method } = handler.info;
1314
- if (path instanceof RegExp || method instanceof RegExp) {
1315
- return Infinity;
1316
- }
1317
- const hasSameMethod = isStringEqual(request.method, method);
1318
- const methodScoreDelta = hasSameMethod ? TYPE_MATCH_DELTA : 0;
1319
- const requestPublicUrl = getPublicUrlFromRequest(request);
1320
- const score = (0, import_js_levenshtein.default)(requestPublicUrl, path);
1321
- return score - methodScoreDelta;
1322
- };
1323
- }
1324
- function getGraphQLHandlerScore(parsedQuery) {
1325
- return (_, handler) => {
1326
- if (typeof parsedQuery.operationName === "undefined") {
1327
- return Infinity;
1328
- }
1329
- const { operationType, operationName } = handler.info;
1330
- if (typeof operationName !== "string") {
1331
- return Infinity;
1332
- }
1333
- const hasSameOperationType = parsedQuery.operationType === operationType;
1334
- const operationTypeScoreDelta = hasSameOperationType ? TYPE_MATCH_DELTA : 0;
1335
- const score = (0, import_js_levenshtein.default)(parsedQuery.operationName, operationName);
1336
- return score - operationTypeScoreDelta;
1337
- };
1338
- }
1339
- function getSuggestedHandler(request, handlers, getScore) {
1340
- const suggestedHandlers = handlers.reduce((suggestions, handler) => {
1341
- const score = getScore(request, handler);
1342
- return suggestions.concat([[score, handler]]);
1343
- }, []).sort(([leftScore], [rightScore]) => leftScore - rightScore).filter(([score]) => score <= MAX_MATCH_SCORE).slice(0, MAX_SUGGESTION_COUNT).map(([, handler]) => handler);
1344
- return suggestedHandlers;
1345
- }
1346
- function getSuggestedHandlersMessage(handlers) {
1347
- if (handlers.length > 1) {
1348
- return `Did you mean to request one of the following resources instead?
1349
-
1350
- ${handlers.map((handler) => ` \u2022 ${handler.info.header}`).join("\n")}`;
1351
- }
1352
- return `Did you mean to request "${handlers[0].info.header}" instead?`;
1353
- }
1354
- function onUnhandledRequest(request, handlers, strategy = "warn") {
1355
- const parsedGraphQLQuery = tryCatch(() => parseGraphQLRequest(request));
1356
- function generateHandlerSuggestion() {
1357
- const handlerGroups = groupHandlersByType(handlers);
1358
- const relevantHandlers = parsedGraphQLQuery ? handlerGroups.graphql : handlerGroups.rest;
1359
- const suggestedHandlers = getSuggestedHandler(
1360
- request,
1361
- relevantHandlers,
1362
- parsedGraphQLQuery ? getGraphQLHandlerScore(parsedGraphQLQuery) : getRestHandlerScore()
1363
- );
1364
- return suggestedHandlers.length > 0 ? getSuggestedHandlersMessage(suggestedHandlers) : "";
1365
- }
1366
- function generateUnhandledRequestMessage() {
1367
- const publicUrl = getPublicUrlFromRequest(request);
1368
- const requestHeader = parsedGraphQLQuery ? `${parsedGraphQLQuery.operationType} ${parsedGraphQLQuery.operationName} (${request.method} ${publicUrl})` : `${request.method} ${publicUrl}`;
1369
- const handlerSuggestion = generateHandlerSuggestion();
1370
- const messageTemplate = [
1371
- `captured a request without a matching request handler:`,
1372
- ` \u2022 ${requestHeader}`,
1373
- handlerSuggestion,
1374
- `If you still wish to intercept this unhandled request, please create a request handler for it.
1375
- Read more: https://mswjs.io/docs/getting-started/mocks`
1376
- ].filter(Boolean);
1377
- return messageTemplate.join("\n\n");
1378
- }
1379
- function applyStrategy(strategy2) {
1380
- const message = generateUnhandledRequestMessage();
1381
- switch (strategy2) {
1382
- case "error": {
1383
- devUtils.error("Error: %s", message);
1384
- throw new Error(
1385
- devUtils.formatMessage(
1386
- 'Cannot bypass a request when using the "error" strategy for the "onUnhandledRequest" option.'
1387
- )
1388
- );
1389
- }
1390
- case "warn": {
1391
- devUtils.warn("Warning: %s", message);
1392
- break;
1393
- }
1394
- case "bypass":
1395
- break;
1396
- default:
1397
- throw new Error(
1398
- devUtils.formatMessage(
1399
- '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.',
1400
- strategy2
1401
- )
1402
- );
1403
- }
1404
- }
1405
- if (typeof strategy === "function") {
1406
- strategy(request, {
1407
- warning: applyStrategy.bind(null, "warn"),
1408
- error: applyStrategy.bind(null, "error")
1409
- });
1410
- return;
1411
- }
1412
- applyStrategy(strategy);
1413
- }
1414
-
1415
- // src/utils/request/readResponseCookies.ts
1416
- var import_cookies2 = require("@mswjs/cookies");
1417
- function readResponseCookies(request, response2) {
1418
- import_cookies2.store.add({ ...request, url: request.url.toString() }, response2);
1419
- import_cookies2.store.persist();
1420
- }
1421
-
1422
- // src/utils/handleRequest.ts
1423
- async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
1424
- var _a, _b, _c, _d, _e, _f;
1425
- emitter.emit("request:start", request);
1426
- if (request.headers.get("x-msw-bypass") === "true") {
1427
- emitter.emit("request:end", request);
1428
- (_a = handleRequestOptions == null ? void 0 : handleRequestOptions.onPassthroughResponse) == null ? void 0 : _a.call(handleRequestOptions, request);
1429
- return;
1430
- }
1431
- const [lookupError, lookupResult] = await (0, import_until.until)(() => {
1432
- return getResponse(
1433
- request,
1434
- handlers,
1435
- handleRequestOptions == null ? void 0 : handleRequestOptions.resolutionContext
1436
- );
1437
- });
1438
- if (lookupError) {
1439
- emitter.emit("unhandledException", lookupError, request);
1440
- throw lookupError;
1441
- }
1442
- const { handler, response: response2 } = lookupResult;
1443
- if (!handler) {
1444
- onUnhandledRequest(request, handlers, options.onUnhandledRequest);
1445
- emitter.emit("request:unhandled", request);
1446
- emitter.emit("request:end", request);
1447
- (_b = handleRequestOptions == null ? void 0 : handleRequestOptions.onPassthroughResponse) == null ? void 0 : _b.call(handleRequestOptions, request);
1448
- return;
1449
- }
1450
- if (!response2) {
1451
- devUtils.warn(
1452
- `Expected response resolver to return a mocked response Object, but got %s. The original response is going to be used instead.
1453
-
1454
- \u2022 %s
1455
- %s`,
1456
- response2,
1457
- handler.info.header,
1458
- handler.info.callFrame
1459
- );
1460
- emitter.emit("request:end", request);
1461
- (_c = handleRequestOptions == null ? void 0 : handleRequestOptions.onPassthroughResponse) == null ? void 0 : _c.call(handleRequestOptions, request);
1462
- return;
1463
- }
1464
- if (response2.passthrough) {
1465
- emitter.emit("request:end", request);
1466
- (_d = handleRequestOptions == null ? void 0 : handleRequestOptions.onPassthroughResponse) == null ? void 0 : _d.call(handleRequestOptions, request);
1467
- return;
1468
- }
1469
- readResponseCookies(request, response2);
1470
- emitter.emit("request:match", request);
1471
- const requiredLookupResult = lookupResult;
1472
- const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
1473
- (_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(
1474
- handleRequestOptions,
1475
- transformedResponse,
1476
- requiredLookupResult
1477
- );
1478
- emitter.emit("request:end", request);
1479
- return transformedResponse;
57
+ // src/node/utils/isNodeException.ts
58
+ function isNodeException(error) {
59
+ return error instanceof Error && "code" in error;
1480
60
  }
1481
61
 
1482
62
  // src/node/SetupServerApi.ts
1483
- var { bold } = import_chalk.default;
1484
63
  var DEFAULT_LISTEN_OPTIONS = {
1485
64
  onUnhandledRequest: "warn"
1486
65
  };
1487
- var SetupServerApi = class extends SetupApi {
66
+ var SetupServerApi = class extends import_SetupApi.SetupApi {
1488
67
  constructor(interceptors, ...handlers) {
1489
68
  super(...handlers);
1490
- this.interceptor = new import_interceptors2.BatchInterceptor({
69
+ this.interceptor = new import_interceptors.BatchInterceptor({
1491
70
  name: "setup-server",
1492
71
  interceptors: interceptors.map((Interceptor2) => new Interceptor2())
1493
72
  });
1494
73
  this.resolvedOptions = {};
1495
74
  this.init();
1496
75
  }
76
+ /**
77
+ * Subscribe to all requests that are using the interceptor object
78
+ */
1497
79
  init() {
1498
- this.interceptor.on("request", async (request) => {
1499
- const mockedRequest = new MockedRequest(request.url, {
1500
- ...request,
1501
- body: await request.arrayBuffer()
1502
- });
1503
- const response2 = await handleRequest(
1504
- mockedRequest,
1505
- this.currentHandlers,
1506
- this.resolvedOptions,
1507
- this.emitter,
1508
- {
1509
- transformResponse(response3) {
1510
- return {
1511
- status: response3.status,
1512
- statusText: response3.statusText,
1513
- headers: response3.headers.all(),
1514
- body: response3.body,
1515
- delay: response3.delay
1516
- };
80
+ this.interceptor.on("request", (_0) => __async(this, [_0], function* ({ request, requestId }) {
81
+ if (typeof import_node_events.setMaxListeners === "function") {
82
+ try {
83
+ (0, import_node_events.setMaxListeners)(
84
+ Math.max(import_node_events.defaultMaxListeners, this.currentHandlers.length),
85
+ request.signal
86
+ );
87
+ } catch (error) {
88
+ if (!(isNodeException(error) && error.code === "ERR_INVALID_ARG_TYPE")) {
89
+ throw error;
1517
90
  }
1518
91
  }
92
+ }
93
+ const response = yield (0, import_handleRequest.handleRequest)(
94
+ request,
95
+ requestId,
96
+ this.currentHandlers,
97
+ this.resolvedOptions,
98
+ this.emitter
1519
99
  );
1520
- if (response2) {
1521
- if (response2.delay) {
1522
- await new Promise((resolve) => {
1523
- setTimeout(resolve, response2.delay);
1524
- });
1525
- }
1526
- request.respondWith(response2);
100
+ if (response) {
101
+ request.respondWith(response);
1527
102
  }
1528
103
  return;
1529
- });
1530
- this.interceptor.on("response", (request, response2) => {
1531
- if (!request.id) {
1532
- return;
1533
- }
1534
- if (response2.headers.get("x-powered-by") === "msw") {
1535
- this.emitter.emit("response:mocked", response2, request.id);
1536
- } else {
1537
- this.emitter.emit("response:bypass", response2, request.id);
104
+ }));
105
+ this.interceptor.on(
106
+ "response",
107
+ ({ response, isMockedResponse, request, requestId }) => {
108
+ this.emitter.emit(
109
+ isMockedResponse ? "response:mocked" : "response:bypass",
110
+ {
111
+ response,
112
+ request,
113
+ requestId
114
+ }
115
+ );
1538
116
  }
1539
- });
117
+ );
1540
118
  }
1541
119
  listen(options = {}) {
1542
- this.resolvedOptions = mergeRight(
120
+ this.resolvedOptions = (0, import_mergeRight.mergeRight)(
1543
121
  DEFAULT_LISTEN_OPTIONS,
1544
122
  options
1545
123
  );
1546
124
  this.interceptor.apply();
1547
- (0, import_outvariant4.invariant)(
1548
- [import_interceptors2.InterceptorReadyState.APPLYING, import_interceptors2.InterceptorReadyState.APPLIED].includes(
125
+ this.subscriptions.push(() => {
126
+ this.interceptor.dispose();
127
+ });
128
+ (0, import_outvariant.invariant)(
129
+ [import_interceptors.InterceptorReadyState.APPLYING, import_interceptors.InterceptorReadyState.APPLIED].includes(
1549
130
  this.interceptor.readyState
1550
131
  ),
1551
- devUtils.formatMessage(
132
+ import_devUtils.devUtils.formatMessage(
1552
133
  'Failed to start "setupServer": the interceptor failed to apply. This is likely an issue with the library and you should report it at "%s".'
1553
134
  ),
1554
135
  "https://github.com/mswjs/msw/issues/new/choose"
1555
136
  );
1556
137
  }
1557
- printHandlers() {
1558
- const handlers = this.listHandlers();
1559
- handlers.forEach((handler) => {
1560
- const { header, callFrame } = handler.info;
1561
- const pragma = handler.info.hasOwnProperty("operationType") ? "[graphql]" : "[rest]";
1562
- console.log(`${bold(`${pragma} ${header}`)}
1563
- Declaration: ${callFrame}
1564
- `);
1565
- });
1566
- }
1567
138
  close() {
1568
- super.dispose();
1569
- this.interceptor.dispose();
139
+ this.dispose();
1570
140
  }
1571
141
  };
1572
142
 
1573
143
  // src/node/setupServer.ts
1574
- var import_ClientRequest = require("@mswjs/interceptors/lib/interceptors/ClientRequest/index.js");
1575
- var import_XMLHttpRequest = require("@mswjs/interceptors/lib/interceptors/XMLHttpRequest/index.js");
1576
- var import_fetch2 = require("@mswjs/interceptors/lib/interceptors/fetch/index.js");
144
+ var import_ClientRequest = require("@mswjs/interceptors/ClientRequest");
145
+ var import_XMLHttpRequest = require("@mswjs/interceptors/XMLHttpRequest");
146
+ var import_fetch = require("@mswjs/interceptors/fetch");
1577
147
  var setupServer = (...handlers) => {
1578
148
  return new SetupServerApi(
1579
- [import_ClientRequest.ClientRequestInterceptor, import_XMLHttpRequest.XMLHttpRequestInterceptor, import_fetch2.FetchInterceptor],
149
+ [import_ClientRequest.ClientRequestInterceptor, import_XMLHttpRequest.XMLHttpRequestInterceptor, import_fetch.FetchInterceptor],
1580
150
  ...handlers
1581
151
  );
1582
152
  };
@@ -1585,4 +155,3 @@ var setupServer = (...handlers) => {
1585
155
  SetupServerApi,
1586
156
  setupServer
1587
157
  });
1588
- //# sourceMappingURL=index.js.map