From e5efa727fefa90e87ccfe40b1b3011b77b161521 Mon Sep 17 00:00:00 2001 From: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:55:34 -0400 Subject: [PATCH] Upgrade electron-log to v5.1.1 (#2973) --- package-lock.json | 13 ++++++++----- package.json | 2 +- src/main/diagnostics/index.ts | 4 ++-- src/main/diagnostics/steps/internal/loggerHooks.ts | 10 +++++----- src/main/diagnostics/steps/internal/utils.ts | 4 ++-- src/main/diagnostics/steps/step.template.ts | 4 ++-- src/main/diagnostics/steps/step0.logLevel.ts | 4 ++-- .../diagnostics/steps/step1.internetConnection.ts | 4 ++-- src/main/diagnostics/steps/step10.crashReports.ts | 4 ++-- src/main/diagnostics/steps/step11.auth.ts | 4 ++-- .../diagnostics/steps/step2.configValidation.ts | 4 ++-- .../diagnostics/steps/step3.serverConnectivity.ts | 4 ++-- .../steps/step4.sessionDataValidation.ts | 4 ++-- src/main/diagnostics/steps/step5.browserWindows.ts | 4 ++-- src/main/diagnostics/steps/step6.permissions.ts | 4 ++-- src/main/diagnostics/steps/step7.performance.ts | 4 ++-- src/main/diagnostics/steps/step8.logHeuristics.ts | 4 ++-- src/main/diagnostics/steps/step9.config.ts | 4 ++-- src/types/diagnostics.ts | 8 ++++---- 19 files changed, 48 insertions(+), 45 deletions(-) diff --git a/package-lock.json b/package-lock.json index ccd50803..6e8a17fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "electron-context-menu": "3.6.1", "electron-extension-installer": "1.2.0", "electron-is-dev": "2.0.0", - "electron-log": "4.4.8", + "electron-log": "5.1.1", "electron-mocha": "12.2.0", "electron-updater": "6.1.8", "eslint": "8.57.0", @@ -11148,10 +11148,13 @@ } }, "node_modules/electron-log": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz", - "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==", - "dev": true + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.1.1.tgz", + "integrity": "sha512-If7HU4Slbh2xfjOXOLxifkbgu6HmWDNJyXPLW+XNTOHMfFKisg0trA3d/7syyu25S+lHosfsd0VMfDSjGn1+Pw==", + "dev": true, + "engines": { + "node": ">= 14" + } }, "node_modules/electron-mocha": { "version": "12.2.0", diff --git a/package.json b/package.json index f0973d81..587c6f01 100644 --- a/package.json +++ b/package.json @@ -170,7 +170,7 @@ "electron-context-menu": "3.6.1", "electron-extension-installer": "1.2.0", "electron-is-dev": "2.0.0", - "electron-log": "4.4.8", + "electron-log": "5.1.1", "electron-mocha": "12.2.0", "electron-updater": "6.1.8", "eslint": "8.57.0", diff --git a/src/main/diagnostics/index.ts b/src/main/diagnostics/index.ts index 57ef04ff..7e28d76c 100644 --- a/src/main/diagnostics/index.ts +++ b/src/main/diagnostics/index.ts @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import {shell} from 'electron'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import log from 'electron-log'; import type {DiagnosticsReport} from 'types/diagnostics'; @@ -42,7 +42,7 @@ class DiagnosticsModule { stepCurrent = 0; stepTotal = 0; report: DiagnosticsReport = []; - logger: ElectronLog = log.create('diagnostics-logger'); + logger: MainLogger = log.create({logId: 'diagnostics-logger'}); run = async () => { try { diff --git a/src/main/diagnostics/steps/internal/loggerHooks.ts b/src/main/diagnostics/steps/internal/loggerHooks.ts index 72b45900..7c360e02 100644 --- a/src/main/diagnostics/steps/internal/loggerHooks.ts +++ b/src/main/diagnostics/steps/internal/loggerHooks.ts @@ -1,14 +1,14 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import {obfuscateByType} from './obfuscators'; -type ElectronLogHook = ElectronLog['hooks'][number]; -type ElectronLogHookCreator = (l: ElectronLog) => ElectronLogHook; +type MainLoggerHook = MainLogger['hooks'][number]; +type MainLoggerHookCreator = (l: MainLogger) => MainLoggerHook; -export const maskMessageDataHook: ElectronLogHookCreator = (logger) => (message, transport) => { +export const maskMessageDataHook: MainLoggerHookCreator = (logger) => (message, transport) => { if (transport !== logger.transports.file) { return message; } @@ -21,7 +21,7 @@ export const maskMessageDataHook: ElectronLogHookCreator = (logger) => (message, return message; }; -const loggerHooks: (logger: ElectronLog) => ElectronLog['hooks'] = (logger) => [ +const loggerHooks: (logger: MainLogger) => MainLogger['hooks'] = (logger) => [ maskMessageDataHook(logger), ]; diff --git a/src/main/diagnostics/steps/internal/utils.ts b/src/main/diagnostics/steps/internal/utils.ts index 1ea0e8c4..afb2ccb6 100644 --- a/src/main/diagnostics/steps/internal/utils.ts +++ b/src/main/diagnostics/steps/internal/utils.ts @@ -5,7 +5,7 @@ import https from 'https'; import readline from 'readline'; import type {BrowserWindow, Rectangle, WebContents} from 'electron'; -import type {ElectronLog, LogLevel} from 'electron-log'; +import type {MainLogger, LogLevel} from 'electron-log'; import log from 'electron-log'; import {IS_ONLINE_ENDPOINT, LOGS_MAX_STRING_LENGTH, REGEX_LOG_FILE_LINE} from 'common/constants'; @@ -60,7 +60,7 @@ export function truncateString(str: string, maxLength = LOGS_MAX_STRING_LENGTH): return str; } -export async function isOnline(logger: ElectronLog = log, url = IS_ONLINE_ENDPOINT): Promise { +export async function isOnline(logger: MainLogger = log, url = IS_ONLINE_ENDPOINT): Promise { return new Promise((resolve) => { https.get(url, (resp) => { let data = ''; diff --git a/src/main/diagnostics/steps/step.template.ts b/src/main/diagnostics/steps/step.template.ts index 1a04af1f..9aa7234e 100644 --- a/src/main/diagnostics/steps/step.template.ts +++ b/src/main/diagnostics/steps/step.template.ts @@ -1,7 +1,7 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import type {DiagnosticStepResponse} from 'types/diagnostics'; @@ -12,7 +12,7 @@ const stepDescriptiveName = 'Template'; // COPY & PASTE this file to create a new step -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { await Promise.resolve(); return { diff --git a/src/main/diagnostics/steps/step0.logLevel.ts b/src/main/diagnostics/steps/step0.logLevel.ts index 085323c0..4cb824a6 100644 --- a/src/main/diagnostics/steps/step0.logLevel.ts +++ b/src/main/diagnostics/steps/step0.logLevel.ts @@ -4,7 +4,7 @@ import path from 'path'; import {app} from 'electron'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import type {DiagnosticStepResponse} from 'types/diagnostics'; @@ -16,7 +16,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-0'; const stepDescriptiveName = 'logConfig'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const filename = `diagnostics_${dateTimeInFilename()}.txt`; const pathToFile = path.join(app.getPath('userData'), `diagnostics/${filename}`); diff --git a/src/main/diagnostics/steps/step1.internetConnection.ts b/src/main/diagnostics/steps/step1.internetConnection.ts index 5fc098c2..4c74d7e4 100644 --- a/src/main/diagnostics/steps/step1.internetConnection.ts +++ b/src/main/diagnostics/steps/step1.internetConnection.ts @@ -1,7 +1,7 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import type {DiagnosticStepResponse} from 'types/diagnostics'; @@ -12,7 +12,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-1'; const stepDescriptiveName = 'internetConnection'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const success = await isOnline(logger); if (success) { diff --git a/src/main/diagnostics/steps/step10.crashReports.ts b/src/main/diagnostics/steps/step10.crashReports.ts index 016c7684..74d537f6 100644 --- a/src/main/diagnostics/steps/step10.crashReports.ts +++ b/src/main/diagnostics/steps/step10.crashReports.ts @@ -4,7 +4,7 @@ import fs from 'fs'; import path from 'path'; import {app} from 'electron'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import type {DiagnosticStepResponse} from 'types/diagnostics'; @@ -13,7 +13,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-10'; const stepDescriptiveName = 'CrashReports'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const pathOfCrashReports = app.getPath('userData'); const allDirFiles = await fs.promises.readdir(pathOfCrashReports); diff --git a/src/main/diagnostics/steps/step11.auth.ts b/src/main/diagnostics/steps/step11.auth.ts index 8c6b7fa0..507e4f92 100644 --- a/src/main/diagnostics/steps/step11.auth.ts +++ b/src/main/diagnostics/steps/step11.auth.ts @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import {session} from 'electron'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import type {DiagnosticStepResponse} from 'types/diagnostics'; @@ -11,7 +11,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-11'; const stepDescriptiveName = 'AuthSSO'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const cookies = await session.defaultSession.cookies.get({}); diff --git a/src/main/diagnostics/steps/step2.configValidation.ts b/src/main/diagnostics/steps/step2.configValidation.ts index 6956f161..4ef2385f 100644 --- a/src/main/diagnostics/steps/step2.configValidation.ts +++ b/src/main/diagnostics/steps/step2.configValidation.ts @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import fs from 'fs'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import Config from 'common/config'; import * as Validator from 'common/Validator'; @@ -15,7 +15,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-2'; const stepDescriptiveName = 'configValidation'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const configData = JSON.parse(fs.readFileSync(configPath, 'utf8')); diff --git a/src/main/diagnostics/steps/step3.serverConnectivity.ts b/src/main/diagnostics/steps/step3.serverConnectivity.ts index daae4020..198db1cb 100644 --- a/src/main/diagnostics/steps/step3.serverConnectivity.ts +++ b/src/main/diagnostics/steps/step3.serverConnectivity.ts @@ -1,7 +1,7 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import ServerManager from 'common/servers/serverManager'; import {parseURL} from 'common/utils/url'; @@ -15,7 +15,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-3'; const stepDescriptiveName = 'serverConnectivity'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const servers = ServerManager.getAllServers(); diff --git a/src/main/diagnostics/steps/step4.sessionDataValidation.ts b/src/main/diagnostics/steps/step4.sessionDataValidation.ts index 787724ea..8fc6c0ba 100644 --- a/src/main/diagnostics/steps/step4.sessionDataValidation.ts +++ b/src/main/diagnostics/steps/step4.sessionDataValidation.ts @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import {session} from 'electron'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import {COOKIE_NAME_AUTH_TOKEN, COOKIE_NAME_CSRF, COOKIE_NAME_USER_ID} from 'common/constants'; @@ -13,7 +13,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-4'; const stepDescriptiveName = 'sessionDataValidation'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const cookies = await session.defaultSession.cookies.get({}); if (!cookies) { diff --git a/src/main/diagnostics/steps/step5.browserWindows.ts b/src/main/diagnostics/steps/step5.browserWindows.ts index 2560f649..4345d764 100644 --- a/src/main/diagnostics/steps/step5.browserWindows.ts +++ b/src/main/diagnostics/steps/step5.browserWindows.ts @@ -1,7 +1,7 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import MainWindow from 'main/windows/mainWindow'; @@ -14,7 +14,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-5'; const stepDescriptiveName = 'BrowserWindowsChecks'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { /** Main window check */ if (!MainWindow.isReady) { diff --git a/src/main/diagnostics/steps/step6.permissions.ts b/src/main/diagnostics/steps/step6.permissions.ts index d64d5a54..125cf780 100644 --- a/src/main/diagnostics/steps/step6.permissions.ts +++ b/src/main/diagnostics/steps/step6.permissions.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import {Notification, systemPreferences} from 'electron'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import log from 'electron-log'; import config from 'common/config'; @@ -20,7 +20,7 @@ const stepDescriptiveName = 'PermissionsCheck'; const isDarwin = process.platform === 'darwin'; const isWin32 = process.platform === 'win32'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const downloadsFileAccess = await checkPathPermissions(config.downloadLocation, fs.constants.W_OK); const logsFileAccess = await checkPathPermissions(log.transports.file.getFile().path, fs.constants.W_OK); diff --git a/src/main/diagnostics/steps/step7.performance.ts b/src/main/diagnostics/steps/step7.performance.ts index acb718d6..bfcb5322 100644 --- a/src/main/diagnostics/steps/step7.performance.ts +++ b/src/main/diagnostics/steps/step7.performance.ts @@ -3,7 +3,7 @@ import path from 'path'; import {app, powerMonitor} from 'electron'; -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import type {DiagnosticStepResponse} from 'types/diagnostics'; @@ -14,7 +14,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-7'; const stepDescriptiveName = 'PerformanceAndMemory'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const heapSnapshotFilepath = path.join(app.getAppPath(), `heapSnapshots/heap_snap_${dateTimeInFilename()}.txt`); diff --git a/src/main/diagnostics/steps/step8.logHeuristics.ts b/src/main/diagnostics/steps/step8.logHeuristics.ts index 3c693e20..9bfac702 100644 --- a/src/main/diagnostics/steps/step8.logHeuristics.ts +++ b/src/main/diagnostics/steps/step8.logHeuristics.ts @@ -1,7 +1,7 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import log from 'electron-log'; import {getPercentage} from 'main/utils'; @@ -15,7 +15,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-8'; const stepDescriptiveName = 'LogHeuristics'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const mainLogFilePath = log.transports.file.getFile().path; const fileData = await readFileLineByLine(mainLogFilePath); diff --git a/src/main/diagnostics/steps/step9.config.ts b/src/main/diagnostics/steps/step9.config.ts index 871b679e..b1f09f47 100644 --- a/src/main/diagnostics/steps/step9.config.ts +++ b/src/main/diagnostics/steps/step9.config.ts @@ -1,7 +1,7 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog} from 'electron-log'; +import type {MainLogger} from 'electron-log'; import config from 'common/config'; @@ -12,7 +12,7 @@ import DiagnosticsStep from '../DiagnosticStep'; const stepName = 'Step-9'; const stepDescriptiveName = 'Config'; -const run = async (logger: ElectronLog): Promise => { +const run = async (logger: MainLogger): Promise => { try { const payload = config.data; diff --git a/src/types/diagnostics.ts b/src/types/diagnostics.ts index 164ec1c8..61b06821 100644 --- a/src/types/diagnostics.ts +++ b/src/types/diagnostics.ts @@ -1,12 +1,12 @@ // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {ElectronLog, LogLevel} from 'electron-log'; +import type {MainLogger, LogLevel} from 'electron-log'; export type DiagnosticsStepConstructorPayload = { name: string; retries: number; - run: (logger: ElectronLog) => Promise; + run: (logger: MainLogger) => Promise; } export type DiagnosticStepResponse = { @@ -22,8 +22,8 @@ export type DiagnosticsReportObject = DiagnosticStepResponse & { } export type AddDurationToFnReturnObject = - (run: (logger: ElectronLog) => Promise) - => (logger: ElectronLog) + (run: (logger: MainLogger) => Promise) + => (logger: MainLogger) => Promise & {duration: number}>; export type DiagnosticsReport = DiagnosticsReportObject[];