diff --git a/app/lib/index.ts b/app/lib/index.ts index cc55f413..5326393c 100644 --- a/app/lib/index.ts +++ b/app/lib/index.ts @@ -31,6 +31,8 @@ try { app.exit(1) } +process.mainModule = module + const application = new Application(configStore) ipcMain.on('app:new-window', () => { diff --git a/app/lib/window.ts b/app/lib/window.ts index 63ce9fef..d1887fae 100644 --- a/app/lib/window.ts +++ b/app/lib/window.ts @@ -1,5 +1,5 @@ import * as glasstron from 'glasstron' - +import { autoUpdater } from 'electron-updater' import { Subject, Observable, debounceTime } from 'rxjs' import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar, nativeImage, WebContents } from 'electron' import ElectronConfig = require('electron-config') @@ -159,6 +159,7 @@ export class Window { } this.setupWindowManagement() + this.setupUpdater() this.ready = new Promise(resolve => { const listener = event => { @@ -346,11 +347,8 @@ export class Window { this.send('host:window-focused') }) - ipcMain.on('ready', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.webContents.send('start', { + this.on('ready', () => { + this.window?.webContents.send('start', { config: this.configStore, executable: app.getPath('exe'), windowID: this.window.id, @@ -359,42 +357,26 @@ export class Window { }) }) - ipcMain.on('window-minimize', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.minimize() + this.on('window-minimize', () => { + this.window?.minimize() }) - ipcMain.on('window-set-bounds', (event, bounds) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.setBounds(bounds) + this.on('window-set-bounds', (_, bounds) => { + this.window?.setBounds(bounds) }) - ipcMain.on('window-set-always-on-top', (event, flag) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.setAlwaysOnTop(flag) + this.on('window-set-always-on-top', (_, flag) => { + this.window?.setAlwaysOnTop(flag) }) - ipcMain.on('window-set-vibrancy', (event, enabled, type) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } + this.on('window-set-vibrancy', (_, enabled, type) => { this.setVibrancy(enabled, type) }) - ipcMain.on('window-set-window-controls-color', (event, theme) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - + this.on('window-set-window-controls-color', (_, theme) => { if (process.platform === 'win32') { const symbolColor: string = theme.foreground - this.window.setTitleBarOverlay( + this.window?.setTitleBarOverlay( { symbolColor: symbolColor, height: 32, @@ -403,32 +385,23 @@ export class Window { } }) - ipcMain.on('window-set-title', (event, title) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.setTitle(title) + this.on('window-set-title', (_, title) => { + this.window?.setTitle(title) }) - ipcMain.on('window-bring-to-front', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - if (this.window.isMinimized()) { + this.on('window-bring-to-front', () => { + if (this.window?.isMinimized()) { this.window.restore() } this.present() }) - ipcMain.on('window-close', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } + this.on('window-close', () => { this.closing = true this.window.close() }) - ipcMain.on('window-set-touch-bar', (_event, segments, selectedIndex) => { + this.on('window-set-touch-bar', (_, segments, selectedIndex) => { this.touchBarControl.segments = segments.map(s => ({ label: s.label, icon: s.hasActivity ? activityIcon : undefined, @@ -468,8 +441,46 @@ export class Window { this.window.setOpacity(opacity) }) - ipcMain.on('window-set-progress-bar', (_event, value) => { - this.window.setProgressBar(value, { mode: value < 0 ? 'none' : 'normal' }) + this.on('window-set-progress-bar', (_, value) => { + this.window?.setProgressBar(value, { mode: value < 0 ? 'none' : 'normal' }) + }) + } + + on (event: string, listener: (...args: any[]) => void): void { + ipcMain.on(event, (e, ...args) => { + if (!this.window || e.sender !== this.window.webContents) { + return + } + listener(e, ...args) + }) + } + + private setupUpdater () { + autoUpdater.autoDownload = true + autoUpdater.autoInstallOnAppQuit = true + + autoUpdater.on('update-available', () => { + this.send('updater:update-available') + }) + + autoUpdater.on('update-not-available', () => { + this.send('updater:update-not-available') + }) + + autoUpdater.on('error', err => { + this.send('updater:error', err) + }) + + autoUpdater.on('update-downloaded', () => { + this.send('updater:update-downloaded') + }) + + this.on('updater:check-for-updates', () => { + autoUpdater.checkForUpdates() + }) + + this.on('updater:quit-and-install', () => { + autoUpdater.quitAndInstall() }) } diff --git a/app/package.json b/app/package.json index 679538de..63891ec0 100644 --- a/app/package.json +++ b/app/package.json @@ -15,7 +15,7 @@ "watch": "webpack --progress --color --watch" }, "dependencies": { - "@electron/remote": "2.0.10", + "@electron/remote": "^2", "node-pty": "^1.0", "any-promise": "^1.3.0", "electron-config": "2.0.0", @@ -63,8 +63,7 @@ "tabby-terminal": "*" }, "resolutions": { - "*/node-abi": "^2.20.0", - "node-gyp": "^10.0.0", - "nan": "github:jkleinsc/nan#remove_accessor_signature" + "*/node-abi": "^3", + "node-gyp": "^10.0.0" } } diff --git a/app/patches/@serialport+bindings-cpp+11.0.1.patch b/app/patches/@serialport+bindings-cpp+11.0.3.patch similarity index 100% rename from app/patches/@serialport+bindings-cpp+11.0.1.patch rename to app/patches/@serialport+bindings-cpp+11.0.3.patch diff --git a/app/webpack.config.main.mjs b/app/webpack.config.main.mjs index 920f0b11..ab8599de 100644 --- a/app/webpack.config.main.mjs +++ b/app/webpack.config.main.mjs @@ -42,6 +42,7 @@ const config = { 'electron-config': 'commonjs electron-config', 'electron-debug': 'commonjs electron-debug', 'electron-promise-ipc': 'commonjs electron-promise-ipc', + 'electron-updater': 'commonjs electron-updater', fs: 'commonjs fs', glasstron: 'commonjs glasstron', mz: 'commonjs mz', diff --git a/app/yarn.lock b/app/yarn.lock index 508f97b0..1aa949c3 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@electron/remote@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.10.tgz#133e2f607b1861ac249bd78b5abd1e961feed713" - integrity sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA== +"@electron/remote@^2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.1.2.tgz#52a97c8faa5b769155b649ef262f2f8c851776e6" + integrity sha512-EPwNx+nhdrTBxyCqXt/pftoQg/ybtWDW3DUWHafejvnB1ZGGfMpv6e15D8KeempocjXe78T7WreyGGb3mlZxdA== "@iarna/cli@^1.2.0": version "1.2.0" @@ -2577,9 +2577,10 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.17.0, "nan@github:jkleinsc/nan#remove_accessor_signature": - version "2.16.0" - resolved "https://codeload.github.com/jkleinsc/nan/tar.gz/6a2f95a6a2209d8aa7542fb18099fd808a802059" +nan@^2.17.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== napi-build-utils@^1.0.1: version "1.0.2" @@ -2610,12 +2611,12 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-abi@^2.20.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" - integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== +node-abi@^3: + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== dependencies: - semver "^5.4.1" + semver "^7.3.5" node-abi@^3.3.0: version "3.8.0" @@ -3909,6 +3910,7 @@ strict-uri-encode@^2.0.0: integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3986,6 +3988,7 @@ stringify-package@^1.0.0, stringify-package@^1.0.1: integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.1: + name strip-ansi-cjs version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -4432,6 +4435,7 @@ worker-farm@^1.6.0, worker-farm@^1.7.0: errno "~0.1.7" "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + name wrap-ansi-cjs version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== diff --git a/package.json b/package.json index 3f2f049b..037bf809 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "cross-env": "7.0.3", "css-loader": "^6.7.3", "deep-equal": "2.0.5", - "electron": "^27.0.4", + "electron": "^29", "electron-builder": "^24.6.4", "electron-download": "^4.1.1", "electron-installer-snap": "^5.1.0", @@ -55,7 +55,7 @@ "lru-cache": "^6.0.0", "macos-release": "^3.1.0", "ngx-toastr": "^16.0.2", - "node-abi": "^3.51.0", + "node-abi": "^3.65.0", "npmlog": "6.0.2", "npx": "^10.2.2", "patch-package": "^6.4.7", diff --git a/patches/app-builder-lib+24.4.0.patch b/patches/app-builder-lib+24.6.4.patch similarity index 100% rename from patches/app-builder-lib+24.4.0.patch rename to patches/app-builder-lib+24.6.4.patch diff --git a/tabby-electron/src/services/electron.service.ts b/tabby-electron/src/services/electron.service.ts index a56e32ca..24e88a61 100644 --- a/tabby-electron/src/services/electron.service.ts +++ b/tabby-electron/src/services/electron.service.ts @@ -16,7 +16,6 @@ export class ElectronService { clipboard: Clipboard globalShortcut: GlobalShortcut screen: Screen - remote = remote process: any autoUpdater: AutoUpdater powerSaveBlocker: PowerSaveBlocker @@ -44,7 +43,6 @@ export class ElectronService { this.BrowserWindow = remote.BrowserWindow this.Menu = remote.Menu this.MenuItem = remote.MenuItem - this.MenuItem = remote.MenuItem this.nativeTheme = remote.nativeTheme } } diff --git a/tabby-electron/src/services/updater.service.ts b/tabby-electron/src/services/updater.service.ts index ae6132a9..141ca2fc 100644 --- a/tabby-electron/src/services/updater.service.ts +++ b/tabby-electron/src/services/updater.service.ts @@ -1,4 +1,3 @@ -import type { AppUpdater } from 'electron-updater' import { Injectable } from '@angular/core' import axios from 'axios' @@ -13,7 +12,6 @@ export class ElectronUpdaterService extends UpdaterService { private downloaded: Promise private electronUpdaterAvailable = true private updateURL: string - private autoUpdater: AppUpdater constructor ( log: LogService, @@ -30,32 +28,28 @@ export class ElectronUpdaterService extends UpdaterService { return } - this.autoUpdater = electron.remote.require('electron-updater').autoUpdater - this.autoUpdater.autoDownload = true - this.autoUpdater.autoInstallOnAppQuit = false - - this.autoUpdater.on('update-available', () => { + this.electron.ipcRenderer.on('updater:update-available', () => { this.logger.info('Update available') }) - this.autoUpdater.on('update-not-available', () => { + this.electron.ipcRenderer.on('updater:update-not-available', () => { this.logger.info('No updates') }) - this.autoUpdater.on('error', err => { + this.electron.ipcRenderer.on('updater:error', err => { this.logger.error(err) this.electronUpdaterAvailable = false }) this.downloaded = new Promise(resolve => { - this.autoUpdater.once('update-downloaded', () => resolve(true)) + this.electron.ipcRenderer.once('updater:update-downloaded', () => resolve(true)) }) config.ready$.toPromise().then(() => { if (config.store.enableAutomaticUpdates && this.electronUpdaterAvailable && !process.env.TABBY_DEV) { this.logger.debug('Checking for updates') try { - this.autoUpdater.checkForUpdates() + this.electron.ipcRenderer.send('updater:check-for-updates') } catch (e) { this.electronUpdaterAvailable = false this.logger.info('Electron updater unavailable, falling back', e) @@ -82,26 +76,26 @@ export class ElectronUpdaterService extends UpdaterService { reject(err) } cancel = () => { - this.autoUpdater.off('error', onError) - this.autoUpdater.off('update-not-available', onNoUpdate) - this.autoUpdater.off('update-available', onUpdate) + this.electron.ipcRenderer.off('updater:error', onError) + this.electron.ipcRenderer.off('updater:update-not-available', onNoUpdate) + this.electron.ipcRenderer.off('updater:update-available', onUpdate) } - this.autoUpdater.on('error', onError) - this.autoUpdater.on('update-not-available', onNoUpdate) - this.autoUpdater.on('update-available', onUpdate) + this.electron.ipcRenderer.on('updater:error', onError) + this.electron.ipcRenderer.on('updater:update-not-available', onNoUpdate) + this.electron.ipcRenderer.on('updater:update-available', onUpdate) try { - this.autoUpdater.checkForUpdates() + this.electron.ipcRenderer.send('updater:check-for-updates') } catch (e) { this.electronUpdaterAvailable = false this.logger.info('Electron updater unavailable, falling back', e) } }) - this.autoUpdater.on('update-available', () => { + this.electron.ipcRenderer.on('updater:update-available', () => { this.logger.info('Update available') }) - this.autoUpdater.once('update-not-available', () => { + this.electron.ipcRenderer.once('updater:update-not-available', () => { this.logger.info('No updates') }) @@ -138,7 +132,7 @@ export class ElectronUpdaterService extends UpdaterService { }, )).response === 0) { await this.downloaded - this.autoUpdater.quitAndInstall() + this.electron.ipcRenderer.send('updater:quit-and-install') } } } diff --git a/tabby-linkifier/yarn.lock b/tabby-linkifier/yarn.lock index 93475bf7..81339e7b 100644 --- a/tabby-linkifier/yarn.lock +++ b/tabby-linkifier/yarn.lock @@ -11,8 +11,3 @@ untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -xterm-addon-web-links@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/xterm-addon-web-links/-/xterm-addon-web-links-0.7.0.tgz#dceac36170605f9db10a01d716bd83ee38f65c17" - integrity sha512-6PqoqzzPwaeSq22skzbvyboDvSnYk5teUYEoKBwMYvhbkwOQkemZccjWHT5FnNA8o1aInTc4PRYAl4jjPucCKA== diff --git a/tabby-ssh/yarn.lock b/tabby-ssh/yarn.lock index 75d5e470..34474ca1 100644 --- a/tabby-ssh/yarn.lock +++ b/tabby-ssh/yarn.lock @@ -9,15 +9,22 @@ dependencies: ipv6 "*" -"@types/node@*", "@types/node@20.3.1": +"@types/node@*": + version "22.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b" + integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw== + dependencies: + undici-types "~6.13.0" + +"@types/node@20.3.1": version "20.3.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== "@types/ssh2-streams@*": - version "0.1.8" - resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz#142af404dae059931aea7fcd1511b5478964feb6" - integrity sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA== + version "0.1.12" + resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.12.tgz#e68795ba2bf01c76b93f9c9809e1f42f0eaaec5f" + integrity sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg== dependencies: "@types/node" "*" @@ -337,6 +344,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +undici-types@~6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" + integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== + winston@0.8.x: version "0.8.3" resolved "https://registry.yarnpkg.com/winston/-/winston-0.8.3.tgz#64b6abf4cd01adcaefd5009393b1d8e8bec19db0" diff --git a/yarn.lock b/yarn.lock index dcdd9f68..44dade65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -863,10 +863,12 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== -"@types/node@^18.11.18": - version "18.17.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.12.tgz#c6bd7413a13e6ad9cfb7e97dd5c4e904c1821e50" - integrity sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ== +"@types/node@^20.9.0": + version "20.14.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.14.tgz#6b655d4a88623b0edb98300bb9dd2107225f885e" + integrity sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ== + dependencies: + undici-types "~5.26.4" "@types/parse5@^5": version "5.0.3" @@ -2505,13 +2507,13 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cpu-features@~0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.8.tgz#a2d464b023b8ad09004c8cdca23b33f192f63546" - integrity sha512-BbHBvtYhUhksqTjr6bhNOjGgMnhwhGTQmOoZGD+K7BCaQDCuZl/Ve1ZxUSMRwVC4D/rkCPQ2MAIeYzrWyK7eEg== +cpu-features@~0.0.9: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.10.tgz#9aae536db2710c7254d7ed67cb3cbc7d29ad79c5" + integrity sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA== dependencies: buildcheck "~0.0.6" - nan "^2.17.0" + nan "^2.19.0" crc@^3.8.0: version "3.8.0" @@ -3071,13 +3073,13 @@ electron-to-chromium@^1.4.284: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz#0e039de59135f44ab9a8ec9025e53a9135eba11f" integrity sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ== -electron@^27.0.4: - version "27.1.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-27.1.0.tgz#d759885e552d7d926526cfc433ab312796f74a9a" - integrity sha512-XPdJiO475QJ8cx59/goWNNWnlV0vab+Ut3occymos7VDxkHV5mFrlW6tcGi+M3bW6gBfwpJocWMng8tw542vww== +electron@^29: + version "29.4.5" + resolved "https://registry.yarnpkg.com/electron/-/electron-29.4.5.tgz#b83bbeee6fc722dbbaab30d3a6bc8e982c9ab98d" + integrity sha512-DlEuzGbWBYl1Qr0qUYgNZdoixJg4YGHy2HC6fkRjSXSlb01UrQ5ORi8hNLzelzyYx8rNQyyE3zDUuk9EnZwYuA== dependencies: "@electron/get" "^2.0.0" - "@types/node" "^18.11.18" + "@types/node" "^20.9.0" extract-zip "^2.0.1" elliptic@^6.5.3: @@ -5983,7 +5985,7 @@ mute-stream@~0.0.4: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@2.17.0, nan@^2.17.0: +nan@2.17.0, nan@^2.18.0, nan@^2.19.0: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== @@ -6028,10 +6030,10 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-abi@^3.0.0, node-abi@^3.51.0: - version "3.51.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.51.0.tgz#970bf595ef5a26a271307f8a4befa02823d4e87d" - integrity sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA== +node-abi@^3.0.0, node-abi@^3.65.0: + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== dependencies: semver "^7.3.5" @@ -8219,15 +8221,15 @@ sprintf-js@~1.0.2: integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= ssh2@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.14.0.tgz#8f68440e1b768b66942c9e4e4620b2725b3555bb" - integrity sha512-AqzD1UCqit8tbOKoj6ztDDi1ffJZ2rV2SwlgrVVrHPkV5vWqGJOVp5pmtj18PunkPJAuKQsnInyKV+/Nb2bUnA== + version "1.15.0" + resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.15.0.tgz#2f998455036a7f89e0df5847efb5421748d9871b" + integrity sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw== dependencies: asn1 "^0.2.6" bcrypt-pbkdf "^1.0.2" optionalDependencies: - cpu-features "~0.0.8" - nan "^2.17.0" + cpu-features "~0.0.9" + nan "^2.18.0" sshpk@^1.7.0: version "1.16.1" @@ -8926,6 +8928,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unique-filename@^1.1.0, unique-filename@~1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz"