serwist
Version:
A Swiss Army knife for service workers.
33 lines (30 loc) • 958 B
JavaScript
import { t as timeout } from './waitUntil.js';
const MAX_RETRY_TIME = 2000;
async function resultingClientExists(resultingClientId) {
if (!resultingClientId) {
return;
}
let existingWindows = await self.clients.matchAll({
type: "window"
});
const existingWindowIds = new Set(existingWindows.map((w)=>w.id));
let resultingWindow = undefined;
const startTime = performance.now();
while(performance.now() - startTime < MAX_RETRY_TIME){
existingWindows = await self.clients.matchAll({
type: "window"
});
resultingWindow = existingWindows.find((w)=>{
if (resultingClientId) {
return w.id === resultingClientId;
}
return !existingWindowIds.has(w.id);
});
if (resultingWindow) {
break;
}
await timeout(100);
}
return resultingWindow;
}
export { resultingClientExists as r };