From: Ruben Beltran del Rio Date: Wed, 30 Aug 2023 17:36:11 +0000 (+0200) Subject: Format extension X-Git-Url: https://git.r.bdr.sh/rbdr/junction/commitdiff_plain/b9a2baf2a7c957089e63844b857e05c07b87c2fb?ds=inline;hp=6a3568bc5942423b93ba2749036489ad9e38e7cf Format extension --- diff --git a/extension/content_script.js b/extension/content_script.js index 8ca721a..26da2b0 100644 --- a/extension/content_script.js +++ b/extension/content_script.js @@ -1,13 +1,10 @@ -import { io } from 'socket.io-client'; -import Peers from './peers'; -import Media from './media'; +import { io } from "socket.io-client"; +import Peers from "./peers"; +import Media from "./media"; const internals = { - - kSocketUrl: 'https://junction.tranquil.services', - kIceServers: [ - {url:"stun:stun.l.google.com:19302"} - ], + kSocketUrl: "https://junction.tranquil.services", + kIceServers: [{ urls: "stun:stun.l.google.com:19302" }], port: null, socket: null, @@ -17,63 +14,58 @@ const internals = { internals[message.action](message.data); }, - async joinAudioCall(data) { - - internals.tada = data.tada; // Keeping for fun - + async joinAudioCall({ currentUrl, tada }) { try { const mediaStream = await Media.start(); internals.socket = io(internals.kSocketUrl, { - transports: ['websocket'] + transports: ["websocket"], }); - internals.socket.on('error', function(error) { - - console.error('GENERAL ERROR', error); + internals.socket.on("error", function (error) { + console.error("GENERAL ERROR", error); }); - internals.socket.on('connect_error', function(error) { - - console.error('CONNNECT ERROR', error); + internals.socket.on("connect_error", function (error) { + console.error("CONNNECT ERROR", error); }); - internals.socket.on('connect', function() { - - console.log('Connected to signaling server, group: ', data.currentUrl); - internals.socket.emit('join', { - room: data.currentUrl, + internals.socket.on("connect", function () { + console.log("Connected to signaling server, group: ", currentUrl); + internals.socket.emit("join", { + room: currentUrl, }); }); - internals.socket.on('disconnect', function() { - + internals.socket.on("disconnect", function () { console.log("disconnected from signaling server"); }); - internals.socket.on('addPeer', function(data) { - - Peers.add(data.peerId, internals.tada); - const peerId = data.peerId; - - const peerConnection = new RTCPeerConnection( - { iceServers: internals.kIceServers }, - { optional: [{ DtlsSrtpKeyAgreement: true }] } - ); - - internals.peers[peerId] = peerConnection; - mediaStream.getTracks().forEach((track) => { - peerConnection.addTrack(track, localStream); - }); + internals.socket.on("addPeer", function ({ peerId }) { + /** + * Eventually the whole rtc connection logic should be moved to Peers. + * Now it only plays tadas. + */ + Peers.add(peerId, tada); + + const peerConnection = new RTCPeerConnection( + { iceServers: internals.kIceServers }, + { optional: [{ DtlsSrtpKeyAgreement: true }] }, + ); + + internals.peers[peerId] = peerConnection; + mediaStream.getTracks().forEach((track) => { + peerConnection.addTrack(track, mediaStream); + }); - peerConnection.onicecandidate = (event) => { - if (event.candidate) { - internals.socket.emit('relayICECandidate', { - peerId: peerId, - candidate: event.candidate - }); - } + peerConnection.onicecandidate = (event) => { + if (event.candidate) { + internals.socket.emit("relayICECandidate", { + peerId: peerId, + candidate: event.candidate, + }); } + }; const remoteStream = new MediaStream(); peerConnection.ontrack = (event) => { @@ -89,70 +81,65 @@ const internals = { await peerConnection.setLocalDescription(offer); // Emit the offer to the peer - socket.emit('relayOffer', { offer, peerId }); + internals.socket.emit("relayOffer", { offer, peerId }); }; console.log(`There are now ${Peers.count()} participants`); }); - socket.on('offerReceived', async (data) => { - - const peerConnection = internals.peers[data.peerId]; + internals.socket.on("offerReceived", async ({ offer, peerId }) => { + const peerConnection = internals.peers[peerId]; - const offer = new RTCSessionDescription(data.offer); - await peerConnection.setRemoteDescription(offer); + const remoteDescription = new RTCSessionDescription(offer); + await peerConnection.setRemoteDescription(remoteDescription); const answer = await peerConnection.createAnswer(); await peerConnection.setLocalDescription(answer); // Send the answer to the peer - socket.emit('relayAnswer', { answer, peerId: data.peerId }); + internals.socket.emit("relayAnswer", { answer, peerId }); }); - socket.on('answerReceived', async (data) => { - - const peerConnection = internals.peers[data.peerId]; - const answer = new RTCSessionDescription(data.answer); - await peerConnection.setRemoteDescription(answer); + internals.socket.on("answerReceived", async ({ answer, peerId }) => { + const peerConnection = internals.peers[peerId]; + const remoteDescription = new RTCSessionDescription(answer); + await peerConnection.setRemoteDescription(remoteDescription); }); - socket.on('ICECandidateReceived', async (data) => { - - const peerConnection = internals.peers[data.peerId]; - const candidate = new RTCIceCandidate(data.candidate); - await peerConnection.addIceCandidate(candidate); - }); - - - internals.socket.on('removePeer', function() { - - delete internals.peers[data.peerId]; - Peers.remove('id-'+(Peers.count() - 1)); // This is only for testing, don't use count to remove ids. + internals.socket.on( + "ICECandidateReceived", + async ({ candidate, peerId }) => { + const peerConnection = internals.peers[peerId]; + const iceCandidate = new RTCIceCandidate(candidate); + await peerConnection.addIceCandidate(iceCandidate); + }, + ); + + internals.socket.on("removePeer", function ({ peerId }) { + delete internals.peers[peerId]; + Peers.remove(peerId); console.log(`There are now ${Peers.count()} participants`); }); - } - catch (err) { - + } catch (err) { internals.port.postMessage({ - action: 'error' + action: "error", }); internals.port.disconnect(); } }, hangUp() { - Peers.reset(); Media.stop(); internals.socket.close(); internals.port.disconnect(); - } + }, }; -internals.port = chrome.runtime.connect({ name:"content" }); +internals.port = chrome.runtime.connect({ name: "content" }); internals.port.onMessage.addListener(internals.onMessage); -console.log('Content Script Loaded'); +console.log("Content Script Loaded"); // Indicates to the background script that we executed correctly true; diff --git a/extension/junction.js b/extension/junction.js index 889e23f..3e8b4d9 100644 --- a/extension/junction.js +++ b/extension/junction.js @@ -1,19 +1,18 @@ const internals = { - - promisesSupported: !!(window.browser), + promisesSupported: !!window.browser, port: null, currentUrl: null, icons: { call: { - 16: 'icons/action-16.png', - 32: 'icons/action-32.png' + 16: "icons/action-16.png", + 32: "icons/action-32.png", }, hangUp: { - 16: 'icons/hang_up-16.png', - 32: 'icons/hang_up-32.png' - } + 16: "icons/hang_up-16.png", + 32: "icons/hang_up-32.png", + }, }, onClick() { @@ -25,89 +24,82 @@ const internals = { }, onConnect(port) { - internals.port = port; port.onDisconnect.addListener(internals.onDisconnect); port.onMessage.addListener(internals.onMessage); port.postMessage({ - action: 'joinAudioCall', + action: "joinAudioCall", data: { currentUrl: internals.currentUrl, - tada: internals.getRoot().runtime.getURL('sounds/tada.wav') - } + tada: internals.getRoot().runtime.getURL("sounds/tada.wav"), + }, }); internals.getRoot().browserAction.enable(); - internals.setIcon('hangUp'); + internals.setIcon("hangUp"); }, onMessage(message) { - - if (message.action === 'error') { - internals.getRoot().browserAction.setBadgeText({ text: 'x' }, () => {}); + if (message.action === "error") { + internals.getRoot().browserAction.setBadgeText({ text: "x" }, () => {}); } }, onDisconnect() { - internals.getRoot().browserAction.setBadgeText({ text: '' }, () => {}); - internals.setIcon('call'); + internals.getRoot().browserAction.setBadgeText({ text: "" }, () => {}); + internals.setIcon("call"); internals.currentUrl = null; internals.port = null; internals.getRoot().browserAction.enable(); }, async joinAudioCall() { - internals.getRoot().browserAction.disable(); const activeTabs = await internals.getActiveTabs(); internals.currentUrl = activeTabs[0].url; - const execution = await internals.getRoot().tabs.executeScript(activeTabs[0].id, { - file: '/build/content_script.js' - }, () => { - - if (internals.getRoot().runtime.lastError) { - internals.onDisconnect(); - } - }); + const execution = await internals.getRoot().tabs.executeScript( + activeTabs[0].id, + { + file: "/build/content_script.js", + }, + () => { + if (internals.getRoot().runtime.lastError) { + internals.onDisconnect(); + } + }, + ); if (execution && !execution[0]) { internals.onDisconnect(); } - } - , - + }, hangUp() { - internals.getRoot().browserAction.disable(); internals.port.postMessage({ - action: 'hangUp' + action: "hangUp", }); }, isInCall() { - - return !!(internals.port); + return !!internals.port; }, setIcon(iconSet) { - internals.getRoot().browserAction.setIcon({ - path: internals.icons[iconSet] + path: internals.icons[iconSet], }); }, getRoot() { - return window.browser || window.chrome; }, // Chrome doesn't yet implement the promise based tabs.query :'( getActiveTabs() { - const query = { currentWindow: true, - active: true + active: true, }; if (internals.promisesSupported) { @@ -115,9 +107,7 @@ const internals = { } return new Promise((resolve) => { - internals.getRoot().tabs.query(query, (tabs) => { - return resolve(tabs); }); }); diff --git a/extension/manifest.json b/extension/manifest.json index 2a5723a..d138f67 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -4,9 +4,7 @@ "version": "1.0.0", "description": "Jump into an audio call on any URL", - "permissions": [ - "activeTab" - ], + "permissions": ["activeTab"], "icons": { "48": "icons/junction.png" @@ -23,7 +21,5 @@ } }, - "web_accessible_resources": [ - "sounds/tada.wav" - ] + "web_accessible_resources": ["sounds/tada.wav"] } diff --git a/extension/media.js b/extension/media.js index c13c6f1..5e83ac7 100644 --- a/extension/media.js +++ b/extension/media.js @@ -1,19 +1,19 @@ const internals = { - mediaStream: null + mediaStream: null, }; export default { async start() { - - internals.mediaStream = internals.mediaStream || await navigator.mediaDevices.getUserMedia({ - audio: true - }); + internals.mediaStream = + internals.mediaStream || + (await navigator.mediaDevices.getUserMedia({ + audio: true, + })); return internals.mediaStream; }, stop() { - if (!internals.mediaStream) { return; } @@ -23,5 +23,5 @@ export default { } internals.mediaStream = null; - } + }, }; diff --git a/extension/peers.js b/extension/peers.js index 51fd036..2b4e3d6 100644 --- a/extension/peers.js +++ b/extension/peers.js @@ -2,46 +2,42 @@ const internals = { peers: {}, createAudioElement(source) { - - const audioElement = document.createElement('audio'); - audioElement.setAttribute('class', 'junction-call-audio'); - audioElement.autoplay = 'autoplay'; + const audioElement = document.createElement("audio"); + audioElement.setAttribute("class", "junction-call-audio"); + audioElement.autoplay = "autoplay"; // WE WILL NOT LOSE TADA SUPPORT - if (typeof source === 'string') { + if (typeof source === "string") { audioElement.src = source; - } - else { + } else { audioElement.srcObject = source; } - document.querySelector('body').appendChild(audioElement); + document.querySelector("body").appendChild(audioElement); return audioElement; - } + }, }; export default { add(id, source) { - internals.peers[id] && this.remove(id); - internals.peers[id] = internals.createAudioElement(source) + internals.peers[id] = internals.createAudioElement(source); }, remove(id) { - internals.peers[id] && internals.peers[id].remove(); delete internals.peers[id]; }, count() { - return Object.keys(internals.peers).length; }, reset() { - internals.peers = {}; - document.querySelectorAll('.junction-call-audio').forEach((audioElement) => audioElement.remove()); - } + document + .querySelectorAll(".junction-call-audio") + .forEach((audioElement) => audioElement.remove()); + }, }; diff --git a/extension/pnpm-lock.yaml b/extension/pnpm-lock.yaml index aae0fbf..2f6eaea 100644 --- a/extension/pnpm-lock.yaml +++ b/extension/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: "6.0" settings: autoInstallPeers: true @@ -10,10 +10,10 @@ dependencies: version: 4.7.2 devDependencies: - '@rollup/plugin-commonjs': + "@rollup/plugin-commonjs": specifier: ^25.0.4 version: 25.0.4(rollup@3.28.1) - '@rollup/plugin-node-resolve': + "@rollup/plugin-node-resolve": specifier: ^15.2.1 version: 15.2.1(rollup@3.28.1) rollup: @@ -21,21 +21,26 @@ devDependencies: version: 3.28.1 packages: - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, + } dev: true /@rollup/plugin-commonjs@25.0.4(rollup@3.28.1): - resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==, + } + engines: { node: ">=14.0.0" } peerDependencies: rollup: ^2.68.0||^3.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.1) + "@rollup/pluginutils": 5.0.3(rollup@3.28.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 @@ -45,16 +50,19 @@ packages: dev: true /@rollup/plugin-node-resolve@15.2.1(rollup@3.28.1): - resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==, + } + engines: { node: ">=14.0.0" } peerDependencies: rollup: ^2.78.0||^3.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.1) - '@types/resolve': 1.20.2 + "@rollup/pluginutils": 5.0.3(rollup@3.28.1) + "@types/resolve": 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 @@ -63,56 +71,83 @@ packages: dev: true /@rollup/pluginutils@5.0.3(rollup@3.28.1): - resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==, + } + engines: { node: ">=14.0.0" } peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + "@types/estree": 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 3.28.1 dev: true /@socket.io/component-emitter@3.1.0: - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + resolution: + { + integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==, + } dev: false /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + resolution: + { + integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==, + } dev: true /@types/resolve@1.20.2: - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + resolution: + { + integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, + } dev: true /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } dev: true /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } dependencies: balanced-match: 1.0.2 dev: true /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, + } + engines: { node: ">=6" } dev: true /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + resolution: + { + integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, + } dev: true /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: ">=6.0" } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true @@ -121,14 +156,20 @@ packages: dev: false /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + } + engines: { node: ">=0.10.0" } dev: true /engine.io-client@6.5.2: - resolution: {integrity: sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==} + resolution: + { + integrity: sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==, + } dependencies: - '@socket.io/component-emitter': 3.1.0 + "@socket.io/component-emitter": 3.1.0 debug: 4.3.4 engine.io-parser: 5.2.1 ws: 8.11.0 @@ -140,33 +181,51 @@ packages: dev: false /engine.io-parser@5.2.1: - resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==, + } + engines: { node: ">=10.0.0" } dev: false /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + } dev: true /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } dev: true /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] requiresBuild: true dev: true optional: true /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + } dev: true /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + } + engines: { node: ">=12" } dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -176,81 +235,123 @@ packages: dev: true /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + } + engines: { node: ">= 0.4.0" } dependencies: function-bind: 1.1.1 dev: true /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } dev: true /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==, + } + engines: { node: ">=6" } dependencies: builtin-modules: 3.3.0 dev: true /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + resolution: + { + integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==, + } dependencies: has: 1.0.3 dev: true /is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + resolution: + { + integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, + } dev: true /is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + resolution: + { + integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==, + } dependencies: - '@types/estree': 1.0.1 + "@types/estree": 1.0.1 dev: true /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==, + } + engines: { node: ">=12" } dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + "@jridgewell/sourcemap-codec": 1.4.15 dev: true /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, + } + engines: { node: ">=10" } dependencies: brace-expansion: 2.0.1 dev: true /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } dependencies: wrappy: 1.0.2 dev: true /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } dev: true /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } dev: true /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + resolution: + { + integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==, + } hasBin: true dependencies: is-core-module: 2.13.0 @@ -259,18 +360,24 @@ packages: dev: true /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + resolution: + { + integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==, + } + engines: { node: ">=14.18.0", npm: ">=8.0.0" } hasBin: true optionalDependencies: fsevents: 2.3.3 dev: true /socket.io-client@4.7.2: - resolution: {integrity: sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==, + } + engines: { node: ">=10.0.0" } dependencies: - '@socket.io/component-emitter': 3.1.0 + "@socket.io/component-emitter": 3.1.0 debug: 4.3.4 engine.io-client: 6.5.2 socket.io-parser: 4.2.4 @@ -281,27 +388,39 @@ packages: dev: false /socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==, + } + engines: { node: ">=10.0.0" } dependencies: - '@socket.io/component-emitter': 3.1.0 + "@socket.io/component-emitter": 3.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } dev: true /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } dev: true /ws@8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==, + } + engines: { node: ">=10.0.0" } peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -313,6 +432,9 @@ packages: dev: false /xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==, + } + engines: { node: ">=0.4.0" } dev: false diff --git a/extension/rollup.config.js b/extension/rollup.config.js index 20f303a..6d8d843 100644 --- a/extension/rollup.config.js +++ b/extension/rollup.config.js @@ -1,10 +1,10 @@ -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import CommonJS from '@rollup/plugin-commonjs'; +import { nodeResolve } from "@rollup/plugin-node-resolve"; +import CommonJS from "@rollup/plugin-commonjs"; export default { - input: './content_script.js', - output: { - file: 'build/content_script.js' + input: "./content_script.js", + output: { + file: "build/content_script.js", }, - plugins: [nodeResolve({browser: true}), CommonJS()] + plugins: [nodeResolve({ browser: true }), CommonJS()], };