88 * - Please do NOT serve this file on production.
99 */
1010
11- const PACKAGE_VERSION = '2.2.9' ;
12- const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423' ;
13- const IS_MOCKED_RESPONSE = Symbol ( 'isMockedResponse' ) ;
14- const activeClientIds = new Set ( ) ;
11+ const PACKAGE_VERSION = '2.3.5'
12+ const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423'
13+ const IS_MOCKED_RESPONSE = Symbol ( 'isMockedResponse' )
14+ const activeClientIds = new Set ( )
1515
1616self . addEventListener ( 'install' , function ( ) {
17- self . skipWaiting ( ) ;
18- } ) ;
17+ self . skipWaiting ( )
18+ } )
1919
2020self . addEventListener ( 'activate' , function ( event ) {
21- event . waitUntil ( self . clients . claim ( ) ) ;
22- } ) ;
21+ event . waitUntil ( self . clients . claim ( ) )
22+ } )
2323
2424self . addEventListener ( 'message' , async function ( event ) {
25- const clientId = event . source . id ;
25+ const clientId = event . source . id
2626
2727 if ( ! clientId || ! self . clients ) {
28- return ;
28+ return
2929 }
3030
31- const client = await self . clients . get ( clientId ) ;
31+ const client = await self . clients . get ( clientId )
3232
3333 if ( ! client ) {
34- return ;
34+ return
3535 }
3636
3737 const allClients = await self . clients . matchAll ( {
3838 type : 'window' ,
39- } ) ;
39+ } )
4040
4141 switch ( event . data ) {
4242 case 'KEEPALIVE_REQUEST' : {
4343 sendToClient ( client , {
4444 type : 'KEEPALIVE_RESPONSE' ,
45- } ) ;
46- break ;
45+ } )
46+ break
4747 }
4848
4949 case 'INTEGRITY_CHECK_REQUEST' : {
@@ -53,78 +53,78 @@ self.addEventListener('message', async function (event) {
5353 packageVersion : PACKAGE_VERSION ,
5454 checksum : INTEGRITY_CHECKSUM ,
5555 } ,
56- } ) ;
57- break ;
56+ } )
57+ break
5858 }
5959
6060 case 'MOCK_ACTIVATE' : {
61- activeClientIds . add ( clientId ) ;
61+ activeClientIds . add ( clientId )
6262
6363 sendToClient ( client , {
6464 type : 'MOCKING_ENABLED' ,
6565 payload : true ,
66- } ) ;
67- break ;
66+ } )
67+ break
6868 }
6969
7070 case 'MOCK_DEACTIVATE' : {
71- activeClientIds . delete ( clientId ) ;
72- break ;
71+ activeClientIds . delete ( clientId )
72+ break
7373 }
7474
7575 case 'CLIENT_CLOSED' : {
76- activeClientIds . delete ( clientId ) ;
76+ activeClientIds . delete ( clientId )
7777
7878 const remainingClients = allClients . filter ( ( client ) => {
79- return client . id !== clientId ;
80- } ) ;
79+ return client . id !== clientId
80+ } )
8181
8282 // Unregister itself when there are no more clients
8383 if ( remainingClients . length === 0 ) {
84- self . registration . unregister ( ) ;
84+ self . registration . unregister ( )
8585 }
8686
87- break ;
87+ break
8888 }
8989 }
90- } ) ;
90+ } )
9191
9292self . addEventListener ( 'fetch' , function ( event ) {
93- const { request } = event ;
93+ const { request } = event
9494
9595 // Bypass navigation requests.
9696 if ( request . mode === 'navigate' ) {
97- return ;
97+ return
9898 }
9999
100100 // Opening the DevTools triggers the "only-if-cached" request
101101 // that cannot be handled by the worker. Bypass such requests.
102102 if ( request . cache === 'only-if-cached' && request . mode !== 'same-origin' ) {
103- return ;
103+ return
104104 }
105105
106106 // Bypass all requests when there are no active clients.
107107 // Prevents the self-unregistered worked from handling requests
108108 // after it's been deleted (still remains active until the next reload).
109109 if ( activeClientIds . size === 0 ) {
110- return ;
110+ return
111111 }
112112
113113 // Generate unique request ID.
114- const requestId = crypto . randomUUID ( ) ;
115- event . respondWith ( handleRequest ( event , requestId ) ) ;
116- } ) ;
114+ const requestId = crypto . randomUUID ( )
115+ event . respondWith ( handleRequest ( event , requestId ) )
116+ } )
117117
118118async function handleRequest ( event , requestId ) {
119- const client = await resolveMainClient ( event ) ;
120- const response = await getResponse ( event , client , requestId ) ;
119+ const client = await resolveMainClient ( event )
120+ const response = await getResponse ( event , client , requestId )
121121
122122 // Send back the response clone for the "response:*" life-cycle events.
123123 // Ensure MSW is active and ready to handle the message, otherwise
124124 // this message will pend indefinitely.
125125 if ( client && activeClientIds . has ( client . id ) ) {
126- ( async function ( ) {
127- const responseClone = response . clone ( ) ;
126+ ; ( async function ( ) {
127+ const responseClone = response . clone ( )
128128
129129 sendToClient (
130130 client ,
@@ -141,73 +141,73 @@ async function handleRequest(event, requestId) {
141141 } ,
142142 } ,
143143 [ responseClone . body ] ,
144- ) ;
145- } ) ( ) ;
144+ )
145+ } ) ( )
146146 }
147147
148- return response ;
148+ return response
149149}
150150
151151// Resolve the main client for the given event.
152152// Client that issues a request doesn't necessarily equal the client
153153// that registered the worker. It's with the latter the worker should
154154// communicate with during the response resolving phase.
155155async function resolveMainClient ( event ) {
156- const client = await self . clients . get ( event . clientId ) ;
156+ const client = await self . clients . get ( event . clientId )
157157
158158 if ( client ?. frameType === 'top-level' ) {
159- return client ;
159+ return client
160160 }
161161
162162 const allClients = await self . clients . matchAll ( {
163163 type : 'window' ,
164- } ) ;
164+ } )
165165
166166 return allClients
167167 . filter ( ( client ) => {
168168 // Get only those clients that are currently visible.
169- return client . visibilityState === 'visible' ;
169+ return client . visibilityState === 'visible'
170170 } )
171171 . find ( ( client ) => {
172172 // Find the client ID that's recorded in the
173173 // set of clients that have registered the worker.
174- return activeClientIds . has ( client . id ) ;
175- } ) ;
174+ return activeClientIds . has ( client . id )
175+ } )
176176}
177177
178178async function getResponse ( event , client , requestId ) {
179- const { request } = event ;
179+ const { request } = event
180180
181181 // Clone the request because it might've been already used
182182 // (i.e. its body has been read and sent to the client).
183- const requestClone = request . clone ( ) ;
183+ const requestClone = request . clone ( )
184184
185185 function passthrough ( ) {
186- const headers = Object . fromEntries ( requestClone . headers . entries ( ) ) ;
186+ const headers = Object . fromEntries ( requestClone . headers . entries ( ) )
187187
188188 // Remove internal MSW request header so the passthrough request
189189 // complies with any potential CORS preflight checks on the server.
190190 // Some servers forbid unknown request headers.
191- delete headers [ 'x-msw-intention' ] ;
191+ delete headers [ 'x-msw-intention' ]
192192
193- return fetch ( requestClone , { headers } ) ;
193+ return fetch ( requestClone , { headers } )
194194 }
195195
196196 // Bypass mocking when the client is not active.
197197 if ( ! client ) {
198- return passthrough ( ) ;
198+ return passthrough ( )
199199 }
200200
201201 // Bypass initial page load requests (i.e. static assets).
202202 // The absence of the immediate/parent client in the map of the active clients
203203 // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet
204204 // and is not ready to handle requests.
205205 if ( ! activeClientIds . has ( client . id ) ) {
206- return passthrough ( ) ;
206+ return passthrough ( )
207207 }
208208
209209 // Notify the client that a request has been intercepted.
210- const requestBuffer = await request . arrayBuffer ( ) ;
210+ const requestBuffer = await request . arrayBuffer ( )
211211 const clientMessage = await sendToClient (
212212 client ,
213213 {
@@ -230,38 +230,38 @@ async function getResponse(event, client, requestId) {
230230 } ,
231231 } ,
232232 [ requestBuffer ] ,
233- ) ;
233+ )
234234
235235 switch ( clientMessage . type ) {
236236 case 'MOCK_RESPONSE' : {
237- return respondWithMock ( clientMessage . data ) ;
237+ return respondWithMock ( clientMessage . data )
238238 }
239239
240240 case 'PASSTHROUGH' : {
241- return passthrough ( ) ;
241+ return passthrough ( )
242242 }
243243 }
244244
245- return passthrough ( ) ;
245+ return passthrough ( )
246246}
247247
248248function sendToClient ( client , message , transferrables = [ ] ) {
249249 return new Promise ( ( resolve , reject ) => {
250- const channel = new MessageChannel ( ) ;
250+ const channel = new MessageChannel ( )
251251
252252 channel . port1 . onmessage = ( event ) => {
253253 if ( event . data && event . data . error ) {
254- return reject ( event . data . error ) ;
254+ return reject ( event . data . error )
255255 }
256256
257- resolve ( event . data ) ;
258- } ;
257+ resolve ( event . data )
258+ }
259259
260260 client . postMessage (
261261 message ,
262262 [ channel . port2 ] . concat ( transferrables . filter ( Boolean ) ) ,
263- ) ;
264- } ) ;
263+ )
264+ } )
265265}
266266
267267async function respondWithMock ( response ) {
@@ -270,15 +270,15 @@ async function respondWithMock(response) {
270270 // instance will have status code set to 0. Since it's not possible to create
271271 // a Response instance with status code 0, handle that use-case separately.
272272 if ( response . status === 0 ) {
273- return Response . error ( ) ;
273+ return Response . error ( )
274274 }
275275
276- const mockedResponse = new Response ( response . body , response ) ;
276+ const mockedResponse = new Response ( response . body , response )
277277
278278 Reflect . defineProperty ( mockedResponse , IS_MOCKED_RESPONSE , {
279279 value : true ,
280280 enumerable : true ,
281- } ) ;
281+ } )
282282
283- return mockedResponse ;
283+ return mockedResponse
284284}
0 commit comments