]> git.r.bdr.sh - rbdr/junction/commitdiff
Format extension
authorRuben Beltran del Rio <redacted>
Wed, 30 Aug 2023 17:36:11 +0000 (19:36 +0200)
committerRuben Beltran del Rio <redacted>
Wed, 30 Aug 2023 17:36:11 +0000 (19:36 +0200)
extension/content_script.js
extension/junction.js
extension/manifest.json
extension/media.js
extension/peers.js
extension/pnpm-lock.yaml
extension/rollup.config.js

index 8ca721a70cc3a93ef58b0cb29dc22ad9b514d5bb..26da2b054ecec0fcff3513d267a6867b9e235d7d 100644 (file)
@@ -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 = {
 
 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,
 
   port: null,
   socket: null,
@@ -17,63 +14,58 @@ const internals = {
     internals[message.action](message.data);
   },
 
     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, {
     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");
       });
 
         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) => {
 
         const remoteStream = new MediaStream();
         peerConnection.ontrack = (event) => {
@@ -89,70 +81,65 @@ const internals = {
           await peerConnection.setLocalDescription(offer);
 
           // Emit the offer to the peer
           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`);
       });
 
         };
 
         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
 
         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`);
       });
         console.log(`There are now ${Peers.count()} participants`);
       });
-    }
-    catch (err) {
-
+    } catch (err) {
       internals.port.postMessage({
       internals.port.postMessage({
-        action: 'error'
+        action: "error",
       });
       internals.port.disconnect();
     }
   },
 
   hangUp() {
       });
       internals.port.disconnect();
     }
   },
 
   hangUp() {
-
     Peers.reset();
     Media.stop();
     internals.socket.close();
     internals.port.disconnect();
     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);
 
 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;
 
 // Indicates to the background script that we executed correctly
 true;
