diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..a7ce69e2 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-2021 Daniel D. Scalzi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index a388bc2a..6281768c 100644 --- a/README.md +++ b/README.md @@ -178,14 +178,7 @@ Note that you **cannot** open the DevTools window while using this debug configu ### Note on Third-Party Usage -You may use this software in your own project so long as the following conditions are met. - -* Credit is expressly given to the original authors (Daniel Scalzi). - * Include a link to the original source on the launcher's About page. - * Credit the authors and provide a link to the original source in any publications or download pages. -* The source code remain **public** as a fork of this repository. - -We reserve the right to update these conditions at any time, please check back periodically. +Please give credit to the original author and provide a link to the original source. This is free software, please do at least this much. --- diff --git a/app/assets/js/dropinmodutil.js b/app/assets/js/dropinmodutil.js index 0a61012e..84ad4fa6 100644 --- a/app/assets/js/dropinmodutil.js +++ b/app/assets/js/dropinmodutil.js @@ -92,14 +92,17 @@ exports.addDropinMods = function(files, modsdir) { * @param {string} modsDir The path to the mods directory. * @param {string} fullName The fullName of the discovered mod to delete. * - * @returns {boolean} True if the mod was deleted, otherwise false. + * @returns {Promise.} True if the mod was deleted, otherwise false. */ -exports.deleteDropinMod = function(modsDir, fullName){ - const res = shell.moveItemToTrash(path.join(modsDir, fullName)) - if(!res){ +exports.deleteDropinMod = async function(modsDir, fullName){ + try { + await shell.trashItem(path.join(modsDir, fullName)) + return true + } catch(error) { shell.beep() + console.error('Error deleting drop-in mod.', error) + return false } - return res } /** diff --git a/app/assets/js/scripts/landing.js b/app/assets/js/scripts/landing.js index d6e9f0c0..8cb5677e 100644 --- a/app/assets/js/scripts/landing.js +++ b/app/assets/js/scripts/landing.js @@ -130,7 +130,7 @@ function updateSelectedAccount(authUser){ username = authUser.displayName } if(authUser.uuid != null){ - document.getElementById('avatarContainer').style.backgroundImage = `url('https://crafatar.com/renders/body/${authUser.uuid}')` + document.getElementById('avatarContainer').style.backgroundImage = `url('https://mc-heads.net/body/${authUser.uuid}/right')` } } user_text.innerHTML = username diff --git a/app/assets/js/scripts/overlay.js b/app/assets/js/scripts/overlay.js index 45a5964b..22d81d62 100644 --- a/app/assets/js/scripts/overlay.js +++ b/app/assets/js/scripts/overlay.js @@ -9,7 +9,7 @@ * * @returns {boolean} Whether or not the overlay is visible. */ -function isOverlayVisible() { +function isOverlayVisible(){ return document.getElementById('main').hasAttribute('overlay') } @@ -20,8 +20,8 @@ let overlayHandlerContent * * @param {KeyboardEvent} e The keydown event. */ -function overlayKeyHandler(e) { - if (e.key === 'Enter' || e.key === 'Escape') { +function overlayKeyHandler (e){ + if(e.key === 'Enter' || e.key === 'Escape'){ document.getElementById(overlayHandlerContent).getElementsByClassName('overlayKeybindEnter')[0].click() } } @@ -30,10 +30,10 @@ function overlayKeyHandler(e) { * * @param {KeyboardEvent} e The keydown event. */ -function overlayKeyDismissableHandler(e) { - if (e.key === 'Enter') { +function overlayKeyDismissableHandler (e){ + if(e.key === 'Enter'){ document.getElementById(overlayHandlerContent).getElementsByClassName('overlayKeybindEnter')[0].click() - } else if (e.key === 'Escape') { + } else if(e.key === 'Escape'){ document.getElementById(overlayHandlerContent).getElementsByClassName('overlayKeybindEsc')[0].click() } } @@ -45,12 +45,12 @@ function overlayKeyDismissableHandler(e) { * @param {string} content The overlay content which will be shown. * @param {boolean} dismissable Whether or not the overlay is dismissable */ -function bindOverlayKeys(state, content, dismissable) { +function bindOverlayKeys(state, content, dismissable){ overlayHandlerContent = content document.removeEventListener('keydown', overlayKeyHandler) document.removeEventListener('keydown', overlayKeyDismissableHandler) - if (state) { - if (dismissable) { + if(state){ + if(dismissable){ document.addEventListener('keydown', overlayKeyDismissableHandler) } else { document.addEventListener('keydown', overlayKeyHandler) @@ -65,22 +65,22 @@ function bindOverlayKeys(state, content, dismissable) { * @param {boolean} dismissable Optional. True to show the dismiss option, otherwise false. * @param {string} content Optional. The content div to be shown. */ -function toggleOverlay(toggleState, dismissable = false, content = 'overlayContent') { - if (toggleState == null) { +function toggleOverlay(toggleState, dismissable = false, content = 'overlayContent'){ + if(toggleState == null){ toggleState = !document.getElementById('main').hasAttribute('overlay') } - if (typeof dismissable === 'string') { + if(typeof dismissable === 'string'){ content = dismissable dismissable = false } bindOverlayKeys(toggleState, content, dismissable) - if (toggleState) { + if(toggleState){ document.getElementById('main').setAttribute('overlay', true) // Make things untabbable. $('#main *').attr('tabindex', '-1') $('#' + content).parent().children().hide() $('#' + content).show() - if (dismissable) { + if(dismissable){ $('#overlayDismiss').show() } else { $('#overlayDismiss').hide() @@ -88,7 +88,7 @@ function toggleOverlay(toggleState, dismissable = false, content = 'overlayConte $('#overlayContainer').fadeIn({ duration: 250, start: () => { - if (getCurrentView() === VIEWS.settings) { + if(getCurrentView() === VIEWS.settings){ document.getElementById('settingsContainer').style.backgroundColor = 'transparent' } } @@ -100,14 +100,14 @@ function toggleOverlay(toggleState, dismissable = false, content = 'overlayConte $('#overlayContainer').fadeOut({ duration: 250, start: () => { - if (getCurrentView() === VIEWS.settings) { + if(getCurrentView() === VIEWS.settings){ document.getElementById('settingsContainer').style.backgroundColor = 'rgba(0, 0, 0, 0.50)' } }, complete: () => { $('#' + content).parent().children().hide() $('#' + content).show() - if (dismissable) { + if(dismissable){ $('#overlayDismiss').show() } else { $('#overlayDismiss').hide() @@ -117,7 +117,7 @@ function toggleOverlay(toggleState, dismissable = false, content = 'overlayConte } } -function toggleServerSelection(toggleState) { +function toggleServerSelection(toggleState){ prepareServerSelectionList() toggleOverlay(toggleState, true, 'serverSelectContent') } @@ -130,7 +130,7 @@ function toggleServerSelection(toggleState) { * @param {string} acknowledge Acknowledge button text. * @param {string} dismiss Dismiss button text. */ -function setOverlayContent(title, description, acknowledge, dismiss = 'Dismiss') { +function setOverlayContent(title, description, acknowledge, dismiss = 'Dismiss'){ document.getElementById('overlayTitle').innerHTML = title document.getElementById('overlayDesc').innerHTML = description document.getElementById('overlayAcknowledge').innerHTML = acknowledge @@ -143,8 +143,8 @@ function setOverlayContent(title, description, acknowledge, dismiss = 'Dismiss') * * @param {function} handler */ -function setOverlayHandler(handler) { - if (handler == null) { +function setOverlayHandler(handler){ + if(handler == null){ document.getElementById('overlayAcknowledge').onclick = () => { toggleOverlay(false) } @@ -159,8 +159,8 @@ function setOverlayHandler(handler) { * * @param {function} handler */ -function setDismissHandler(handler) { - if (handler == null) { +function setDismissHandler(handler){ + if(handler == null){ document.getElementById('overlayDismiss').onclick = () => { toggleOverlay(false) } @@ -173,8 +173,8 @@ function setDismissHandler(handler) { document.getElementById('serverSelectConfirm').addEventListener('click', () => { const listings = document.getElementsByClassName('serverListing') - for (let i = 0; i < listings.length; i++) { - if (listings[i].hasAttribute('selected')) { + for(let i=0; i { } } // None are selected? Not possible right? Meh, handle it. - if (listings.length > 0) { + if(listings.length > 0){ const serv = DistroManager.getDistribution().getServer(listings[i].getAttribute('servid')) updateSelectedServer(serv) toggleOverlay(false) @@ -192,8 +192,8 @@ document.getElementById('serverSelectConfirm').addEventListener('click', () => { document.getElementById('accountSelectConfirm').addEventListener('click', () => { const listings = document.getElementsByClassName('accountListing') - for (let i = 0; i < listings.length; i++) { - if (listings[i].hasAttribute('selected')) { + for(let i=0; i } } // None are selected? Not possible right? Meh, handle it. - if (listings.length > 0) { + if(listings.length > 0){ const authAcc = ConfigManager.setSelectedAccount(listings[0].getAttribute('uuid')) ConfigManager.save() updateSelectedAccount(authAcc) @@ -223,16 +223,16 @@ document.getElementById('accountSelectCancel').addEventListener('click', () => { }) }) -function setServerListingHandlers() { +function setServerListingHandlers(){ const listings = Array.from(document.getElementsByClassName('serverListing')) listings.map((val) => { val.onclick = e => { - if (val.hasAttribute('selected')) { + if(val.hasAttribute('selected')){ return } const cListings = document.getElementsByClassName('serverListing') - for (let i = 0; i < cListings.length; i++) { - if (cListings[i].hasAttribute('selected')) { + for(let i=0; i { val.onclick = e => { - if (val.hasAttribute('selected')) { + if(val.hasAttribute('selected')){ return } const cListings = document.getElementsByClassName('accountListing') - for (let i = 0; i < cListings.length; i++) { - if (cListings[i].hasAttribute('selected')) { + for(let i=0; i
@@ -293,13 +293,13 @@ function populateServerListings() { } -function populateAccountListings() { +function populateAccountListings(){ const accountsObj = ConfigManager.getAuthAccounts() - const accounts = Array.from(Object.keys(accountsObj), v => accountsObj[v]) + const accounts = Array.from(Object.keys(accountsObj), v=>accountsObj[v]) let htmlString = '' - for (let i = 0; i < accounts.length; i++) { - htmlString += `` } @@ -307,12 +307,12 @@ function populateAccountListings() { } -function prepareServerSelectionList() { +function prepareServerSelectionList(){ populateServerListings() setServerListingHandlers() } -function prepareAccountSelectionList() { +function prepareAccountSelectionList(){ populateAccountListings() setAccountListingHandlers() } \ No newline at end of file diff --git a/app/assets/js/scripts/settings.js b/app/assets/js/scripts/settings.js index 05ab99b1..3b6222ee 100644 --- a/app/assets/js/scripts/settings.js +++ b/app/assets/js/scripts/settings.js @@ -1,16 +1,16 @@ // Requirements -const os = require('os') +const os = require('os') const semver = require('semver') const { JavaGuard } = require('./assets/js/assetguard') -const DropinModUtil = require('./assets/js/dropinmodutil') +const DropinModUtil = require('./assets/js/dropinmodutil') const settingsState = { invalid: new Set() } -function bindSettingsSelect() { - for (let ele of document.getElementsByClassName('settingsSelectContainer')) { +function bindSettingsSelect(){ + for(let ele of document.getElementsByClassName('settingsSelectContainer')) { const selectedDiv = ele.getElementsByClassName('settingsSelectSelected')[0] selectedDiv.onclick = (e) => { @@ -22,12 +22,12 @@ function bindSettingsSelect() { } } -function closeSettingsSelect(el) { - for (let ele of document.getElementsByClassName('settingsSelectContainer')) { +function closeSettingsSelect(el){ + for(let ele of document.getElementsByClassName('settingsSelectContainer')) { const selectedDiv = ele.getElementsByClassName('settingsSelectSelected')[0] const optionsDiv = ele.getElementsByClassName('settingsSelectOptions')[0] - if (!(selectedDiv === el)) { + if(!(selectedDiv === el)) { selectedDiv.classList.remove('select-arrow-active') optionsDiv.setAttribute('hidden', '') } @@ -41,9 +41,9 @@ document.addEventListener('click', closeSettingsSelect) bindSettingsSelect() -function bindFileSelectors() { - for (let ele of document.getElementsByClassName('settingsFileSelButton')) { - +function bindFileSelectors(){ + for(let ele of document.getElementsByClassName('settingsFileSelButton')){ + ele.onclick = async e => { const isJavaExecSel = ele.id === 'settingsJavaExecSel' const directoryDialog = ele.hasAttribute('dialogDirectory') && ele.getAttribute('dialogDirectory') == 'true' @@ -53,11 +53,11 @@ function bindFileSelectors() { properties } - if (ele.hasAttribute('dialogTitle')) { + if(ele.hasAttribute('dialogTitle')) { options.title = ele.getAttribute('dialogTitle') } - if (isJavaExecSel && process.platform === 'win32') { + if(isJavaExecSel && process.platform === 'win32') { options.filters = [ { name: 'Executables', extensions: ['exe'] }, { name: 'All Files', extensions: ['*'] } @@ -65,9 +65,9 @@ function bindFileSelectors() { } const res = await remote.dialog.showOpenDialog(remote.getCurrentWindow(), options) - if (!res.canceled) { + if(!res.canceled) { ele.previousElementSibling.value = res.filePaths[0] - if (isJavaExecSel) { + if(isJavaExecSel) { populateJavaExecDetails(ele.previousElementSibling.value) } } @@ -89,24 +89,24 @@ bindFileSelectors() * will be disabled until the value is corrected. This is an automated * process. More complex UI may need to be bound separately. */ -function initSettingsValidators() { +function initSettingsValidators(){ const sEls = document.getElementById('settingsContainer').querySelectorAll('[cValue]') Array.from(sEls).map((v, index, arr) => { const vFn = ConfigManager['validate' + v.getAttribute('cValue')] - if (typeof vFn === 'function') { - if (v.tagName === 'INPUT') { - if (v.type === 'number' || v.type === 'text') { + if(typeof vFn === 'function'){ + if(v.tagName === 'INPUT'){ + if(v.type === 'number' || v.type === 'text'){ v.addEventListener('keyup', (e) => { const v = e.target - if (!vFn(v.value)) { + if(!vFn(v.value)){ settingsState.invalid.add(v.id) v.setAttribute('error', '') settingsSaveDisabled(true) } else { - if (v.hasAttribute('error')) { + if(v.hasAttribute('error')){ v.removeAttribute('error') settingsState.invalid.delete(v.id) - if (settingsState.invalid.size === 0) { + if(settingsState.invalid.size === 0){ settingsSaveDisabled(false) } } @@ -122,35 +122,35 @@ function initSettingsValidators() { /** * Load configuration values onto the UI. This is an automated process. */ -function initSettingsValues() { +function initSettingsValues(){ const sEls = document.getElementById('settingsContainer').querySelectorAll('[cValue]') Array.from(sEls).map((v, index, arr) => { const cVal = v.getAttribute('cValue') const gFn = ConfigManager['get' + cVal] - if (typeof gFn === 'function') { - if (v.tagName === 'INPUT') { - if (v.type === 'number' || v.type === 'text') { + if(typeof gFn === 'function'){ + if(v.tagName === 'INPUT'){ + if(v.type === 'number' || v.type === 'text'){ // Special Conditions - if (cVal === 'JavaExecutable') { + if(cVal === 'JavaExecutable'){ populateJavaExecDetails(v.value) v.value = gFn() - } else if (cVal === 'DataDirectory') { + } else if (cVal === 'DataDirectory'){ v.value = gFn() - } else if (cVal === 'JVMOptions') { + } else if(cVal === 'JVMOptions'){ v.value = gFn().join(' ') } else { v.value = gFn() } - } else if (v.type === 'checkbox') { + } else if(v.type === 'checkbox'){ v.checked = gFn() } - } else if (v.tagName === 'DIV') { - if (v.classList.contains('rangeSlider')) { + } else if(v.tagName === 'DIV'){ + if(v.classList.contains('rangeSlider')){ // Special Conditions - if (cVal === 'MinRAM' || cVal === 'MaxRAM') { + if(cVal === 'MinRAM' || cVal === 'MaxRAM'){ let val = gFn() - if (val.endsWith('M')) { - val = Number(val.substring(0, val.length - 1)) / 1000 + if(val.endsWith('M')){ + val = Number(val.substring(0, val.length-1))/1000 } else { val = Number.parseFloat(val) } @@ -169,34 +169,34 @@ function initSettingsValues() { /** * Save the settings values. */ -function saveSettingsValues() { +function saveSettingsValues(){ const sEls = document.getElementById('settingsContainer').querySelectorAll('[cValue]') Array.from(sEls).map((v, index, arr) => { const cVal = v.getAttribute('cValue') const sFn = ConfigManager['set' + cVal] - if (typeof sFn === 'function') { - if (v.tagName === 'INPUT') { - if (v.type === 'number' || v.type === 'text') { + if(typeof sFn === 'function'){ + if(v.tagName === 'INPUT'){ + if(v.type === 'number' || v.type === 'text'){ // Special Conditions - if (cVal === 'JVMOptions') { + if(cVal === 'JVMOptions'){ sFn(v.value.split(' ')) } else { sFn(v.value) } - } else if (v.type === 'checkbox') { + } else if(v.type === 'checkbox'){ sFn(v.checked) // Special Conditions - if (cVal === 'AllowPrerelease') { + if(cVal === 'AllowPrerelease'){ changeAllowPrerelease(v.checked) } } - } else if (v.tagName === 'DIV') { - if (v.classList.contains('rangeSlider')) { + } else if(v.tagName === 'DIV'){ + if(v.classList.contains('rangeSlider')){ // Special Conditions - if (cVal === 'MinRAM' || cVal === 'MaxRAM') { + if(cVal === 'MinRAM' || cVal === 'MaxRAM'){ let val = Number(v.getAttribute('value')) - if (val % 1 > 0) { - val = val * 1000 + 'M' + if(val%1 > 0){ + val = val*1000 + 'M' } else { val = val + 'G' } @@ -219,8 +219,8 @@ let selectedSettingsTab = 'settingsTabAccount' * * @param {UIEvent} e The scroll event. */ -function settingsTabScrollListener(e) { - if (e.target.scrollTop > Number.parseFloat(getComputedStyle(e.target.firstElementChild).marginTop)) { +function settingsTabScrollListener(e){ + if(e.target.scrollTop > Number.parseFloat(getComputedStyle(e.target.firstElementChild).marginTop)){ document.getElementById('settingsContainer').setAttribute('scrolled', '') } else { document.getElementById('settingsContainer').removeAttribute('scrolled') @@ -230,9 +230,9 @@ function settingsTabScrollListener(e) { /** * Bind functionality for the settings navigation items. */ -function setupSettingsTabs() { +function setupSettingsTabs(){ Array.from(document.getElementsByClassName('settingsNavItem')).map((val) => { - if (val.hasAttribute('rSc')) { + if(val.hasAttribute('rSc')){ val.onclick = () => { settingsNavItemListener(val) } @@ -247,13 +247,13 @@ function setupSettingsTabs() { * @param {Element} ele The nav item which has been clicked. * @param {boolean} fade Optional. True to fade transition. */ -function settingsNavItemListener(ele, fade = true) { - if (ele.hasAttribute('selected')) { +function settingsNavItemListener(ele, fade = true){ + if(ele.hasAttribute('selected')){ return } const navItems = document.getElementsByClassName('settingsNavItem') - for (let i = 0; i < navItems.length; i++) { - if (navItems[i].hasAttribute('selected')) { + for(let i=0; i { $(`#${selectedSettingsTab}`).fadeIn({ duration: 250, @@ -296,7 +296,7 @@ const settingsNavDone = document.getElementById('settingsNavDone') * * @param {boolean} v True to disable, false to enable. */ -function settingsSaveDisabled(v) { +function settingsSaveDisabled(v){ settingsNavDone.disabled = v } @@ -327,15 +327,15 @@ document.getElementById('settingsAddAccount').onclick = (e) => { * Bind functionality for the account selection buttons. If another account * is selected, the UI of the previously selected account will be updated. */ -function bindAuthAccountSelect() { +function bindAuthAccountSelect(){ Array.from(document.getElementsByClassName('settingsAuthAccountSelect')).map((val) => { val.onclick = (e) => { - if (val.hasAttribute('selected')) { + if(val.hasAttribute('selected')){ return } const selectBtns = document.getElementsByClassName('settingsAuthAccountSelect') - for (let i = 0; i < selectBtns.length; i++) { - if (selectBtns[i].hasAttribute('selected')) { + for(let i=0; i { val.onclick = (e) => { let isLastAccount = false - if (Object.keys(ConfigManager.getAuthAccounts()).length === 1) { + if(Object.keys(ConfigManager.getAuthAccounts()).length === 1){ isLastAccount = true setOverlayContent( 'Warning
This is Your Last Account', @@ -376,7 +376,7 @@ function bindAuthAccountLogOut() { } else { processLogOut(val, isLastAccount) } - + } }) } @@ -405,7 +405,7 @@ function processLogOut(val, isLastAccount, skip = false) { } const prevSelAcc = ConfigManager.getSelectedAccount() AuthManager.removeAccount(uuid).then(() => { - if (!isLastAccount && uuid === prevSelAcc.uuid) { + if(!isLastAccount && uuid === prevSelAcc.uuid){ const selAcc = ConfigManager.getSelectedAccount() refreshAuthAccountSelected(selAcc.uuid) updateSelectedAccount(selAcc) @@ -428,14 +428,14 @@ ipcRenderer.on('MSALogoutWindowReply', (event, ...args) => { * * @param {string} uuid The UUID of the new selected account. */ -function refreshAuthAccountSelected(uuid) { +function refreshAuthAccountSelected(uuid){ Array.from(document.getElementsByClassName('settingsAuthAccount')).map((val) => { const selBtn = val.getElementsByClassName('settingsAuthAccountSelect')[0] - if (uuid === val.getAttribute('uuid')) { + if(uuid === val.getAttribute('uuid')){ selBtn.setAttribute('selected', '') selBtn.innerHTML = 'Selected Account ✔' } else { - if (selBtn.hasAttribute('selected')) { + if(selBtn.hasAttribute('selected')){ selBtn.removeAttribute('selected') } selBtn.innerHTML = 'Select Account' @@ -448,10 +448,10 @@ const settingsCurrentAccounts = document.getElementById('settingsCurrentAccounts /** * Add auth account elements for each one stored in the authentication database. */ -function populateAuthAccounts() { +function populateAuthAccounts(){ const authAccounts = ConfigManager.getAuthAccounts() const authKeys = Object.keys(authAccounts) - if (authKeys.length === 0) { + if(authKeys.length === 0){ return } const selectedUUID = ConfigManager.getSelectedAccount().uuid @@ -462,7 +462,7 @@ function populateAuthAccounts() { const acc = authAccounts[val] authAccountStr += `
- ${acc.displayName} + ${acc.displayName}
@@ -505,12 +505,12 @@ function prepareAccountsTab() { * Disable decimals, negative signs, and scientific notation. */ document.getElementById('settingsGameWidth').addEventListener('keydown', (e) => { - if (/^[-.eE]$/.test(e.key)) { + if(/^[-.eE]$/.test(e.key)){ e.preventDefault() } }) document.getElementById('settingsGameHeight').addEventListener('keydown', (e) => { - if (/^[-.eE]$/.test(e.key)) { + if(/^[-.eE]$/.test(e.key)){ e.preventDefault() } }) @@ -524,7 +524,7 @@ const settingsModsContainer = document.getElementById('settingsModsContainer') /** * Resolve and update the mods on the UI. */ -function resolveModsForUI() { +function resolveModsForUI(){ const serv = ConfigManager.getSelectedServer() const distro = DistroManager.getDistribution() @@ -543,16 +543,16 @@ function resolveModsForUI() { * @param {boolean} submodules Whether or not we are parsing submodules. * @param {Object} servConf The server configuration object for this module level. */ -function parseModulesForUI(mdls, submodules, servConf) { +function parseModulesForUI(mdls, submodules, servConf){ let reqMods = '' let optMods = '' - for (const mdl of mdls) { + for(const mdl of mdls){ - if (mdl.getType() === DistroManager.Types.ForgeMod || mdl.getType() === DistroManager.Types.LiteMod || mdl.getType() === DistroManager.Types.LiteLoader) { + if(mdl.getType() === DistroManager.Types.ForgeMod || mdl.getType() === DistroManager.Types.LiteMod || mdl.getType() === DistroManager.Types.LiteLoader){ - if (mdl.getRequired().isRequired()) { + if(mdl.getRequired().isRequired()){ reqMods += `
@@ -612,11 +612,11 @@ function parseModulesForUI(mdls, submodules, servConf) { * Bind functionality to mod config toggle switches. Switching the value * will also switch the status color on the left of the mod UI. */ -function bindModsToggleSwitch() { +function bindModsToggleSwitch(){ const sEls = settingsModsContainer.querySelectorAll('[formod]') Array.from(sEls).map((v, index, arr) => { v.onchange = () => { - if (v.checked) { + if(v.checked) { document.getElementById(v.getAttribute('formod')).setAttribute('enabled', '') } else { document.getElementById(v.getAttribute('formod')).removeAttribute('enabled') @@ -629,7 +629,7 @@ function bindModsToggleSwitch() { /** * Save the mod configuration based on the UI values. */ -function saveModConfiguration() { +function saveModConfiguration(){ const serv = ConfigManager.getSelectedServer() const modConf = ConfigManager.getModConfiguration(serv) modConf.mods = _saveModConfiguration(modConf.mods) @@ -641,15 +641,15 @@ function saveModConfiguration() { * * @param {Object} modConf Mod config object to save. */ -function _saveModConfiguration(modConf) { - for (let m of Object.entries(modConf)) { +function _saveModConfiguration(modConf){ + for(let m of Object.entries(modConf)){ const tSwitch = settingsModsContainer.querySelectorAll(`[formod='${m[0]}']`) - if (!tSwitch[0].hasAttribute('dropin')) { - if (typeof m[1] === 'boolean') { + if(!tSwitch[0].hasAttribute('dropin')){ + if(typeof m[1] === 'boolean'){ modConf[m[0]] = tSwitch[0].checked } else { - if (m[1] != null) { - if (tSwitch.length > 0) { + if(m[1] != null){ + if(tSwitch.length > 0){ modConf[m[0]].value = tSwitch[0].checked } modConf[m[0]].mods = _saveModConfiguration(modConf[m[0]].mods) @@ -669,14 +669,14 @@ let CACHE_DROPIN_MODS * Resolve any located drop-in mods for this server and * populate the results onto the UI. */ -function resolveDropinModsForUI() { +function resolveDropinModsForUI(){ const serv = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer()) CACHE_SETTINGS_MODS_DIR = path.join(ConfigManager.getInstanceDirectory(), serv.getID(), 'mods') CACHE_DROPIN_MODS = DropinModUtil.scanForDropinMods(CACHE_SETTINGS_MODS_DIR, serv.getMinecraftVersion()) let dropinMods = '' - for (dropin of CACHE_DROPIN_MODS) { + for(dropin of CACHE_DROPIN_MODS){ dropinMods += `
@@ -702,13 +702,13 @@ function resolveDropinModsForUI() { /** * Bind the remove button for each loaded drop-in mod. */ -function bindDropinModsRemoveButton() { +function bindDropinModsRemoveButton(){ const sEls = settingsModsContainer.querySelectorAll('[remmod]') Array.from(sEls).map((v, index, arr) => { - v.onclick = () => { + v.onclick = async () => { const fullName = v.getAttribute('remmod') - const res = DropinModUtil.deleteDropinMod(CACHE_SETTINGS_MODS_DIR, fullName) - if (res) { + const res = await DropinModUtil.deleteDropinMod(CACHE_SETTINGS_MODS_DIR, fullName) + if(res){ document.getElementById(fullName).remove() } else { setOverlayContent( @@ -727,7 +727,7 @@ function bindDropinModsRemoveButton() { * Bind functionality to the file system button for the selected * server configuration. */ -function bindDropinModFileSystemButton() { +function bindDropinModFileSystemButton(){ const fsBtn = document.getElementById('settingsDropinFileSystemButton') fsBtn.onclick = () => { DropinModUtil.validateDir(CACHE_SETTINGS_MODS_DIR) @@ -758,14 +758,14 @@ function bindDropinModFileSystemButton() { * Save drop-in mod states. Enabling and disabling is just a matter * of adding/removing the .disabled extension. */ -function saveDropinModConfiguration() { - for (dropin of CACHE_DROPIN_MODS) { +function saveDropinModConfiguration(){ + for(dropin of CACHE_DROPIN_MODS){ const dropinUI = document.getElementById(dropin.fullName) - if (dropinUI != null) { + if(dropinUI != null){ const dropinUIEnabled = dropinUI.hasAttribute('enabled') - if (DropinModUtil.isDropinModEnabled(dropin.fullName) != dropinUIEnabled) { + if(DropinModUtil.isDropinModEnabled(dropin.fullName) != dropinUIEnabled){ DropinModUtil.toggleDropinMod(CACHE_SETTINGS_MODS_DIR, dropin.fullName, dropinUIEnabled).catch(err => { - if (!isOverlayVisible()) { + if(!isOverlayVisible()){ setOverlayContent( 'Failed to Toggle
One or More Drop-in Mods', err.message, @@ -783,8 +783,8 @@ function saveDropinModConfiguration() { // Refresh the drop-in mods when F5 is pressed. // Only active on the mods tab. document.addEventListener('keydown', (e) => { - if (getCurrentView() === VIEWS.settings && selectedSettingsTab === 'settingsTabMods') { - if (e.key === 'F5') { + if(getCurrentView() === VIEWS.settings && selectedSettingsTab === 'settingsTabMods'){ + if(e.key === 'F5'){ reloadDropinMods() saveShaderpackSettings() resolveShaderpacksForUI() @@ -792,7 +792,7 @@ document.addEventListener('keydown', (e) => { } }) -function reloadDropinMods() { +function reloadDropinMods(){ resolveDropinModsForUI() bindDropinModsRemoveButton() bindDropinModFileSystemButton() @@ -808,7 +808,7 @@ let CACHE_SELECTED_SHADERPACK /** * Load shaderpack information. */ -function resolveShaderpacksForUI() { +function resolveShaderpacksForUI(){ const serv = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer()) CACHE_SETTINGS_INSTANCE_DIR = path.join(ConfigManager.getInstanceDirectory(), serv.getID()) CACHE_SHADERPACKS = DropinModUtil.scanForShaderpacks(CACHE_SETTINGS_INSTANCE_DIR) @@ -817,20 +817,20 @@ function resolveShaderpacksForUI() { setShadersOptions(CACHE_SHADERPACKS, CACHE_SELECTED_SHADERPACK) } -function setShadersOptions(arr, selected) { +function setShadersOptions(arr, selected){ const cont = document.getElementById('settingsShadersOptions') cont.innerHTML = '' - for (let opt of arr) { + for(let opt of arr) { const d = document.createElement('DIV') d.innerHTML = opt.name d.setAttribute('value', opt.fullName) - if (opt.fullName === selected) { + if(opt.fullName === selected) { d.setAttribute('selected', '') document.getElementById('settingsShadersSelected').innerHTML = opt.name } - d.addEventListener('click', function (e) { + d.addEventListener('click', function(e) { this.parentNode.previousElementSibling.innerHTML = this.innerHTML - for (let sib of this.parentNode.children) { + for(let sib of this.parentNode.children){ sib.removeAttribute('selected') } this.setAttribute('selected', '') @@ -840,10 +840,10 @@ function setShadersOptions(arr, selected) { } } -function saveShaderpackSettings() { +function saveShaderpackSettings(){ let sel = 'OFF' - for (let opt of document.getElementById('settingsShadersOptions').childNodes) { - if (opt.hasAttribute('selected')) { + for(let opt of document.getElementById('settingsShadersOptions').childNodes){ + if(opt.hasAttribute('selected')){ sel = opt.getAttribute('value') } } @@ -884,7 +884,7 @@ function bindShaderpackButton() { /** * Load the currently selected server information onto the mods tab. */ -function loadSelectedServerOnModsTab() { +function loadSelectedServerOnModsTab(){ const serv = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer()) document.getElementById('settingsSelServContent').innerHTML = ` @@ -919,7 +919,7 @@ document.getElementById('settingsSwitchServerButton').addEventListener('click', /** * Save mod configuration for the current selected server. */ -function saveAllModConfigurations() { +function saveAllModConfigurations(){ saveModConfiguration() ConfigManager.save() saveDropinModConfiguration() @@ -929,7 +929,7 @@ function saveAllModConfigurations() { * Function to refresh the mods tab whenever the selected * server is changed. */ -function animateModsTabRefresh() { +function animateModsTabRefresh(){ $('#settingsTabMods').fadeOut(500, () => { prepareModsTab() $('#settingsTabMods').fadeIn(500) @@ -939,7 +939,7 @@ function animateModsTabRefresh() { /** * Prepare the Mods tab for display. */ -function prepareModsTab(first) { +function prepareModsTab(first){ resolveModsForUI() resolveDropinModsForUI() resolveShaderpacksForUI() @@ -955,12 +955,12 @@ function prepareModsTab(first) { */ // DOM Cache -const settingsMaxRAMRange = document.getElementById('settingsMaxRAMRange') -const settingsMinRAMRange = document.getElementById('settingsMinRAMRange') -const settingsMaxRAMLabel = document.getElementById('settingsMaxRAMLabel') -const settingsMinRAMLabel = document.getElementById('settingsMinRAMLabel') -const settingsMemoryTotal = document.getElementById('settingsMemoryTotal') -const settingsMemoryAvail = document.getElementById('settingsMemoryAvail') +const settingsMaxRAMRange = document.getElementById('settingsMaxRAMRange') +const settingsMinRAMRange = document.getElementById('settingsMinRAMRange') +const settingsMaxRAMLabel = document.getElementById('settingsMaxRAMLabel') +const settingsMinRAMLabel = document.getElementById('settingsMinRAMLabel') +const settingsMemoryTotal = document.getElementById('settingsMemoryTotal') +const settingsMemoryAvail = document.getElementById('settingsMemoryAvail') const settingsJavaExecDetails = document.getElementById('settingsJavaExecDetails') // Store maximum memory values. @@ -971,7 +971,7 @@ const SETTINGS_MIN_MEMORY = ConfigManager.getAbsoluteMinRAM() settingsMaxRAMRange.setAttribute('max', SETTINGS_MAX_MEMORY) settingsMaxRAMRange.setAttribute('min', SETTINGS_MIN_MEMORY) settingsMinRAMRange.setAttribute('max', SETTINGS_MAX_MEMORY) -settingsMinRAMRange.setAttribute('min', SETTINGS_MIN_MEMORY) +settingsMinRAMRange.setAttribute('min', SETTINGS_MIN_MEMORY ) // Bind on change event for min memory container. settingsMinRAMRange.onchange = (e) => { @@ -983,22 +983,22 @@ settingsMinRAMRange.onchange = (e) => { // Get reference to range bar. const bar = e.target.getElementsByClassName('rangeSliderBar')[0] // Calculate effective total memory. - const max = (os.totalmem() - 1000000000) / 1000000000 + const max = (os.totalmem()-1000000000)/1000000000 // Change range bar color based on the selected value. - if (sMinV >= max / 2) { + if(sMinV >= max/2){ bar.style.background = '#e86060' - } else if (sMinV >= max / 4) { + } else if(sMinV >= max/4) { bar.style.background = '#e8e18b' } else { bar.style.background = null } // Increase maximum memory if the minimum exceeds its value. - if (sMaxV < sMinV) { + if(sMaxV < sMinV){ const sliderMeta = calculateRangeSliderMeta(settingsMaxRAMRange) updateRangedSlider(settingsMaxRAMRange, sMinV, - ((sMinV - sliderMeta.min) / sliderMeta.step) * sliderMeta.inc) + ((sMinV-sliderMeta.min)/sliderMeta.step)*sliderMeta.inc) settingsMaxRAMLabel.innerHTML = sMinV.toFixed(1) + 'G' } @@ -1015,22 +1015,22 @@ settingsMaxRAMRange.onchange = (e) => { // Get reference to range bar. const bar = e.target.getElementsByClassName('rangeSliderBar')[0] // Calculate effective total memory. - const max = (os.totalmem() - 1000000000) / 1000000000 + const max = (os.totalmem()-1000000000)/1000000000 // Change range bar color based on the selected value. - if (sMaxV >= max / 2) { + if(sMaxV >= max/2){ bar.style.background = '#e86060' - } else if (sMaxV >= max / 4) { + } else if(sMaxV >= max/4) { bar.style.background = '#e8e18b' } else { bar.style.background = null } // Decrease the minimum memory if the maximum value is less. - if (sMaxV < sMinV) { + if(sMaxV < sMinV){ const sliderMeta = calculateRangeSliderMeta(settingsMaxRAMRange) updateRangedSlider(settingsMinRAMRange, sMaxV, - ((sMaxV - sliderMeta.min) / sliderMeta.step) * sliderMeta.inc) + ((sMaxV-sliderMeta.min)/sliderMeta.step)*sliderMeta.inc) settingsMinRAMLabel.innerHTML = sMaxV.toFixed(1) + 'G' } settingsMaxRAMLabel.innerHTML = sMaxV.toFixed(1) + 'G' @@ -1042,14 +1042,14 @@ settingsMaxRAMRange.onchange = (e) => { * @param {Element} v The range slider to calculate against. * @returns {Object} An object with meta values for the provided ranged slider. */ -function calculateRangeSliderMeta(v) { +function calculateRangeSliderMeta(v){ const val = { max: Number(v.getAttribute('max')), min: Number(v.getAttribute('min')), step: Number(v.getAttribute('step')), } - val.ticks = (val.max - val.min) / val.step - val.inc = 100 / val.ticks + val.ticks = (val.max-val.min)/val.step + val.inc = 100/val.ticks return val } @@ -1057,7 +1057,7 @@ function calculateRangeSliderMeta(v) { * Binds functionality to the ranged sliders. They're more than * just divs now :'). */ -function bindRangeSlider() { +function bindRangeSlider(){ Array.from(document.getElementsByClassName('rangeSlider')).map((v) => { // Reference the track (thumb). @@ -1067,7 +1067,7 @@ function bindRangeSlider() { const value = v.getAttribute('value') const sliderMeta = calculateRangeSliderMeta(v) - updateRangedSlider(v, value, ((value - sliderMeta.min) / sliderMeta.step) * sliderMeta.inc) + updateRangedSlider(v, value, ((value-sliderMeta.min)/sliderMeta.step)*sliderMeta.inc) // The magic happens when we click on the track. track.onmousedown = (e) => { @@ -1082,24 +1082,24 @@ function bindRangeSlider() { document.onmousemove = (e) => { // Distance from the beginning of the bar in pixels. - const diff = e.pageX - v.offsetLeft - track.offsetWidth / 2 - + const diff = e.pageX - v.offsetLeft - track.offsetWidth/2 + // Don't move the track off the bar. - if (diff >= 0 && diff <= v.offsetWidth - track.offsetWidth / 2) { + if(diff >= 0 && diff <= v.offsetWidth-track.offsetWidth/2){ // Convert the difference to a percentage. - const perc = (diff / v.offsetWidth) * 100 + const perc = (diff/v.offsetWidth)*100 // Calculate the percentage of the closest notch. - const notch = Number(perc / sliderMeta.inc).toFixed(0) * sliderMeta.inc + const notch = Number(perc/sliderMeta.inc).toFixed(0)*sliderMeta.inc // If we're close to that notch, stick to it. - if (Math.abs(perc - notch) < sliderMeta.inc / 2) { - updateRangedSlider(v, sliderMeta.min + (sliderMeta.step * (notch / sliderMeta.inc)), notch) + if(Math.abs(perc-notch) < sliderMeta.inc/2){ + updateRangedSlider(v, sliderMeta.min+(sliderMeta.step*(notch/sliderMeta.inc)), notch) } } } } - }) + }) } /** @@ -1109,16 +1109,16 @@ function bindRangeSlider() { * @param {string | number} value The new value for the ranged slider. * @param {number} notch The notch that the slider should now be at. */ -function updateRangedSlider(element, value, notch) { +function updateRangedSlider(element, value, notch){ const oldVal = element.getAttribute('value') const bar = element.getElementsByClassName('rangeSliderBar')[0] const track = element.getElementsByClassName('rangeSliderTrack')[0] - + element.setAttribute('value', value) - if (notch < 0) { + if(notch < 0){ notch = 0 - } else if (notch > 100) { + } else if(notch > 100) { notch = 100 } @@ -1131,7 +1131,7 @@ function updateRangedSlider(element, value, notch) { let cancelled = !element.dispatchEvent(event) - if (!cancelled) { + if(!cancelled){ track.style.left = notch + '%' bar.style.width = notch + '%' } else { @@ -1142,9 +1142,9 @@ function updateRangedSlider(element, value, notch) { /** * Display the total and available RAM. */ -function populateMemoryStatus() { - settingsMemoryTotal.innerHTML = Number((os.totalmem() - 1000000000) / 1000000000).toFixed(1) + 'G' - settingsMemoryAvail.innerHTML = Number(os.freemem() / 1000000000).toFixed(1) + 'G' +function populateMemoryStatus(){ + settingsMemoryTotal.innerHTML = Number((os.totalmem()-1000000000)/1000000000).toFixed(1) + 'G' + settingsMemoryAvail.innerHTML = Number(os.freemem()/1000000000).toFixed(1) + 'G' } /** @@ -1153,12 +1153,12 @@ function populateMemoryStatus() { * * @param {string} execPath The executable path to populate against. */ -function populateJavaExecDetails(execPath) { +function populateJavaExecDetails(execPath){ const jg = new JavaGuard(DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer()).getMinecraftVersion()) jg._validateJavaBinary(execPath).then(v => { - if (v.valid) { + if(v.valid){ const vendor = v.vendor != null ? ` (${v.vendor})` : '' - if (v.version.major < 9) { + if(v.version.major < 9) { settingsJavaExecDetails.innerHTML = `Selected: Java ${v.version.major} Update ${v.version.update} (x${v.arch})${vendor}` } else { settingsJavaExecDetails.innerHTML = `Selected: Java ${v.version.major}.${v.version.minor}.${v.version.revision} (x${v.arch})${vendor}` @@ -1172,7 +1172,7 @@ function populateJavaExecDetails(execPath) { /** * Prepare the Java tab for display. */ -function prepareJavaTab() { +function prepareJavaTab(){ bindRangeSlider() populateMemoryStatus() } @@ -1181,9 +1181,9 @@ function prepareJavaTab() { * About Tab */ -const settingsTabAbout = document.getElementById('settingsTabAbout') -const settingsAboutChangelogTitle = settingsTabAbout.getElementsByClassName('settingsChangelogTitle')[0] -const settingsAboutChangelogText = settingsTabAbout.getElementsByClassName('settingsChangelogText')[0] +const settingsTabAbout = document.getElementById('settingsTabAbout') +const settingsAboutChangelogTitle = settingsTabAbout.getElementsByClassName('settingsChangelogTitle')[0] +const settingsAboutChangelogText = settingsTabAbout.getElementsByClassName('settingsChangelogText')[0] const settingsAboutChangelogButton = settingsTabAbout.getElementsByClassName('settingsChangelogButton')[0] // Bind the devtools toggle button. @@ -1198,7 +1198,7 @@ document.getElementById('settingsAboutDevToolsButton').onclick = (e) => { * @param {string} version The semver version to test. * @returns {boolean} True if the version is a prerelease, otherwise false. */ -function isPrerelease(version) { +function isPrerelease(version){ const preRelComp = semver.prerelease(version) return preRelComp != null && preRelComp.length > 0 } @@ -1212,9 +1212,9 @@ function isPrerelease(version) { * @param {Element} titleElement The title element. * @param {Element} checkElement The check mark element. */ -function populateVersionInformation(version, valueElement, titleElement, checkElement) { +function populateVersionInformation(version, valueElement, titleElement, checkElement){ valueElement.innerHTML = version - if (isPrerelease(version)) { + if(isPrerelease(version)){ titleElement.innerHTML = 'Pre-release' titleElement.style.color = '#ff886d' checkElement.style.background = '#ff886d' @@ -1228,7 +1228,7 @@ function populateVersionInformation(version, valueElement, titleElement, checkEl /** * Retrieve the version information and display it on the UI. */ -function populateAboutVersionInformation() { +function populateAboutVersionInformation(){ populateVersionInformation(remote.app.getVersion(), document.getElementById('settingsAboutCurrentVersionValue'), document.getElementById('settingsAboutCurrentVersionTitle'), document.getElementById('settingsAboutCurrentVersionCheck')) } @@ -1236,19 +1236,19 @@ function populateAboutVersionInformation() { * Fetches the GitHub atom release feed and parses it for the release notes * of the current version. This value is displayed on the UI. */ -function populateReleaseNotes() { +function populateReleaseNotes(){ $.ajax({ url: 'https://github.com/ArdaCraft/ArdaCraftLauncher/releases.atom', success: (data) => { const version = 'v' + remote.app.getVersion() const entries = $(data).find('entry') - - for (let i = 0; i < entries.length; i++) { + + for(let i=0; iClose the launcher and run the dmg to update.', false, () => { shell.openExternal(data.darwindownload) }) @@ -1324,7 +1324,7 @@ function populateSettingsUpdateInformation(data) { settingsUpdateChangelogCont.style.display = 'none' populateVersionInformation(remote.app.getVersion(), settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck) settingsUpdateButtonStatus('Check for Updates', false, () => { - if (!isDev) { + if(!isDev){ ipcRenderer.send('autoUpdateAction', 'checkForUpdate') settingsUpdateButtonStatus('Checking for Updates..', true) } @@ -1337,7 +1337,7 @@ function populateSettingsUpdateInformation(data) { * * @param {Object} data The update data. */ -function prepareUpdateTab(data = null) { +function prepareUpdateTab(data = null){ populateSettingsUpdateInformation(data) } @@ -1351,7 +1351,7 @@ function prepareUpdateTab(data = null) { * @param {boolean} first Whether or not it is the first load. */ function prepareSettings(first = false) { - if (first) { + if(first){ setupSettingsTabs() initSettingsValidators() prepareUpdateTab() diff --git a/app/login.ejs b/app/login.ejs index d51c07b0..28f75a40 100644 --- a/app/login.ejs +++ b/app/login.ejs @@ -31,7 +31,7 @@
- forgot password? + forgot password?
+
\ No newline at end of file diff --git a/index.js b/index.js index ce52c87e..2335302f 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,15 @@ -require('@electron/remote/main').initialize() +const remoteMain = require('@electron/remote/main') +remoteMain.initialize() // Requirements const { app, BrowserWindow, ipcMain, Menu } = require('electron') -const autoUpdater = require('electron-updater').autoUpdater -const ejse = require('ejs-electron') -const fs = require('fs') -const isDev = require('./app/assets/js/isdev') -const path = require('path') -const semver = require('semver') -const url = require('url') +const autoUpdater = require('electron-updater').autoUpdater +const ejse = require('ejs-electron') +const fs = require('fs') +const isDev = require('./app/assets/js/isdev') +const path = require('path') +const semver = require('semver') +const { pathToFileURL } = require('url') const redirectUriPrefix = 'https://login.microsoftonline.com/common/oauth2/nativeclient?' const clientID = '0c7c8228-98ff-4ed8-ae28-af41852ba6ab' @@ -16,18 +17,18 @@ const clientID = '0c7c8228-98ff-4ed8-ae28-af41852ba6ab' // Setup auto updater. function initAutoUpdater(event, data) { - if (data) { + if(data){ autoUpdater.allowPrerelease = true } else { // Defaults to true if application version contains prerelease components (e.g. 0.12.1-alpha.1) // autoUpdater.allowPrerelease = true } - - if (isDev) { + + if(isDev){ autoUpdater.autoInstallOnAppQuit = false autoUpdater.updateConfigPath = path.join(__dirname, 'dev-app-update.yml') } - if (process.platform === 'darwin') { + if(process.platform === 'darwin'){ autoUpdater.autoDownload = false } autoUpdater.on('update-available', (info) => { @@ -44,12 +45,12 @@ function initAutoUpdater(event, data) { }) autoUpdater.on('error', (err) => { event.sender.send('autoUpdateNotification', 'realerror', err) - }) + }) } // Open channel to listen for update actions. ipcMain.on('autoUpdateAction', (event, arg, data) => { - switch (arg) { + switch(arg){ case 'initAutoUpdater': console.log('Initializing auto updater.') initAutoUpdater(event, data) @@ -62,9 +63,9 @@ ipcMain.on('autoUpdateAction', (event, arg, data) => { }) break case 'allowPrereleaseChange': - if (!data) { + if(!data){ const preRelComp = semver.prerelease(app.getVersion()) - if (preRelComp != null && preRelComp.length > 0) { + if(preRelComp != null && preRelComp.length > 0){ autoUpdater.allowPrerelease = true } else { autoUpdater.allowPrerelease = data @@ -177,20 +178,15 @@ function createWindow() { webPreferences: { preload: path.join(__dirname, 'app', 'assets', 'js', 'preloader.js'), nodeIntegration: true, - contextIsolation: false, - enableRemoteModule: true, - worldSafeExecuteJavaScript: true + contextIsolation: false }, backgroundColor: '#171614' }) + remoteMain.enable(win.webContents) ejse.data('bkid', Math.floor((Math.random() * fs.readdirSync(path.join(__dirname, 'app', 'assets', 'images', 'backgrounds')).length))) - win.loadURL(url.format({ - pathname: path.join(__dirname, 'app', 'app.ejs'), - protocol: 'file:', - slashes: true - })) + win.loadURL(pathToFileURL(path.join(__dirname, 'app', 'app.ejs')).toString()) /*win.once('ready-to-show', () => { win.show() @@ -206,8 +202,8 @@ function createWindow() { } function createMenu() { - - if (process.platform === 'darwin') { + + if(process.platform === 'darwin') { // Extend default included application menu to continue support for quit keyboard shortcut let applicationSubMenu = { @@ -269,9 +265,9 @@ function createMenu() { } -function getPlatformIcon(filename) { +function getPlatformIcon(filename){ let ext - switch (process.platform) { + switch(process.platform) { case 'win32': ext = 'ico' break diff --git a/libraries/java/PackXZExtract.jar b/libraries/java/PackXZExtract.jar index 56a939c6..9a779a74 100644 Binary files a/libraries/java/PackXZExtract.jar and b/libraries/java/PackXZExtract.jar differ diff --git a/package-lock.json b/package-lock.json index 1f49bc65..6bbc0f10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "7zip-bin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.0.3.tgz", - "integrity": "sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", "dev": true }, "@babel/code-frame": { @@ -20,18 +20,18 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } @@ -47,9 +47,9 @@ } }, "@electron/get": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz", - "integrity": "sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.13.0.tgz", + "integrity": "sha512-+SjZhRuRo+STTO1Fdhzqnv9D2ZhjxXP6egsJ9kiO8dtP68cDx7dFCwWi64dlMQV7sWcfW1OYCW4wviEBzmRsfQ==", "dev": true, "requires": { "debug": "^4.1.1", @@ -98,14 +98,14 @@ } }, "@electron/remote": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-1.1.0.tgz", - "integrity": "sha512-yr8gZTkIgJYKbFqExI4QZqMSjn1kL/us9Dl46+TH1EZdhgRtsJ6HDfdsIxu0QEc6Hv+DMAXs69rgquH+8FDk4w==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.1.tgz", + "integrity": "sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA==" }, "@electron/universal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.4.tgz", - "integrity": "sha512-ajZoumi4XwqwmZe8YVhu4XGkZBCPyWZsVCQONPTIe9TUlleSN+dic3YpXlaWcilx/HOzTdldTKtabNTeI0gDoA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", + "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", "dev": true, "requires": { "@malept/cross-spawn-promise": "^1.1.0", @@ -130,15 +130,15 @@ } }, "@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -155,15 +155,6 @@ "sprintf-js": "~1.0.2" } }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -185,15 +176,26 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true } } }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "@malept/cross-spawn-promise": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", @@ -203,6 +205,32 @@ "cross-spawn": "^7.0.1" } }, + "@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -219,24 +247,27 @@ } }, "@types/debug": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", - "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", - "dev": true + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } }, "@types/fs-extra": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.11.tgz", - "integrity": "sha512-mZsifGG4QeQ7hlkhO56u7zt/ycBgGxSVsFI/6lGTU34VtwkiqrrSDgw0+ygs8kFGWcXnFQWMrzF2h7TtDFNixA==", + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, "requires": { "@types/node": "*" } }, "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", "dev": true, "optional": true, "requires": { @@ -245,16 +276,22 @@ } }, "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true, "optional": true }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, "@types/node": { - "version": "14.14.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.45.tgz", - "integrity": "sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw==", + "version": "14.17.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.20.tgz", + "integrity": "sha512-gI5Sl30tmhXsqkNvopFydP7ASc4c2cLfGNQrVKN3X90ADFWFsPEsotm/8JHSUJQKTHbwowAHtcJPeyVhtKv0TQ==", "dev": true }, "@types/plist": { @@ -269,30 +306,30 @@ } }, "@types/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-0caWDWmpCp0uifxFh+FaqK3CuZ2SkRR/ZRxAV5+zNdC3QVUi6wyOJnefhPvtNt8NQWXB5OA93BUvZsXpWat2Xw==" + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now==" }, "@types/verror": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.4.tgz", - "integrity": "sha512-OjJdqx6QlbyZw9LShPwRW+Kmiegeg3eWNI41MQQKaG3vjdU2L9SRElntM51HmHBY1cu7izxQJ1lMYioQh3XMBg==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", "dev": true, "optional": true }, "@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, "acorn": { @@ -302,15 +339,15 @@ "dev": true }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true }, "adm-zip": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.5.tgz", - "integrity": "sha512-IWwXKnCbirdbyXSfUDvCCrmYrOHANRZcc8NcRrvTlIApdl7PwE9oGcsYvNeJPAVY1M+70b4PxXGKIf8AEuiQ6w==" + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.7.tgz", + "integrity": "sha512-QLEo3eoC2B0i3+g/G5nNzKbGoVOjW2ingZ4TXl7/YeDM+FAl3SiHSNnokTZLFEuVHBn5CbZ42KJcIIsRji1EgQ==" }, "ajv": { "version": "6.12.6", @@ -330,25 +367,12 @@ "dev": true }, "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "requires": { - "string-width": "^3.0.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "string-width": "^4.1.0" } }, "ansi-colors": { @@ -358,9 +382,9 @@ "dev": true }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -372,63 +396,51 @@ } }, "app-builder-bin": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.12.tgz", - "integrity": "sha512-lQARM2AielmFoBeIo6LZigAe+58Wwe07ZWkt+wVeDxzyieNmeWjlvz/V5dKzinydwdHd+CNswN86sww46yijjA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.13.tgz", + "integrity": "sha512-ighVe9G+bT1ENGdp9ecO1P+94vv/f+FUwaI+XkNzeg9bYF8Oi3BQ+mJuxS00UgyHs8luuOzjzC+qnAtdb43Mpg==", "dev": true }, "app-builder-lib": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.10.5.tgz", - "integrity": "sha512-/W8nlGamJCtKlQtsMWwU9vb+cX4pTNY+rJWCuc7oXUykVSMS50W7LhQusIjCelNfymUQ1XCu6cXEY/ylqhX12A==", + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.11.7.tgz", + "integrity": "sha512-pS9/cR4/TnNZVAHZECiSvvwTBzbwblj7KBBZkMKDG57nibq0I1XY8zAaYeHFdlYTyrRcz9JUXbAqJKezya7UFQ==", "dev": true, "requires": { - "7zip-bin": "~5.0.3", + "7zip-bin": "~5.1.1", "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.0.4", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.10.5", - "builder-util-runtime": "8.7.3", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.2", "ejs": "^3.1.6", - "electron-publish": "22.10.5", - "fs-extra": "^9.1.0", - "hosted-git-info": "^3.0.8", - "is-ci": "^2.0.0", - "istextorbinary": "^5.12.0", - "js-yaml": "^4.0.0", - "lazy-val": "^1.0.4", + "electron-publish": "22.11.7", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", "minimatch": "^3.0.4", - "normalize-package-data": "^3.0.0", - "read-config-file": "6.0.0", + "read-config-file": "6.2.0", "sanitize-filename": "^1.6.3", - "semver": "^7.3.4", - "temp-file": "^3.3.7" + "semver": "^7.3.5", + "temp-file": "^3.4.0" }, "dependencies": { "builder-util-runtime": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.3.tgz", - "integrity": "sha512-1Q2ReBqFblimF5g/TLg2+0M5Xzv0Ih5LxJ/BMWXvEy/e6pQKeeEpbkPMGsN6OiQgkygaZo5VXCXIjOkOQG5EoQ==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz", + "integrity": "sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==", "dev": true, "requires": { "debug": "^4.3.2", "sax": "^1.2.4" } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } } } }, @@ -438,9 +450,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "asar": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/asar/-/asar-3.0.3.tgz", - "integrity": "sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", + "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", "dev": true, "requires": { "@types/glob": "^7.1.1", @@ -470,9 +482,9 @@ "dev": true }, "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", + "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" }, "async-exit-hook": { "version": "2.0.1", @@ -519,12 +531,6 @@ "tweetnacl": "^0.14.3" } }, - "binaryextensions": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-4.15.0.tgz", - "integrity": "sha512-MkUl3szxXolQ2scI1PM14WOT951KnaTNJ0eMKg7WzOI4kvSxyNo/Cygx4LOBNhwyINhAuSQpJW1rYD9aBSxGaw==", - "dev": true - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -551,23 +557,23 @@ } }, "boolean": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.4.tgz", - "integrity": "sha512-5pyOr+w2LNN72F2mAq6J0ckHUfJYSgRKma7e/wlcMMhgOLV9OI0ERhERYXxUqo+dPyVxcbXKy9n+wg13+LpNnA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.4.tgz", + "integrity": "sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==", "dev": true, "optional": true }, "boxen": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", - "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, "requires": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.1", - "string-width": "^4.2.0", + "string-width": "^4.2.2", "type-fest": "^0.20.2", "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" @@ -583,9 +589,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -661,31 +667,31 @@ "dev": true }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "builder-util": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.10.5.tgz", - "integrity": "sha512-/MkLhmyo1gU3xMwXJxccQaRj/9tm5eTd6ZyebTf8SYouY4r3hRser+LxhOm/f8Z9W6oJvfPe0jc9TFsxYfMcsg==", + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.11.7.tgz", + "integrity": "sha512-ihqUe5ey82LM9qqQe0/oIcaSm9w+B9UjcsWJZxJliTBsbU+sErOpDFpHW+sim0veiTF/EIcGUh9HoduWw+l9FA==", "dev": true, "requires": { - "7zip-bin": "~5.0.3", + "7zip-bin": "~5.1.1", "@types/debug": "^4.1.5", - "@types/fs-extra": "^9.0.7", - "app-builder-bin": "3.5.12", + "@types/fs-extra": "^9.0.11", + "app-builder-bin": "3.5.13", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.7.3", - "chalk": "^4.1.0", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", "debug": "^4.3.2", - "fs-extra": "^9.1.0", - "is-ci": "^2.0.0", - "js-yaml": "^4.0.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", - "temp-file": "^3.3.7" + "temp-file": "^3.4.0" }, "dependencies": { "ansi-styles": { @@ -698,9 +704,9 @@ } }, "builder-util-runtime": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.3.tgz", - "integrity": "sha512-1Q2ReBqFblimF5g/TLg2+0M5Xzv0Ih5LxJ/BMWXvEy/e6pQKeeEpbkPMGsN6OiQgkygaZo5VXCXIjOkOQG5EoQ==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz", + "integrity": "sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==", "dev": true, "requires": { "debug": "^4.3.2", @@ -708,9 +714,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -732,18 +738,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -841,9 +835,9 @@ "dev": true }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", "dev": true }, "cli-boxes": { @@ -870,6 +864,13 @@ "dev": true, "optional": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "optional": true + }, "slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", @@ -912,23 +913,6 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } } }, "clone-response": { @@ -1023,9 +1007,9 @@ } }, "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, "optional": true, "requires": { @@ -1048,9 +1032,9 @@ } }, "core-js": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.12.1.tgz", - "integrity": "sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw==", + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.1.tgz", + "integrity": "sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA==", "dev": true, "optional": true }, @@ -1118,9 +1102,9 @@ "dev": true }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "defer-to-connect": { @@ -1145,9 +1129,9 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "detect-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", - "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true, "optional": true }, @@ -1184,30 +1168,28 @@ } }, "dmg-builder": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.10.5.tgz", - "integrity": "sha512-58FEpfH8PEFqjbUNka4bYr52snRT8+LSXrP4gy6EZWOVICbOlmTOYj988pfoLam5C5iXb3odmyUQqwWOxlsEUw==", + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.11.7.tgz", + "integrity": "sha512-+I+XfP2DODHB6PwFANgpH/WMzzCA5r5XoMvbFCIYjQjJpXlO0XnqQaamzFl2vh/Wz/Qt0d0lJMgRy8gKR3MGdQ==", "dev": true, "requires": { - "app-builder-lib": "22.10.5", - "builder-util": "22.10.5", - "dmg-license": "^1.0.8", - "fs-extra": "^9.1.0", + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.6", + "dmg-license": "^1.0.9", + "fs-extra": "^10.0.0", "iconv-lite": "^0.6.2", - "js-yaml": "^4.0.0", - "sanitize-filename": "^1.6.3" + "js-yaml": "^4.1.0" }, "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "builder-util-runtime": { + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.6.tgz", + "integrity": "sha512-rj9AIY7CzLSuTOXpToiaQkruYh6UEQ+kYnd5UET22ch8MGClEtIZKXHG14qEiXEr2x4EOKDMxkcTa+9TYaE+ug==", "dev": true, "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "debug": "^4.3.2", + "sax": "^1.2.4" } } } @@ -1249,9 +1231,9 @@ } }, "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", "dev": true }, "dotenv-expand": { @@ -1275,16 +1257,6 @@ "safer-buffer": "^2.1.0" } }, - "editions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/editions/-/editions-6.1.0.tgz", - "integrity": "sha512-h6nWEyIocfgho9J3sTSuhU/WoFOu1hTX75rPBebNrbF38Y9QFDjCDizYXdikHTySW7Y3mSxli8bpDz9RAtc7rA==", - "dev": true, - "requires": { - "errlop": "^4.0.0", - "version-range": "^1.0.0" - } - }, "ejs": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", @@ -1303,9 +1275,9 @@ } }, "electron": { - "version": "12.0.7", - "resolved": "https://registry.npmjs.org/electron/-/electron-12.0.7.tgz", - "integrity": "sha512-722TZNKDuLpEmj96AzTYFKHaJEH98xgOBH0aldStaPXI1xDFfb9SJQQuirvwFlkwG5OqQdz6Ne3OwwJ7Dbs5nQ==", + "version": "13.5.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.5.1.tgz", + "integrity": "sha512-ZyxhIhmdaeE3xiIGObf0zqEyCyuIDqZQBv9NKX8w5FNzGm87j4qR0H1+GQg6vz+cA1Nnv1x175Zvimzc0/UwEQ==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -1314,25 +1286,23 @@ } }, "electron-builder": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.10.5.tgz", - "integrity": "sha512-0q/289UUJUhRou6lZKDz/wzK6WprIQ6VXMTmaI+w9qXvSNugPC9UA5s2zXInOkjZOvO/xKnjeyiavrVSHYF3tA==", + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.11.7.tgz", + "integrity": "sha512-yQExSLt7Hbz/P8lLkZDdE/OnJJ7NCX+uiQcV+XIH0TeEZcD87ZnSqBBzGUN5akySU4BXXlrVZKeUsXACWrm5Kw==", "dev": true, "requires": { - "@types/yargs": "^15.0.13", - "app-builder-lib": "22.10.5", - "bluebird-lst": "^1.0.9", - "builder-util": "22.10.5", - "builder-util-runtime": "8.7.3", - "chalk": "^4.1.0", - "dmg-builder": "22.10.5", - "fs-extra": "^9.1.0", - "is-ci": "^2.0.0", - "lazy-val": "^1.0.4", - "read-config-file": "6.0.0", - "sanitize-filename": "^1.6.3", + "@types/yargs": "^16.0.2", + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "dmg-builder": "22.11.7", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", "update-notifier": "^5.1.0", - "yargs": "^16.2.0" + "yargs": "^17.0.1" }, "dependencies": { "ansi-styles": { @@ -1345,9 +1315,9 @@ } }, "builder-util-runtime": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.3.tgz", - "integrity": "sha512-1Q2ReBqFblimF5g/TLg2+0M5Xzv0Ih5LxJ/BMWXvEy/e6pQKeeEpbkPMGsN6OiQgkygaZo5VXCXIjOkOQG5EoQ==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz", + "integrity": "sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==", "dev": true, "requires": { "debug": "^4.3.2", @@ -1355,9 +1325,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -1379,18 +1349,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1409,19 +1367,18 @@ } }, "electron-publish": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.10.5.tgz", - "integrity": "sha512-dHyuazv3P3j1Xyv7pdwTwAvxWab2pCb0G0Oa6qWQoCc4b1/mRGY00M7AvYW1cPuUijj9zYAf1HmXfM6MifaMlA==", + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.11.7.tgz", + "integrity": "sha512-A4EhRRNBVz4SPzUlBrPO6BmuyDeI0pyprggPAV9rQ+SDVSnSB/WKPot9JwWMyArkGj3AUUTMNVT6hwZhMvhfqw==", "dev": true, "requires": { - "@types/fs-extra": "^9.0.7", - "bluebird-lst": "^1.0.9", - "builder-util": "22.10.5", - "builder-util-runtime": "8.7.3", - "chalk": "^4.1.0", - "fs-extra": "^9.1.0", - "lazy-val": "^1.0.4", - "mime": "^2.5.0" + "@types/fs-extra": "^9.0.11", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" }, "dependencies": { "ansi-styles": { @@ -1434,9 +1391,9 @@ } }, "builder-util-runtime": { - "version": "8.7.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.3.tgz", - "integrity": "sha512-1Q2ReBqFblimF5g/TLg2+0M5Xzv0Ih5LxJ/BMWXvEy/e6pQKeeEpbkPMGsN6OiQgkygaZo5VXCXIjOkOQG5EoQ==", + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz", + "integrity": "sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==", "dev": true, "requires": { "debug": "^4.3.2", @@ -1444,9 +1401,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -1468,18 +1425,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1513,9 +1458,9 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "encodeurl": { @@ -1548,12 +1493,6 @@ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, - "errlop": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/errlop/-/errlop-4.1.0.tgz", - "integrity": "sha512-vul6gGBuVt0M2TPi1/WrcL86+Hb3Q2Tpu3TME3sbVhZrYf7J1ZMHCodI25RQKCVurh56qTfvgM0p3w5cT4reSQ==", - "dev": true - }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -1579,28 +1518,31 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz", - "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -1609,7 +1551,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -1618,17 +1560,11 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1648,9 +1584,9 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -1672,6 +1608,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1694,15 +1636,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -1916,9 +1849,9 @@ } }, "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, "forever-agent": { @@ -1957,12 +1890,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", @@ -1998,9 +1925,9 @@ "integrity": "sha1-FwRlRf+qBB5YJFgAHflot+yRwuo=" }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -2067,9 +1994,9 @@ } }, "globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -2113,9 +2040,9 @@ } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, "graceful-readlink": { "version": "1.0.1", @@ -2137,15 +2064,6 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -2158,9 +2076,9 @@ "dev": true }, "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -2193,9 +2111,9 @@ } }, "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -2256,21 +2174,12 @@ "dev": true }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dev": true, - "requires": { - "has": "^1.0.3" + "ci-info": "^3.1.1" } }, "is-extglob": { @@ -2280,15 +2189,15 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -2339,6 +2248,12 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2350,17 +2265,6 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "istextorbinary": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-5.12.0.tgz", - "integrity": "sha512-wLDRWD7qpNTYubk04+q3en1+XZGS4vYWK0+SxNSXJLaITMMEK+J3o/TlOMyULeH1qozVZ9uUkKcyMA8odyxz8w==", - "dev": true, - "requires": { - "binaryextensions": "^4.15.0", - "editions": "^6.1.0", - "textextensions": "^5.11.0" - } - }, "jake": { "version": "10.8.2", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", @@ -2478,9 +2382,9 @@ } }, "lazy-val": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz", - "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" }, "levn": { "version": "0.4.1", @@ -2514,6 +2418,12 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -2576,16 +2486,16 @@ "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" }, "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" }, "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "requires": { - "mime-db": "1.47.0" + "mime-db": "1.50.0" } }, "mimic-response": { @@ -2634,37 +2544,17 @@ "dev": true }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", "requires": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "whatwg-url": "^5.0.0" } }, "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, "npm-conf": { @@ -2759,12 +2649,6 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -2784,15 +2668,14 @@ "optional": true }, "plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", + "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", "dev": true, "optional": true, "requires": { "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" + "xmlbuilder": "^9.0.7" }, "dependencies": { "xmlbuilder": { @@ -2881,43 +2764,16 @@ } }, "read-config-file": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz", - "integrity": "sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", "dev": true, "requires": { - "dotenv": "^8.2.0", + "dotenv": "^9.0.2", "dotenv-expand": "^5.1.0", - "js-yaml": "^3.13.1", - "json5": "^2.1.2", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", "lazy-val": "^1.0.4" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - } } }, "readable-stream": { @@ -2931,9 +2787,9 @@ } }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "registry-auth-token": { @@ -2993,16 +2849,6 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3124,9 +2970,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "dev": true }, "slice-ansi": { @@ -3163,19 +3009,13 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true } } }, "smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "optional": true }, @@ -3186,47 +3026,15 @@ "dev": true }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -3257,43 +3065,14 @@ "dev": true }, "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "strip-ansi": "^6.0.1" } }, "string_decoder": { @@ -3305,12 +3084,12 @@ } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.1" } }, "strip-json-comments": { @@ -3337,23 +3116,23 @@ } }, "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "dev": true, "requires": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "dependencies": { "ajv": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.3.0.tgz", - "integrity": "sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -3362,26 +3141,11 @@ "uri-js": "^4.2.2" } }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } } } }, @@ -3424,11 +3188,23 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "textextensions": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-5.12.0.tgz", - "integrity": "sha512-IYogUDaP65IXboCiPPC0jTLLBzYlhhw2Y4b0a2trPgbHNGGGEfuHE6tds+yDcCf4mpNDaGISFzwSSezcXt+d6w==", - "dev": true + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tmp-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", + "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", + "dev": true, + "requires": { + "tmp": "^0.2.0" + } }, "to-readable-stream": { "version": "1.0.0", @@ -3445,6 +3221,11 @@ "punycode": "^2.1.1" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -3551,15 +3332,21 @@ } }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3581,6 +3368,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3631,16 +3427,6 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -3651,19 +3437,18 @@ "extsprintf": "^1.2.0" } }, - "version-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/version-compare/-/version-compare-1.1.0.tgz", - "integrity": "sha512-zVKtPOJTC9x23lzS4+4D7J+drq80BXVYAmObnr5zqxxFVH7OffJ1lJlAS7LYsQNV56jx/wtbw0UV7XHLrvd6kQ==", - "dev": true + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, - "version-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/version-range/-/version-range-1.1.0.tgz", - "integrity": "sha512-R1Ggfg2EXamrnrV3TkZ6yBNgITDbclB3viwSjbZ3+eK0VVNK4ajkYJTnDz5N0bIMYDtK9MUBvXJUnKO5RWWJ6w==", - "dev": true, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "requires": { - "version-compare": "^1.0.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "which": { @@ -3706,12 +3491,6 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -3735,15 +3514,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } } } }, @@ -3765,9 +3535,9 @@ } }, "ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==" + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==" }, "xdg-basedir": { "version": "4.0.0", @@ -3782,13 +3552,6 @@ "dev": true, "optional": true }, - "xmldom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", - "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", - "dev": true, - "optional": true - }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -3801,9 +3564,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -3816,9 +3579,9 @@ } }, "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, "yauzl": { diff --git a/package.json b/package.json index 2b63c27e..827a2515 100644 --- a/package.json +++ b/package.json @@ -23,9 +23,9 @@ "node": "14.x.x" }, "dependencies": { - "@electron/remote": "^1.1.0", - "adm-zip": "^0.5.5", - "async": "^3.2.0", + "@electron/remote": "^2.0.1", + "adm-zip": "^0.5.7", + "async": "^3.2.1", "discord-rpc": "^3.2.0", "ejs": "^3.1.6", "ejs-electron": "^2.1.1", @@ -39,9 +39,9 @@ "winreg": "^1.2.4" }, "devDependencies": { - "electron": "^12.0.7", - "electron-builder": "^22.10.5", - "eslint": "^7.26.0" + "electron": "^13.5.1", + "electron-builder": "^22.11.7", + "eslint": "^7.32.0" }, "repository": { "type": "git",