From 248937c22df17ac5f2ce40d21b98f77fa8006ebc Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Sat, 24 Dec 2022 22:17:30 -0500 Subject: [PATCH] Improve logging. --- .eslintrc.json | 4 +- app/assets/js/assetexec.js | 7 ++- app/assets/js/assetguard.js | 55 ++++++++++++---------- app/assets/js/configmanager.js | 9 ++-- app/assets/js/discordwrapper.js | 12 +++-- app/assets/js/distromanager.js | 10 ++-- app/assets/js/loggerutil.js | 32 ------------- app/assets/js/preloader.js | 36 +++++++------- app/assets/js/processbuilder.js | 20 ++++---- app/assets/js/scripts/landing.js | 40 ++++++++-------- app/assets/js/scripts/login.js | 2 - app/assets/js/scripts/uibinder.js | 2 +- app/assets/js/scripts/uicore.js | 24 +++++----- package-lock.json | 78 +++++++++++++++---------------- package.json | 2 +- 15 files changed, 154 insertions(+), 179 deletions(-) delete mode 100644 app/assets/js/loggerutil.js diff --git a/.eslintrc.json b/.eslintrc.json index a254fe0..dd03670 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,11 +1,11 @@ { "env": { - "es2017": true, + "es2022": true, "node": true }, "extends": "eslint:recommended", "parserOptions": { - "ecmaVersion": 2021, + "ecmaVersion": 2022, "sourceType": "module" }, "rules": { diff --git a/app/assets/js/assetexec.js b/app/assets/js/assetexec.js index 4d8061a..f1af291 100644 --- a/app/assets/js/assetexec.js +++ b/app/assets/js/assetexec.js @@ -6,8 +6,11 @@ if(target == null){ } let tracker = new target(...(process.argv.splice(3))) +const { LoggerUtil } = require('helios-core') +const logger = LoggerUtil.getLogger('AssetExec') + //const tracker = new AssetGuard(process.argv[2], process.argv[3]) -console.log('AssetExec Started') +logger.info('AssetExec Started') // Temporary for debug purposes. process.on('unhandledRejection', r => console.log(r)) @@ -66,6 +69,6 @@ process.on('message', (msg) => { }) process.on('disconnect', () => { - console.log('AssetExec Disconnected') + logger.info('AssetExec Disconnected') process.exit(0) }) \ No newline at end of file diff --git a/app/assets/js/assetguard.js b/app/assets/js/assetguard.js index dcfcd7f..1c206c5 100644 --- a/app/assets/js/assetguard.js +++ b/app/assets/js/assetguard.js @@ -5,6 +5,7 @@ const child_process = require('child_process') const crypto = require('crypto') const EventEmitter = require('events') const fs = require('fs-extra') +const { LoggerUtil } = require('helios-core') const nodeDiskInfo = require('node-disk-info') const StreamZip = require('node-stream-zip') const path = require('path') @@ -215,6 +216,7 @@ class JavaGuard extends EventEmitter { constructor(mcVersion){ super() this.mcVersion = mcVersion + this.logger = LoggerUtil.getLogger('JavaGuard') } /** @@ -451,7 +453,7 @@ class JavaGuard extends EventEmitter { if(props[i].indexOf('sun.arch.data.model') > -1){ let arch = props[i].split('=')[1].trim() arch = parseInt(arch) - console.log(props[i].trim()) + this.logger.debug(props[i].trim()) if(arch === 64){ meta.arch = arch ++checksum @@ -461,7 +463,7 @@ class JavaGuard extends EventEmitter { } } else if(props[i].indexOf('java.runtime.version') > -1){ let verString = props[i].split('=')[1].trim() - console.log(props[i].trim()) + this.logger.debug(props[i].trim()) const verOb = JavaGuard.parseJavaRuntimeVersion(verString) // TODO implement a support matrix eventually. Right now this is good enough // 1.7-1.16 = Java 8 @@ -491,7 +493,7 @@ class JavaGuard extends EventEmitter { // Space included so we get only the vendor. } else if(props[i].lastIndexOf('java.vendor ') > -1) { let vendorName = props[i].split('=')[1].trim() - console.log(props[i].trim()) + this.logger.debug(props[i].trim()) meta.vendor = vendorName } } @@ -521,7 +523,7 @@ class JavaGuard extends EventEmitter { resolve({valid: false}) } else if(fs.existsSync(binaryExecPath)){ // Workaround (javaw.exe no longer outputs this information.) - console.log(typeof binaryExecPath) + this.logger.debug(typeof binaryExecPath) if(binaryExecPath.indexOf('javaw.exe') > -1) { binaryExecPath.replace('javaw.exe', 'java.exe') } @@ -958,6 +960,8 @@ class JavaGuard extends EventEmitter { */ class AssetGuard extends EventEmitter { + static logger = LoggerUtil.getLogger('AssetGuard') + /** * Create an instance of AssetGuard. * On creation the object's properties are never-null default @@ -1116,7 +1120,8 @@ class AssetGuard extends EventEmitter { * @returns {Promise.} An empty promise to indicate the extraction has completed. */ static _extractPackXZ(filePaths, javaExecutable){ - console.log('[PackXZExtract] Starting') + const extractLogger = LoggerUtil.getLogger('PackXZExtract') + extractLogger.info('Starting') return new Promise((resolve, reject) => { let libPath @@ -1133,13 +1138,13 @@ class AssetGuard extends EventEmitter { const filePath = filePaths.join(',') const child = child_process.spawn(javaExecutable, ['-jar', libPath, '-packxz', filePath]) child.stdout.on('data', (data) => { - console.log('[PackXZExtract]', data.toString('utf8')) + extractLogger.info(data.toString('utf8')) }) child.stderr.on('data', (data) => { - console.log('[PackXZExtract]', data.toString('utf8')) + extractLogger.info(data.toString('utf8')) }) child.on('close', (code, signal) => { - console.log('[PackXZExtract]', 'Exited with code', code) + extractLogger.info('Exited with code', code) resolve() }) }) @@ -1205,7 +1210,7 @@ class AssetGuard extends EventEmitter { if(!fs.existsSync(versionFile) || force){ 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.') + AssetGuard.logger.info('Preparing download of ' + version + ' assets.') fs.ensureDirSync(versionPath) const stream = request(url).pipe(fs.createWriteStream(versionFile)) stream.on('finish', () => { @@ -1287,7 +1292,7 @@ class AssetGuard extends EventEmitter { let data = null if(!fs.existsSync(assetIndexLoc) || force){ - console.log('Downloading ' + versionData.id + ' asset index.') + AssetGuard.logger.info('Downloading ' + versionData.id + ' asset index.') fs.ensureDirSync(indexPath) const stream = request(assetIndex.url).pipe(fs.createWriteStream(assetIndexLoc)) stream.on('finish', () => { @@ -1576,9 +1581,9 @@ class AssetGuard extends EventEmitter { // Tar.gz let h = null fs.createReadStream(a.to) - .on('error', err => console.log(err)) + .on('error', err => AssetGuard.logger.error(err)) .pipe(zlib.createGunzip()) - .on('error', err => console.log(err)) + .on('error', err => AssetGuard.logger.error(err)) .pipe(tar.extract(dataDir, { map: (header) => { if(h == null){ @@ -1586,11 +1591,11 @@ class AssetGuard extends EventEmitter { } } })) - .on('error', err => console.log(err)) + .on('error', err => AssetGuard.logger.error(err)) .on('finish', () => { fs.unlink(a.to, err => { if(err){ - console.log(err) + AssetGuard.logger.error(err) } if(h.indexOf('/') > -1){ h = h.substring(0, h.indexOf('/')) @@ -1623,14 +1628,14 @@ class AssetGuard extends EventEmitter { const entries = await zip.entries() pos = path.join(runtimeDir, Object.keys(entries)[0]) - console.log('Extracting jdk..') + AssetGuard.logger.info('Extracting jdk..') await zip.extract(null, runtimeDir) - console.log('Cleaning up..') + AssetGuard.logger.info('Cleaning up..') await fs.remove(zipPath) - console.log('Jdk extraction complete.') + AssetGuard.logger.info('Jdk extraction complete.') } catch(err) { - console.log(err) + AssetGuard.logger.error(err) } finally { zip.close() self.emit('complete', 'java', JavaGuard.javaExecFromRoot(pos)) @@ -1696,7 +1701,7 @@ class AssetGuard extends EventEmitter { const dlQueue = dlTracker.dlqueue if(dlQueue.length > 0){ - console.log('DLQueue', dlQueue) + AssetGuard.logger.info('DLQueue', dlQueue) async.eachLimit(dlQueue, limit, (asset, cb) => { @@ -1713,7 +1718,7 @@ class AssetGuard extends EventEmitter { const contentLength = parseInt(resp.headers['content-length']) if(contentLength !== asset.size){ - console.log(`WARN: Got ${contentLength} bytes for ${asset.id}: Expected ${asset.size}`) + AssetGuard.logger.warn(`WARN: Got ${contentLength} bytes for ${asset.id}: Expected ${asset.size}`) doHashCheck = true // Adjust download @@ -1730,9 +1735,9 @@ class AssetGuard extends EventEmitter { if(doHashCheck){ const v = AssetGuard._validateLocal(asset.to, asset.type != null ? 'md5' : 'sha1', asset.hash) if(v){ - console.log(`Hashes match for ${asset.id}, byte mismatch is an issue in the distro index.`) + AssetGuard.logger.warn(`Hashes match for ${asset.id}, byte mismatch is an issue in the distro index.`) } else { - console.error(`Hashes do not match, ${asset.id} may be corrupted.`) + AssetGuard.logger.error(`Hashes do not match, ${asset.id} may be corrupted.`) } } @@ -1744,7 +1749,7 @@ class AssetGuard extends EventEmitter { } else { req.abort() - console.log(`Failed to download ${asset.id}(${typeof asset.from === 'object' ? asset.from.url : asset.from}). Response code ${resp.statusCode}`) + AssetGuard.logger.error(`Failed to download ${asset.id}(${typeof asset.from === 'object' ? asset.from.url : asset.from}). Response code ${resp.statusCode}`) self.progress += asset.size*1 self.emit('progress', 'download', self.progress, self.totaldlsize) cb() @@ -1765,9 +1770,9 @@ class AssetGuard extends EventEmitter { }, (err) => { if(err){ - console.log('An item in ' + identifier + ' failed to process') + AssetGuard.logger.warn('An item in ' + identifier + ' failed to process') } else { - console.log('All ' + identifier + ' have been processed successfully') + AssetGuard.logger.info('All ' + identifier + ' have been processed successfully') } //self.totaldlsize -= dlTracker.dlsize diff --git a/app/assets/js/configmanager.js b/app/assets/js/configmanager.js index ac071f3..c3f7489 100644 --- a/app/assets/js/configmanager.js +++ b/app/assets/js/configmanager.js @@ -1,8 +1,9 @@ const fs = require('fs-extra') +const { LoggerUtil } = require('helios-core') const os = require('os') const path = require('path') -const logger = require('./loggerutil')('%c[ConfigManager]', 'color: #a02d2a; font-weight: bold') +const logger = LoggerUtil.getLogger('ConfigManager') const sysRoot = process.env.APPDATA || (process.platform == 'darwin' ? process.env.HOME + '/Library/Application Support' : process.env.HOME) // TODO change @@ -155,8 +156,8 @@ exports.load = function(){ doValidate = true } catch (err){ logger.error(err) - logger.log('Configuration file contains malformed JSON or is corrupt.') - logger.log('Generating a new configuration file.') + logger.info('Configuration file contains malformed JSON or is corrupt.') + logger.info('Generating a new configuration file.') fs.ensureDirSync(path.join(configPath, '..')) config = DEFAULT_CONFIG exports.save() @@ -166,7 +167,7 @@ exports.load = function(){ exports.save() } } - logger.log('Successfully Loaded') + logger.info('Successfully Loaded') } /** diff --git a/app/assets/js/discordwrapper.js b/app/assets/js/discordwrapper.js index 7b0ef03..1e44e86 100644 --- a/app/assets/js/discordwrapper.js +++ b/app/assets/js/discordwrapper.js @@ -1,7 +1,9 @@ // Work in progress -const logger = require('./loggerutil')('%c[DiscordWrapper]', 'color: #7289da; font-weight: bold') +const { LoggerUtil } = require('helios-core') -const {Client} = require('discord-rpc-patch') +const logger = LoggerUtil.getLogger('DiscordWrapper') + +const { Client } = require('discord-rpc-patch') let client let activity @@ -21,15 +23,15 @@ exports.initRPC = function(genSettings, servSettings, initialDetails = 'Waiting } client.on('ready', () => { - logger.log('Discord RPC Connected') + logger.info('Discord RPC Connected') client.setActivity(activity) }) client.login({clientId: genSettings.clientId}).catch(error => { if(error.message.includes('ENOENT')) { - logger.log('Unable to initialize Discord Rich Presence, no client detected.') + logger.info('Unable to initialize Discord Rich Presence, no client detected.') } else { - logger.log('Unable to initialize Discord Rich Presence: ' + error.message, error) + logger.info('Unable to initialize Discord Rich Presence: ' + error.message, error) } }) } diff --git a/app/assets/js/distromanager.js b/app/assets/js/distromanager.js index 5e42951..4fcc685 100644 --- a/app/assets/js/distromanager.js +++ b/app/assets/js/distromanager.js @@ -1,9 +1,11 @@ const fs = require('fs') const path = require('path') const request = require('request') +const { LoggerUtil } = require('helios-core') const ConfigManager = require('./configmanager') -const logger = require('./loggerutil')('%c[DistroManager]', 'color: #a02d2a; font-weight: bold') + +const logger = LoggerUtil.getLogger('DistroManager') /** * Represents the download information @@ -599,10 +601,10 @@ exports.pullLocal = function(){ exports.setDevMode = function(value){ if(value){ - logger.log('Developer mode enabled.') - logger.log('If you don\'t know what that means, revert immediately.') + logger.info('Developer mode enabled.') + logger.info('If you don\'t know what that means, revert immediately.') } else { - logger.log('Developer mode disabled.') + logger.info('Developer mode disabled.') } DEV_MODE = value } diff --git a/app/assets/js/loggerutil.js b/app/assets/js/loggerutil.js deleted file mode 100644 index 7389941..0000000 --- a/app/assets/js/loggerutil.js +++ /dev/null @@ -1,32 +0,0 @@ -class LoggerUtil { - - constructor(prefix, style){ - this.prefix = prefix - this.style = style - } - - log(){ - console.log.apply(null, [this.prefix, this.style, ...arguments]) - } - - info(){ - console.info.apply(null, [this.prefix, this.style, ...arguments]) - } - - warn(){ - console.warn.apply(null, [this.prefix, this.style, ...arguments]) - } - - debug(){ - console.debug.apply(null, [this.prefix, this.style, ...arguments]) - } - - error(){ - console.error.apply(null, [this.prefix, this.style, ...arguments]) - } - -} - -module.exports = function (prefix, style){ - return new LoggerUtil(prefix, style) -} \ No newline at end of file diff --git a/app/assets/js/preloader.js b/app/assets/js/preloader.js index 792c530..f43eda8 100644 --- a/app/assets/js/preloader.js +++ b/app/assets/js/preloader.js @@ -1,14 +1,16 @@ -const {ipcRenderer} = require('electron') -const fs = require('fs-extra') -const os = require('os') -const path = require('path') +const {ipcRenderer} = require('electron') +const fs = require('fs-extra') +const os = require('os') +const path = require('path') -const ConfigManager = require('./configmanager') -const DistroManager = require('./distromanager') -const LangLoader = require('./langloader') -const logger = require('./loggerutil')('%c[Preloader]', 'color: #a02d2a; font-weight: bold') +const ConfigManager = require('./configmanager') +const DistroManager = require('./distromanager') +const LangLoader = require('./langloader') +const { LoggerUtil } = require('helios-core') -logger.log('Loading..') +const logger = LoggerUtil.getLogger('Preloader') + +logger.info('Loading..') // Load ConfigManager ConfigManager.load() @@ -21,7 +23,7 @@ function onDistroLoad(data){ // Resolve the selected server if its value has yet to be set. if(ConfigManager.getSelectedServer() == null || data.getServer(ConfigManager.getSelectedServer()) == null){ - logger.log('Determining default selected server..') + logger.info('Determining default selected server..') ConfigManager.setSelectedServer(data.getMainServer().getID()) ConfigManager.save() } @@ -31,26 +33,26 @@ function onDistroLoad(data){ // Ensure Distribution is downloaded and cached. DistroManager.pullRemote().then((data) => { - logger.log('Loaded distribution index.') + logger.info('Loaded distribution index.') onDistroLoad(data) }).catch((err) => { - logger.log('Failed to load distribution index.') + logger.info('Failed to load distribution index.') logger.error(err) - logger.log('Attempting to load an older version of the distribution index.') + logger.info('Attempting to load an older version of the distribution index.') // Try getting a local copy, better than nothing. DistroManager.pullLocal().then((data) => { - logger.log('Successfully loaded an older version of the distribution index.') + logger.info('Successfully loaded an older version of the distribution index.') onDistroLoad(data) }).catch((err) => { - logger.log('Failed to load an older version of the distribution index.') - logger.log('Application cannot run.') + logger.info('Failed to load an older version of the distribution index.') + logger.info('Application cannot run.') logger.error(err) onDistroLoad(null) @@ -64,6 +66,6 @@ fs.remove(path.join(os.tmpdir(), ConfigManager.getTempNativeFolder()), (err) => if(err){ logger.warn('Error while cleaning natives directory', err) } else { - logger.log('Cleaned natives directory.') + logger.info('Cleaned natives directory.') } }) \ No newline at end of file diff --git a/app/assets/js/processbuilder.js b/app/assets/js/processbuilder.js index 54decc3..5efc1e6 100644 --- a/app/assets/js/processbuilder.js +++ b/app/assets/js/processbuilder.js @@ -2,6 +2,7 @@ const AdmZip = require('adm-zip') const child_process = require('child_process') const crypto = require('crypto') const fs = require('fs-extra') +const { LoggerUtil } = require('helios-core') const os = require('os') const path = require('path') const { URL } = require('url') @@ -9,9 +10,8 @@ const { URL } = require('url') const { Util, Library } = require('./assetguard') const ConfigManager = require('./configmanager') const DistroManager = require('./distromanager') -const LoggerUtil = require('./loggerutil') -const logger = LoggerUtil('%c[ProcessBuilder]', 'color: #003996; font-weight: bold') +const logger = LoggerUtil.getLogger('ProcessBuilder') class ProcessBuilder { @@ -40,7 +40,7 @@ class ProcessBuilder { const tempNativePath = path.join(os.tmpdir(), ConfigManager.getTempNativeFolder(), crypto.pseudoRandomBytes(16).toString('hex')) process.throwDeprecation = true this.setupLiteLoader() - logger.log('Using liteloader:', this.usingLiteLoader) + logger.info('Using liteloader:', this.usingLiteLoader) const modObj = this.resolveModConfiguration(ConfigManager.getModConfiguration(this.server.getID()).mods, this.server.getModules()) // Mod list below 1.13 @@ -59,7 +59,7 @@ class ProcessBuilder { args = args.concat(this.constructModList(modObj.fMods)) } - logger.log('Launch Arguments:', args) + logger.info('Launch Arguments:', args) const child = child_process.spawn(ConfigManager.getJavaExecutable(this.server.getID()), args, { cwd: this.gameDir, @@ -73,22 +73,20 @@ class ProcessBuilder { child.stdout.setEncoding('utf8') child.stderr.setEncoding('utf8') - const loggerMCstdout = LoggerUtil('%c[Minecraft]', 'color: #36b030; font-weight: bold') - const loggerMCstderr = LoggerUtil('%c[Minecraft]', 'color: #b03030; font-weight: bold') - child.stdout.on('data', (data) => { - loggerMCstdout.log(data) + data.trim().split('\n').forEach(x => console.log(`\x1b[32m[Minecraft]\x1b[0m ${x}`)) + }) child.stderr.on('data', (data) => { - loggerMCstderr.log(data) + data.trim().split('\n').forEach(x => console.log(`\x1b[31m[Minecraft]\x1b[0m ${x}`)) }) child.on('close', (code, signal) => { - logger.log('Exited with code', code) + logger.info('Exited with code', code) fs.remove(tempNativePath, (err) => { if(err){ logger.warn('Error while deleting temp dir', err) } else { - logger.log('Temp dir deleted successfully.') + logger.info('Temp dir deleted successfully.') } }) }) diff --git a/app/assets/js/scripts/landing.js b/app/assets/js/scripts/landing.js index f423268..a7a2d0c 100644 --- a/app/assets/js/scripts/landing.js +++ b/app/assets/js/scripts/landing.js @@ -12,6 +12,7 @@ const DiscordWrapper = require('./assets/js/discordwrapper') const ProcessBuilder = require('./assets/js/processbuilder') const { Util } = require('./assets/js/assetguard') const { RestResponseStatus, isDisplayableError } = require('helios-core/common') +const { stdout } = require('process') // Launch Elements const launch_content = document.getElementById('launch_content') @@ -22,7 +23,7 @@ const launch_details_text = document.getElementById('launch_details_text') const server_selection_button = document.getElementById('server_selection_button') const user_text = document.getElementById('user_text') -const loggerLanding = LoggerUtil1('%c[Landing]', 'color: #000668; font-weight: bold') +const loggerLanding = LoggerUtil.getLogger('Landing') /* Launch Progress Wrapper Functions */ @@ -86,7 +87,7 @@ function setLaunchEnabled(val){ // Bind launch button document.getElementById('launch_button').addEventListener('click', function(e){ - loggerLanding.log('Launching game..') + loggerLanding.info('Launching game..') const mcVersion = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer()).getMinecraftVersion() const jExe = ConfigManager.getJavaExecutable(ConfigManager.getSelectedServer()) if(jExe == null){ @@ -99,7 +100,7 @@ document.getElementById('launch_button').addEventListener('click', function(e){ const jg = new JavaGuard(mcVersion) jg._validateJavaBinary(jExe).then((v) => { - loggerLanding.log('Java version meta', v) + loggerLanding.info('Java version meta', v) if(v.valid){ dlAsync() } else { @@ -160,7 +161,7 @@ server_selection_button.onclick = (e) => { // Update Mojang Status Color const refreshMojangStatuses = async function(){ - loggerLanding.log('Refreshing Mojang Statuses..') + loggerLanding.info('Refreshing Mojang Statuses..') let status = 'grey' let tooltipEssentialHTML = '' @@ -220,7 +221,7 @@ const refreshMojangStatuses = async function(){ } const refreshServerStatus = async function(fade = false){ - loggerLanding.log('Refreshing Server Status') + loggerLanding.info('Refreshing Server Status') const serv = DistroManager.getDistribution().getServer(ConfigManager.getSelectedServer()) let pLabel = 'SERVER' @@ -295,8 +296,6 @@ function asyncSystemScan(mcVersion, launchAfter = true){ toggleLaunchArea(true) setLaunchPercentage(0, 100) - const loggerSysAEx = LoggerUtil1('%c[SysAEx]', 'color: #353232; font-weight: bold') - const forkEnv = JSON.parse(JSON.stringify(process.env)) forkEnv.CONFIG_DIRECT_PATH = ConfigManager.getLauncherDirectory() @@ -311,12 +310,12 @@ function asyncSystemScan(mcVersion, launchAfter = true){ // Stdout sysAEx.stdio[1].setEncoding('utf8') sysAEx.stdio[1].on('data', (data) => { - loggerSysAEx.log(data) + console.log(`\x1b[32m[SysAEx]\x1b[0m ${data}`) }) // Stderr sysAEx.stdio[2].setEncoding('utf8') sysAEx.stdio[2].on('data', (data) => { - loggerSysAEx.log(data) + console.log(`\x1b[31m[SysAEx]\x1b[0m ${data}`) }) const javaVer = Util.mcVersionAtLeast('1.17', mcVersion) ? '17' : '8' @@ -499,8 +498,7 @@ function dlAsync(login = true){ toggleLaunchArea(true) setLaunchPercentage(0, 100) - const loggerAEx = LoggerUtil1('%c[AEx]', 'color: #353232; font-weight: bold') - const loggerLaunchSuite = LoggerUtil1('%c[LaunchSuite]', 'color: #000668; font-weight: bold') + const loggerLaunchSuite = LoggerUtil.getLogger('LaunchSuite') const forkEnv = JSON.parse(JSON.stringify(process.env)) forkEnv.CONFIG_DIRECT_PATH = ConfigManager.getLauncherDirectory() @@ -517,12 +515,12 @@ function dlAsync(login = true){ // Stdout aEx.stdio[1].setEncoding('utf8') aEx.stdio[1].on('data', (data) => { - loggerAEx.log(data) + console.log(`\x1b[32m[AEx]\x1b[0m ${data}`) }) // Stderr aEx.stdio[2].setEncoding('utf8') aEx.stdio[2].on('data', (data) => { - loggerAEx.log(data) + console.log(`\x1b[31m[AEx]\x1b[0m ${data}`) }) aEx.on('error', (err) => { loggerLaunchSuite.error('Error during launch', err) @@ -542,27 +540,27 @@ function dlAsync(login = true){ switch(m.data){ case 'distribution': setLaunchPercentage(20, 100) - loggerLaunchSuite.log('Validated distibution index.') + loggerLaunchSuite.info('Validated distibution index.') setLaunchDetails('Loading version information..') break case 'version': setLaunchPercentage(40, 100) - loggerLaunchSuite.log('Version data loaded.') + loggerLaunchSuite.info('Version data loaded.') setLaunchDetails('Validating asset integrity..') break case 'assets': setLaunchPercentage(60, 100) - loggerLaunchSuite.log('Asset Validation Complete') + loggerLaunchSuite.info('Asset Validation Complete') setLaunchDetails('Validating library integrity..') break case 'libraries': setLaunchPercentage(80, 100) - loggerLaunchSuite.log('Library validation complete.') + loggerLaunchSuite.info('Library validation complete.') setLaunchDetails('Validating miscellaneous file integrity..') break case 'files': setLaunchPercentage(100, 100) - loggerLaunchSuite.log('File validation complete.') + loggerLaunchSuite.info('File validation complete.') setLaunchDetails('Downloading files..') break } @@ -650,7 +648,7 @@ function dlAsync(login = true){ if(login && allGood) { const authUser = ConfigManager.getSelectedAccount() - loggerLaunchSuite.log(`Sending selected account (${authUser.displayName}) to ProcessBuilder.`) + loggerLaunchSuite.info(`Sending selected account (${authUser.displayName}) to ProcessBuilder.`) let pb = new ProcessBuilder(serv, versionData, forgeData, authUser, remote.app.getVersion()) setLaunchDetails('Launching game..') @@ -717,7 +715,7 @@ function dlAsync(login = true){ DiscordWrapper.initRPC(distro.discord, serv.discord) hasRPC = true proc.on('close', (code, signal) => { - loggerLaunchSuite.log('Shutting down Discord Rich Presence..') + loggerLaunchSuite.info('Shutting down Discord Rich Presence..') DiscordWrapper.shutdownRPC() hasRPC = false proc = null @@ -748,7 +746,7 @@ function dlAsync(login = true){ serv = data.getServer(ConfigManager.getSelectedServer()) aEx.send({task: 'execute', function: 'validateEverything', argsArr: [ConfigManager.getSelectedServer(), DistroManager.isDevMode()]}) }, (err) => { - loggerLaunchSuite.log('Error while fetching a fresh copy of the distribution index.', err) + loggerLaunchSuite.info('Error while fetching a fresh copy of the distribution index.', err) refreshDistributionIndex(false, (data) => { onDistroRefresh(data) serv = data.getServer(ConfigManager.getSelectedServer()) diff --git a/app/assets/js/scripts/login.js b/app/assets/js/scripts/login.js index 724f09c..2b6d0c0 100644 --- a/app/assets/js/scripts/login.js +++ b/app/assets/js/scripts/login.js @@ -21,8 +21,6 @@ const loginForm = document.getElementById('loginForm') // Control variables. let lu = false, lp = false -const loggerLogin = LoggerUtil1('%c[Login]', 'color: #000668; font-weight: bold') - /** * Show a login error. diff --git a/app/assets/js/scripts/uibinder.js b/app/assets/js/scripts/uibinder.js index 39c5d51..835e3c9 100644 --- a/app/assets/js/scripts/uibinder.js +++ b/app/assets/js/scripts/uibinder.js @@ -60,7 +60,7 @@ function getCurrentView(){ function showMainUI(data){ if(!isDev){ - loggerAutoUpdater.log('Initializing..') + loggerAutoUpdater.info('Initializing..') ipcRenderer.send('autoUpdateAction', 'initAutoUpdater', ConfigManager.getAllowPrerelease()) } diff --git a/app/assets/js/scripts/uicore.js b/app/assets/js/scripts/uicore.js index 71a5aa1..c35771a 100644 --- a/app/assets/js/scripts/uicore.js +++ b/app/assets/js/scripts/uicore.js @@ -10,11 +10,9 @@ const {ipcRenderer, shell, webFrame} = require('electron') const remote = require('@electron/remote') const isDev = require('./assets/js/isdev') const { LoggerUtil } = require('helios-core') -const LoggerUtil1 = require('./assets/js/loggerutil') -const loggerUICore = LoggerUtil1('%c[UICore]', 'color: #000668; font-weight: bold') -const loggerAutoUpdater = LoggerUtil1('%c[AutoUpdater]', 'color: #000668; font-weight: bold') -const loggerAutoUpdaterSuccess = LoggerUtil1('%c[AutoUpdater]', 'color: #209b07; font-weight: bold') +const loggerUICore = LoggerUtil.getLogger('UICore') +const loggerAutoUpdater = LoggerUtil.getLogger('AutoUpdater') // Log deprecation and process warnings. process.traceProcessWarnings = true @@ -43,11 +41,11 @@ if(!isDev){ ipcRenderer.on('autoUpdateNotification', (event, arg, info) => { switch(arg){ case 'checking-for-update': - loggerAutoUpdater.log('Checking for update..') + loggerAutoUpdater.info('Checking for update..') settingsUpdateButtonStatus('Checking for Updates..', true) break case 'update-available': - loggerAutoUpdaterSuccess.log('New update available', info.version) + loggerAutoUpdater.info('New update available', info.version) if(process.platform === 'darwin'){ info.darwindownload = `https://github.com/dscalzi/HeliosLauncher/releases/download/v${info.version}/Helios-Launcher-setup-${info.version}${process.arch === 'arm64' ? '-arm64' : '-x64'}.dmg` @@ -57,7 +55,7 @@ if(!isDev){ populateSettingsUpdateInformation(info) break case 'update-downloaded': - loggerAutoUpdaterSuccess.log('Update ' + info.version + ' ready to be installed.') + loggerAutoUpdater.info('Update ' + info.version + ' ready to be installed.') settingsUpdateButtonStatus('Install Now', false, () => { if(!isDev){ ipcRenderer.send('autoUpdateAction', 'installUpdateNow') @@ -66,7 +64,7 @@ if(!isDev){ showUpdateUI(info) break case 'update-not-available': - loggerAutoUpdater.log('No new update found.') + loggerAutoUpdater.info('No new update found.') settingsUpdateButtonStatus('Check for Updates') break case 'ready': @@ -78,9 +76,9 @@ if(!isDev){ case 'realerror': if(info != null && info.code != null){ if(info.code === 'ERR_UPDATER_INVALID_RELEASE_FEED'){ - loggerAutoUpdater.log('No suitable releases found.') + loggerAutoUpdater.info('No suitable releases found.') } else if(info.code === 'ERR_XML_MISSED_ELEMENT'){ - loggerAutoUpdater.log('No releases found.') + loggerAutoUpdater.info('No releases found.') } else { loggerAutoUpdater.error('Error during update check..', info) loggerAutoUpdater.debug('Error Code:', info.code) @@ -88,7 +86,7 @@ if(!isDev){ } break default: - loggerAutoUpdater.log('Unknown argument', arg) + loggerAutoUpdater.info('Unknown argument', arg) break } }) @@ -131,12 +129,12 @@ function showUpdateUI(info){ /* jQuery Example $(function(){ - loggerUICore.log('UICore Initialized'); + loggerUICore.info('UICore Initialized'); })*/ document.addEventListener('readystatechange', function () { if (document.readyState === 'interactive'){ - loggerUICore.log('UICore Initializing..') + loggerUICore.info('UICore Initializing..') // Bind close button. Array.from(document.getElementsByClassName('fCb')).map((val) => { diff --git a/package-lock.json b/package-lock.json index 455526f..d6d5652 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "devDependencies": { "electron": "^21.3.1", "electron-builder": "^23.6.0", - "eslint": "^8.28.0" + "eslint": "^8.30.0" }, "engines": { "node": "16.x.x" @@ -309,15 +309,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", + "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -332,9 +332,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -1713,13 +1713,13 @@ } }, "node_modules/eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "version": "8.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", + "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -1738,7 +1738,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -2204,9 +2204,9 @@ } }, "node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2469,9 +2469,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -4456,15 +4456,15 @@ } }, "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", + "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -4473,9 +4473,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -5563,13 +5563,13 @@ "devOptional": true }, "eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "version": "8.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", + "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -5588,7 +5588,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -5948,9 +5948,9 @@ } }, "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -6134,9 +6134,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "import-fresh": { diff --git a/package.json b/package.json index 1487798..33b3a3d 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "devDependencies": { "electron": "^21.3.1", "electron-builder": "^23.6.0", - "eslint": "^8.28.0" + "eslint": "^8.30.0" }, "repository": { "type": "git",