index 889e23f975dfdd3dccb9ce7dd081367fe33023e8..3e8b4d9e4996b50c738d476df389573ad0e4d09d 100644 (file)
@@ -1,19 +1,18 @@
 const internals = {
 const internals = {
-
-  promisesSupported: !!(window.browser),
+  promisesSupported: !!window.browser,
   port: null,
   currentUrl: null,
 
   icons: {
     call: {
   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: {
     },
 
     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() {
   },
 
   onClick() {
@@ -25,89 +24,82 @@ const internals = {
   },
 
   onConnect(port) {
   },
 
   onConnect(port) {
-
     internals.port = port;
     port.onDisconnect.addListener(internals.onDisconnect);
     port.onMessage.addListener(internals.onMessage);
     port.postMessage({
     internals.port = port;
     port.onDisconnect.addListener(internals.onDisconnect);
     port.onMessage.addListener(internals.onMessage);
     port.postMessage({
-      action: 'joinAudioCall',
+      action: "joinAudioCall",
       data: {
         currentUrl: internals.currentUrl,
       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.getRoot().browserAction.enable();
-    internals.setIcon('hangUp');
+    internals.setIcon("hangUp");
   },
 
   onMessage(message) {
   },
 
   onMessage(message) {
-
-    if (message.action === 'error') {
-      internals.getRoot().browserAction.setBadgeText({ text: 'x' }, () => {});
+    if (message.action === "error") {
+      internals.getRoot().browserAction.setBadgeText({ text: "x" }, () => {});
     }
   },
 
   onDisconnect() {
     }
   },
 
   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.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;
     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();
     }
 
     if (execution && !execution[0]) {
       internals.onDisconnect();
     }
-  }
-  ,
-
+  },
   hangUp() {
   hangUp() {
-
     internals.getRoot().browserAction.disable();
     internals.port.postMessage({
     internals.getRoot().browserAction.disable();
     internals.port.postMessage({
-      action: 'hangUp'
+      action: "hangUp",
     });
   },
 
   isInCall() {
     });
   },
 
   isInCall() {
-
-    return !!(internals.port);
+    return !!internals.port;
   },
 
   setIcon(iconSet) {
   },
 
   setIcon(iconSet) {
-
     internals.getRoot().browserAction.setIcon({
     internals.getRoot().browserAction.setIcon({
-      path: internals.icons[iconSet]
+      path: internals.icons[iconSet],
     });
   },
 
   getRoot() {
     });
   },
 
   getRoot() {
-
     return window.browser || window.chrome;
   },
 
   // Chrome doesn't yet implement the promise based tabs.query :'(
 
   getActiveTabs() {
     return window.browser || window.chrome;
   },
 
   // Chrome doesn't yet implement the promise based tabs.query :'(
 
   getActiveTabs() {
-
     const query = {
       currentWindow: true,
     const query = {
       currentWindow: true,
-      active: true
+      active: true,
     };
 
     if (internals.promisesSupported) {
     };
 
     if (internals.promisesSupported) {
@@ -115,9 +107,7 @@ const internals = {
     }
 
     return new Promise((resolve) => {
     }
 
     return new Promise((resolve) => {
-
       internals.getRoot().tabs.query(query, (tabs) => {
       internals.getRoot().tabs.query(query, (tabs) => {
-
         return resolve(tabs);
       });
     });
         return resolve(tabs);
       });
     });
index 2a5723a98800ec1d37a7e9f8d2157aca6bc24a27..d138f67efd078ef39636fd113f03bfc324a0a2d1 100644 (file)
@@ -4,9 +4,7 @@
   "version": "1.0.0",
   "description": "Jump into an audio call on any URL",
 
   "version": "1.0.0",
   "description": "Jump into an audio call on any URL",
 
-  "permissions": [
-    "activeTab"
-  ],
+  "permissions": ["activeTab"],
 
   "icons": {
     "48": "icons/junction.png"
 
   "icons": {
     "48": "icons/junction.png"
@@ -23,7 +21,5 @@
     }
   },
 
     }
   },
 
-  "web_accessible_resources": [
-    "sounds/tada.wav"
-  ]
+  "web_accessible_resources": ["sounds/tada.wav"]
 }
 }
index c13c6f12aeb13dd03ef3e40969a8bb4ae8d11948..5e83ac74900d17fe6086cd269ae511c7fa8cb19c 100644 (file)
@@ -1,19 +1,19 @@
 const internals = {
 const internals = {
-  mediaStream: null
+  mediaStream: null,
 };
 
 export default {
   async start() {
 };
 
 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() {
 
     return internals.mediaStream;
   },
 
   stop() {
-
     if (!internals.mediaStream) {
       return;
     }
     if (!internals.mediaStream) {
       return;
     }
@@ -23,5 +23,5 @@ export default {
     }
 
     internals.mediaStream = null;
     }
 
     internals.mediaStream = null;
-  }
+  },
 };
 };
index 51fd036b63053e68dafa49c6a20c7034d26918d8..2b4e3d68325819430748144deff796e42069e878 100644 (file)
@@ -2,46 +2,42 @@ const internals = {
   peers: {},
 
   createAudioElement(source) {
   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
 
     // WE WILL NOT LOSE TADA SUPPORT
-    if (typeof source === 'string') {
+    if (typeof source === "string") {
       audioElement.src = source;
       audioElement.src = source;
-    }
-    else {
+    } else {
       audioElement.srcObject = source;
     }
 
       audioElement.srcObject = source;
     }
 
-    document.querySelector('body').appendChild(audioElement);
+    document.querySelector("body").appendChild(audioElement);
 
     return audioElement;
 
     return audioElement;
-  }
+  },
 };
 
 export default {
   add(id, source) {
 };
 
 export default {
   add(id, source) {
-
     internals.peers[id] && this.remove(id);
     internals.peers[id] && this.remove(id);
-    internals.peers[id] = internals.createAudioElement(source)
+    internals.peers[id] = internals.createAudioElement(source);
   },
 
   remove(id) {
   },
 
   remove(id) {
-
     internals.peers[id] && internals.peers[id].remove();
     delete internals.peers[id];
   },
 
   count() {
     internals.peers[id] && internals.peers[id].remove();
     delete internals.peers[id];
   },
 
   count() {
-
     return Object.keys(internals.peers).length;
   },
 
   reset() {
     return Object.keys(internals.peers).length;
   },
 
   reset() {
-
     internals.peers = {};
     internals.peers = {};
-    document.querySelectorAll('.junction-call-audio').forEach((audioElement) => audioElement.remove());
-  }
+    document
+      .querySelectorAll(".junction-call-audio")
+      .forEach((audioElement) => audioElement.remove());
+  },
 };
 };
index aae0fbf2ab71ab530bf747c91bbc448092ee60b9..2f6eaea02976b4ef394d12d9cdab47c7355ddbab 100644 (file)
@@ -1,4 +1,4 @@
-lockfileVersion: '6.0'
+lockfileVersion: "6.0"
 
 settings:
   autoInstallPeers: true
 
 settings:
   autoInstallPeers: true
@@ -10,10 +10,10 @@ dependencies:
     version: 4.7.2
 
 devDependencies:
     version: 4.7.2
 
 devDependencies:
-  '@rollup/plugin-commonjs':
+  "@rollup/plugin-commonjs":
     specifier: ^25.0.4
     version: 25.0.4(rollup@3.28.1)
     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:
     specifier: ^15.2.1
     version: 15.2.1(rollup@3.28.1)
   rollup:
@@ -21,21 +21,26 @@ devDependencies:
     version: 3.28.1
 
 packages:
     version: 3.28.1
 
 packages:
-
   /@jridgewell/sourcemap-codec@1.4.15:
   /@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):
     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:
     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
       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):
     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:
     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
       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):
     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:
     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:
       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:
     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:
     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:
     dev: true
 
   /balanced-match@1.0.2:
