msw 0.42.1 → 0.43.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/README.md +10 -1
- package/lib/iife/index.js +73 -33
- package/lib/iife/index.js.map +1 -1
- package/lib/index.js +71 -31
- package/lib/index.js.map +1 -1
- package/lib/mockServiceWorker.js +162 -133
- package/lib/native/index.js +16 -16
- package/lib/native/index.mjs +16 -16
- package/lib/node/index.js +16 -16
- package/lib/node/index.js.map +1 -1
- package/lib/node/index.mjs +16 -16
- package/lib/node/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/mockServiceWorker.js
CHANGED
|
@@ -2,22 +2,21 @@
|
|
|
2
2
|
/* tslint:disable */
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Mock Service Worker (0.
|
|
5
|
+
* Mock Service Worker (0.43.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 = '
|
|
12
|
-
const bypassHeaderName = 'x-msw-bypass'
|
|
11
|
+
const INTEGRITY_CHECKSUM = 'c9450df6e4dc5e45740c3b0b640727a2'
|
|
13
12
|
const activeClientIds = new Set()
|
|
14
13
|
|
|
15
14
|
self.addEventListener('install', function () {
|
|
16
|
-
|
|
15
|
+
self.skipWaiting()
|
|
17
16
|
})
|
|
18
17
|
|
|
19
|
-
self.addEventListener('activate',
|
|
20
|
-
|
|
18
|
+
self.addEventListener('activate', function (event) {
|
|
19
|
+
event.waitUntil(self.clients.claim())
|
|
21
20
|
})
|
|
22
21
|
|
|
23
22
|
self.addEventListener('message', async function (event) {
|
|
@@ -33,7 +32,9 @@ self.addEventListener('message', async function (event) {
|
|
|
33
32
|
return
|
|
34
33
|
}
|
|
35
34
|
|
|
36
|
-
const allClients = await self.clients.matchAll(
|
|
35
|
+
const allClients = await self.clients.matchAll({
|
|
36
|
+
type: 'window',
|
|
37
|
+
})
|
|
37
38
|
|
|
38
39
|
switch (event.data) {
|
|
39
40
|
case 'KEEPALIVE_REQUEST': {
|
|
@@ -83,30 +84,58 @@ self.addEventListener('message', async function (event) {
|
|
|
83
84
|
}
|
|
84
85
|
})
|
|
85
86
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// communicate with during the response resolving phase.
|
|
90
|
-
async function resolveMainClient(event) {
|
|
91
|
-
const client = await self.clients.get(event.clientId)
|
|
87
|
+
self.addEventListener('fetch', function (event) {
|
|
88
|
+
const { request } = event
|
|
89
|
+
const accept = request.headers.get('accept') || ''
|
|
92
90
|
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
// Bypass server-sent events.
|
|
92
|
+
if (accept.includes('text/event-stream')) {
|
|
93
|
+
return
|
|
95
94
|
}
|
|
96
95
|
|
|
97
|
-
|
|
96
|
+
// Bypass navigation requests.
|
|
97
|
+
if (request.mode === 'navigate') {
|
|
98
|
+
return
|
|
99
|
+
}
|
|
98
100
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
101
|
+
// Opening the DevTools triggers the "only-if-cached" request
|
|
102
|
+
// that cannot be handled by the worker. Bypass such requests.
|
|
103
|
+
if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
|
|
104
|
+
return
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Bypass all requests when there are no active clients.
|
|
108
|
+
// Prevents the self-unregistered worked from handling requests
|
|
109
|
+
// after it's been deleted (still remains active until the next reload).
|
|
110
|
+
if (activeClientIds.size === 0) {
|
|
111
|
+
return
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// 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
|
+
)
|
|
138
|
+
})
|
|
110
139
|
|
|
111
140
|
async function handleRequest(event, requestId) {
|
|
112
141
|
const client = await resolveMainClient(event)
|
|
@@ -128,7 +157,7 @@ async function handleRequest(event, requestId) {
|
|
|
128
157
|
statusText: clonedResponse.statusText,
|
|
129
158
|
body:
|
|
130
159
|
clonedResponse.body === null ? null : await clonedResponse.text(),
|
|
131
|
-
headers:
|
|
160
|
+
headers: Object.fromEntries(clonedResponse.headers.entries()),
|
|
132
161
|
redirected: clonedResponse.redirected,
|
|
133
162
|
},
|
|
134
163
|
})
|
|
@@ -138,14 +167,54 @@ async function handleRequest(event, requestId) {
|
|
|
138
167
|
return response
|
|
139
168
|
}
|
|
140
169
|
|
|
170
|
+
// Resolve the main client for the given event.
|
|
171
|
+
// Client that issues a request doesn't necessarily equal the client
|
|
172
|
+
// that registered the worker. It's with the latter the worker should
|
|
173
|
+
// communicate with during the response resolving phase.
|
|
174
|
+
async function resolveMainClient(event) {
|
|
175
|
+
const client = await self.clients.get(event.clientId)
|
|
176
|
+
|
|
177
|
+
if (client.frameType === 'top-level') {
|
|
178
|
+
return client
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const allClients = await self.clients.matchAll({
|
|
182
|
+
type: 'window',
|
|
183
|
+
})
|
|
184
|
+
|
|
185
|
+
return allClients
|
|
186
|
+
.filter((client) => {
|
|
187
|
+
// Get only those clients that are currently visible.
|
|
188
|
+
return client.visibilityState === 'visible'
|
|
189
|
+
})
|
|
190
|
+
.find((client) => {
|
|
191
|
+
// Find the client ID that's recorded in the
|
|
192
|
+
// set of clients that have registered the worker.
|
|
193
|
+
return activeClientIds.has(client.id)
|
|
194
|
+
})
|
|
195
|
+
}
|
|
196
|
+
|
|
141
197
|
async function getResponse(event, client, requestId) {
|
|
142
198
|
const { request } = event
|
|
143
|
-
const
|
|
144
|
-
|
|
199
|
+
const clonedRequest = request.clone()
|
|
200
|
+
|
|
201
|
+
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 cilent).
|
|
204
|
+
const headers = Object.fromEntries(clonedRequest.headers.entries())
|
|
145
205
|
|
|
146
|
-
|
|
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']
|
|
211
|
+
|
|
212
|
+
return fetch(clonedRequest, { headers })
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Bypass mocking when the client is not active.
|
|
147
216
|
if (!client) {
|
|
148
|
-
return
|
|
217
|
+
return passthrough()
|
|
149
218
|
}
|
|
150
219
|
|
|
151
220
|
// Bypass initial page load requests (i.e. static assets).
|
|
@@ -153,34 +222,30 @@ async function getResponse(event, client, requestId) {
|
|
|
153
222
|
// means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet
|
|
154
223
|
// and is not ready to handle requests.
|
|
155
224
|
if (!activeClientIds.has(client.id)) {
|
|
156
|
-
return
|
|
225
|
+
return passthrough()
|
|
157
226
|
}
|
|
158
227
|
|
|
159
|
-
// Bypass requests with the explicit bypass header
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
// Remove the bypass header to comply with the CORS preflight check.
|
|
164
|
-
delete cleanRequestHeaders[bypassHeaderName]
|
|
165
|
-
|
|
166
|
-
const originalRequest = new Request(requestClone, {
|
|
167
|
-
headers: new Headers(cleanRequestHeaders),
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
return fetch(originalRequest)
|
|
228
|
+
// Bypass requests with the explicit bypass header.
|
|
229
|
+
// Such requests can be issued by "ctx.fetch()".
|
|
230
|
+
if (request.headers.get('x-msw-bypass') === 'true') {
|
|
231
|
+
return passthrough()
|
|
171
232
|
}
|
|
172
233
|
|
|
173
|
-
//
|
|
174
|
-
|
|
175
|
-
|
|
234
|
+
// Create a communication channel scoped to the current request.
|
|
235
|
+
// This way events can be exchanged outside of the worker's global
|
|
236
|
+
// "message" event listener (i.e. abstracted into functions).
|
|
237
|
+
const operationChannel = new BroadcastChannel(
|
|
238
|
+
`msw-response-stream-${requestId}`,
|
|
239
|
+
)
|
|
176
240
|
|
|
241
|
+
// Notify the client that a request has been intercepted.
|
|
177
242
|
const clientMessage = await sendToClient(client, {
|
|
178
243
|
type: 'REQUEST',
|
|
179
244
|
payload: {
|
|
180
245
|
id: requestId,
|
|
181
246
|
url: request.url,
|
|
182
247
|
method: request.method,
|
|
183
|
-
headers:
|
|
248
|
+
headers: Object.fromEntries(request.headers.entries()),
|
|
184
249
|
cache: request.cache,
|
|
185
250
|
mode: request.mode,
|
|
186
251
|
credentials: request.credentials,
|
|
@@ -189,22 +254,23 @@ async function getResponse(event, client, requestId) {
|
|
|
189
254
|
redirect: request.redirect,
|
|
190
255
|
referrer: request.referrer,
|
|
191
256
|
referrerPolicy: request.referrerPolicy,
|
|
192
|
-
body,
|
|
257
|
+
body: await request.text(),
|
|
193
258
|
bodyUsed: request.bodyUsed,
|
|
194
259
|
keepalive: request.keepalive,
|
|
195
260
|
},
|
|
196
261
|
})
|
|
197
262
|
|
|
198
263
|
switch (clientMessage.type) {
|
|
199
|
-
case '
|
|
200
|
-
return
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
264
|
+
case 'MOCK_RESPONSE': {
|
|
265
|
+
return respondWithMock(clientMessage.payload)
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
case 'MOCK_RESPONSE_START': {
|
|
269
|
+
return respondWithMockStream(operationChannel, clientMessage.payload)
|
|
204
270
|
}
|
|
205
271
|
|
|
206
272
|
case 'MOCK_NOT_FOUND': {
|
|
207
|
-
return
|
|
273
|
+
return passthrough()
|
|
208
274
|
}
|
|
209
275
|
|
|
210
276
|
case 'NETWORK_ERROR': {
|
|
@@ -212,7 +278,7 @@ async function getResponse(event, client, requestId) {
|
|
|
212
278
|
const networkError = new Error(message)
|
|
213
279
|
networkError.name = name
|
|
214
280
|
|
|
215
|
-
// Rejecting a
|
|
281
|
+
// Rejecting a "respondWith" promise emulates a network error.
|
|
216
282
|
throw networkError
|
|
217
283
|
}
|
|
218
284
|
|
|
@@ -231,73 +297,11 @@ This exception has been gracefully handled as a 500 response, however, it's stro
|
|
|
231
297
|
request.url,
|
|
232
298
|
)
|
|
233
299
|
|
|
234
|
-
return respondWithMock(clientMessage)
|
|
300
|
+
return respondWithMock(clientMessage.payload)
|
|
235
301
|
}
|
|
236
302
|
}
|
|
237
303
|
|
|
238
|
-
return
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
self.addEventListener('fetch', function (event) {
|
|
242
|
-
const { request } = event
|
|
243
|
-
const accept = request.headers.get('accept') || ''
|
|
244
|
-
|
|
245
|
-
// Bypass server-sent events.
|
|
246
|
-
if (accept.includes('text/event-stream')) {
|
|
247
|
-
return
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// Bypass navigation requests.
|
|
251
|
-
if (request.mode === 'navigate') {
|
|
252
|
-
return
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
// Opening the DevTools triggers the "only-if-cached" request
|
|
256
|
-
// that cannot be handled by the worker. Bypass such requests.
|
|
257
|
-
if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
|
|
258
|
-
return
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
// Bypass all requests when there are no active clients.
|
|
262
|
-
// Prevents the self-unregistered worked from handling requests
|
|
263
|
-
// after it's been deleted (still remains active until the next reload).
|
|
264
|
-
if (activeClientIds.size === 0) {
|
|
265
|
-
return
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
const requestId = uuidv4()
|
|
269
|
-
|
|
270
|
-
return event.respondWith(
|
|
271
|
-
handleRequest(event, requestId).catch((error) => {
|
|
272
|
-
if (error.name === 'NetworkError') {
|
|
273
|
-
console.warn(
|
|
274
|
-
'[MSW] Successfully emulated a network error for the "%s %s" request.',
|
|
275
|
-
request.method,
|
|
276
|
-
request.url,
|
|
277
|
-
)
|
|
278
|
-
return
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
// At this point, any exception indicates an issue with the original request/response.
|
|
282
|
-
console.error(
|
|
283
|
-
`\
|
|
284
|
-
[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.`,
|
|
285
|
-
request.method,
|
|
286
|
-
request.url,
|
|
287
|
-
`${error.name}: ${error.message}`,
|
|
288
|
-
)
|
|
289
|
-
}),
|
|
290
|
-
)
|
|
291
|
-
})
|
|
292
|
-
|
|
293
|
-
function serializeHeaders(headers) {
|
|
294
|
-
const reqHeaders = {}
|
|
295
|
-
headers.forEach((value, name) => {
|
|
296
|
-
reqHeaders[name] = reqHeaders[name]
|
|
297
|
-
? [].concat(reqHeaders[name]).concat(value)
|
|
298
|
-
: value
|
|
299
|
-
})
|
|
300
|
-
return reqHeaders
|
|
304
|
+
return passthrough()
|
|
301
305
|
}
|
|
302
306
|
|
|
303
307
|
function sendToClient(client, message) {
|
|
@@ -316,23 +320,48 @@ function sendToClient(client, message) {
|
|
|
316
320
|
})
|
|
317
321
|
}
|
|
318
322
|
|
|
319
|
-
function
|
|
323
|
+
function sleep(timeMs) {
|
|
320
324
|
return new Promise((resolve) => {
|
|
321
|
-
setTimeout(
|
|
325
|
+
setTimeout(resolve, timeMs)
|
|
322
326
|
})
|
|
323
327
|
}
|
|
324
328
|
|
|
325
|
-
function respondWithMock(
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
headers: clientMessage.payload.headers,
|
|
329
|
-
})
|
|
329
|
+
async function respondWithMock(response) {
|
|
330
|
+
await sleep(response.delay)
|
|
331
|
+
return new Response(response.body, response)
|
|
330
332
|
}
|
|
331
333
|
|
|
332
|
-
function
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
334
|
+
function respondWithMockStream(operationChannel, mockResponse) {
|
|
335
|
+
let streamCtrl
|
|
336
|
+
const stream = new ReadableStream({
|
|
337
|
+
start: (controller) => (streamCtrl = controller),
|
|
338
|
+
})
|
|
339
|
+
|
|
340
|
+
return new Promise(async (resolve, reject) => {
|
|
341
|
+
operationChannel.onmessageerror = (event) => {
|
|
342
|
+
operationChannel.close()
|
|
343
|
+
return reject(event.data.error)
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
operationChannel.onmessage = (event) => {
|
|
347
|
+
if (!event.data) {
|
|
348
|
+
return
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
switch (event.data.type) {
|
|
352
|
+
case 'MOCK_RESPONSE_CHUNK': {
|
|
353
|
+
streamCtrl.enqueue(event.data.payload)
|
|
354
|
+
break
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
case 'MOCK_RESPONSE_END': {
|
|
358
|
+
streamCtrl.close()
|
|
359
|
+
operationChannel.close()
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
await sleep(mockResponse.delay)
|
|
365
|
+
return resolve(new Response(stream, mockResponse))
|
|
337
366
|
})
|
|
338
367
|
}
|
package/lib/native/index.js
CHANGED
|
@@ -1157,7 +1157,7 @@ function readResponseCookies(request, response2) {
|
|
|
1157
1157
|
|
|
1158
1158
|
// src/utils/handleRequest.ts
|
|
1159
1159
|
async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
|
|
1160
|
-
var _a, _b, _c, _d;
|
|
1160
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1161
1161
|
emitter.emit("request:start", request);
|
|
1162
1162
|
if (request.headers.get("x-msw-bypass") === "true") {
|
|
1163
1163
|
emitter.emit("request:end", request);
|
|
@@ -1195,18 +1195,12 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1195
1195
|
}
|
|
1196
1196
|
readResponseCookies(request, response2);
|
|
1197
1197
|
emitter.emit("request:match", request);
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
var _a3;
|
|
1205
|
-
(_a3 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _a3.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1206
|
-
emitter.emit("request:end", request);
|
|
1207
|
-
resolve(transformedResponse);
|
|
1208
|
-
}, (_c2 = response2.delay) != null ? _c2 : 0);
|
|
1209
|
-
});
|
|
1198
|
+
const requiredLookupResult = lookupResult;
|
|
1199
|
+
const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
|
|
1200
|
+
(_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1201
|
+
(_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1202
|
+
emitter.emit("request:end", request);
|
|
1203
|
+
return transformedResponse;
|
|
1210
1204
|
}
|
|
1211
1205
|
|
|
1212
1206
|
// src/utils/internal/pipeEvents.ts
|
|
@@ -1242,7 +1236,7 @@ function createSetupServer(...interceptors) {
|
|
|
1242
1236
|
let resolvedOptions = {};
|
|
1243
1237
|
const interceptor = new import_interceptors.BatchInterceptor({
|
|
1244
1238
|
name: "setup-server",
|
|
1245
|
-
interceptors
|
|
1239
|
+
interceptors: interceptors.map((Interceptor2) => new Interceptor2())
|
|
1246
1240
|
});
|
|
1247
1241
|
interceptor.on("request", async function setupServerListener(request) {
|
|
1248
1242
|
const mockedRequest = parseIsomorphicRequest(request);
|
|
@@ -1252,11 +1246,17 @@ function createSetupServer(...interceptors) {
|
|
|
1252
1246
|
status: response3.status,
|
|
1253
1247
|
statusText: response3.statusText,
|
|
1254
1248
|
headers: response3.headers.all(),
|
|
1255
|
-
body: response3.body
|
|
1249
|
+
body: response3.body,
|
|
1250
|
+
delay: response3.delay
|
|
1256
1251
|
};
|
|
1257
1252
|
}
|
|
1258
1253
|
});
|
|
1259
1254
|
if (response2) {
|
|
1255
|
+
if (response2.delay) {
|
|
1256
|
+
await new Promise((resolve) => {
|
|
1257
|
+
setTimeout(resolve, response2.delay);
|
|
1258
|
+
});
|
|
1259
|
+
}
|
|
1260
1260
|
request.respondWith(response2);
|
|
1261
1261
|
}
|
|
1262
1262
|
return;
|
|
@@ -1315,7 +1315,7 @@ function createSetupServer(...interceptors) {
|
|
|
1315
1315
|
}
|
|
1316
1316
|
|
|
1317
1317
|
// src/native/index.ts
|
|
1318
|
-
var setupServer = createSetupServer(
|
|
1318
|
+
var setupServer = createSetupServer(import_XMLHttpRequest.XMLHttpRequestInterceptor);
|
|
1319
1319
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1320
1320
|
0 && (module.exports = {
|
|
1321
1321
|
setupServer
|
package/lib/native/index.mjs
CHANGED
|
@@ -1145,7 +1145,7 @@ function readResponseCookies(request, response2) {
|
|
|
1145
1145
|
|
|
1146
1146
|
// src/utils/handleRequest.ts
|
|
1147
1147
|
async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
|
|
1148
|
-
var _a, _b, _c, _d;
|
|
1148
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1149
1149
|
emitter.emit("request:start", request);
|
|
1150
1150
|
if (request.headers.get("x-msw-bypass") === "true") {
|
|
1151
1151
|
emitter.emit("request:end", request);
|
|
@@ -1183,18 +1183,12 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1183
1183
|
}
|
|
1184
1184
|
readResponseCookies(request, response2);
|
|
1185
1185
|
emitter.emit("request:match", request);
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
var _a3;
|
|
1193
|
-
(_a3 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _a3.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1194
|
-
emitter.emit("request:end", request);
|
|
1195
|
-
resolve(transformedResponse);
|
|
1196
|
-
}, (_c2 = response2.delay) != null ? _c2 : 0);
|
|
1197
|
-
});
|
|
1186
|
+
const requiredLookupResult = lookupResult;
|
|
1187
|
+
const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
|
|
1188
|
+
(_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1189
|
+
(_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1190
|
+
emitter.emit("request:end", request);
|
|
1191
|
+
return transformedResponse;
|
|
1198
1192
|
}
|
|
1199
1193
|
|
|
1200
1194
|
// src/utils/internal/pipeEvents.ts
|
|
@@ -1230,7 +1224,7 @@ function createSetupServer(...interceptors) {
|
|
|
1230
1224
|
let resolvedOptions = {};
|
|
1231
1225
|
const interceptor = new BatchInterceptor({
|
|
1232
1226
|
name: "setup-server",
|
|
1233
|
-
interceptors
|
|
1227
|
+
interceptors: interceptors.map((Interceptor2) => new Interceptor2())
|
|
1234
1228
|
});
|
|
1235
1229
|
interceptor.on("request", async function setupServerListener(request) {
|
|
1236
1230
|
const mockedRequest = parseIsomorphicRequest(request);
|
|
@@ -1240,11 +1234,17 @@ function createSetupServer(...interceptors) {
|
|
|
1240
1234
|
status: response3.status,
|
|
1241
1235
|
statusText: response3.statusText,
|
|
1242
1236
|
headers: response3.headers.all(),
|
|
1243
|
-
body: response3.body
|
|
1237
|
+
body: response3.body,
|
|
1238
|
+
delay: response3.delay
|
|
1244
1239
|
};
|
|
1245
1240
|
}
|
|
1246
1241
|
});
|
|
1247
1242
|
if (response2) {
|
|
1243
|
+
if (response2.delay) {
|
|
1244
|
+
await new Promise((resolve) => {
|
|
1245
|
+
setTimeout(resolve, response2.delay);
|
|
1246
|
+
});
|
|
1247
|
+
}
|
|
1248
1248
|
request.respondWith(response2);
|
|
1249
1249
|
}
|
|
1250
1250
|
return;
|
|
@@ -1303,7 +1303,7 @@ function createSetupServer(...interceptors) {
|
|
|
1303
1303
|
}
|
|
1304
1304
|
|
|
1305
1305
|
// src/native/index.ts
|
|
1306
|
-
var setupServer = createSetupServer(
|
|
1306
|
+
var setupServer = createSetupServer(XMLHttpRequestInterceptor);
|
|
1307
1307
|
export {
|
|
1308
1308
|
setupServer
|
|
1309
1309
|
};
|
package/lib/node/index.js
CHANGED
|
@@ -1164,7 +1164,7 @@ function readResponseCookies(request, response2) {
|
|
|
1164
1164
|
|
|
1165
1165
|
// src/utils/handleRequest.ts
|
|
1166
1166
|
async function handleRequest(request, handlers, options, emitter, handleRequestOptions) {
|
|
1167
|
-
var _a, _b, _c, _d;
|
|
1167
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
1168
1168
|
emitter.emit("request:start", request);
|
|
1169
1169
|
if (request.headers.get("x-msw-bypass") === "true") {
|
|
1170
1170
|
emitter.emit("request:end", request);
|
|
@@ -1202,18 +1202,12 @@ async function handleRequest(request, handlers, options, emitter, handleRequestO
|
|
|
1202
1202
|
}
|
|
1203
1203
|
readResponseCookies(request, response2);
|
|
1204
1204
|
emitter.emit("request:match", request);
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
var _a3;
|
|
1212
|
-
(_a3 = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _a3.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1213
|
-
emitter.emit("request:end", request);
|
|
1214
|
-
resolve(transformedResponse);
|
|
1215
|
-
}, (_c2 = response2.delay) != null ? _c2 : 0);
|
|
1216
|
-
});
|
|
1205
|
+
const requiredLookupResult = lookupResult;
|
|
1206
|
+
const transformedResponse = ((_e = handleRequestOptions == null ? void 0 : handleRequestOptions.transformResponse) == null ? void 0 : _e.call(handleRequestOptions, response2)) || response2;
|
|
1207
|
+
(_f = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponse) == null ? void 0 : _f.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1208
|
+
(_g = handleRequestOptions == null ? void 0 : handleRequestOptions.onMockedResponseSent) == null ? void 0 : _g.call(handleRequestOptions, transformedResponse, requiredLookupResult);
|
|
1209
|
+
emitter.emit("request:end", request);
|
|
1210
|
+
return transformedResponse;
|
|
1217
1211
|
}
|
|
1218
1212
|
|
|
1219
1213
|
// src/utils/internal/pipeEvents.ts
|
|
@@ -1249,7 +1243,7 @@ function createSetupServer(...interceptors) {
|
|
|
1249
1243
|
let resolvedOptions = {};
|
|
1250
1244
|
const interceptor = new import_interceptors.BatchInterceptor({
|
|
1251
1245
|
name: "setup-server",
|
|
1252
|
-
interceptors
|
|
1246
|
+
interceptors: interceptors.map((Interceptor2) => new Interceptor2())
|
|
1253
1247
|
});
|
|
1254
1248
|
interceptor.on("request", async function setupServerListener(request) {
|
|
1255
1249
|
const mockedRequest = parseIsomorphicRequest(request);
|
|
@@ -1259,11 +1253,17 @@ function createSetupServer(...interceptors) {
|
|
|
1259
1253
|
status: response3.status,
|
|
1260
1254
|
statusText: response3.statusText,
|
|
1261
1255
|
headers: response3.headers.all(),
|
|
1262
|
-
body: response3.body
|
|
1256
|
+
body: response3.body,
|
|
1257
|
+
delay: response3.delay
|
|
1263
1258
|
};
|
|
1264
1259
|
}
|
|
1265
1260
|
});
|
|
1266
1261
|
if (response2) {
|
|
1262
|
+
if (response2.delay) {
|
|
1263
|
+
await new Promise((resolve) => {
|
|
1264
|
+
setTimeout(resolve, response2.delay);
|
|
1265
|
+
});
|
|
1266
|
+
}
|
|
1267
1267
|
request.respondWith(response2);
|
|
1268
1268
|
}
|
|
1269
1269
|
return;
|
|
@@ -1322,7 +1322,7 @@ function createSetupServer(...interceptors) {
|
|
|
1322
1322
|
}
|
|
1323
1323
|
|
|
1324
1324
|
// src/node/setupServer.ts
|
|
1325
|
-
var setupServer = createSetupServer(
|
|
1325
|
+
var setupServer = createSetupServer(import_ClientRequest.ClientRequestInterceptor, import_XMLHttpRequest.XMLHttpRequestInterceptor);
|
|
1326
1326
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1327
1327
|
0 && (module.exports = {
|
|
1328
1328
|
setupServer
|