diff --git a/config/index.js b/config/index.js
index c77e4d00..cf33369e 100644
--- a/config/index.js
+++ b/config/index.js
@@ -1,11 +1,17 @@
const defaultConfig = require("./defaults");
const plugins = require("./plugins");
const store = require("./store");
+const { restart } = require("../providers/app-controls");
const set = (key, value) => {
store.set(key, value);
};
+function setMenuOption(key, value) {
+ set(key, value);
+ if (store.get("options.restartOnConfigChanges")) restart();
+}
+
const get = (key) => {
return store.get(key);
};
@@ -14,6 +20,7 @@ module.exports = {
defaultConfig,
get,
set,
+ setMenuOption,
edit: () => store.openInEditor(),
watch: (cb) => {
store.onDidChange("options", cb);
diff --git a/config/plugins.js b/config/plugins.js
index 7a73335c..b8c00f83 100644
--- a/config/plugins.js
+++ b/config/plugins.js
@@ -1,4 +1,5 @@
const store = require("./store");
+const { restart } = require("../providers/app-controls");
function getEnabled() {
const plugins = store.get("plugins");
@@ -24,16 +25,21 @@ function setOptions(plugin, options) {
});
}
+function setMenuOptions(plugin, options) {
+ setOptions(plugin, options);
+ if (store.get("options.restartOnConfigChanges")) restart();
+}
+
function getOptions(plugin) {
return store.get("plugins")[plugin];
}
function enable(plugin) {
- setOptions(plugin, { enabled: true });
+ setMenuOptions(plugin, { enabled: true });
}
function disable(plugin) {
- setOptions(plugin, { enabled: false });
+ setMenuOptions(plugin, { enabled: false });
}
module.exports = {
@@ -42,5 +48,6 @@ module.exports = {
enable,
disable,
setOptions,
+ setMenuOptions,
getOptions,
};
diff --git a/index.js b/index.js
index fd75c133..2fdfac58 100644
--- a/index.js
+++ b/index.js
@@ -26,6 +26,22 @@ unhandled({
process.env.NODE_OPTIONS = "";
const app = electron.app;
+// Prevent window being garbage collected
+let mainWindow;
+autoUpdater.autoDownload = false;
+
+if(config.get("options.singleInstanceLock")){
+ const gotTheLock = app.requestSingleInstanceLock();
+ if (!gotTheLock) app.quit();
+
+ app.on('second-instance', () => {
+ if (!mainWindow) return;
+ if (mainWindow.isMinimized()) mainWindow.restore();
+ if (!mainWindow.isVisible()) mainWindow.show();
+ mainWindow.focus();
+ });
+}
+
app.commandLine.appendSwitch(
"js-flags",
// WebAssembly flags
@@ -54,10 +70,6 @@ require("electron-debug")({
showDevTools: false //disable automatic devTools on new window
});
-// Prevent window being garbage collected
-let mainWindow;
-autoUpdater.autoDownload = false;
-
let icon = "assets/youtube-music.png";
if (process.platform == "win32") {
icon = "assets/generated/icon.ico";
@@ -160,22 +172,39 @@ function createMainWindow() {
win.on("closed", onClosed);
win.on("move", () => {
+ if (win.isMaximized()) return;
let position = win.getPosition();
- config.set("window-position", { x: position[0], y: position[1] });
+ lateSave("window-position", { x: position[0], y: position[1] });
});
+ let winWasMaximized;
+
win.on("resize", () => {
const windowSize = win.getSize();
- config.set("window-maximized", win.isMaximized());
- if (!win.isMaximized()) {
- config.set("window-size", {
+ const isMaximized = win.isMaximized();
+ if (winWasMaximized !== isMaximized) {
+ winWasMaximized = isMaximized;
+ config.set("window-maximized", isMaximized);
+ }
+ if (!isMaximized) {
+ lateSave("window-size", {
width: windowSize[0],
height: windowSize[1],
});
}
});
+ let savedTimeouts = {};
+ function lateSave(key, value) {
+ if (savedTimeouts[key]) clearTimeout(savedTimeouts[key]);
+
+ savedTimeouts[key] = setTimeout(() => {
+ config.set(key, value);
+ savedTimeouts[key] = undefined;
+ }, 1000)
+ }
+
win.webContents.on("render-process-gone", (event, webContents, details) => {
showUnresponsiveDialog(win, details);
});
@@ -326,12 +355,6 @@ app.on("ready", () => {
mainWindow = createMainWindow();
setApplicationMenu(mainWindow);
- if (config.get("options.restartOnConfigChanges")) {
- config.watch(() => {
- app.relaunch();
- app.exit();
- });
- }
setUpTray(app, mainWindow);
// Autostart at login
diff --git a/menu.js b/menu.js
index 9ae0cdb6..d3749fd6 100644
--- a/menu.js
+++ b/menu.js
@@ -68,7 +68,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.autoUpdates"),
click: (item) => {
- config.set("options.autoUpdates", item.checked);
+ config.setMenuOption("options.autoUpdates", item.checked);
},
},
{
@@ -76,7 +76,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.resumeOnStart"),
click: (item) => {
- config.set("options.resumeOnStart", item.checked);
+ config.setMenuOption("options.resumeOnStart", item.checked);
},
},
{
@@ -84,7 +84,20 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.removeUpgradeButton"),
click: (item) => {
- config.set("options.removeUpgradeButton", item.checked);
+ config.setMenuOption("options.removeUpgradeButton", item.checked);
+ },
+ },
+ {
+ label: "Single instance lock",
+ type: "checkbox",
+ checked: config.get("options.singleInstanceLock"),
+ click: (item) => {
+ config.set("options.singleInstanceLock", item.checked);
+ if (item.checked && !app.hasSingleInstanceLock()) {
+ app.requestSingleInstanceLock();
+ } else if (!item.checked && app.hasSingleInstanceLock()) {
+ app.releaseSingleInstanceLock();
+ }
},
},
...(is.windows() || is.linux()
@@ -94,7 +107,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.hideMenu"),
click: (item) => {
- config.set("options.hideMenu", item.checked);
+ config.setMenuOption("options.hideMenu", item.checked);
if (item.checked && !config.get("options.hideMenuWarned")) {
dialog.showMessageBox(win, {
type: 'info', title: 'Hide Menu Enabled',
@@ -114,7 +127,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.startAtLogin"),
click: (item) => {
- config.set("options.startAtLogin", item.checked);
+ config.setMenuOption("options.startAtLogin", item.checked);
},
},
]
@@ -127,8 +140,8 @@ const mainMenuTemplate = (win) => {
type: "radio",
checked: !config.get("options.tray"),
click: () => {
- config.set("options.tray", false);
- config.set("options.appVisible", true);
+ config.setMenuOption("options.tray", false);
+ config.setMenuOption("options.appVisible", true);
},
},
{
@@ -137,8 +150,8 @@ const mainMenuTemplate = (win) => {
checked:
config.get("options.tray") && config.get("options.appVisible"),
click: () => {
- config.set("options.tray", true);
- config.set("options.appVisible", true);
+ config.setMenuOption("options.tray", true);
+ config.setMenuOption("options.appVisible", true);
},
},
{
@@ -147,8 +160,8 @@ const mainMenuTemplate = (win) => {
checked:
config.get("options.tray") && !config.get("options.appVisible"),
click: () => {
- config.set("options.tray", true);
- config.set("options.appVisible", false);
+ config.setMenuOption("options.tray", true);
+ config.setMenuOption("options.appVisible", false);
},
},
{ type: "separator" },
@@ -157,7 +170,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.trayClickPlayPause"),
click: (item) => {
- config.set("options.trayClickPlayPause", item.checked);
+ config.setMenuOption("options.trayClickPlayPause", item.checked);
},
},
],
@@ -179,7 +192,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.overrideUserAgent"),
click: (item) => {
- config.set("options.overrideUserAgent", item.checked);
+ config.setMenuOption("options.overrideUserAgent", item.checked);
}
},
{
@@ -187,7 +200,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.disableHardwareAcceleration"),
click: (item) => {
- config.set("options.disableHardwareAcceleration", item.checked);
+ config.setMenuOption("options.disableHardwareAcceleration", item.checked);
},
},
{
@@ -195,7 +208,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.restartOnConfigChanges"),
click: (item) => {
- config.set("options.restartOnConfigChanges", item.checked);
+ config.setMenuOption("options.restartOnConfigChanges", item.checked);
},
},
{
@@ -203,7 +216,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.autoResetAppCache"),
click: (item) => {
- config.set("options.autoResetAppCache", item.checked);
+ config.setMenuOption("options.autoResetAppCache", item.checked);
},
},
{ type: "separator" },
@@ -324,7 +337,7 @@ async function setProxy(item, win) {
}, win);
if (typeof output === "string") {
- config.set("options.proxy", output);
+ config.setMenuOption("options.proxy", output);
item.checked = output !== "";
} else { //user pressed cancel
item.checked = !item.checked; //reset checkbox
diff --git a/package.json b/package.json
index 15be4d6e..00a0a570 100644
--- a/package.json
+++ b/package.json
@@ -82,21 +82,21 @@
"npm": "Please use yarn and not npm"
},
"dependencies": {
- "@cliqz/adblocker-electron": "^1.23.1",
- "@electron/remote": "^2.0.1",
+ "@cliqz/adblocker-electron": "^1.23.4",
+ "@electron/remote": "^2.0.4",
"@ffmpeg/core": "^0.10.0",
- "@ffmpeg/ffmpeg": "^0.10.0",
+ "@ffmpeg/ffmpeg": "^0.10.1",
"async-mutex": "^0.3.2",
"browser-id3-writer": "^4.4.0",
- "chokidar": "^3.5.2",
- "custom-electron-prompt": "^1.4.0",
+ "chokidar": "^3.5.3",
+ "custom-electron-prompt": "^1.4.1",
"custom-electron-titlebar": "^3.2.10",
- "discord-rpc": "^3.2.0",
+ "discord-rpc": "^4.0.1",
"electron-better-web-request": "^1.0.1",
"electron-debug": "^3.2.0",
"electron-is": "^3.0.0",
"electron-localshortcut": "^3.2.1",
- "electron-store": "^7.0.3",
+ "electron-store": "^8.0.1",
"electron-unhandled": "^3.0.2",
"electron-updater": "^4.6.3",
"filenamify": "^4.3.0",
@@ -104,13 +104,13 @@
"md5": "^2.3.0",
"mpris-service": "^2.1.2",
"node-fetch": "^2.6.7",
- "node-notifier": "^9.0.1",
- "ytdl-core": "^4.10.0",
+ "node-notifier": "^10.0.1",
+ "ytdl-core": "^4.10.1",
"ytpl": "^2.2.3"
},
"devDependencies": {
- "electron": "^16.0.5",
- "electron-builder": "^22.10.5",
+ "electron": "^17.0.0",
+ "electron-builder": "^22.14.5",
"electron-devtools-installer": "^3.1.1",
"electron-icon-maker": "0.0.5",
"jest": "^27.3.1",
diff --git a/plugins/adblocker/front.js b/plugins/adblocker/preload.js
similarity index 100%
rename from plugins/adblocker/front.js
rename to plugins/adblocker/preload.js
diff --git a/plugins/discord/menu.js b/plugins/discord/menu.js
index 49a087d6..8dba9ffa 100644
--- a/plugins/discord/menu.js
+++ b/plugins/discord/menu.js
@@ -1,5 +1,7 @@
-const { setOptions } = require("../../config/plugins");
-const { edit } = require("../../config");
+const prompt = require("custom-electron-prompt");
+
+const { setMenuOptions } = require("../../config/plugins");
+const promptOptions = require("../../providers/prompt-options");
const { clear, connect, registerRefresh, isConnected } = require("./back");
let hasRegisterred = false;
@@ -26,7 +28,7 @@ module.exports = (win, options, refreshMenu) => {
checked: options.activityTimoutEnabled,
click: (item) => {
options.activityTimoutEnabled = item.checked;
- setOptions('discord', options);
+ setMenuOptions('discord', options);
},
},
{
@@ -35,13 +37,29 @@ module.exports = (win, options, refreshMenu) => {
checked: options.listenAlong,
click: (item) => {
options.listenAlong = item.checked;
- setOptions('discord', options);
+ setMenuOptions('discord', options);
},
},
{
- label: "Set timeout time in config",
- // open config.json
- click: edit,
+ label: "Set inactivity timeout",
+ click: () => setInactivityTimeout(win, options),
},
];
};
+
+async function setInactivityTimeout(win, options) {
+ let output = await prompt({
+ title: 'Set Inactivity Timeout',
+ label: 'Enter inactivity timeout in seconds:',
+ value: Math.round((options.activityTimoutTime ?? 0) / 1e3),
+ type: "counter",
+ counterOptions: { minimum: 0, multiFire: true },
+ width: 450,
+ ...promptOptions()
+ }, win)
+
+ if (output) {
+ options.activityTimoutTime = Math.round(output * 1e3);
+ setMenuOptions("discord", options);
+ }
+}
diff --git a/plugins/downloader/menu.js b/plugins/downloader/menu.js
index 94d12488..622370a2 100644
--- a/plugins/downloader/menu.js
+++ b/plugins/downloader/menu.js
@@ -7,7 +7,7 @@ const ytpl = require("ytpl");
const chokidar = require('chokidar');
const filenamify = require('filenamify');
-const { setOptions } = require("../../config/plugins");
+const { setMenuOptions } = require("../../config/plugins");
const { sendError } = require("./back");
const { defaultMenuDownloadLabel, getFolder, presets, setBadge } = require("./utils");
@@ -49,7 +49,7 @@ module.exports = (win, options) => {
});
if (result) {
options.downloadFolder = result[0];
- setOptions("downloader", options);
+ setMenuOptions("downloader", options);
} // else = user pressed cancel
},
},
@@ -60,7 +60,7 @@ module.exports = (win, options) => {
type: "radio",
click: () => {
options.preset = preset;
- setOptions("downloader", options);
+ setMenuOptions("downloader", options);
},
checked: options.preset === preset || presets[preset] === undefined,
})),
diff --git a/plugins/lyrics-genius/front.js b/plugins/lyrics-genius/front.js
index 48227e1d..4fcb3153 100644
--- a/plugins/lyrics-genius/front.js
+++ b/plugins/lyrics-genius/front.js
@@ -3,20 +3,34 @@ const is = require("electron-is");
module.exports = () => {
ipcRenderer.on("update-song-info", (_, extractedSongInfo) => {
- const lyricsTab = document.querySelector('tp-yt-paper-tab[tabindex="-1"]');
+ const tabList = document.querySelectorAll("tp-yt-paper-tab");
+ const tabs = {
+ upNext: tabList[0],
+ lyrics: tabList[1],
+ discover: tabList[2],
+ }
// Check if disabled
- if (!lyricsTab || !lyricsTab.hasAttribute("disabled")) {
+ if (!tabs.lyrics?.hasAttribute("disabled")) {
return;
}
+ let hasLyrics = true;
+
const html = ipcRenderer.sendSync(
"search-genius-lyrics",
extractedSongInfo
);
if (!html) {
+ // Delete previous lyrics if tab is open and couldn't get new lyrics
+ checkLyricsContainer(() => {
+ hasLyrics = false;
+ setTabsOnclick(undefined);
+ });
return;
- } else if (is.dev()) {
+ }
+
+ if (is.dev()) {
console.log("Fetched lyrics from Genius");
}
@@ -35,27 +49,16 @@ module.exports = () => {
return;
}
- lyricsTab.removeAttribute("disabled");
- lyricsTab.removeAttribute("aria-disabled");
- document.querySelector("tp-yt-paper-tab").onclick = () => {
- lyricsTab.removeAttribute("disabled");
- lyricsTab.removeAttribute("aria-disabled");
- };
+ enableLyricsTab();
- lyricsTab.onclick = () => {
+ setTabsOnclick(enableLyricsTab);
+
+ checkLyricsContainer();
+
+ tabs.lyrics.onclick = () => {
const tabContainer = document.querySelector("ytmusic-tab-renderer");
const observer = new MutationObserver((_, observer) => {
- const lyricsContainer = document.querySelector(
- '[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"] > ytmusic-message-renderer'
- );
- if (lyricsContainer) {
- lyricsContainer.innerHTML = `
- ${lyrics}
-
-
-
`;
- observer.disconnect();
- }
+ checkLyricsContainer(() => observer.disconnect());
});
observer.observe(tabContainer, {
attributes: true,
@@ -63,5 +66,41 @@ module.exports = () => {
subtree: true,
});
};
+
+ function checkLyricsContainer(callback = () => {}) {
+ const lyricsContainer = document.querySelector(
+ '[page-type="MUSIC_PAGE_TYPE_TRACK_LYRICS"] > ytmusic-message-renderer'
+ );
+ if (lyricsContainer) {
+ callback();
+ setLyrics(lyricsContainer)
+ }
+ }
+
+ function setLyrics(lyricsContainer) {
+ lyricsContainer.innerHTML =
+ `
+ ${hasLyrics ? lyrics : 'Could not retrieve lyrics from genius'}
+
+
+ `;
+ if (hasLyrics) {
+ lyricsContainer.querySelector('.footer').textContent = 'Source: Genius';
+ enableLyricsTab();
+ }
+ }
+
+ function setTabsOnclick(callback) {
+ for (const tab of [tabs.upNext, tabs.discover]) {
+ if (tab) {
+ tab.onclick = callback;
+ }
+ }
+ }
+
+ function enableLyricsTab() {
+ tabs.lyrics.removeAttribute("disabled");
+ tabs.lyrics.removeAttribute("aria-disabled");
+ }
});
};
diff --git a/plugins/lyrics-genius/style.css b/plugins/lyrics-genius/style.css
index 1966b67b..26100bab 100644
--- a/plugins/lyrics-genius/style.css
+++ b/plugins/lyrics-genius/style.css
@@ -6,7 +6,7 @@
text-decoration: none;
}
-#contents.genius-lyrics {
- font-size: 1vw;
- opacity: 0.9;
+.description {
+ font-size: 1.1vw !important;
+ text-align: center !important;
}
diff --git a/plugins/notifications/utils.js b/plugins/notifications/utils.js
index 34c73a77..7cb9e61e 100644
--- a/plugins/notifications/utils.js
+++ b/plugins/notifications/utils.js
@@ -1,4 +1,4 @@
-const { setOptions } = require("../../config/plugins");
+const { setMenuOptions } = require("../../config/plugins");
const path = require("path");
const { app } = require("electron");
const fs = require("fs");
@@ -15,7 +15,7 @@ module.exports.icons = {
module.exports.setOption = (options, option, value) => {
options[option] = value;
- setOptions("notifications", options)
+ setMenuOptions("notifications", options)
}
module.exports.urgencyLevels = [
diff --git a/plugins/precise-volume/front.js b/plugins/precise-volume/front.js
index 33c9e8c1..3b1e34f1 100644
--- a/plugins/precise-volume/front.js
+++ b/plugins/precise-volume/front.js
@@ -1,7 +1,7 @@
const { ipcRenderer } = require("electron");
const { globalShortcut } = require('@electron/remote');
-const { setOptions } = require("../../config/plugins");
+const { setOptions, setMenuOptions, isEnabled } = require("../../config/plugins");
function $(selector) { return document.querySelector(selector); }
let api;
@@ -13,6 +13,8 @@ module.exports = (options) => {
}, { once: true, passive: true })
};
+module.exports.moveVolumeHud = moveVolumeHud;
+
/** Restore saved volume and setup tooltip */
function firstRun(options) {
if (typeof options.savedVolume === "number") {
@@ -34,6 +36,11 @@ function firstRun(options) {
injectVolumeHud(noVid);
if (!noVid) {
setupVideoPlayerOnwheel(options);
+ if (!isEnabled('video-toggle')) {
+ //video-toggle handles hud positioning on its own
+ const videoMode = () => api.getPlayerResponse().videoDetails?.musicVideoType !== 'MUSIC_VIDEO_TYPE_ATV';
+ $("video").addEventListener("srcChanged", () => moveVolumeHud(videoMode()));
+ }
}
// Change options from renderer to keep sync
@@ -41,7 +48,7 @@ function firstRun(options) {
for (option in newOptions) {
options[option] = newOptions[option];
}
- setOptions("precise-volume", options);
+ setMenuOptions("precise-volume", options);
});
}
@@ -61,6 +68,16 @@ function injectVolumeHud(noVid) {
}
}
+let hudMoveTimeout;
+function moveVolumeHud(showVideo) {
+ clearTimeout(hudMoveTimeout);
+ const volumeHud = $('#volumeHud');
+ if (!volumeHud) return;
+ hudMoveTimeout = setTimeout(() => {
+ volumeHud.style.top = showVideo ? `${($('ytmusic-player').clientHeight - $('video').clientHeight) / 2}px` : 0;
+ }, 250)
+}
+
let hudFadeTimeout;
function showVolumeHud(volume) {
diff --git a/plugins/precise-volume/menu.js b/plugins/precise-volume/menu.js
index c3d56f8f..74f7b14a 100644
--- a/plugins/precise-volume/menu.js
+++ b/plugins/precise-volume/menu.js
@@ -1,5 +1,5 @@
const { enabled } = require("./back");
-const { setOptions } = require("../../config/plugins");
+const { setMenuOptions } = require("../../config/plugins");
const prompt = require("custom-electron-prompt");
const promptOptions = require("../../providers/prompt-options");
@@ -11,7 +11,7 @@ function changeOptions(changedOptions, options, win) {
if (enabled()) {
win.webContents.send("setOptions", changedOptions);
} else { // Fallback to usual method if disabled
- setOptions("precise-volume", options);
+ setMenuOptions("precise-volume", options);
}
}
diff --git a/plugins/shortcuts/menu.js b/plugins/shortcuts/menu.js
index 20f21233..df9db161 100644
--- a/plugins/shortcuts/menu.js
+++ b/plugins/shortcuts/menu.js
@@ -1,4 +1,4 @@
-const { setOptions } = require("../../config/plugins");
+const { setMenuOptions } = require("../../config/plugins");
const prompt = require("custom-electron-prompt");
const promptOptions = require("../../providers/prompt-options");
@@ -20,7 +20,7 @@ function setOption(options, key = null, newValue = null) {
options[key] = newValue;
}
- setOptions("shortcuts", options);
+ setMenuOptions("shortcuts", options);
}
// Helper function for keybind prompt
diff --git a/plugins/video-toggle/front.js b/plugins/video-toggle/front.js
index 1c35ce4a..1226f640 100644
--- a/plugins/video-toggle/front.js
+++ b/plugins/video-toggle/front.js
@@ -1,6 +1,8 @@
const { ElementFromFile, templatePath } = require("../utils");
-const { setOptions } = require("../../config/plugins");
+const { setOptions, isEnabled } = require("../../config/plugins");
+
+const moveVolumeHud = isEnabled("precise-volume") ? require("../precise-volume/front").moveVolumeHud : ()=>{};
function $(selector) { return document.querySelector(selector); }
@@ -39,7 +41,7 @@ function setup(e) {
changeDisplay(e.target.checked);
setOptions("video-toggle", options);
})
-
+
video.addEventListener('srcChanged', videoStarted);
observeThumbnail();
@@ -89,13 +91,6 @@ function forcePlaybackMode() {
playbackModeObserver.observe(player, { attributeFilter: ["playback-mode"] });
}
-// if precise volume plugin is enabled, move its hud to be on top of the video
-function moveVolumeHud(showVideo) {
- const volumeHud = $('#volumeHud');
- if (volumeHud)
- volumeHud.style.top = showVideo ? `${(player.clientHeight - video.clientHeight) / 2}px` : 0;
-}
-
function observeThumbnail() {
const playbackModeObserver = new MutationObserver(mutations => {
if (!player.videoMode_) return;
diff --git a/plugins/video-toggle/menu.js b/plugins/video-toggle/menu.js
index a73407ca..fb539405 100644
--- a/plugins/video-toggle/menu.js
+++ b/plugins/video-toggle/menu.js
@@ -1,4 +1,4 @@
-const { setOptions } = require("../../config/plugins");
+const { setMenuOptions } = require("../../config/plugins");
module.exports = (win, options) => [
{
@@ -7,7 +7,7 @@ module.exports = (win, options) => [
checked: options.forceHide,
click: item => {
options.forceHide = item.checked;
- setOptions("video-toggle", options);
+ setMenuOptions("video-toggle", options);
}
}
];
diff --git a/providers/app-controls.js b/providers/app-controls.js
new file mode 100644
index 00000000..9faded69
--- /dev/null
+++ b/providers/app-controls.js
@@ -0,0 +1,6 @@
+const app = require("electron").app || require('@electron/remote').app;
+
+module.exports.restart = () => {
+ app.relaunch();
+ app.exit();
+};
diff --git a/providers/song-info-front.js b/providers/song-info-front.js
index 368d3958..e8bb8bcf 100644
--- a/providers/song-info-front.js
+++ b/providers/song-info-front.js
@@ -6,7 +6,8 @@ const config = require("../config");
global.songInfo = {};
-function $(selector) { return document.querySelector(selector); }
+const $ = s => document.querySelector(s);
+const $$ = s => Array.from(document.querySelectorAll(s));
ipcRenderer.on("update-song-info", async (_, extractedSongInfo) => {
global.songInfo = JSON.parse(extractedSongInfo);
@@ -43,7 +44,11 @@ module.exports = () => {
function sendSongInfo() {
const data = apiEvent.detail.getPlayerResponse();
- data.videoDetails.album = $('ytmusic-player-page')?.__data?.playerPageWatchMetadata?.albumName?.runs[0].text
+
+ data.videoDetails.album = $$(
+ ".byline.ytmusic-player-bar > .yt-simple-endpoint"
+ ).find(e => e.href?.includes("browse"))?.textContent;
+
data.videoDetails.elapsedSeconds = Math.floor(video.currentTime);
data.videoDetails.isPaused = false;
ipcRenderer.send("video-src-changed", JSON.stringify(data));
diff --git a/providers/song-info.js b/providers/song-info.js
index c4028355..88f757a3 100644
--- a/providers/song-info.js
+++ b/providers/song-info.js
@@ -112,13 +112,12 @@ const suffixesToRemove = [
" - topic",
"vevo",
" (performance video)",
- " (official music video)",
- " (official video)",
" (clip officiel)",
];
function cleanupName(name) {
if (!name) return name;
+ name = name.replace(/\((?:official)?[ ]?(?:music)?[ ]?(?:lyric[s]?)?[ ]?(?:video)?\)$/i, '')
const lowCaseName = name.toLowerCase();
for (const suffix of suffixesToRemove) {
if (lowCaseName.endsWith(suffix)) {
diff --git a/readme.md b/readme.md
index 5986d705..2700d9f8 100644
--- a/readme.md
+++ b/readme.md
@@ -34,25 +34,53 @@ You can check out the [latest release](https://github.com/th-ch/youtube-music/re
Install the `youtube-music-bin` package from the AUR. For AUR installation instructions, take a look at this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
## Available plugins:
-- **Ad Blocker**: block all ads and tracking out of the box
-- **Audio compressor**: apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts)
-- **Blur navigation bar**: makes navigation bar transparent and blurry
-- **Disable autoplay**: makes every song start in "paused" mode
-- [**Discord**](https://discord.com/): show your friends what you listen to with [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
+
+- **Ad Blocker**: Block all ads and tracking out of the box
+
+- **Audio Compressor**: Apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts)
+
+- **Blur Nav Bar**: makes navigation bar transparent and blurry
+
+- **Disable Autoplay**: Makes every song start in "paused" mode
+
+- [**Discord**](https://discord.com/): Show your friends what you listen to with [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
+
- **Downloader**: downloads MP3 [directly from the interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
-- **In-app menu**: [gives bars a fancy, dark look](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
+
+- **Exponential Volume**: Makes the volume slider [exponential](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) so it's easier to select lower volumes.
+
+- **In-App Menu**: [gives bars a fancy, dark look](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
+
> (see [this post](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) if you have problem accessing the menu after enabling this plugin and hide-menu option)
-- [**Last.fm**](https://www.last.fm/): scrobbles support
-- **Navigation**: next/back navigation arrows directly integrated in the interface, like in your favorite browser
-- **No Google Login**: remove Google login buttons and links from the interface
-- **Notifications**: display a notification when a song starts playing ([interactive notifications](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) are available on windows)
-- **Playback speed**: listen fast, listen slow! [Adds a slider that controls song speed](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
-- **Precise volume**: customizable volume steps for more comfort, allows controlling the volume precisely using mousewheel
-- **Quality changer**: Allows changing the video quality with a [button](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) on the video overlay
+
+- [**Last.fm**](https://www.last.fm/): Scrobbles support
+
+- **Lyrics Genius**: Adds lyrics support for most songs
+
+- **Navigation**: Next/Back navigation arrows directly integrated in the interface, like in your favorite browser
+
+- **No Google Login**: Remove Google login buttons and links from the interface
+
+- **Notifications**: Display a notification when a song starts playing ([interactive notifications](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) are available on windows)
+
+- **Playback Speed**: Listen fast, listen slow! [Adds a slider that controls song speed](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
+
+- **Precise Volume**: Control the volume precisely using mousewheel/hotkeys, with a custom hud and customizable volume steps
+
+- **Quality Changer**: Allows changing the video quality with a [button](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) on the video overlay
+
- **Shortcuts**: Allows setting global hotkeys for playback (play/pause/next/previous) + disable [media osd](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) by overriding media keys + enable Ctrl/CMD + F to search + enable linux mpris support for mediakeys + [custom hotkeys](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) for [advanced users](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
-- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): skips non-music parts
-- **Taskbar media control**: control playback from your [Windows taskbar](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
-- **Touchbar**: custom TouchBar layout for macOS
+
+- **Skip-Silences** - Automatically skip silenced sections
+
+- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Automatically Skips non-music parts like intro/outro or parts of music videos where the song isn't playing
+
+- **Taskbar Media Control**: Control playback from your [Windows taskbar](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
+
+- **Touchbar**: Custom TouchBar layout for macOS
+
+- **Tuna-OBS**: Integration with [OBS](https://obsproject.com/)'s plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/)
+
- **Video Toggle**: Adds a button to switch between Video/Song mode. can also optionally remove the whole video tab
---
diff --git a/yarn.lock b/yarn.lock
index 8a13251d..6c7a15bc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -650,45 +650,45 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@cliqz/adblocker-content@^1.23.2":
- version "1.23.2"
- resolved "https://registry.yarnpkg.com/@cliqz/adblocker-content/-/adblocker-content-1.23.2.tgz#f4fa9eedf55a47e0a6d09396b3f344855f7b5460"
- integrity sha512-J2jRtd1l3O/bDlXLBFgzC8Z/M84k2SL1pzqpoLRxYrJ3VbDv2ZgrIjUkTBR8hExKZ1DHnGYOrZD014N0YRQvVw==
+"@cliqz/adblocker-content@^1.23.4":
+ version "1.23.4"
+ resolved "https://registry.yarnpkg.com/@cliqz/adblocker-content/-/adblocker-content-1.23.4.tgz#d7803ab5f3c998247100b3b29b89ce5b3442314e"
+ integrity sha512-Ib8c8E8rnrDygUfO02hAkwD9qUmW+t0cq1MuKg9iEVGOJVZwZU27SpJDoWhHz9bninzcxthzJYlLGgBZzcqq0Q==
dependencies:
- "@cliqz/adblocker-extended-selectors" "^1.23.2"
+ "@cliqz/adblocker-extended-selectors" "^1.23.4"
-"@cliqz/adblocker-electron-preload@^1.23.2":
- version "1.23.2"
- resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.23.2.tgz#14e16af43972e4203d6d8589d51e9069ccb3c5eb"
- integrity sha512-AIQ56sTNfoHJmWMLxufoBg2iDHn7wGoClc5R9nv+qFoakvGRud2A13DSW2f+ZqXHDKgz4RO9igpel/6+ULBWSw==
+"@cliqz/adblocker-electron-preload@^1.23.4":
+ version "1.23.4"
+ resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron-preload/-/adblocker-electron-preload-1.23.4.tgz#41946642c52e1a51d0514cf5513dd9a11a020fae"
+ integrity sha512-i1NMv5EeAB7T393zhBVwo+74qd082pCIIySRGDLrOqm8BAosCjXzXifq6p+14d68k1K+C8nDahHm/XvpgWMTCw==
dependencies:
- "@cliqz/adblocker-content" "^1.23.2"
+ "@cliqz/adblocker-content" "^1.23.4"
-"@cliqz/adblocker-electron@^1.23.1":
- version "1.23.2"
- resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron/-/adblocker-electron-1.23.2.tgz#e072003f1569d69e00910f1f93bec047fe020236"
- integrity sha512-EEsTfW503gvecU3sVlrQ6jdyJn2FF53uIwLIi3H83/dJWhECLzp8FuDV9CAZNe4MaW3plTbmc3g241Q7xVffhw==
+"@cliqz/adblocker-electron@^1.23.4":
+ version "1.23.4"
+ resolved "https://registry.yarnpkg.com/@cliqz/adblocker-electron/-/adblocker-electron-1.23.4.tgz#6144199209aa9f1f73de5ee9d8b73c61deaf5945"
+ integrity sha512-ld/2jdf8rIzNEHAG/ZFfapDISityA++Kxql1DqfsIUi0xcRlQdz6ijWQ0+xVOW4ZhTifGjlUvaq60MVn+R3OUQ==
dependencies:
- "@cliqz/adblocker" "^1.23.2"
- "@cliqz/adblocker-electron-preload" "^1.23.2"
+ "@cliqz/adblocker" "^1.23.4"
+ "@cliqz/adblocker-electron-preload" "^1.23.4"
tldts-experimental "^5.6.21"
-"@cliqz/adblocker-extended-selectors@^1.23.2":
- version "1.23.2"
- resolved "https://registry.yarnpkg.com/@cliqz/adblocker-extended-selectors/-/adblocker-extended-selectors-1.23.2.tgz#f49519c7639ecdebc09a459fffe876a97ef96a69"
- integrity sha512-JokCWTcw0XjBxAv7WGzfVfdGjz6OsND4eEhEQUDXxzkzbv4qOe8T+fi42lphfshlt89svAIl18zKp0Ibx9H9Vw==
+"@cliqz/adblocker-extended-selectors@^1.23.4":
+ version "1.23.4"
+ resolved "https://registry.yarnpkg.com/@cliqz/adblocker-extended-selectors/-/adblocker-extended-selectors-1.23.4.tgz#76e310ff6598ec76eacf402bd4733e7b8ab0ee98"
+ integrity sha512-qDfeOwe1UK4fGQFFafQMftdPy7uLm5JwKiM8zcGiYzJqRxTvnquRTGzYLkQLri9L1Q4R9Tvtg1wZtWMIrQnO6Q==
-"@cliqz/adblocker@^1.23.2":
- version "1.23.2"
- resolved "https://registry.yarnpkg.com/@cliqz/adblocker/-/adblocker-1.23.2.tgz#49f2f493c8e41cdc213505e02559a7797c8521df"
- integrity sha512-u4u/iunhMoCQanfzvruBjNSqP9lu+y8tub3zhPZwtyrmmkXFcEark09/3qvq4jBCzqZQjdDjHlWaX6k1PjnUmg==
+"@cliqz/adblocker@^1.23.4":
+ version "1.23.4"
+ resolved "https://registry.yarnpkg.com/@cliqz/adblocker/-/adblocker-1.23.4.tgz#dbf2282e223ca1bf963bc34d9a5d2b7f506513b5"
+ integrity sha512-IVP6L2on4SFCAk13hhH87MDbfXxvWv86LScKPoD7rOg+5f51HWp4meW+yFtv/VbLdpkKgORWXNA1KttVW0IuKA==
dependencies:
- "@cliqz/adblocker-content" "^1.23.2"
- "@cliqz/adblocker-extended-selectors" "^1.23.2"
+ "@cliqz/adblocker-content" "^1.23.4"
+ "@cliqz/adblocker-extended-selectors" "^1.23.4"
"@remusao/guess-url-type" "^1.1.2"
"@remusao/small" "^1.1.2"
"@remusao/smaz" "^1.7.1"
- "@types/chrome" "^0.0.164"
+ "@types/chrome" "^0.0.176"
"@types/firefox-webext-browser" "^94.0.0"
tldts-experimental "^5.6.21"
@@ -721,10 +721,10 @@
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-1.2.2.tgz#4c390a2e669df47af973c09eec106162a296c323"
integrity sha512-PfnXpQGWh4vpX866NNucJRnNOzDRZcsLcLaT32fUth9k0hccsohfxprqEDYLzRg+ZK2xRrtyUN5wYYoHimMCJg==
-"@electron/remote@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.1.tgz#810cbc595a21f0f94641eb2d7e8264063a3f84de"
- integrity sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA==
+"@electron/remote@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.4.tgz#c3dae436aed79d1b8adcefc5a4963c06750ad5d8"
+ integrity sha512-8m2P/d2RH986PmMW5lKygbPEjEYJ7RgCe37Y8DQ1wujKMH6VjmLIB+Y+DP2SA611svCZc58TRSd8FraGvcfGZw==
"@electron/universal@1.0.5":
version "1.0.5"
@@ -772,7 +772,7 @@
resolved "https://registry.yarnpkg.com/@ffmpeg/core/-/core-0.10.0.tgz#f6a58361b22d7c23c6f7071b9fff6d572bc3f499"
integrity sha512-qunWJl5PezpXEm31tb8Qu5z37B5KVA1VYZCpXchMhuAb3X9T7PuE3SlhOwphEoRhzaOa3lpofDfzihAUMFaVPQ==
-"@ffmpeg/ffmpeg@^0.10.0":
+"@ffmpeg/ffmpeg@^0.10.1":
version "0.10.1"
resolved "https://registry.yarnpkg.com/@ffmpeg/ffmpeg/-/ffmpeg-0.10.1.tgz#3dacf3985de9c83a95fbf79fe709920cc009b00a"
integrity sha512-ChQkH7Rh57hmVo1LhfQFibWX/xqneolJKSwItwZdKPcLZuKigtYAYDIvB55pDfP17VtR1R77SxgkB2/UApB+Og==
@@ -1424,18 +1424,20 @@
dependencies:
"@babel/types" "^7.3.0"
-"@types/chrome@^0.0.164":
- version "0.0.164"
- resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.164.tgz#0a7669cf7225df0c472c69f73ef4b7b1d2d94013"
- integrity sha512-/EvjbfcowiA+f8Fwv5PSzxHhnAgjIx50Bjy1zQQYYwxlbJ+rI07CXMhrxwz4jUZlxLjnn/kugNQBjZIN58pKyg==
+"@types/chrome@^0.0.176":
+ version "0.0.176"
+ resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.176.tgz#617fcbe41ea1d9c5d50c9e7fb8ebfe2d9aef853a"
+ integrity sha512-LOveFOMIUhMJjvRzZv5whGBpncP/gdJ4hcxeAqg94wGi6CyKaCmLgFSofgItf85GuLTl/0BQ6J/Y1e8BqZWfEg==
dependencies:
"@types/filesystem" "*"
"@types/har-format" "*"
-"@types/debug@^4.1.5":
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
- integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==
+"@types/debug@^4.1.6":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
+ integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
+ dependencies:
+ "@types/ms" "*"
"@types/eslint@^7.2.13":
version "7.28.2"
@@ -1538,6 +1540,11 @@
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
"@types/node@*", "@types/node@^14.6.2":
version "14.14.44"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215"
@@ -1586,13 +1593,20 @@
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==
-"@types/yargs@^16.0.0", "@types/yargs@^16.0.2":
+"@types/yargs@^16.0.0":
version "16.0.4"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977"
integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==
dependencies:
"@types/yargs-parser" "*"
+"@types/yargs@^17.0.1":
+ version "17.0.8"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.8.tgz#d23a3476fd3da8a0ea44b5494ca7fa677b9dad4c"
+ integrity sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw==
+ dependencies:
+ "@types/yargs-parser" "*"
+
"@types/yauzl@^2.9.1":
version "2.9.1"
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af"
@@ -1718,6 +1732,13 @@ agent-base@6, agent-base@^6.0.2:
dependencies:
debug "4"
+ajv-formats@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
+ integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
+ dependencies:
+ ajv "^8.0.0"
+
ajv-keywords@^3.4.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
@@ -1733,10 +1754,10 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^7.0.3:
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.4.tgz#827e5f5ae32f5e5c1637db61f253a112229b5e2f"
- integrity sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==
+ajv@^8.0.0, ajv@^8.6.3:
+ version "8.9.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18"
+ integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
@@ -1842,15 +1863,15 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-app-builder-bin@3.5.13:
- version "3.5.13"
- resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.5.13.tgz#6dd7f4de34a4e408806f99b8c7d6ef1601305b7e"
- integrity sha512-ighVe9G+bT1ENGdp9ecO1P+94vv/f+FUwaI+XkNzeg9bYF8Oi3BQ+mJuxS00UgyHs8luuOzjzC+qnAtdb43Mpg==
+app-builder-bin@3.7.1:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.7.1.tgz#cb0825c5e12efc85b196ac3ed9c89f076c61040e"
+ integrity sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==
-app-builder-lib@22.11.7:
- version "22.11.7"
- resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.11.7.tgz#c0ad1119ebfbf4189a8280ad693625f5e684dca6"
- integrity sha512-pS9/cR4/TnNZVAHZECiSvvwTBzbwblj7KBBZkMKDG57nibq0I1XY8zAaYeHFdlYTyrRcz9JUXbAqJKezya7UFQ==
+app-builder-lib@22.14.5:
+ version "22.14.5"
+ resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.14.5.tgz#a61a50b132b858e98fdc70b6b88994ae99b4f96d"
+ integrity sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==
dependencies:
"7zip-bin" "~5.1.1"
"@develar/schema-utils" "~2.6.5"
@@ -1858,12 +1879,14 @@ app-builder-lib@22.11.7:
"@malept/flatpak-bundler" "^0.4.0"
async-exit-hook "^2.0.1"
bluebird-lst "^1.0.9"
- builder-util "22.11.7"
- builder-util-runtime "8.7.7"
+ builder-util "22.14.5"
+ builder-util-runtime "8.9.1"
chromium-pickle-js "^0.2.0"
debug "^4.3.2"
ejs "^3.1.6"
- electron-publish "22.11.7"
+ electron-osx-sign "^0.5.0"
+ electron-publish "22.14.5"
+ form-data "^4.0.0"
fs-extra "^10.0.0"
hosted-git-info "^4.0.2"
is-ci "^3.0.0"
@@ -2110,7 +2133,7 @@ binary-extensions@^2.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
-bindings@^1.2.1:
+bindings@^1.2.1, bindings@^1.3.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
@@ -2124,7 +2147,7 @@ bluebird-lst@^1.0.9:
dependencies:
bluebird "^3.5.5"
-bluebird@^3.5.5:
+bluebird@^3.5.0, bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
@@ -2207,6 +2230,19 @@ bser@2.1.1:
dependencies:
node-int64 "^0.4.0"
+buffer-alloc-unsafe@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+ integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
+
+buffer-alloc@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+ integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+ dependencies:
+ buffer-alloc-unsafe "^1.1.0"
+ buffer-fill "^1.0.0"
+
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
@@ -2222,6 +2258,11 @@ buffer-equal@1.0.0:
resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74=
+buffer-fill@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+ integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -2235,18 +2276,10 @@ buffer@^5.1.0, buffer@^5.2.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-builder-util-runtime@8.7.6:
- version "8.7.6"
- resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.6.tgz#4b43c96db2bd494ced7694bcd7674934655e8324"
- integrity sha512-rj9AIY7CzLSuTOXpToiaQkruYh6UEQ+kYnd5UET22ch8MGClEtIZKXHG14qEiXEr2x4EOKDMxkcTa+9TYaE+ug==
- dependencies:
- debug "^4.3.2"
- sax "^1.2.4"
-
-builder-util-runtime@8.7.7:
- version "8.7.7"
- resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz#6c83cc3abe7a7a5c8b4ec8878f68adc828c07f0d"
- integrity sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==
+builder-util-runtime@8.9.1:
+ version "8.9.1"
+ resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz#25f066b3fbc20b3e6236a9b956b1ebb0e33ff66a"
+ integrity sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==
dependencies:
debug "^4.3.2"
sax "^1.2.4"
@@ -2259,18 +2292,19 @@ builder-util-runtime@8.9.2:
debug "^4.3.2"
sax "^1.2.4"
-builder-util@22.11.7:
- version "22.11.7"
- resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.11.7.tgz#ae9707afa6a31feafa13c274ac83b4fe28ef1467"
- integrity sha512-ihqUe5ey82LM9qqQe0/oIcaSm9w+B9UjcsWJZxJliTBsbU+sErOpDFpHW+sim0veiTF/EIcGUh9HoduWw+l9FA==
+builder-util@22.14.5:
+ version "22.14.5"
+ resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.14.5.tgz#42a18608d2a566c0846e91266464776c8bfb0cc9"
+ integrity sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==
dependencies:
"7zip-bin" "~5.1.1"
- "@types/debug" "^4.1.5"
+ "@types/debug" "^4.1.6"
"@types/fs-extra" "^9.0.11"
- app-builder-bin "3.5.13"
+ app-builder-bin "3.7.1"
bluebird-lst "^1.0.9"
- builder-util-runtime "8.7.7"
+ builder-util-runtime "8.9.1"
chalk "^4.1.1"
+ cross-spawn "^7.0.3"
debug "^4.3.2"
fs-extra "^10.0.0"
is-ci "^3.0.0"
@@ -2401,10 +2435,10 @@ charenc@0.0.2:
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
-chokidar@^3.5.2:
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
- integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
+chokidar@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
@@ -2564,6 +2598,11 @@ commondir@^1.0.1:
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+compare-version@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
+ integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -2579,21 +2618,21 @@ concat-stream@^1.6.2:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-conf@^9.0.0:
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/conf/-/conf-9.0.1.tgz#ac4808521490b791136e2a771e2b53caf7c49df8"
- integrity sha512-Ef+z0hdK0ZqcUdmijaVA1kYW0OXJDBfBWPzBWsPYQn/72PQyiq04jcuRbs7l8R/4v3MKGBIcYVxsIllCEFlXrw==
+conf@^10.0.3:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/conf/-/conf-10.1.1.tgz#ff08046d5aeeee0eaff55d57f5b4319193c3dfda"
+ integrity sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q==
dependencies:
- ajv "^7.0.3"
+ ajv "^8.6.3"
+ ajv-formats "^2.1.1"
atomically "^1.7.0"
debounce-fn "^4.0.0"
dot-prop "^6.0.1"
- env-paths "^2.2.0"
+ env-paths "^2.2.1"
json-schema-typed "^7.0.3"
- make-dir "^3.1.0"
onetime "^5.1.2"
pkg-up "^3.1.0"
- semver "^7.3.4"
+ semver "^7.3.5"
config-chain@^1.1.11:
version "1.1.12"
@@ -2686,10 +2725,10 @@ cssstyle@^2.3.0:
dependencies:
cssom "~0.3.6"
-custom-electron-prompt@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/custom-electron-prompt/-/custom-electron-prompt-1.4.0.tgz#04d261372807b87ec07ed12e990306d5debd5667"
- integrity sha512-tqDa3yDILVI3xxwNRW1m2fyQgdMYtFcnl1d3uMx8Tt6sQ9zG+Y4n/ie4VbttQaq7dJvFCu9K3JX65K8hfaSf1g==
+custom-electron-prompt@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/custom-electron-prompt/-/custom-electron-prompt-1.4.1.tgz#79adc3d5cd9a372e5dfe43b21de70f0fe7d1c2f7"
+ integrity sha512-bR6JhEusBxKnooXfFFlIIUhDbF23eaDhaYwvqcw3ZTcdEzzJew63+ilwhIwD7flRAO+sCroaLwP495VBexHg/A==
custom-electron-titlebar@^3.2.10:
version "3.2.10"
@@ -2743,7 +2782,7 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
dependencies:
ms "2.1.2"
-debug@^2.6.9:
+debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -2892,22 +2931,24 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
-discord-rpc@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/discord-rpc/-/discord-rpc-3.2.0.tgz#8da4e01654fce38e959d70b58708c46ae1d6c8fa"
- integrity sha512-KJv0EVbGMlr04HoG6f5b3wD7X9kSHzQ2Ed2qfHSDvYJ1MkE8RbCQmMcQQrSvAxpfsqZgUjB/bsfi/mjyicCH+A==
+discord-rpc@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/discord-rpc/-/discord-rpc-4.0.1.tgz#a89aa04a048aa83ad4f347d53fa0162501eae0d8"
+ integrity sha512-HOvHpbq5STRZJjQIBzwoKnQ0jHplbEWFWlPDwXXKm/bILh4nzjcg7mNqll0UY7RsjFoaXA7e/oYb/4lvpda2zA==
dependencies:
node-fetch "^2.6.1"
ws "^7.3.1"
+ optionalDependencies:
+ register-scheme "github:devsnek/node-register-scheme"
-dmg-builder@22.11.7:
- version "22.11.7"
- resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.11.7.tgz#5956008c18d40ee72c0ea01ffea9590dbf51df89"
- integrity sha512-+I+XfP2DODHB6PwFANgpH/WMzzCA5r5XoMvbFCIYjQjJpXlO0XnqQaamzFl2vh/Wz/Qt0d0lJMgRy8gKR3MGdQ==
+dmg-builder@22.14.5:
+ version "22.14.5"
+ resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.14.5.tgz#137c0b55e639badcc0b119eb060e6fa4ed61d948"
+ integrity sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==
dependencies:
- app-builder-lib "22.11.7"
- builder-util "22.11.7"
- builder-util-runtime "8.7.6"
+ app-builder-lib "22.14.5"
+ builder-util "22.14.5"
+ builder-util-runtime "8.9.1"
fs-extra "^10.0.0"
iconv-lite "^0.6.2"
js-yaml "^4.1.0"
@@ -3012,17 +3053,17 @@ electron-better-web-request@^1.0.1:
url-match-patterns "^0.2.0"
uuid "^3.3.2"
-electron-builder@^22.10.5:
- version "22.11.7"
- resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.11.7.tgz#cd97a0d9f6e6d388112e66b4376de431cca4d596"
- integrity sha512-yQExSLt7Hbz/P8lLkZDdE/OnJJ7NCX+uiQcV+XIH0TeEZcD87ZnSqBBzGUN5akySU4BXXlrVZKeUsXACWrm5Kw==
+electron-builder@^22.14.5:
+ version "22.14.5"
+ resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.14.5.tgz#3a25547bd4fe3728d4704da80956a794c5c31496"
+ integrity sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==
dependencies:
- "@types/yargs" "^16.0.2"
- app-builder-lib "22.11.7"
- builder-util "22.11.7"
- builder-util-runtime "8.7.7"
+ "@types/yargs" "^17.0.1"
+ app-builder-lib "22.14.5"
+ builder-util "22.14.5"
+ builder-util-runtime "8.9.1"
chalk "^4.1.1"
- dmg-builder "22.11.7"
+ dmg-builder "22.14.5"
fs-extra "^10.0.0"
is-ci "^3.0.0"
lazy-val "^1.0.5"
@@ -3089,26 +3130,38 @@ electron-localshortcut@^3.1.0, electron-localshortcut@^3.2.1:
keyboardevent-from-electron-accelerator "^2.0.0"
keyboardevents-areequal "^0.2.1"
-electron-publish@22.11.7:
- version "22.11.7"
- resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.11.7.tgz#4126cbb08ccf082a2aa7fef89ee629b3a4b8ae9a"
- integrity sha512-A4EhRRNBVz4SPzUlBrPO6BmuyDeI0pyprggPAV9rQ+SDVSnSB/WKPot9JwWMyArkGj3AUUTMNVT6hwZhMvhfqw==
+electron-osx-sign@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a"
+ integrity sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==
+ dependencies:
+ bluebird "^3.5.0"
+ compare-version "^0.1.2"
+ debug "^2.6.8"
+ isbinaryfile "^3.0.2"
+ minimist "^1.2.0"
+ plist "^3.0.1"
+
+electron-publish@22.14.5:
+ version "22.14.5"
+ resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.14.5.tgz#34bcdce671f0e651330db20040d6919c77c94bd6"
+ integrity sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==
dependencies:
"@types/fs-extra" "^9.0.11"
- builder-util "22.11.7"
- builder-util-runtime "8.7.7"
+ builder-util "22.14.5"
+ builder-util-runtime "8.9.1"
chalk "^4.1.1"
fs-extra "^10.0.0"
lazy-val "^1.0.5"
mime "^2.5.2"
-electron-store@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-7.0.3.tgz#56d78284454018ed50ffc7645da49f828ae5ff19"
- integrity sha512-wIbw4GHt4djs4dVrlRLCD/SpdpDUiRsQc212jagGA6zJ8xt1iwx3KZIzXY8gmwvgVCOcVxi3iyCXZoBBWwBXpQ==
+electron-store@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-8.0.1.tgz#9b598c1d2edeffebee9d8c1cd957ad368c528925"
+ integrity sha512-ZyLvNywiqSpbwC/pp89O/AycVWY/UJIkmtyzF2Bd0Nm/rLmcFc0NTGuLdg6+LE8mS8qsiK5JMoe4PnrecLHH5w==
dependencies:
- conf "^9.0.0"
- type-fest "^0.20.2"
+ conf "^10.0.3"
+ type-fest "^1.0.2"
electron-to-chromium@^1.3.723:
version "1.3.740"
@@ -3144,10 +3197,10 @@ electron-updater@^4.6.3:
lodash.isequal "^4.5.0"
semver "^7.3.5"
-electron@^16.0.5:
- version "16.0.5"
- resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.5.tgz#16394c196e42215a82da1f4f39a3f757caf33cb1"
- integrity sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==
+electron@^17.0.0:
+ version "17.0.0"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-17.0.0.tgz#60f00f3e3c657020e807a519700213943468b4d1"
+ integrity sha512-3UXcBQMwbMWdPvGHaSdPMluHrd+/bc+K143MyvE5zVZ+S1XCHt4sau7dj6svJHns5llN0YG/c6h/vRfadIp8Zg==
dependencies:
"@electron/get" "^1.13.0"
"@types/node" "^14.6.2"
@@ -3213,7 +3266,7 @@ env-editor@^0.4.1:
resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861"
integrity sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==
-env-paths@^2.2.0:
+env-paths@^2.2.0, env-paths@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
@@ -3923,6 +3976,15 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
@@ -4885,6 +4947,13 @@ isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+isbinaryfile@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
+ integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==
+ dependencies:
+ buffer-alloc "^1.2.0"
+
isbinaryfile@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf"
@@ -5786,15 +5855,15 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-m3u8stream@^0.8.4:
- version "0.8.4"
- resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.8.4.tgz#15b49d0c2b510755ea43c1e53f85d7aaa4dc65c2"
- integrity sha512-sco80Db+30RvcaIOndenX6E6oQNgTiBKeJbFPc+yDXwPQIkryfboEbCvXPlBRq3mQTCVPQO93TDVlfRwqpD35w==
+m3u8stream@^0.8.6:
+ version "0.8.6"
+ resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.8.6.tgz#0d6de4ce8ee69731734e6b616e7b05dd9d9a55b1"
+ integrity sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==
dependencies:
- miniget "^4.0.0"
+ miniget "^4.2.2"
sax "^1.2.4"
-make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
+make-dir@^3.0.0, make-dir@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
@@ -5957,6 +6026,11 @@ miniget@^4.2.1:
resolved "https://registry.yarnpkg.com/miniget/-/miniget-4.2.1.tgz#11a1c24817a059e292378eb9cff4328d9240c665"
integrity sha512-O/DduzDR6f+oDtVype9S/Qu5hhnx73EDYGyZKwU/qN82lehFZdfhoa4DT51SpsO+8epYrB3gcRmws56ROfTIoQ==
+miniget@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/miniget/-/miniget-4.2.2.tgz#db20320f265efdc4c1826a0be431d56753074475"
+ integrity sha512-a7voNL1N5lDMxvTMExOkg+Fq89jM2vY8pAi9ZEWzZtfNmdfP6RXkvUtFnCAXoCv2T9k1v/fUJVaAEuepGcvLYA==
+
minimatch@3.0.4, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -6024,7 +6098,7 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-node-addon-api@^1.6.3:
+node-addon-api@^1.3.0, node-addon-api@^1.6.3:
version "1.7.2"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d"
integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==
@@ -6051,16 +6125,16 @@ node-modules-regexp@^1.0.0:
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
-node-notifier@^9.0.1:
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-9.0.1.tgz#cea837f4c5e733936c7b9005e6545cea825d1af4"
- integrity sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==
+node-notifier@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-10.0.1.tgz#0e82014a15a8456c4cfcdb25858750399ae5f1c7"
+ integrity sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==
dependencies:
growly "^1.3.0"
is-wsl "^2.2.0"
- semver "^7.3.2"
+ semver "^7.3.5"
shellwords "^0.1.1"
- uuid "^8.3.0"
+ uuid "^8.3.2"
which "^2.0.2"
node-releases@^1.1.71:
@@ -6906,6 +6980,13 @@ regexpp@^3.0.0, regexpp@^3.1.0:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+"register-scheme@github:devsnek/node-register-scheme":
+ version "0.0.2"
+ resolved "https://codeload.github.com/devsnek/node-register-scheme/tar.gz/e7cc9a63a1f512565da44cb57316d9fb10750e17"
+ dependencies:
+ bindings "^1.3.0"
+ node-addon-api "^1.3.0"
+
registry-auth-token@^4.0.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
@@ -7821,7 +7902,7 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2:
+type-fest@^1.0.1, type-fest@^1.0.2, type-fest@^1.2.1, type-fest@^1.2.2:
version "1.4.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
@@ -7947,7 +8028,7 @@ uuid@^3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-uuid@^8.3.0:
+uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
@@ -8355,12 +8436,12 @@ yocto-queue@^1.0.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
-ytdl-core@^4.10.0:
- version "4.10.0"
- resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.10.0.tgz#0835cb411677684539fac2bcc10553f6f58db3e1"
- integrity sha512-RCCoSVTmMeBPH5NFR1fh3nkDU9okvWM0ZdN6plw6I5+vBBZVUEpOt8vjbSgprLRMmGUsmrQZJhvG1CHOat4mLA==
+ytdl-core@^4.10.1:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.10.1.tgz#6648d65faca787919181b2cee1be470b2ef9fdcb"
+ integrity sha512-idBhW+e7HCzs5fR5cqp7Ci+mJhEch41YAaWabYlneQFCL6IGf6Hycv99yVx01Zl1Ci0t/70faOelMSrXaQTE/A==
dependencies:
- m3u8stream "^0.8.4"
+ m3u8stream "^0.8.6"
miniget "^4.0.0"
sax "^1.1.3"