Added drag/drop functionality to the add mods button.

You can now drag one or more files onto the add mods button in order to add them to the mods directory. Only jar, litemod, and zip files will be moved.
Changed eslint to use a single configuration file, with overrides for the UI scripts.
Now using fs-extra, replace usages of rimraf and mkdirp with fs-extra functions.
This commit is contained in:
Daniel Scalzi 2018-12-01 08:20:42 -05:00
parent d9c9b32446
commit d779eacf61
No known key found for this signature in database
GPG Key ID: 5CA2F145B63535F9
11 changed files with 170 additions and 143 deletions

View File

@ -46,5 +46,18 @@
"argsIgnorePattern": "reject"
}
]
},
"overrides": [
{
"files": [ "app/assets/js/scripts/*.js" ],
"rules": {
"no-unused-vars": [
0
],
"no-undef": [
0
]
}
}
]
}

View File

@ -1,47 +0,0 @@
{
"env": {
"es6": true,
"node": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 2017,
"sourceType": "module"
},
"rules": {
"indent": [
"error",
4,
{
"SwitchCase": 1
}
],
"linebreak-style": [
"error",
"windows"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"never"
],
"no-var": [
"error"
],
"no-console": [
0
],
"no-control-regex": [
0
],
"no-unused-vars": [
0
],
"no-undef": [
0
]
}
}

View File

