in src/extension-runners/chromium.js [229:266]
async wssBroadcast(data) {
return new Promise((resolve) => {
const clients = this.wss ? new Set(this.wss.clients) : new Set();
function cleanWebExtReloadComplete() {
const client = this;
client.removeEventListener('message', webExtReloadComplete);
client.removeEventListener('close', cleanWebExtReloadComplete);
clients.delete(client);
}
const webExtReloadComplete = async (message) => {
const msg = JSON.parse(message.data);
if (msg.type === 'webExtReloadExtensionComplete') {
for (const client of clients) {
cleanWebExtReloadComplete.call(client);
}
resolve();
}
};
for (const client of clients) {
if (client.readyState === WebSocket.OPEN) {
client.addEventListener('message', webExtReloadComplete);
client.addEventListener('close', cleanWebExtReloadComplete);
client.send(JSON.stringify(data));
} else {
clients.delete(client);
}
}
if (clients.size === 0) {
resolve();
}
});
}