diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 807b2ccd..320ae982 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,8 +47,10 @@ jobs: path: | release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-win.zip release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-ia32-win.zip - release/${{ steps.extract_version.outputs.version }}/Lindo ${{ steps.extract_version.outputs.version }}.exe - release/${{ steps.extract_version.outputs.version }}/Lindo Setup ${{ steps.extract_version.outputs.version }}.exe + release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}.exe + release/${{ steps.extract_version.outputs.version }}/Lindo-Setup-${{ steps.extract_version.outputs.version }}.exe + release/${{ steps.extract_version.outputs.version }}/Lindo-Setup-${{ steps.extract_version.outputs.version }}.exe.blockmap + release/${{ steps.extract_version.outputs.version }}/latest.yml - name: Upload MacOS artifacts uses: actions/upload-artifact@v2 @@ -57,7 +59,14 @@ jobs: name: macos path: | release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}.dmg + release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}.dmg.blockmap release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-arm64.dmg + release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-arm64.dmg.blockmap + release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-mac.zip + release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-mac.zip.blockmap + release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-arm64-mac.zip + release/${{ steps.extract_version.outputs.version }}/Lindo-${{ steps.extract_version.outputs.version }}-arm64-mac.zip.blockmap + release/${{ steps.extract_version.outputs.version }}/latest-mac.yml - name: Upload Linux artifacts uses: actions/upload-artifact@v2 @@ -71,6 +80,7 @@ jobs: release/${{ steps.extract_version.outputs.version }}/lindo-${{ steps.extract_version.outputs.version }}-arm64.tar.gz release/${{ steps.extract_version.outputs.version }}/lindo_${{ steps.extract_version.outputs.version }}_amd64.deb release/${{ steps.extract_version.outputs.version }}/lindo_${{ steps.extract_version.outputs.version }}_arm64.deb + release/${{ steps.extract_version.outputs.version }}/latest-linux.yml create-release: name: "Upload Release" @@ -99,16 +109,25 @@ jobs: automatic_release_tag: "v${{ steps.extract_version.outputs.version }}" title: "v${{ steps.extract_version.outputs.version }}" files: | - windows/Lindo ${{ steps.extract_version.outputs.version }}.exe - windows/Lindo Setup ${{ steps.extract_version.outputs.version }}.exe + windows/Lindo-${{ steps.extract_version.outputs.version }}.exe + windows/Lindo-Setup-${{ steps.extract_version.outputs.version }}.exe + windows/Lindo-Setup-${{ steps.extract_version.outputs.version }}.exe.blockmap windows/Lindo-${{ steps.extract_version.outputs.version }}-win.zip windows/Lindo-${{ steps.extract_version.outputs.version }}-ia32-win.zip + windows/latest.yml linux/Lindo-${{ steps.extract_version.outputs.version }}.AppImage linux/Lindo-${{ steps.extract_version.outputs.version }}-arm64.AppImage linux/lindo-${{ steps.extract_version.outputs.version }}.tar.gz linux/lindo-${{ steps.extract_version.outputs.version }}-arm64.tar.gz linux/lindo_${{ steps.extract_version.outputs.version }}_amd64.deb linux/lindo_${{ steps.extract_version.outputs.version }}_arm64.deb + linux/latest-linux.yml macos/Lindo-${{ steps.extract_version.outputs.version }}.dmg + macos/Lindo-${{ steps.extract_version.outputs.version }}.dmg.blockmap macos/Lindo-${{ steps.extract_version.outputs.version }}-arm64.dmg - + macos/Lindo-${{ steps.extract_version.outputs.version }}-arm64.dmg.blockmap + macos/Lindo-${{ steps.extract_version.outputs.version }}-mac.zip + macos/Lindo-${{ steps.extract_version.outputs.version }}-mac.zip.blockmap + macos/Lindo-${{ steps.extract_version.outputs.version }}-arm64-mac.zip + macos/Lindo-${{ steps.extract_version.outputs.version }}-arm64-mac.zip.blockmap + macos/latest-mac.yml diff --git a/electron-builder.json b/electron-builder.json index 8e9816ed..a625bd8a 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -45,16 +45,20 @@ ] }, "nsis": { + "artifactName": "${productName}-Setup-${version}.${ext}", "oneClick": false, "perMachine": false, "allowToChangeInstallationDirectory": true, "deleteAppDataOnUninstall": false }, + "portable": { + "artifactName": "${productName}-${version}.${ext}" + }, "afterPack": "./scripts/afterPackHook.js", "mac": { "target": [ { - "target": "dmg", + "target": "default", "arch": [ "x64", "arm64" diff --git a/package.json b/package.json index 04c862b0..603c2336 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "lindo", "productName": "Lindo", "private": true, - "version": "3.0.0-rc.3", + "version": "3.0.0-rc.8", "description": "Play Dofus Touch on Linux/OS X/Window", "homepage": "https://github.com/prixe/lindo", "author": "Zenoxs ", @@ -19,7 +19,6 @@ }, "dependencies": { "@hfelix/electron-localshortcut": "^4.0.1", - "@octokit/rest": "^19.0.3", "argon2": "^0.28.7", "axios": "^0.27.2", "axios-retry": "^3.2.5", @@ -28,6 +27,7 @@ "crypto-js": "^4.1.1", "custom-electron-titlebar": "^4.1.0", "electron-store": "^8.0.1", + "electron-updater": "^5.2.1", "eventemitter3": "^4.0.7", "express": "^4.18.1", "firebase": "^9.9.2", diff --git a/packages/i18n/en/index.ts b/packages/i18n/en/index.ts index 64b4fa7a..eda46c42 100644 --- a/packages/i18n/en/index.ts +++ b/packages/i18n/en/index.ts @@ -6,7 +6,7 @@ const en: BaseTranslation = { title: 'New version available {version: string}', message: 'A new version ({version: string}) of Lindo is available. Do you want to update?', messageRequired: 'A required update ({version: string}) of Lindo is available, you must download it on GitHub.', - download: 'Download on GitHub', + download: 'Download', ignore: 'Ignore' }, gameMenu: { diff --git a/packages/i18n/es/index.ts b/packages/i18n/es/index.ts index a20a9007..0eb7b58c 100644 --- a/packages/i18n/es/index.ts +++ b/packages/i18n/es/index.ts @@ -7,7 +7,7 @@ const es: Translation = { message: 'Una nueva version ({version}) de Lindo esta disponible. ¿Quieres descargar la actualización?', messageRequired: 'Está disponible una nueva versión ({version}) obligatoria de Lindo, puedes descárgarla en GitHub.', - download: 'Descárgarla en GitHub.', + download: 'Descárgarla.', ignore: 'Ignorar' }, gameMenu: { diff --git a/packages/i18n/fr/index.ts b/packages/i18n/fr/index.ts index 02256d00..acf6af13 100644 --- a/packages/i18n/fr/index.ts +++ b/packages/i18n/fr/index.ts @@ -7,7 +7,7 @@ const fr: Translation = { message: 'Une nouvelle version ({version}) de Lindo est disponible. Voulez-vous télécharger la mise à jour?', messageRequired: 'Une nouvelle version ({version}) obligatoire de Lindo est disponible, vous pouvez la télécharger sur GitHub.', - download: 'Télécharger sur github', + download: 'Télécharger', ignore: 'Ignorer' }, gameMenu: { diff --git a/packages/main/constants/index.ts b/packages/main/constants/index.ts index 1e646e85..57e908c4 100644 --- a/packages/main/constants/index.ts +++ b/packages/main/constants/index.ts @@ -16,3 +16,8 @@ export const LOCAL_DOFUS_MANIFEST_PATH = GAME_PATH + 'manifest.json' export const REMOTE_DOFUS_MANIFEST_URL = DOFUS_ORIGIN + 'manifest.json' export const LOCAL_VERSIONS_PATH = GAME_PATH + 'versions.json' export const LOCAL_REGEX_PATH = GAME_PATH + 'regex.json' + +// GitHub +export const GITHUB_OWNER = 'prixe' +export const GITHUB_REPO = 'lindo' +export const GITHUB_LATEST_RELEASE_URL = 'https://github.com/' + GITHUB_OWNER + '/' + GITHUB_REPO + '/releases/latest' diff --git a/packages/main/updater/app-updater.ts b/packages/main/updater/app-updater.ts index f7f00559..43285355 100644 --- a/packages/main/updater/app-updater.ts +++ b/packages/main/updater/app-updater.ts @@ -1,46 +1,90 @@ import { RootStore } from '@lindo/shared' -import { Octokit } from '@octokit/rest' -import compareVersions from 'compare-versions' import { app, dialog, shell } from 'electron' import { logger } from '../logger' import { I18n } from '../utils' +import { autoUpdater, UpdateInfo } from 'electron-updater' +import { UpdaterWindow } from '../windows/updater-window' +import { GITHUB_LATEST_RELEASE_URL, GITHUB_OWNER, GITHUB_REPO } from '../constants' export class AppUpdater { + private readonly _updaterWindow: UpdaterWindow private readonly _rootStore: RootStore - private readonly _octokit: Octokit private readonly _i18n: I18n - private constructor(rootStore: RootStore, i18n: I18n) { + private constructor(updaterWindow: UpdaterWindow, rootStore: RootStore, i18n: I18n) { + this._updaterWindow = updaterWindow this._rootStore = rootStore this._i18n = i18n - this._octokit = new Octokit() } static async init(rootStore: RootStore, i18n: I18n): Promise { - return new AppUpdater(rootStore, i18n) + const updaterWindow = await UpdaterWindow.init(rootStore, { show: false }) + return new AppUpdater(updaterWindow, rootStore, i18n) } async run() { // set the current version of the app + logger.info('appUpdater -> Start app update checking...') const currentVersion = app.getVersion() this._rootStore.appStore.setLindoVersion(currentVersion) - return this._octokit.repos - .getLatestRelease({ - owner: 'prixe', - repo: 'lindo' + autoUpdater.logger = logger + autoUpdater.autoDownload = false + autoUpdater.setFeedURL({ provider: 'github', owner: GITHUB_OWNER, repo: GITHUB_REPO }) + + return new Promise((resolve, reject) => { + autoUpdater.on('checking-for-update', () => { + logger.info('appUpdater -> Checking for updates...') }) - .then((res) => { - const latestVersion = res.data.tag_name.replaceAll('v', '') - const required = res.data.body?.includes('__update:required__') ?? false - logger.info({ latestVersion, currentVersion }) - if (compareVersions(latestVersion, currentVersion) === 1) { - return this._showUpdateDialog(latestVersion, required) + + autoUpdater.on('update-available', (updateInfo: UpdateInfo) => { + logger.info('appUpdater -> An Update is available v' + updateInfo.version) + let required = false + if (typeof updateInfo.releaseNotes === 'string') { + required = updateInfo.releaseNotes.includes('__update:required__') ?? false } + this._showUpdateDialog(updateInfo.version, required).then((ignored) => { + // resolve the promise if the update is ignored + if (ignored) { + resolve() + } + }) + }) + + autoUpdater.on('update-not-available', () => { + logger.info('appUpdater -> There is no available update') + resolve() + }) + + autoUpdater.on('download-progress', ({ percent }) => { + this._updaterWindow.show() + this._updaterWindow.sendProgress({ message: 'DOWNLOADING UPDATE', percent }) + }) + + autoUpdater.on('update-downloaded', () => { + logger.info('appUpdater -> Update downloaded, will install now') + this._updaterWindow.close() + autoUpdater.quitAndInstall() + }) + + autoUpdater.on('error', (error: Error) => { + if (error) logger.info('appUpdater -> An error occured: ' + error) + reject(error) }) + + autoUpdater.checkForUpdatesAndNotify().then(() => { + logger.info('appUpdater -> Update check done') + }) + }) } - private _showUpdateDialog(newVersion: string, required: boolean): Promise { + /** + * + * @param newVersion + * @param required + * @returns true if the update is ignored, false otherwise + */ + private _showUpdateDialog(newVersion: string, required: boolean): Promise { const buttons: Array = [this._i18n.LL.main.updater.download()] if (!required) { buttons.push(this._i18n.LL.main.updater.ignore()) @@ -56,12 +100,21 @@ export class AppUpdater { }) .then((returnValue) => { if (returnValue.response === 0) { - logger.info('[UPDATE] Redirected to app download page.') - shell.openExternal('https://github.com/prixe/lindo/releases/latest') - app.exit() + return autoUpdater.downloadUpdate().catch(async (err) => { + logger.error('appUpdater -> unable to download automatically the release', err) + await this._downloadFromWeb() + return false + }) } else { - logger.info('[UPDATE] App update ignored.') + logger.info('appUpdater -> App update ignored.') + return true } }) } + + private async _downloadFromWeb() { + logger.info('appUpdater -> Redirected to app download page.') + await shell.openExternal(GITHUB_LATEST_RELEASE_URL) + app.exit() + } } diff --git a/packages/main/updater/updater.ts b/packages/main/updater/updater.ts index f9e38bf0..a52bb05a 100644 --- a/packages/main/updater/updater.ts +++ b/packages/main/updater/updater.ts @@ -11,6 +11,7 @@ export const runUpdater = async (rootStore: RootStore, i18n: I18n) => { logger.error('Error running app updater:', err) }) + logger.info('runUpdater -> Start game update checking...') const gameUpdater = await GameUpdater.init(rootStore) await gameUpdater.run().catch((e) => { console.log(e) diff --git a/packages/main/windows/updater-window.ts b/packages/main/windows/updater-window.ts index 33d48a8e..44a14480 100644 --- a/packages/main/windows/updater-window.ts +++ b/packages/main/windows/updater-window.ts @@ -10,10 +10,14 @@ type UpdaterWindowEvents = { close: (event: Event) => void } +export interface UpdaterWindowOptions { + show?: boolean // will automatically show the window when dom is ready +} + export class UpdaterWindow extends (EventEmitter as new () => TypedEmitter) { private readonly _win: BrowserWindow - private constructor(userAgent: string) { + private constructor(userAgent: string, options?: UpdaterWindowOptions) { super() this._win = new BrowserWindow({ show: false, @@ -32,9 +36,11 @@ export class UpdaterWindow extends (EventEmitter as new () => TypedEmitter { if (channel === IPCEvents.APP_READY_TO_SHOW) { - setTimeout(() => { - this._win.show() - }, 100) + if (options?.show ?? true) { + setTimeout(() => { + this._win.show() + }, 100) + } } }) @@ -58,9 +64,9 @@ export class UpdaterWindow extends (EventEmitter as new () => TypedEmitter { + static async init(store: RootStore, options?: UpdaterWindowOptions): Promise { const userAgent = await generateUserArgent(store.appStore.appVersion) - return new UpdaterWindow(userAgent) + return new UpdaterWindow(userAgent, options) } sendProgress(progress: UpdateProgress) { @@ -77,6 +83,10 @@ export class UpdaterWindow extends (EventEmitter as new () => TypedEmitter this._win.focus() isMinimized = () => this._win.isMinimized() restore = () => this._win.restore() diff --git a/yarn.lock b/yarn.lock index 59082df1..a0d4cd5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1141,107 +1141,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@octokit/auth-token@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.0.tgz#6f22c5fc56445c496628488ba6810131558fa4a9" - integrity sha512-MDNFUBcJIptB9At7HiV7VCvU3NcL4GnfCQaP8C5lrxWrRPMJBnemYtehaKSOlaM7AYxeRyj9etenu8LVpSpVaQ== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/core@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.0.4.tgz#335d9b377691e3264ce57a9e5a1f6cda783e5838" - integrity sha512-sUpR/hc4Gc7K34o60bWC7WUH6Q7T6ftZ2dUmepSyJr9PRF76/qqkWjE2SOEzCqLA5W83SaISymwKtxks+96hPQ== - dependencies: - "@octokit/auth-token" "^3.0.0" - "@octokit/graphql" "^5.0.0" - "@octokit/request" "^6.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.0.tgz#be758a1236d68d6bbb505e686dd50881c327a519" - integrity sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.0.tgz#2cc6eb3bf8e0278656df1a7d0ca0d7591599e3b3" - integrity sha512-1ZZ8tX4lUEcLPvHagfIVu5S2xpHYXAmgN0+95eAOPoaVPzCfUXJtA5vASafcpWcO86ze0Pzn30TAx72aB2aguQ== - dependencies: - "@octokit/request" "^6.0.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== - -"@octokit/plugin-paginate-rest@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz#86f8be759ce2d6d7c879a31490fd2f7410b731f0" - integrity sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA== - dependencies: - "@octokit/types" "^6.41.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-rest-endpoint-methods@^6.0.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.2.0.tgz#c06359d2f94436f8c67d345093cb02dedd31d974" - integrity sha512-PZ+yfkbZAuRUtqu6Y191/V3eM0KBPx+Yq7nh+ONPdpm3EX4pd5UnK2y2XgO/0AtNum5a4aJCDjqsDuUZ2hWRXw== - dependencies: - "@octokit/types" "^6.41.0" - deprecation "^2.3.1" - -"@octokit/request-error@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.0.tgz#f527d178f115a3b62d76ce4804dd5bdbc0270a81" - integrity sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^6.0.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.0.tgz#9c25606df84e6f2ccbcc2c58e1d35438e20b688b" - integrity sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q== - dependencies: - "@octokit/endpoint" "^7.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/rest@^19.0.3": - version "19.0.3" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.3.tgz#b9a4e8dc8d53e030d611c053153ee6045f080f02" - integrity sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ== - dependencies: - "@octokit/core" "^4.0.0" - "@octokit/plugin-paginate-rest" "^3.0.0" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^6.0.0" - -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.41.0": - version "6.41.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== - dependencies: - "@octokit/openapi-types" "^12.11.0" - "@phc/format@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@phc/format/-/format-1.0.0.tgz#b5627003b3216dc4362125b13f48a4daa76680e4" @@ -1568,6 +1467,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/semver@^7.3.6": + version "7.3.12" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c" + integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A== + "@types/serve-static@*": version "1.15.0" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" @@ -2127,11 +2031,6 @@ base64-js@^1.3.1, base64-js@^1.5.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -2794,11 +2693,6 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -3030,6 +2924,21 @@ electron-to-chromium@^1.4.202: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz#afaa8b58313807501312d598d99b953568d60f91" integrity sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A== +electron-updater@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-5.2.1.tgz#297795e6e8ad9179c7ae2738a7b67cf0a5022be1" + integrity sha512-OQZVIvqcK8j03HjT07uVPgvguP/r8RY2wZcwCM26+fcDOjtrm01Dfz3G8Eru+69znbrR+F9pDzr98ewMavBrWQ== + dependencies: + "@types/semver" "^7.3.6" + builder-util-runtime "9.0.3" + fs-extra "^10.0.0" + js-yaml "^4.1.0" + lazy-val "^1.0.5" + lodash.escaperegexp "^4.1.2" + lodash.isequal "^4.5.0" + semver "^7.3.5" + typed-emitter "^2.1.0" + electron@^19.0.1: version "19.0.11" resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.11.tgz#0c0a52abc08694fd38916d9270baf45bb7752a27" @@ -4475,11 +4384,6 @@ is-plain-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -4767,6 +4671,16 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -6685,11 +6599,6 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"