@ -1545,13 +1545,15 @@ input:checked + .toggleSwitchSlider:before {
margin-bottom: 10px;
}
#settingsDropinFileSystemButton:hover,
#settingsDropinFileSystemButton:focus {
#settingsDropinFileSystemButton:focus,
#settingsDropinFileSystemButton[drag] {
background: rgba(54, 54, 54, 0.25);
text-shadow: 0px 0px 20px white;
}
/* Refresh instructions on the file system button. */
#settingsDropinRefreshNote {
font-size: 10px;
pointer-events: none;
}
/* Button to remove drop-in mods. */
@ -2663,7 +2665,6 @@ input:checked + .toggleSwitchSlider:before {
box-shadow: 0px 0px 10px 0px rgb(0, 0, 0);
overflow: hidden;
position: relative;
/*background-image: url('https://cdn.discordapp.com/avatars/169197209630277642/6650b5a50e1cb3d00a79b9b88b9a0cd4.png');*/
background-position: center;
background-repeat: no-repeat;
background-size: contain;

View File

@ -4,8 +4,7 @@ const async = require('async')
const child_process = require('child_process')
const crypto = require('crypto')
const EventEmitter = require('events')
const fs = require('fs')
const mkpath = require('mkdirp')
const fs = require('fs-extra')
const path = require('path')
const Registry = require('winreg')
const request = require('request')
@ -360,7 +359,7 @@ class AssetGuard extends EventEmitter {
const versionPath = path.join(commonPath, 'versions', forgeVersion.id)
const versionFile = path.join(versionPath, forgeVersion.id + '.json')
if(!fs.existsSync(versionFile)){
mkpath.sync(versionPath)
fs.ensureDirSync(versionPath)
fs.writeFileSync(path.join(versionPath, forgeVersion.id + '.json'), zipEntries[i].getData())
resolve(forgeVersion)
} else {
@ -996,7 +995,7 @@ class AssetGuard extends EventEmitter {
const url = await self._getVersionDataUrl(version)
//This download will never be tracked as it's essential and trivial.
console.log('Preparing download of ' + version + ' assets.')
mkpath.sync(versionPath)
fs.ensureDirSync(versionPath)
const stream = request(url).pipe(fs.createWriteStream(versionFile))
stream.on('finish', () => {
resolve(JSON.parse(fs.readFileSync(versionFile)))
@ -1078,7 +1077,7 @@ class AssetGuard extends EventEmitter {
let data = null
if(!fs.existsSync(assetIndexLoc) || force){
console.log('Downloading ' + versionData.id + ' asset index.')
mkpath.sync(indexPath)
fs.ensureDirSync(indexPath)
const stream = request(assetIndex.url).pipe(fs.createWriteStream(assetIndexLoc))
stream.on('finish', () => {
data = JSON.parse(fs.readFileSync(assetIndexLoc, 'utf-8'))
@ -1457,7 +1456,7 @@ class AssetGuard extends EventEmitter {
async.eachLimit(dlQueue, limit, (asset, cb) => {
mkpath.sync(path.join(asset.to, '..'))
fs.ensureDirSync(path.join(asset.to, '..'))
let req = request(asset.from)
req.pause()

View File

@ -1,5 +1,4 @@
const fs = require('fs')
const mkpath = require('mkdirp')
const fs = require('fs-extra')
const os = require('os')
const path = require('path')
@ -98,7 +97,7 @@ exports.load = function(){
if(!fs.existsSync(filePath)){
// Create all parent directories.
mkpath.sync(path.join(filePath, '..'))
fs.ensureDirSync(path.join(filePath, '..'))
config = DEFAULT_CONFIG
exports.save()
} else {
@ -110,7 +109,7 @@ exports.load = function(){
logger.error(err)
logger.log('Configuration file contains malformed JSON or is corrupt.')
logger.log('Generating a new configuration file.')
mkpath.sync(path.join(filePath, '..'))
fs.ensureDirSync(path.join(filePath, '..'))
config = DEFAULT_CONFIG
exports.save()
}

View File

@ -1,5 +1,4 @@
const fs = require('fs')
const mkpath = require('mkdirp')
const fs = require('fs-extra')
const path = require('path')
const { shell } = require('electron')
@ -16,9 +15,7 @@ const DISABLED_EXT = '.disabled'
* @param {string} modsDir The path to the mods directory.
*/
exports.validateModsDir = function(modsDir) {
if(!fs.existsSync(modsDir)) {
mkpath.sync(modsDir)
}
fs.ensureDirSync(modsDir)
}
/**
@ -66,6 +63,22 @@ exports.scanForDropinMods = function(modsDir, version) {
return modsDiscovered
}
/**
* Add dropin mods.
*
* @param {FileList} files The files to add.
* @param {string} modsDir The path to the mods directory.
*/
exports.addDropinMods = function(files, modsdir) {
for(let f of files) {
if(MOD_REGEX.exec(f.name) != null) {
fs.moveSync(f.path, path.join(modsdir, f.name))
}
}
}
/**
* Delete a drop-in mod from the file system.
*

View File

@ -1,7 +1,7 @@
const {ipcRenderer} = require('electron')
const fs = require('fs-extra')
const os = require('os')
const path = require('path')
const rimraf = require('rimraf')
const ConfigManager = require('./configmanager')
const DistroManager = require('./distromanager')
@ -56,7 +56,7 @@ DistroManager.pullRemote().then((data) => {
})
// Clean up temp dir incase previous launches ended unexpectedly.
rimraf(path.join(os.tmpdir(), ConfigManager.getTempNativeFolder()), (err) => {
fs.remove(path.join(os.tmpdir(), ConfigManager.getTempNativeFolder()), (err) => {
if(err){
logger.warn('Error while cleaning natives directory', err)
} else {

View File

@ -1,11 +1,9 @@
const AdmZip = require('adm-zip')
const child_process = require('child_process')
const crypto = require('crypto')
const fs = require('fs')
const mkpath = require('mkdirp')
const fs = require('fs-extra')
const os = require('os')
const path = require('path')
const rimraf = require('rimraf')
const {URL} = require('url')
const { Library } = require('./assetguard')
@ -36,7 +34,7 @@ class ProcessBuilder {
* Convienence method to run the functions typically used to build a process.
*/
build(){
mkpath.sync(this.gameDir)
fs.ensureDirSync(this.gameDir)
const tempNativePath = path.join(os.tmpdir(), ConfigManager.getTempNativeFolder(), crypto.pseudoRandomBytes(16).toString('hex'))
process.throwDeprecation = true
this.setupLiteLoader()
@ -74,7 +72,7 @@ class ProcessBuilder {
})
child.on('close', (code, signal) => {
logger.log('Exited with code', code)
rimraf(tempNativePath, (err) => {
fs.remove(tempNativePath, (err) => {
if(err){
logger.warn('Error while deleting temp dir', err)
} else {
@ -364,7 +362,7 @@ class ProcessBuilder {
const libs = []
const libArr = this.versionData.libraries
mkpath.sync(tempNativePath)
fs.ensureDirSync(tempNativePath)
for(let i=0; i<libArr.length; i++){
const lib = libArr[i]
if(Library.validateRules(lib.rules)){

View File

@ -643,6 +643,25 @@ function bindDropinModFileSystemButton(){
DropinModUtil.validateModsDir(CACHE_SETTINGS_MODS_DIR)
shell.openItem(CACHE_SETTINGS_MODS_DIR)
}
fsBtn.ondragenter = e => {
e.dataTransfer.dropEffect = 'move'
fsBtn.setAttribute('drag', '')
e.preventDefault()
}
fsBtn.ondragover = e => {
e.preventDefault()
}
fsBtn.ondragleave = e => {
fsBtn.removeAttribute('drag')
}
fsBtn.ondrop = e => {
fsBtn.removeAttribute('drag')
e.preventDefault()
DropinModUtil.addDropinMods(e.dataTransfer.files, CACHE_SETTINGS_MODS_DIR)
reloadDropinMods()
}
}
/**
@ -676,13 +695,17 @@ function saveDropinModConfiguration(){
document.addEventListener('keydown', (e) => {
if(getCurrentView() === VIEWS.settings && selectedSettingsTab === 'settingsTabMods'){
if(e.key === 'F5'){
reloadDropinMods()
}
}
})
function reloadDropinMods(){
resolveDropinModsForUI()
bindDropinModsRemoveButton()
bindDropinModFileSystemButton()
bindModsToggleSwitch()
}
}
})
// Server status bar functions.

151
package-lock.json generated
View File

@ -134,28 +134,28 @@
}
},
"app-builder-bin": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.5.1.tgz",
"integrity": "sha512-Hm+eyyfQCs5N5avLAw3w9Cf1S5TX/t6ecAfHusbzCDh/rLKLKYso2vwDWH4OQZ8uWLnuJwaAUDf3PstRcn0H+A==",
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.0.tgz",
"integrity": "sha512-7HphDMS2U9MwAA6R7lSU6MASFR/D+VJDb5hQ4Fn2coOMyaRn71QDWPdG0TPnDr88F2I7bsTuHYud28S/yN2lZw==",
"dev": true
},
"app-builder-lib": {
"version": "20.36.2",
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.36.2.tgz",
"integrity": "sha512-5FxLnWI13t0LLmh2QjmPx3KW/xhj67su7UxdCzQgULsUmYurdPx8yAOb9YxoX+RpR08inqt+H3GBOJlqSSrVgg==",
"version": "20.38.2",
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.38.2.tgz",
"integrity": "sha512-jwysFwaU4ohvHqv5jNCeoZSO0N/8x7W/c0S6TiTb6QUC3U0YVcsN7DPMj7QApHzTvMTO9kxzjUzwA8dbQZVovg==",
"dev": true,
"requires": {
"7zip-bin": "~4.1.0",
"app-builder-bin": "2.5.1",
"app-builder-bin": "2.6.0",
"async-exit-hook": "^2.0.1",
"bluebird-lst": "^1.0.6",
"builder-util": "9.3.0",
"builder-util": "9.6.0",
"builder-util-runtime": "8.0.2",
"chromium-pickle-js": "^0.2.0",
"debug": "^4.1.0",
"ejs": "^2.6.1",
"electron-osx-sign": "0.4.11",
"electron-publish": "20.36.0",
"electron-publish": "20.38.2",
"fs-extra-p": "^7.0.0",
"hosted-git-info": "^2.7.1",
"is-ci": "^1.2.1",
@ -168,7 +168,7 @@
"read-config-file": "3.2.0",
"sanitize-filename": "^1.6.1",
"semver": "^5.6.0",
"temp-file": "^3.2.0"
"temp-file": "^3.3.2"
},
"dependencies": {
"debug": {
@ -261,7 +261,8 @@
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"base64-js": {
"version": "1.3.0",
@ -387,6 +388,7 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -417,15 +419,15 @@
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"builder-util": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.3.0.tgz",
"integrity": "sha512-K+kj5vWj4Mk3jOm6kVT9ZwNcECLHe449vdMxYuZpCnn7CSxRm+TeZm9P9ZFCQUID5Hww/Sy4NMFo+VVJh6+Ptw==",
"version": "9.6.0",
"resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.6.0.tgz",
"integrity": "sha512-6T4E3aNVndTZ2oCt+22S0wxt47d094MxrADi6S012QumXlDNfSsyu1ffbGN9w0HG+4aubpLzf9apKgMP1yl4Kw==",
"dev": true,
"requires": {
"7zip-bin": "~4.1.0",
"app-builder-bin": "2.5.1",
"app-builder-bin": "2.6.0",
"bluebird-lst": "^1.0.6",
"builder-util-runtime": "^8.0.1",
"builder-util-runtime": "^8.0.2",
"chalk": "^2.4.1",
"debug": "^4.1.0",
"fs-extra-p": "^7.0.0",
@ -433,7 +435,7 @@
"js-yaml": "^3.12.0",
"source-map-support": "^0.5.9",
"stat-mode": "^0.2.2",
"temp-file": "^3.2.0"
"temp-file": "^3.3.2"
},
"dependencies": {
"debug": {
@ -664,7 +666,8 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"concat-stream": {
"version": "1.6.2",
@ -860,14 +863,14 @@
}
},
"dmg-builder": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.4.0.tgz",
"integrity": "sha512-q84fMrMm9mXh2qH0Sb3+o0gCvfeJRBI+46y+CpQystqgRyB+3bZB11WqCf5d8+qsENhzpi786jR82xbHG1Vvag==",
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.5.2.tgz",
"integrity": "sha512-eT3qc8IrwfDyq5ddGO807Wya2ltVlIlE0FVf6Aa+HWdlp9JnYayPNGWrQA9xIHpKKlq206JdNZ6LYIn93EAzdg==",
"dev": true,
"requires": {
"app-builder-lib": "~20.36.0",
"app-builder-lib": "~20.38.2",
"bluebird-lst": "^1.0.6",
"builder-util": "~9.3.0",
"builder-util": "~9.6.0",
"fs-extra-p": "^7.0.0",
"iconv-lite": "^0.4.24",
"js-yaml": "^3.12.0",
@ -947,24 +950,24 @@
}
},
"electron-builder": {
"version": "20.36.2",
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.36.2.tgz",
"integrity": "sha512-xPJNt3ZBn5IYlp3pCP0Rvi00JYAKdTeOSLWFrkST1xqWfRZxXrI4uisVD9HQjzRN8hBHhTgTfXtb9uhWPha9eA==",
"version": "20.38.2",
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.38.2.tgz",
"integrity": "sha512-uUEzfc/e8J7nAowvFQw4SyHIe4d6VSHO1LmcLy53he4aGXlVklHluhbwa0rxATPdYVNgHmJz7zoVgYYOd/YS+A==",
"dev": true,
"requires": {
"app-builder-lib": "20.36.2",
"app-builder-lib": "20.38.2",
"bluebird-lst": "^1.0.6",
"builder-util": "9.3.0",
"builder-util": "9.6.0",
"builder-util-runtime": "8.0.2",
"chalk": "^2.4.1",
"dmg-builder": "6.4.0",
"dmg-builder": "6.5.2",
"fs-extra-p": "^7.0.0",
"is-ci": "^1.2.1",
"lazy-val": "^1.0.3",
"read-config-file": "3.2.0",
"sanitize-filename": "^1.6.1",
"update-notifier": "^2.5.0",
"yargs": "^12.0.2"
"yargs": "^12.0.5"
}
},
"electron-download": {
@ -982,6 +985,19 @@
"rc": "^1.2.1",
"semver": "^5.4.1",
"sumchecker": "^2.0.2"
},
"dependencies": {
"fs-extra": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
}
}
},
"electron-osx-sign": {
@ -1016,24 +1032,32 @@
}
},
"electron-publish": {
"version": "20.36.0",
"resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.36.0.tgz",
"integrity": "sha512-LjJ4KoApSLtKyGWotv0B+PoTzpLEdHHXzDF9HLxatPlfoZCmrOexqm7Qiv1ODuYWPac7Zpf2OHitJp8WIOcZRQ==",
"version": "20.38.2",
"resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.38.2.tgz",
"integrity": "sha512-GXwnZm9I9l4RjlDwuALpR57aIH38qRzDEYbhLysmrC5T2xlCgyBIfxS5EUNESqKT+9KeJJZcj+eTKMjbz+Qafw==",
"dev": true,
"requires": {
"bluebird-lst": "^1.0.6",
"builder-util": "~9.3.0",
"builder-util-runtime": "^8.0.1",
"builder-util": "~9.6.0",
"builder-util-runtime": "^8.0.2",
"chalk": "^2.4.1",
"fs-extra-p": "^7.0.0",
"lazy-val": "^1.0.3",
"mime": "^2.3.1"
"mime": "^2.4.0"
},
"dependencies": {
"mime": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
"integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
"dev": true
}
}
},
"electron-updater": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.0.4.tgz",
"integrity": "sha512-y3wddJQyC5h1UTJhNAWoX4McJ5Z1r1ZDqyifpYWniVS286YCXe1xSLkbe9C6ZzxzPurt1jg2ZubPuBNt/811Dw==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.0.5.tgz",
"integrity": "sha512-2w93987YlPNMbhYQe6+EsSpkhtgYtLyYuAMttqQckwFdBJJat4Jo8ja/gmBk2Aa760g2Jt7aIBPQvlJDiXGPgg==",
"requires": {
"bluebird-lst": "^1.0.6",
"builder-util-runtime": "~8.0.2",
@ -1415,10 +1439,9 @@
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"fs-extra": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
"dev": true,
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
@ -1449,7 +1472,8 @@
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"functional-red-black-tree": {
"version": "1.0.1",
@ -1492,6 +1516,7 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@ -1629,6 +1654,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
@ -2024,9 +2050,9 @@
"dev": true
},
"lru-cache": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
"integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"requires": {
"pseudomap": "^1.0.2",
@ -2122,6 +2148,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -2390,9 +2417,9 @@
}
},
"pako": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
"integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz",
"integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ=="
},
"parse-color": {
"version": "1.0.0",
@ -2429,7 +2456,8 @@
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-is-inside": {
"version": "1.0.2",
@ -2606,9 +2634,9 @@
},
"dependencies": {
"ajv": {
"version": "6.5.5",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
"integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz",
"integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
@ -2784,6 +2812,7 @@
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
"glob": "^7.0.5"
}
@ -3573,9 +3602,9 @@
"dev": true
},
"yargs": {
"version": "12.0.4",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.4.tgz",
"integrity": "sha512-f5esswlPO351AnejaO2A1ZZr0zesz19RehQKwiRDqWtrraWrJy16tsUIKgDXFMVytvNOHPVmTiaTh3wO67I0fQ==",
"version": "12.0.5",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
"integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
"dev": true,
"requires": {
"cliui": "^4.0.0",
@ -3589,7 +3618,7 @@
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1 || ^4.0.0",
"yargs-parser": "^11.1.0"
"yargs-parser": "^11.1.1"
},
"dependencies": {
"ansi-regex": {
@ -3635,9 +3664,9 @@
}
},
"yargs-parser": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.0.tgz",
"integrity": "sha512-lGA5HsbjkpCfekDBHAhgE5OE8xEoqiUDylowr+BvhRCwG1xVYTsd8hx2CYC0NY4k9RIgJeybFTG2EZW4P2aN1w==",
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
"integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
"dev": true,
"requires": {
"camelcase": "^5.0.0",

View File

@ -19,7 +19,7 @@
"dist:win": "npm run dist -- --win --x64",
"dist:mac": "npm run dist -- --mac",
"dist:linux": "npm run dist -- --linux --x64",
"lint": "eslint --config .eslintrc.json --ignore-pattern app/assets/js/scripts/*.js . && eslint --config .eslintrc.scripts.json app/assets/js/scripts"
"lint": "eslint --config .eslintrc.json ."
},
"engines": {
"node": "10.x.x"
@ -30,12 +30,11 @@
"discord-rpc": "discordjs/RPC",
"ejs": "^2.6.1",
"ejs-electron": "^2.0.3",
"electron-updater": "^4.0.4",
"electron-updater": "^4.0.5",
"fs-extra": "^7.0.1",
"github-syntax-dark": "^0.5.0",
"jquery": "^3.3.1",
"mkdirp": "^0.5.1",
"request": "^2.88.0",
"rimraf": "^2.6.2",
"semver": "^5.6.0",
"tar-fs": "^1.16.3",
"winreg": "^1.2.4"
@ -43,7 +42,7 @@
"devDependencies": {
"cross-env": "^5.2.0",
"electron": "^3.0.10",
"electron-builder": "^20.36.2",
"electron-builder": "^20.38.2",
"eslint": "^5.9.0"
},
"repository": {