reporting-worker.js (601B)
1 function run({script, port}) { 2 const reports = []; 3 const observer = new ReportingObserver((rs) => { 4 for (const r of rs) { 5 reports.push(r.toJSON()); 6 } 7 }); 8 // Wait 200ms for reports to settle. 9 setTimeout(() => { 10 observer.disconnect(); 11 port.postMessage(reports); 12 }, 200); 13 observer.observe(); 14 15 // This eval call may generate some reports. 16 eval(script); 17 } 18 19 // For DedicatedWorker and ServiceWorker 20 self.addEventListener('message', (e) => run(e.data)); 21 22 // For SharedWorker 23 self.addEventListener('connect', (e) => { 24 e.ports[0].onmessage = (ev) => run(ev.data); 25 });