Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/monitoring/spa/mockServiceWorker.min.js

const PACKAGE_VERSION="2.7.0";const INTEGRITY_CHECKSUM="00729d72e3b82faf54ca8b9621dbb96f";const IS_MOCKED_RESPONSE=Symbol("isMockedResponse");const activeClientIds=new Set;self.addEventListener("install",(function(){self.skipWaiting()}));self.addEventListener("activate",(function(event){event.waitUntil(self.clients.claim())}));self.addEventListener("message",(async function(event){const clientId=event.source.id;if(!clientId||!self.clients){return}const client=await self.clients.get(clientId);if(!client){return}const allClients=await self.clients.matchAll({type:"window"});switch(event.data){case"KEEPALIVE_REQUEST":{sendToClient(client,{type:"KEEPALIVE_RESPONSE"});break}case"INTEGRITY_CHECK_REQUEST":{sendToClient(client,{type:"INTEGRITY_CHECK_RESPONSE",payload:{packageVersion:PACKAGE_VERSION,checksum:INTEGRITY_CHECKSUM}});break}case"MOCK_ACTIVATE":{activeClientIds.add(clientId);sendToClient(client,{type:"MOCKING_ENABLED",payload:{client:{id:client.id,frameType:client.frameType}}});break}case"MOCK_DEACTIVATE":{activeClientIds.delete(clientId);break}case"CLIENT_CLOSED":{activeClientIds.delete(clientId);const remainingClients=allClients.filter((client=>client.id!==clientId));if(remainingClients.length===0){self.registration.unregister()}break}}}));self.addEventListener("fetch",(function(event){const{request:request}=event;if(request.mode==="navigate"){return}if(request.cache==="only-if-cached"&&request.mode!=="same-origin"){return}if(activeClientIds.size===0){return}const requestId=crypto.randomUUID();event.respondWith(handleRequest(event,requestId))}));async function handleRequest(event,requestId){const client=await resolveMainClient(event);const response=await getResponse(event,client,requestId);if(client&&activeClientIds.has(client.id)){(async function(){const responseClone=response.clone();sendToClient(client,{type:"RESPONSE",payload:{requestId:requestId,isMockedResponse:IS_MOCKED_RESPONSE in response,type:responseClone.type,status:responseClone.status,statusText:responseClone.statusText,body:responseClone.body,headers:Object.fromEntries(responseClone.headers.entries())}},[responseClone.body])})()}return response}async function resolveMainClient(event){const client=await self.clients.get(event.clientId);if(activeClientIds.has(event.clientId)){return client}if(client?.frameType==="top-level"){return client}const allClients=await self.clients.matchAll({type:"window"});return allClients.filter((client=>client.visibilityState==="visible")).find((client=>activeClientIds.has(client.id)))}async function getResponse(event,client,requestId){const{request:request}=event;const requestClone=request.clone();function passthrough(){const headers=new Headers(requestClone.headers);const acceptHeader=headers.get("accept");if(acceptHeader){const values=acceptHeader.split(",").map((value=>value.trim()));const filteredValues=values.filter((value=>value!=="msw/passthrough"));if(filteredValues.length>0){headers.set("accept",filteredValues.join(", "))}else{headers.delete("accept")}}return fetch(requestClone,{headers:headers})}if(!client){return passthrough()}if(!activeClientIds.has(client.id)){return passthrough()}const requestBuffer=await request.arrayBuffer();const clientMessage=await sendToClient(client,{type:"REQUEST",payload:{id:requestId,url:request.url,mode:request.mode,method:request.method,headers:Object.fromEntries(request.headers.entries()),cache:request.cache,credentials:request.credentials,destination:request.destination,integrity:request.integrity,redirect:request.redirect,referrer:request.referrer,referrerPolicy:request.referrerPolicy,body:requestBuffer,keepalive:request.keepalive}},[requestBuffer]);switch(clientMessage.type){case"MOCK_RESPONSE":{return respondWithMock(clientMessage.data)}case"PASSTHROUGH":{return passthrough()}}return passthrough()}function sendToClient(client,message,transferrables=[]){return new Promise(((resolve,reject)=>{const channel=new MessageChannel;channel.port1.onmessage=event=>{if(event.data&&event.data.error){return reject(event.data.error)}resolve(event.data)};client.postMessage(message,[channel.port2].concat(transferrables.filter(Boolean)))}))}async function respondWithMock(response){if(response.status===0){return Response.error()}const mockedResponse=new Response(response.body,response);Reflect.defineProperty(mockedResponse,IS_MOCKED_RESPONSE,{value:true,enumerable:true});return mockedResponse}
Back to Directory File Manager