-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,
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) => {
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;
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() {
},
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) {
}
return new Promise((resolve) => {
-
internals.getRoot().tabs.query(query, (tabs) => {
-
return resolve(tabs);
});
});
"version": "1.0.0",
"description": "Jump into an audio call on any URL",
- "permissions": [
- "activeTab"
- ],
+ "permissions": ["activeTab"],
"icons": {
"48": "icons/junction.png"
}
},
- "web_accessible_resources": [
- "sounds/tada.wav"
- ]
+ "web_accessible_resources": ["sounds/tada.wav"]
}
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;
}
}
internals.mediaStream = null;
- }
+ },
};
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());
+ },
};
-lockfileVersion: '6.0'
+lockfileVersion: "6.0"
settings:
autoInstallPeers: true
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:
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
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
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
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
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
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
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
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
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
-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()],
};