-    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+    resolution:
+      {
+        integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
+      }
     dev: true
 
   /brace-expansion@2.0.1:
     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:
     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:
     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:
     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:
     peerDependencies:
-      supports-color: '*'
+      supports-color: "*"
     peerDependenciesMeta:
       supports-color:
         optional: true
     peerDependenciesMeta:
       supports-color:
         optional: true
@@ -121,14 +156,20 @@ packages:
     dev: false
 
   /deepmerge@4.3.1:
     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:
     dev: true
 
   /engine.io-client@6.5.2:
-    resolution: {integrity: sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==}
+    resolution:
+      {
+        integrity: sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==,
+      }
     dependencies:
     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
       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:
     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:
     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:
     dev: true
 
   /fs.realpath@1.0.0:
-    resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+    resolution:
+      {
+        integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==,
+      }
     dev: true
 
   /fsevents@2.3.3:
     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:
     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:
     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
     dependencies:
       fs.realpath: 1.0.0
       inflight: 1.0.6
@@ -176,81 +235,123 @@ packages:
     dev: true
 
   /has@1.0.3:
     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:
     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:
     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:
     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:
     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:
     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:
     dev: true
 
   /is-reference@1.2.1:
-    resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
+    resolution:
+      {
+        integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==,
+      }
     dependencies:
     dependencies:
-      '@types/estree': 1.0.1
+      "@types/estree": 1.0.1
     dev: true
 
   /magic-string@0.27.0:
     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:
     dependencies:
-      '@jridgewell/sourcemap-codec': 1.4.15
+      "@jridgewell/sourcemap-codec": 1.4.15
     dev: true
 
   /minimatch@5.1.6:
     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:
     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:
     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:
     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:
     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:
     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
     hasBin: true
     dependencies:
       is-core-module: 2.13.0
@@ -259,18 +360,24 @@ packages:
     dev: true
 
   /rollup@3.28.1:
     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:
     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:
     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
       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:
     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:
     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:
       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:
     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:
     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
     peerDependencies:
       bufferutil: ^4.0.1
       utf-8-validate: ^5.0.2
@@ -313,6 +432,9 @@ packages:
     dev: false
 
   /xmlhttprequest-ssl@2.0.0:
     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
     dev: false
index 20f303a9ca34b414f02599ac3e7cad5afaec22c2..6d8d843740d6129ace17b594c29aa737d64adaa6 100644 (file)
@@ -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 {
 
 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()],
 };
 };