msw 1.3.2 → 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 +6203 -12360
  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 +53 -23
  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
@@ -2,13 +2,14 @@
2
2
  /* tslint:disable */
3
3
 
4
4
  /**
5
- * Mock Service Worker (1.3.2).
5
+ * Mock Service Worker (2.0.0).
6
6
  * @see https://github.com/mswjs/msw
7
7
  * - Please do NOT modify this file.
8
8
  * - Please do NOT serve this file on production.
9
9
  */
10
10
 
11
- const INTEGRITY_CHECKSUM = '3d6b9f06410d179a7f7404d4bf4c3c70'
11
+ const INTEGRITY_CHECKSUM = '0877fcdc026242810f5bfde0d7178db4'
12
+ const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
12
13
  const activeClientIds = new Set()
13
14
 
14
15
  self.addEventListener('install', function () {
@@ -86,12 +87,6 @@ self.addEventListener('message', async function (event) {
86
87
 
87
88
  self.addEventListener('fetch', function (event) {
88
89
  const { request } = event
89
- const accept = request.headers.get('accept') || ''
90
-
91
- // Bypass server-sent events.
92
- if (accept.includes('text/event-stream')) {
93
- return
94
- }
95
90
 
96
91
  // Bypass navigation requests.
97
92
  if (request.mode === 'navigate') {
@@ -112,29 +107,8 @@ self.addEventListener('fetch', function (event) {
112
107
  }
113
108
 
114
109
  // Generate unique request ID.
115
- const requestId = Math.random().toString(16).slice(2)
116
-
117
- event.respondWith(
118
- handleRequest(event, requestId).catch((error) => {
119
- if (error.name === 'NetworkError') {
120
- console.warn(
121
- '[MSW] Successfully emulated a network error for the "%s %s" request.',
122
- request.method,
123
- request.url,
124
- )
125
- return
126
- }
127
-
128
- // At this point, any exception indicates an issue with the original request/response.
129
- console.error(
130
- `\
131
- [MSW] Caught an exception from the "%s %s" request (%s). This is probably not a problem with Mock Service Worker. There is likely an additional logging output above.`,
132
- request.method,
133
- request.url,
134
- `${error.name}: ${error.message}`,
135
- )
136
- }),
137
- )
110
+ const requestId = crypto.randomUUID()
111
+ event.respondWith(handleRequest(event, requestId))
138
112
  })
139
113
 
140
114
  async function handleRequest(event, requestId) {
@@ -146,21 +120,29 @@ async function handleRequest(event, requestId) {
146
120
  // this message will pend indefinitely.
147
121
  if (client && activeClientIds.has(client.id)) {
148
122
  ;(async function () {
149
- const clonedResponse = response.clone()
150
- sendToClient(client, {
151
- type: 'RESPONSE',
152
- payload: {
153
- requestId,
154
- type: clonedResponse.type,
155
- ok: clonedResponse.ok,
156
- status: clonedResponse.status,
157
- statusText: clonedResponse.statusText,
158
- body:
159
- clonedResponse.body === null ? null : await clonedResponse.text(),
160
- headers: Object.fromEntries(clonedResponse.headers.entries()),
161
- redirected: clonedResponse.redirected,
123
+ const responseClone = response.clone()
124
+ // When performing original requests, response body will
125
+ // always be a ReadableStream, even for 204 responses.
126
+ // But when creating a new Response instance on the client,
127
+ // the body for a 204 response must be null.
128
+ const responseBody = response.status === 204 ? null : responseClone.body
129
+
130
+ sendToClient(
131
+ client,
132
+ {
133
+ type: 'RESPONSE',
134
+ payload: {
135
+ requestId,
136
+ isMockedResponse: IS_MOCKED_RESPONSE in response,
137
+ type: responseClone.type,
138
+ status: responseClone.status,
139
+ statusText: responseClone.statusText,
140
+ body: responseBody,
141
+ headers: Object.fromEntries(responseClone.headers.entries()),
142
+ },
162
143
  },
163
- })
144
+ [responseBody],
145
+ )
164
146
  })()
165
147
  }
166
148
 
@@ -196,20 +178,20 @@ async function resolveMainClient(event) {
196
178
 
197
179
  async function getResponse(event, client, requestId) {
198
180
  const { request } = event
199
- const clonedRequest = request.clone()
181
+
182
+ // Clone the request because it might've been already used
183
+ // (i.e. its body has been read and sent to the client).
184
+ const requestClone = request.clone()
200
185
 
201
186
  function passthrough() {
202
- // Clone the request because it might've been already used
203
- // (i.e. its body has been read and sent to the client).
204
- const headers = Object.fromEntries(clonedRequest.headers.entries())
187
+ const headers = Object.fromEntries(requestClone.headers.entries())
205
188
 
206
- // Remove MSW-specific request headers so the bypassed requests
207
- // comply with the server's CORS preflight check.
208
- // Operate with the headers as an object because request "Headers"
209
- // are immutable.
210
- delete headers['x-msw-bypass']
189
+ // Remove internal MSW request header so the passthrough request
190
+ // complies with any potential CORS preflight checks on the server.
191
+ // Some servers forbid unknown request headers.
192
+ delete headers['x-msw-intention']
211
193
 
212
- return fetch(clonedRequest, { headers })
194
+ return fetch(requestClone, { headers })
213
195
  }
214
196
 
215
197
  // Bypass mocking when the client is not active.
@@ -227,31 +209,36 @@ async function getResponse(event, client, requestId) {
227
209
 
228
210
  // Bypass requests with the explicit bypass header.
229
211
  // Such requests can be issued by "ctx.fetch()".
230
- if (request.headers.get('x-msw-bypass') === 'true') {
212
+ const mswIntention = request.headers.get('x-msw-intention')
213
+ if (['bypass', 'passthrough'].includes(mswIntention)) {
231
214
  return passthrough()
232
215
  }
233
216
 
234
217
  // Notify the client that a request has been intercepted.
235
- const clientMessage = await sendToClient(client, {
236
- type: 'REQUEST',
237
- payload: {
238
- id: requestId,
239
- url: request.url,
240
- method: request.method,
241
- headers: Object.fromEntries(request.headers.entries()),
242
- cache: request.cache,
243
- mode: request.mode,
244
- credentials: request.credentials,
245
- destination: request.destination,
246
- integrity: request.integrity,
247
- redirect: request.redirect,
248
- referrer: request.referrer,
249
- referrerPolicy: request.referrerPolicy,
250
- body: await request.text(),
251
- bodyUsed: request.bodyUsed,
252
- keepalive: request.keepalive,
218
+ const requestBuffer = await request.arrayBuffer()
219
+ const clientMessage = await sendToClient(
220
+ client,
221
+ {
222
+ type: 'REQUEST',
223
+ payload: {
224
+ id: requestId,
225
+ url: request.url,
226
+ mode: request.mode,
227
+ method: request.method,
228
+ headers: Object.fromEntries(request.headers.entries()),
229
+ cache: request.cache,
230
+ credentials: request.credentials,
231
+ destination: request.destination,
232
+ integrity: request.integrity,
233
+ redirect: request.redirect,
234
+ referrer: request.referrer,
235
+ referrerPolicy: request.referrerPolicy,
236
+ body: requestBuffer,
237
+ keepalive: request.keepalive,
238
+ },
253
239
  },
254
- })
240
+ [requestBuffer],
241
+ )
255
242
 
256
243
  switch (clientMessage.type) {
257
244
  case 'MOCK_RESPONSE': {
@@ -261,21 +248,12 @@ async function getResponse(event, client, requestId) {
261
248
  case 'MOCK_NOT_FOUND': {
262
249
  return passthrough()
263
250
  }
264
-
265
- case 'NETWORK_ERROR': {
266
- const { name, message } = clientMessage.data
267
- const networkError = new Error(message)
268
- networkError.name = name
269
-
270
- // Rejecting a "respondWith" promise emulates a network error.
271
- throw networkError
272
- }
273
251
  }
274
252
 
275
253
  return passthrough()
276
254
  }
277
255
 
278
- function sendToClient(client, message) {
256
+ function sendToClient(client, message, transferrables = []) {
279
257
  return new Promise((resolve, reject) => {
280
258
  const channel = new MessageChannel()
281
259
 
@@ -287,17 +265,28 @@ function sendToClient(client, message) {
287
265
  resolve(event.data)
288
266
  }
289
267
 
290
- client.postMessage(message, [channel.port2])
268
+ client.postMessage(
269
+ message,
270
+ [channel.port2].concat(transferrables.filter(Boolean)),
271
+ )
291
272
  })
292
273
  }
293
274
 
294
- function sleep(timeMs) {
295
- return new Promise((resolve) => {
296
- setTimeout(resolve, timeMs)
275
+ async function respondWithMock(response) {
276
+ // Setting response status code to 0 is a no-op.
277
+ // However, when responding with a "Response.error()", the produced Response
278
+ // instance will have status code set to 0. Since it's not possible to create
279
+ // a Response instance with status code 0, handle that use-case separately.
280
+ if (response.status === 0) {
281
+ return Response.error()
282
+ }
283
+
284
+ const mockedResponse = new Response(response.body, response)
285
+
286
+ Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, {
287
+ value: true,
288
+ enumerable: true,
297
289
  })
298
- }
299
290
 
300
- async function respondWithMock(response) {
301
- await sleep(response.delay)
302
- return new Response(response.body, response)
291
+ return mockedResponse
303
292
  }
@@ -1,14 +1,74 @@
1
- import { c as RequestHandler } from '../glossary-de6278a9.js';
2
- import { a as SetupServerApi } from '../SetupServerApi-1855d9c6.js';
3
- import 'strict-event-emitter';
4
- import 'type-fest';
5
- import '@mswjs/interceptors';
6
- import 'headers-polyfill';
1
+ import { RequestHandler, RequestHandlerDefaultInfo } from "../core/handlers/RequestHandler";
2
+ import { BatchInterceptor, Interceptor, HttpRequestEventMap } from '@mswjs/interceptors';
3
+ import { SetupApi } from "../core/SetupApi";
4
+ import { SharedOptions, LifeCycleEventEmitter, LifeCycleEventsMap } from "../core/sharedOptions";
5
+ import { PartialDeep } from 'type-fest';
6
+
7
+ interface SetupServer {
8
+ /**
9
+ * Starts requests interception based on the previously provided request handlers.
10
+ *
11
+ * @see {@link https://mswjs.io/docs/api/setup-server/listen `server.listen()` API reference}
12
+ */
13
+ listen(options?: PartialDeep<SharedOptions>): void;
14
+ /**
15
+ * Stops requests interception by restoring all augmented modules.
16
+ *
17
+ * @see {@link https://mswjs.io/docs/api/setup-server/close `server.close()` API reference}
18
+ */
19
+ close(): void;
20
+ /**
21
+ * Prepends given request handlers to the list of existing handlers.
22
+ *
23
+ * @see {@link https://mswjs.io/docs/api/setup-server/use `server.use()` API reference}
24
+ */
25
+ use(...handlers: Array<RequestHandler>): void;
26
+ /**
27
+ * Marks all request handlers that respond using `res.once()` as unused.
28
+ *
29
+ * @see {@link https://mswjs.io/docs/api/setup-server/restore-handlers `server.restore-handlers()` API reference}
30
+ */
31
+ restoreHandlers(): void;
32
+ /**
33
+ * Resets request handlers to the initial list given to the `setupServer` call, or to the explicit next request handlers list, if given.
34
+ *
35
+ * @see {@link https://mswjs.io/docs/api/setup-server/reset-handlers `server.reset-handlers()` API reference}
36
+ */
37
+ resetHandlers(...nextHandlers: Array<RequestHandler>): void;
38
+ /**
39
+ * Returns a readonly list of currently active request handlers.
40
+ *
41
+ * @see {@link https://mswjs.io/docs/api/setup-server/list-handlers `server.listHandlers()` API reference}
42
+ */
43
+ listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>;
44
+ /**
45
+ * Life-cycle events.
46
+ * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling.
47
+ *
48
+ * @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference}
49
+ */
50
+ events: LifeCycleEventEmitter<LifeCycleEventsMap>;
51
+ }
52
+
53
+ declare class SetupServerApi extends SetupApi<LifeCycleEventsMap> implements SetupServer {
54
+ protected readonly interceptor: BatchInterceptor<Array<Interceptor<HttpRequestEventMap>>, HttpRequestEventMap>;
55
+ private resolvedOptions;
56
+ constructor(interceptors: Array<{
57
+ new (): Interceptor<HttpRequestEventMap>;
58
+ }>, ...handlers: Array<RequestHandler>);
59
+ /**
60
+ * Subscribe to all requests that are using the interceptor object
61
+ */
62
+ private init;
63
+ listen(options?: Partial<SharedOptions>): void;
64
+ close(): void;
65
+ }
7
66
 
8
67
  /**
9
68
  * Sets up a requests interception in React Native with the given request handlers.
10
69
  * @param {RequestHandler[]} handlers List of request handlers.
11
- * @see {@link https://mswjs.io/docs/api/setup-server `setupServer`}
70
+ *
71
+ * @see {@link https://mswjs.io/docs/api/setup-server `setupServer()` API reference}
12
72
  */
13
73
  declare function setupServer(...handlers: Array<RequestHandler>): SetupServerApi;
14
74