From 5bd97685b9e07c656e0b57a9e02819afc70af1b1 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sun, 13 Feb 2022 23:45:53 +0200 Subject: [PATCH 1/8] migrate from remote to ipc --- index.js | 5 +-- plugins/downloader/youtube-dl.js | 3 +- plugins/precise-volume/back.js | 13 ++++++- plugins/precise-volume/front.js | 63 ++++++++++++++------------------ plugins/quality-changer/back.js | 15 ++++++++ plugins/quality-changer/front.js | 20 ++++------ preload.js | 6 +-- providers/app-controls.js | 19 ++++++++-- 8 files changed, 83 insertions(+), 61 deletions(-) create mode 100644 plugins/quality-changer/back.js diff --git a/index.js b/index.js index 2fdfac58..fdbe7e4f 100644 --- a/index.js +++ b/index.js @@ -2,8 +2,6 @@ const path = require("path"); const electron = require("electron"); -const remote = require('@electron/remote/main'); -remote.initialize(); const enhanceWebRequest = require("electron-better-web-request").default; const is = require("electron-is"); const unhandled = require("electron-unhandled"); @@ -15,6 +13,7 @@ const { fileExists, injectCSS } = require("./plugins/utils"); const { isTesting } = require("./utils/testing"); const { setUpTray } = require("./tray"); const { setupSongInfo } = require("./providers/song-info"); +const { setupAppControls } = require("./providers/app-controls"); // Catch errors and log them unhandled({ @@ -138,7 +137,6 @@ function createMainWindow() { : "default", autoHideMenuBar: config.get("options.hideMenu"), }); - remote.enable(win.webContents); if (windowPosition) { const { x, y } = windowPosition; @@ -249,6 +247,7 @@ app.once("browser-window-created", (event, win) => { setupSongInfo(win); loadPlugins(win); + setupAppControls(); win.webContents.on("did-fail-load", ( _event, diff --git a/plugins/downloader/youtube-dl.js b/plugins/downloader/youtube-dl.js index d7f34ff4..a6fd8474 100644 --- a/plugins/downloader/youtube-dl.js +++ b/plugins/downloader/youtube-dl.js @@ -3,7 +3,6 @@ const { join } = require("path"); const Mutex = require("async-mutex").Mutex; const { ipcRenderer } = require("electron"); -const remote = require('@electron/remote'); const is = require("electron-is"); const filenamify = require("filenamify"); @@ -137,7 +136,7 @@ const toMP3 = async ( safeVideoName + "." + extension ); - const folder = options.downloadFolder || remote.app.getPath("downloads"); + const folder = options.downloadFolder || await ipcRenderer.invoke('getDownloadsFolder'); const name = metadata.title ? `${metadata.artist ? `${metadata.artist} - ` : ""}${metadata.title}` : videoName; diff --git a/plugins/precise-volume/back.js b/plugins/precise-volume/back.js index f891ce32..9636e18d 100644 --- a/plugins/precise-volume/back.js +++ b/plugins/precise-volume/back.js @@ -4,6 +4,17 @@ This is used to determine if plugin is actually active */ let enabled = false; -module.exports = () => enabled = true; +const { globalShortcut } = require('electron'); + +module.exports = (win, options) => { + enabled = true; + + if (options.globalShortcuts?.volumeUp) { + globalShortcut.register((options.globalShortcuts.volumeUp), () => win.webContents.send('changeVolume', true)); + } + if (options.globalShortcuts?.volumeDown) { + globalShortcut.register((options.globalShortcuts.volumeDown), () => win.webContents.send('changeVolume', false)); + } +} module.exports.enabled = () => enabled; diff --git a/plugins/precise-volume/front.js b/plugins/precise-volume/front.js index 3b1e34f1..1c9c3ace 100644 --- a/plugins/precise-volume/front.js +++ b/plugins/precise-volume/front.js @@ -1,22 +1,24 @@ const { ipcRenderer } = require("electron"); -const { globalShortcut } = require('@electron/remote'); const { setOptions, setMenuOptions, isEnabled } = require("../../config/plugins"); function $(selector) { return document.querySelector(selector); } -let api; -module.exports = (options) => { +let api, options; + +module.exports = (_options) => { + options = _options; document.addEventListener('apiLoaded', e => { api = e.detail; - firstRun(options); + ipcRenderer.on('changeVolume', (_, toIncrease) => changeVolume(toIncrease)); + firstRun(); }, { once: true, passive: true }) }; module.exports.moveVolumeHud = moveVolumeHud; /** Restore saved volume and setup tooltip */ -function firstRun(options) { +function firstRun() { if (typeof options.savedVolume === "number") { // Set saved volume as tooltip setTooltip(options.savedVolume); @@ -26,16 +28,16 @@ function firstRun(options) { } } - setupPlaybar(options); + setupPlaybar(); - setupLocalArrowShortcuts(options); + setupLocalArrowShortcuts(); - setupGlobalShortcuts(options); + setupGlobalShortcuts(); const noVid = $("#main-panel")?.computedStyleMap().get("display").value === "none"; injectVolumeHud(noVid); if (!noVid) { - setupVideoPlayerOnwheel(options); + setupVideoPlayerOnwheel(); if (!isEnabled('video-toggle')) { //video-toggle handles hud positioning on its own const videoMode = () => api.getPlayerResponse().videoDetails?.musicVideoType !== 'MUSIC_VIDEO_TYPE_ATV'; @@ -98,22 +100,22 @@ function showVolumeHud(volume) { } /** Add onwheel event to video player */ -function setupVideoPlayerOnwheel(options) { +function setupVideoPlayerOnwheel() { $("#main-panel").addEventListener("wheel", event => { event.preventDefault(); // Event.deltaY < 0 means wheel-up - changeVolume(event.deltaY < 0, options); + changeVolume(event.deltaY < 0); }); } -function saveVolume(volume, options) { +function saveVolume(volume) { options.savedVolume = volume; - writeOptions(options); + writeOptions(); } //without this function it would rewrite config 20 time when volume change by 20 let writeTimeout; -function writeOptions(options) { +function writeOptions() { if (writeTimeout) clearTimeout(writeTimeout); writeTimeout = setTimeout(() => { @@ -123,13 +125,13 @@ function writeOptions(options) { } /** Add onwheel event to play bar and also track if play bar is hovered*/ -function setupPlaybar(options) { +function setupPlaybar() { const playerbar = $("ytmusic-player-bar"); playerbar.addEventListener("wheel", event => { event.preventDefault(); // Event.deltaY < 0 means wheel-up - changeVolume(event.deltaY < 0, options); + changeVolume(event.deltaY < 0); }); // Keep track of mouse position for showVolumeSlider() @@ -141,11 +143,11 @@ function setupPlaybar(options) { playerbar.classList.remove("on-hover"); }); - setupSliderObserver(options); + setupSliderObserver(); } /** Save volume + Update the volume tooltip when volume-slider is manually changed */ -function setupSliderObserver(options) { +function setupSliderObserver() { const sliderObserver = new MutationObserver(mutations => { for (const mutation of mutations) { // This checks that volume-slider was manually set @@ -153,7 +155,7 @@ function setupSliderObserver(options) { (typeof options.savedVolume !== "number" || Math.abs(options.savedVolume - mutation.target.value) > 4)) { // Diff>4 means it was manually set setTooltip(mutation.target.value); - saveVolume(mutation.target.value, options); + saveVolume(mutation.target.value); } } }); @@ -166,7 +168,7 @@ function setupSliderObserver(options) { } /** if (toIncrease = false) then volume decrease */ -function changeVolume(toIncrease, options) { +function changeVolume(toIncrease) { // Apply volume change if valid const steps = Number(options.steps || 1); api.setVolume(toIncrease ? @@ -174,10 +176,10 @@ function changeVolume(toIncrease, options) { Math.max(api.getVolume() - steps, 0)); // Save the new volume - saveVolume(api.getVolume(), options); + saveVolume(api.getVolume()); // change slider position (important) - updateVolumeSlider(options); + updateVolumeSlider(); // Change tooltips to new value setTooltip(options.savedVolume); @@ -187,7 +189,7 @@ function changeVolume(toIncrease, options) { showVolumeHud(options.savedVolume); } -function updateVolumeSlider(options) { +function updateVolumeSlider() { // Slider value automatically rounds to multiples of 5 $("#volume-slider").value = options.savedVolume > 0 && options.savedVolume < 5 ? 5 : options.savedVolume; @@ -226,26 +228,17 @@ function setTooltip(volume) { } } -function setupGlobalShortcuts(options) { - if (options.globalShortcuts.volumeUp) { - globalShortcut.register((options.globalShortcuts.volumeUp), () => changeVolume(true, options)); - } - if (options.globalShortcuts.volumeDown) { - globalShortcut.register((options.globalShortcuts.volumeDown), () => changeVolume(false, options)); - } -} - -function setupLocalArrowShortcuts(options) { +function setupLocalArrowShortcuts() { if (options.arrowsShortcut) { window.addEventListener('keydown', (event) => { switch (event.code) { case "ArrowUp": event.preventDefault(); - changeVolume(true, options); + changeVolume(true); break; case "ArrowDown": event.preventDefault(); - changeVolume(false, options); + changeVolume(false); break; } }); diff --git a/plugins/quality-changer/back.js b/plugins/quality-changer/back.js new file mode 100644 index 00000000..d46b8675 --- /dev/null +++ b/plugins/quality-changer/back.js @@ -0,0 +1,15 @@ +const { ipcMain, dialog } = require("electron"); + +module.exports = () => { + ipcMain.handle('qualityChanger', async (_, qualityLabels, currentIndex) => { + return await dialog.showMessageBox({ + type: "question", + buttons: qualityLabels, + defaultId: currentIndex, + title: "Choose Video Quality", + message: "Choose Video Quality:", + detail: `Current Quality: ${qualityLabels[currentIndex]}`, + cancelId: -1 + }) + }) +}; diff --git a/plugins/quality-changer/front.js b/plugins/quality-changer/front.js index 669d39ba..aa79f46a 100644 --- a/plugins/quality-changer/front.js +++ b/plugins/quality-changer/front.js @@ -1,5 +1,5 @@ const { ElementFromFile, templatePath } = require("../utils"); -const { dialog } = require('@electron/remote'); +const { ipcRenderer } = require("electron"); function $(selector) { return document.querySelector(selector); } @@ -21,21 +21,15 @@ function setup(event) { if (api.getPlayerState() === 2) api.playVideo(); else if (api.getPlayerState() === 1) api.pauseVideo(); - const currentIndex = api.getAvailableQualityLevels().indexOf(api.getPlaybackQuality()) + const qualityLevels = api.getAvailableQualityLevels(); - dialog.showMessageBox({ - type: "question", - buttons: api.getAvailableQualityLabels(), - defaultId: currentIndex, - title: "Choose Video Quality", - message: "Choose Video Quality:", - detail: `Current Quality: ${api.getAvailableQualityLabels()[currentIndex]}`, - cancelId: -1 - }).then((promise) => { + const currentIndex = qualityLevels.indexOf(api.getPlaybackQuality()); + + ipcRenderer.invoke('qualityChanger', api.getAvailableQualityLabels(), currentIndex).then(promise => { if (promise.response === -1) return; - const newQuality = api.getAvailableQualityLevels()[promise.response]; + const newQuality = qualityLevels[promise.response]; api.setPlaybackQualityRange(newQuality); api.setPlaybackQuality(newQuality) - }) + }); } } diff --git a/preload.js b/preload.js index 621f46c0..7a4f08be 100644 --- a/preload.js +++ b/preload.js @@ -1,12 +1,11 @@ const path = require("path"); -const remote = require('@electron/remote'); - const config = require("./config"); const { fileExists } = require("./plugins/utils"); const setupFrontLogger = require("./providers/front-logger"); const setupSongInfo = require("./providers/song-info-front"); const { setupSongControls } = require("./providers/song-controls-front"); +const { ipcRenderer } = require("electron"); const plugins = config.plugins.getEnabled(); @@ -53,8 +52,7 @@ document.addEventListener("DOMContentLoaded", () => { setupFrontLogger(); // Add action for reloading - global.reload = () => - remote.getCurrentWindow().webContents.loadURL(config.get("url")); + global.reload = () => ipcRenderer.send('reload'); // Blocks the "Are You Still There?" popup by setting the last active time to Date.now every 15min setInterval(() => window._lact = Date.now(), 900000); diff --git a/providers/app-controls.js b/providers/app-controls.js index 9faded69..dc7403c6 100644 --- a/providers/app-controls.js +++ b/providers/app-controls.js @@ -1,6 +1,19 @@ -const app = require("electron").app || require('@electron/remote').app; +const is = require("electron-is"); + +const { app, BrowserWindow, ipcMain, ipcRenderer } = require("electron"); +const config = require("../config"); module.exports.restart = () => { - app.relaunch(); - app.exit(); + is.main() ? restart() : ipcRenderer.send('restart'); }; + +module.exports.setupAppControls = () => { + ipcMain.on('restart', restart); + ipcMain.handle('getDownloadsFolder', () => app.getPath("downloads")); + ipcMain.on('reload', () => BrowserWindow.getFocusedWindow().webContents.loadURL(config.get("url"))); +} + +function restart() { + app.relaunch(); + app.exit(); +} From 1eeaf1dd0a0fdc94a49c8f03a55ce4d478d62098 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Sun, 20 Feb 2022 19:38:42 +0200 Subject: [PATCH 2/8] remove @electron/remote --- package.json | 13 +++++++++---- yarn.lock | 5 ----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 427b6df1..ab9e946d 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "productName": "YouTube Music", "mac": { "identity": null, - "files": ["!plugins/taskbar-mediacontrol${/*}"], + "files": [ + "!plugins/taskbar-mediacontrol${/*}" + ], "target": [ { "target": "dmg", @@ -29,7 +31,9 @@ }, "win": { "icon": "assets/generated/icons/win/icon.ico", - "files": ["!plugins/touchbar${/*}"], + "files": [ + "!plugins/touchbar${/*}" + ], "target": [ "nsis", "portable" @@ -40,7 +44,9 @@ }, "linux": { "icon": "assets/generated/icons/png", - "files": ["!plugins/{touchbar,taskbar-mediacontrol}${/*}"], + "files": [ + "!plugins/{touchbar,taskbar-mediacontrol}${/*}" + ], "category": "AudioVideo", "target": [ "AppImage", @@ -86,7 +92,6 @@ }, "dependencies": { "@cliqz/adblocker-electron": "^1.23.4", - "@electron/remote": "^2.0.4", "@ffmpeg/core": "^0.10.0", "@ffmpeg/ffmpeg": "^0.10.1", "async-mutex": "^0.3.2", diff --git a/yarn.lock b/yarn.lock index 8ca5e524..60757947 100644 --- a/yarn.lock +++ b/yarn.lock @@ -716,11 +716,6 @@ global-agent "^3.0.0" global-tunnel-ng "^2.7.1" -"@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" resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.0.5.tgz#b812340e4ef21da2b3ee77b2b4d35c9b86defe37" From 7088941179721ad58a81dd99c37b42f2e60cce50 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Tue, 22 Feb 2022 18:27:45 +0200 Subject: [PATCH 3/8] update electron --- package.json | 2 +- plugins/precise-volume/front.js | 2 -- yarn.lock | 8 ++++---- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index ab9e946d..e46840c9 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "ytpl": "^2.2.3" }, "devDependencies": { - "electron": "^17.0.0", + "electron": "^17.0.1", "electron-builder": "^22.14.5", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", diff --git a/plugins/precise-volume/front.js b/plugins/precise-volume/front.js index 1c9c3ace..dcb6ea02 100644 --- a/plugins/precise-volume/front.js +++ b/plugins/precise-volume/front.js @@ -32,8 +32,6 @@ function firstRun() { setupLocalArrowShortcuts(); - setupGlobalShortcuts(); - const noVid = $("#main-panel")?.computedStyleMap().get("display").value === "none"; injectVolumeHud(noVid); if (!noVid) { diff --git a/yarn.lock b/yarn.lock index 60757947..e145ca30 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3185,10 +3185,10 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -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== +electron@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/electron/-/electron-17.0.1.tgz#e6c7ad2be26e7be8a5a9bac16b21920ad2671224" + integrity sha512-CBReR/QEOpgwMdt59lWCtj9wC8oHB6aAjMF1lhXcGew132xtp+C5N6EaXb/fmDceVYLouziYjbNcpeXsWrqdpA== dependencies: "@electron/get" "^1.13.0" "@types/node" "^14.6.2" From 704fba9aba9f13e1a4cda92f703cff9cdf3994cb Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Thu, 24 Feb 2022 20:41:59 +0200 Subject: [PATCH 4/8] fix portable app restart --- index.js | 11 +++-------- menu.js | 6 ++---- preload.js | 6 +----- providers/app-controls.js | 5 +++-- tray.js | 8 +++----- 5 files changed, 12 insertions(+), 24 deletions(-) diff --git a/index.js b/index.js index fdbe7e4f..9406757a 100644 --- a/index.js +++ b/index.js @@ -13,7 +13,7 @@ const { fileExists, injectCSS } = require("./plugins/utils"); const { isTesting } = require("./utils/testing"); const { setUpTray } = require("./tray"); const { setupSongInfo } = require("./providers/song-info"); -const { setupAppControls } = require("./providers/app-controls"); +const { setupAppControls, restart } = require("./providers/app-controls"); // Catch errors and log them unhandled({ @@ -435,13 +435,8 @@ function showUnresponsiveDialog(win, details) { cancelId: 0 }).then( result => { switch (result.response) { - case 1: //if relaunch - relaunch+exit - app.relaunch(); - case 2: - app.quit(); - break; - default: - break; + case 1: restart(); break; + case 2: app.quit(); break; } }); } diff --git a/menu.js b/menu.js index 13f87568..0f3448d3 100644 --- a/menu.js +++ b/menu.js @@ -3,6 +3,7 @@ const path = require("path"); const { app, Menu, dialog } = require("electron"); const is = require("electron-is"); +const { restart } = require("./providers/app-controls"); const { getAllPlugins } = require("./plugins/utils"); const config = require("./config"); @@ -279,10 +280,7 @@ const mainMenuTemplate = (win) => { }, { label: "Restart App", - click: () => { - app.relaunch(); - app.quit(); - }, + click: restart }, { role: "quit" }, ], diff --git a/preload.js b/preload.js index 7a4f08be..0e387f61 100644 --- a/preload.js +++ b/preload.js @@ -1,8 +1,7 @@ const path = require("path"); - +require("./providers/front-logger")(); const config = require("./config"); const { fileExists } = require("./plugins/utils"); -const setupFrontLogger = require("./providers/front-logger"); const setupSongInfo = require("./providers/song-info-front"); const { setupSongControls } = require("./providers/song-controls-front"); const { ipcRenderer } = require("electron"); @@ -48,9 +47,6 @@ document.addEventListener("DOMContentLoaded", () => { // inject song-controls setupSongControls(); - // inject front logger - setupFrontLogger(); - // Add action for reloading global.reload = () => ipcRenderer.send('reload'); diff --git a/providers/app-controls.js b/providers/app-controls.js index dc7403c6..d51b6901 100644 --- a/providers/app-controls.js +++ b/providers/app-controls.js @@ -14,6 +14,7 @@ module.exports.setupAppControls = () => { } function restart() { - app.relaunch(); - app.exit(); + app.relaunch({ execPath: process.env.PORTABLE_EXECUTABLE_FILE }); + // execPath will be undefined if not running portable app, resulting in default behavior + app.quit(); } diff --git a/tray.js b/tray.js index b89902ab..e2c8c9e3 100644 --- a/tray.js +++ b/tray.js @@ -2,6 +2,7 @@ const path = require("path"); const { Menu, nativeImage, Tray } = require("electron"); +const { restart } = require("./providers/app-controls"); const config = require("./config"); const getSongControls = require("./providers/song-controls"); @@ -58,12 +59,9 @@ module.exports.setUpTray = (app, win) => { }, { label: "Restart App", - click: () => { - app.relaunch(); - app.quit(); - }, + click: restart }, - { role: "quit" } + { role: "quit" } ]; const trayMenu = Menu.buildFromTemplate(template); From bed8d0a7f223e3e1f90b1d673e704054bca70cff Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Tue, 8 Mar 2022 19:45:44 +0200 Subject: [PATCH 5/8] update Electron + update electron-unhandled --- index.js | 1 - package.json | 6 +++--- yarn.lock | 42 ++++++++++++++++++++++++++++++------------ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/index.js b/index.js index 9406757a..dfb15bec 100644 --- a/index.js +++ b/index.js @@ -119,7 +119,6 @@ function createMainWindow() { contextIsolation: false, preload: path.join(__dirname, "preload.js"), nodeIntegrationInSubFrames: true, - nativeWindowOpen: true, // window.open return Window object(like in regular browsers), not BrowserWindowProxy affinity: "main-window", // main window, and addition windows should work in one process ...(isTesting() ? { diff --git a/package.json b/package.json index 35be44a8..ea737b00 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "electron-is": "^3.0.0", "electron-localshortcut": "^3.2.1", "electron-store": "^8.0.1", - "electron-unhandled": "^3.0.2", + "electron-unhandled": "^4.0.1", "electron-updater": "^4.6.3", "filenamify": "^4.3.0", "hark": "^1.2.3", @@ -118,8 +118,8 @@ "ytpl": "^2.2.3" }, "devDependencies": { - "electron": "^17.0.1", "auto-changelog": "^2.4.0", + "electron": "^18.0.0", "electron-builder": "^22.14.5", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", @@ -137,7 +137,7 @@ "hideCredit": true, "package": true, "unreleased": true, - "output": "changelog.md" + "output": "changelog.md" }, "xo": { "envs": [ diff --git a/yarn.lock b/yarn.lock index 0dcb9c5b..d0505bc2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1535,11 +1535,16 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== -"@types/node@*", "@types/node@^14.6.2": +"@types/node@*": version "14.14.44" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== +"@types/node@^16.11.26": + version "16.11.26" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.26.tgz#63d204d136c9916fb4dcd1b50f9740fe86884e47" + integrity sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -3111,11 +3116,16 @@ electron-is-dev@^0.3.0: resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-0.3.0.tgz#14e6fda5c68e9e4ecbeff9ccf037cbd7c05c5afe" integrity sha1-FOb9pcaOnk7L7/nM8DfL18BcWv4= -electron-is-dev@^1.0.1, electron-is-dev@^1.1.0: +electron-is-dev@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" integrity sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw== +electron-is-dev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd" + integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== + electron-is@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/electron-is/-/electron-is-3.0.0.tgz#bd4c27651fbe03f243f3607c2a098be884f9ed50" @@ -3177,15 +3187,16 @@ electron-to-chromium@^1.3.878: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.878.tgz#baa9fb5c24b9b580f08fb245cbb52a22f8fc8fa8" integrity sha512-O6yxWCN9ph2AdspAIszBnd9v8s11hQx8ub9w4UGApzmNRnoKhbulOWqbO8THEQec/aEHtvy+donHZMlh6l1rbA== -electron-unhandled@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/electron-unhandled/-/electron-unhandled-3.0.2.tgz#e14a19c830ccf7b6e755191c8e78d23094d25112" - integrity sha512-IIqXnM5eNgV7k5sDA/GZ39ygJbpfF3WTArNGQ1TB4AI6ajQuuVztA0M6Mq9uEpmTh5gz4nR+YsTNWYsHLoM5rw== +electron-unhandled@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/electron-unhandled/-/electron-unhandled-4.0.1.tgz#82bbcb5ee5423f611f6122e006bf4842dfd7c908" + integrity sha512-6BsLnBg+i96eUnbaIFZyYdyfNX3f80/Nlfqy34YEMxXT9JP3ddNsNnUeiOF8ezN4+et4t4D37gjghKTP0V3jyw== dependencies: clean-stack "^2.1.0" - electron-is-dev "^1.0.1" + electron-is-dev "^2.0.0" ensure-error "^2.0.0" lodash.debounce "^4.0.8" + serialize-error "^8.1.0" electron-updater@^4.6.3: version "4.6.5" @@ -3201,13 +3212,13 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -electron@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-17.0.1.tgz#e6c7ad2be26e7be8a5a9bac16b21920ad2671224" - integrity sha512-CBReR/QEOpgwMdt59lWCtj9wC8oHB6aAjMF1lhXcGew132xtp+C5N6EaXb/fmDceVYLouziYjbNcpeXsWrqdpA== +electron@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-18.0.0.tgz#c43fda5b8470a69313cdd79ba370ee6e42cda5b8" + integrity sha512-olAmqc+pNCDM9/nvYnZxhbAwQlMF01lDCesTKJjwItu2DaWZZm959OFTD+1mc/Q/YHDq9eqyD7MjqxjKuoWgWQ== dependencies: "@electron/get" "^1.13.0" - "@types/node" "^14.6.2" + "@types/node" "^16.11.26" extract-zip "^1.0.3" emittery@^0.8.1: @@ -7250,6 +7261,13 @@ serialize-error@^7.0.1: dependencies: type-fest "^0.13.1" +serialize-error@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" + integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== + dependencies: + type-fest "^0.20.2" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" From c3d90d8b2766e9374e5863ad8c47d13e30608184 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Tue, 8 Mar 2022 19:45:44 +0200 Subject: [PATCH 6/8] update Electron + update electron-unhandled --- index.js | 1 - package.json | 6 +++--- yarn.lock | 42 ++++++++++++++++++++++++++++++------------ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/index.js b/index.js index 9406757a..dfb15bec 100644 --- a/index.js +++ b/index.js @@ -119,7 +119,6 @@ function createMainWindow() { contextIsolation: false, preload: path.join(__dirname, "preload.js"), nodeIntegrationInSubFrames: true, - nativeWindowOpen: true, // window.open return Window object(like in regular browsers), not BrowserWindowProxy affinity: "main-window", // main window, and addition windows should work in one process ...(isTesting() ? { diff --git a/package.json b/package.json index 35be44a8..5dbfd384 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "electron-is": "^3.0.0", "electron-localshortcut": "^3.2.1", "electron-store": "^8.0.1", - "electron-unhandled": "^3.0.2", + "electron-unhandled": "^4.0.1", "electron-updater": "^4.6.3", "filenamify": "^4.3.0", "hark": "^1.2.3", @@ -118,8 +118,8 @@ "ytpl": "^2.2.3" }, "devDependencies": { - "electron": "^17.0.1", "auto-changelog": "^2.4.0", + "electron": "^18.0.3", "electron-builder": "^22.14.5", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", @@ -137,7 +137,7 @@ "hideCredit": true, "package": true, "unreleased": true, - "output": "changelog.md" + "output": "changelog.md" }, "xo": { "envs": [ diff --git a/yarn.lock b/yarn.lock index 0dcb9c5b..c87a0139 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1535,11 +1535,16 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== -"@types/node@*", "@types/node@^14.6.2": +"@types/node@*": version "14.14.44" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215" integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA== +"@types/node@^16.11.26": + version "16.11.26" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.26.tgz#63d204d136c9916fb4dcd1b50f9740fe86884e47" + integrity sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -3111,11 +3116,16 @@ electron-is-dev@^0.3.0: resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-0.3.0.tgz#14e6fda5c68e9e4ecbeff9ccf037cbd7c05c5afe" integrity sha1-FOb9pcaOnk7L7/nM8DfL18BcWv4= -electron-is-dev@^1.0.1, electron-is-dev@^1.1.0: +electron-is-dev@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" integrity sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw== +electron-is-dev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd" + integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== + electron-is@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/electron-is/-/electron-is-3.0.0.tgz#bd4c27651fbe03f243f3607c2a098be884f9ed50" @@ -3177,15 +3187,16 @@ electron-to-chromium@^1.3.878: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.878.tgz#baa9fb5c24b9b580f08fb245cbb52a22f8fc8fa8" integrity sha512-O6yxWCN9ph2AdspAIszBnd9v8s11hQx8ub9w4UGApzmNRnoKhbulOWqbO8THEQec/aEHtvy+donHZMlh6l1rbA== -electron-unhandled@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/electron-unhandled/-/electron-unhandled-3.0.2.tgz#e14a19c830ccf7b6e755191c8e78d23094d25112" - integrity sha512-IIqXnM5eNgV7k5sDA/GZ39ygJbpfF3WTArNGQ1TB4AI6ajQuuVztA0M6Mq9uEpmTh5gz4nR+YsTNWYsHLoM5rw== +electron-unhandled@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/electron-unhandled/-/electron-unhandled-4.0.1.tgz#82bbcb5ee5423f611f6122e006bf4842dfd7c908" + integrity sha512-6BsLnBg+i96eUnbaIFZyYdyfNX3f80/Nlfqy34YEMxXT9JP3ddNsNnUeiOF8ezN4+et4t4D37gjghKTP0V3jyw== dependencies: clean-stack "^2.1.0" - electron-is-dev "^1.0.1" + electron-is-dev "^2.0.0" ensure-error "^2.0.0" lodash.debounce "^4.0.8" + serialize-error "^8.1.0" electron-updater@^4.6.3: version "4.6.5" @@ -3201,13 +3212,13 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -electron@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-17.0.1.tgz#e6c7ad2be26e7be8a5a9bac16b21920ad2671224" - integrity sha512-CBReR/QEOpgwMdt59lWCtj9wC8oHB6aAjMF1lhXcGew132xtp+C5N6EaXb/fmDceVYLouziYjbNcpeXsWrqdpA== +electron@^18.0.3: + version "18.0.3" + resolved "https://registry.yarnpkg.com/electron/-/electron-18.0.3.tgz#58713c92b44e439881540d18910d193defb0c2b4" + integrity sha512-QRUZkGL8O/8CyDmTLSjBeRsZmGTPlPVeWnnpkdNqgHYYaOc/A881FKMiNzvQ9Cj0a+rUavDdwBUfUL82U3Ay7w== dependencies: "@electron/get" "^1.13.0" - "@types/node" "^14.6.2" + "@types/node" "^16.11.26" extract-zip "^1.0.3" emittery@^0.8.1: @@ -7250,6 +7261,13 @@ serialize-error@^7.0.1: dependencies: type-fest "^0.13.1" +serialize-error@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" + integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== + dependencies: + type-fest "^0.20.2" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" From 7bd69e447ae02de239ceb598eda583e435da7d51 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Mon, 18 Apr 2022 19:03:10 +0300 Subject: [PATCH 7/8] update Electron --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d6db1478..ee90968b 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ }, "devDependencies": { "auto-changelog": "^2.4.0", - "electron": "^18.0.3", + "electron": "^18.2.0", "electron-builder": "^22.14.5", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", diff --git a/yarn.lock b/yarn.lock index 38a0b7c6..588a0d6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3212,10 +3212,10 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -electron@^18.0.3: - version "18.0.3" - resolved "https://registry.yarnpkg.com/electron/-/electron-18.0.3.tgz#58713c92b44e439881540d18910d193defb0c2b4" - integrity sha512-QRUZkGL8O/8CyDmTLSjBeRsZmGTPlPVeWnnpkdNqgHYYaOc/A881FKMiNzvQ9Cj0a+rUavDdwBUfUL82U3Ay7w== +electron@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-18.2.0.tgz#a0cbf8d5d1a1e9d1c195d86cd6937e721ed60fec" + integrity sha512-AN+CKalzA57beuvuI90PVgW/yj6zjw7rpb1h8FvIwBJ3toDC3x0Plfzbzh4Ondecbjci7pSg/NA5ngOk804WIQ== dependencies: "@electron/get" "^1.13.0" "@types/node" "^16.11.26" From a4aa22aae9c0df125fe74e5e3dce250beec622e8 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Wed, 18 May 2022 20:21:37 +0300 Subject: [PATCH 8/8] update Electron --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7d4f37aa..fa655f2b 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ }, "devDependencies": { "auto-changelog": "^2.4.0", - "electron": "^18.2.0", + "electron": "^18.2.3", "electron-builder": "^23.0.3", "electron-devtools-installer": "^3.1.1", "electron-icon-maker": "0.0.5", diff --git a/yarn.lock b/yarn.lock index d7b96ea8..762d719d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3280,10 +3280,10 @@ electron-updater@^4.6.3: lodash.isequal "^4.5.0" semver "^7.3.5" -electron@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-18.2.0.tgz#a0cbf8d5d1a1e9d1c195d86cd6937e721ed60fec" - integrity sha512-AN+CKalzA57beuvuI90PVgW/yj6zjw7rpb1h8FvIwBJ3toDC3x0Plfzbzh4Ondecbjci7pSg/NA5ngOk804WIQ== +electron@^18.2.3: + version "18.2.3" + resolved "https://registry.yarnpkg.com/electron/-/electron-18.2.3.tgz#36bcb8f71e41631e6b11179eeff291c8228bfd6a" + integrity sha512-DJWX03hCRKTscsfXxmW4gmgFuseop+g+m4ml7NfOMfankD8uYyr2Xyi3Ui02inL9qZOlbLMeLVCu6jKCKs8p/w== dependencies: "@electron/get" "^1.13.0" "@types/node" "^16.11.26"