diff --git a/src/plugins/consoleJanitor/README.md b/src/plugins/consoleJanitor/README.md index fbba766a..9737f53d 100644 --- a/src/plugins/consoleJanitor/README.md +++ b/src/plugins/consoleJanitor/README.md @@ -1,5 +1,5 @@ # ConsoleJanitor -Disables annoying console messages/errors. This plugin mainly removes errors/warnings that happen all the time and noisy/spammy logging messages. +Disables annoying console messages/errors. This plugin mainly removes errors/warnings that happen all the time and Discord logger messages. -Some of the disabled messages include the "notosans-400-normalitalic" error and MessageActionCreators, Routing/Utils loggers. +One of the disabled messages is the "Window state not initialized" warning, for example. diff --git a/src/plugins/consoleJanitor/index.ts b/src/plugins/consoleJanitor/index.ts index f5f43c06..b0c8905f 100644 --- a/src/plugins/consoleJanitor/index.ts +++ b/src/plugins/consoleJanitor/index.ts @@ -6,7 +6,7 @@ import { definePluginSettings } from "@api/Settings"; import { Devs } from "@utils/constants"; -import definePlugin, { OptionType } from "@utils/types"; +import definePlugin, { OptionType, StartAt } from "@utils/types"; const Noop = () => { }; const NoopLogger = { @@ -22,10 +22,12 @@ const NoopLogger = { fileOnly: Noop }; +const logAllow = new Set(); + const settings = definePluginSettings({ - disableNoisyLoggers: { + disableLoggers: { type: OptionType.BOOLEAN, - description: "Disable noisy loggers like the MessageActionCreators", + description: "Disables Discords loggers", default: false, restartNeeded: true }, @@ -34,16 +36,34 @@ const settings = definePluginSettings({ description: "Disable the Spotify logger, which leaks account information and access token", default: true, restartNeeded: true + }, + whitelistedLoggers: { + type: OptionType.STRING, + description: "Semi colon separated list of loggers to allow even if others are hidden", + default: "GatewaySocket; Routing/Utils", + onChange(newVal: string) { + logAllow.clear(); + newVal.split(";").map(x => x.trim()).forEach(logAllow.add.bind(logAllow)); + } } }); export default definePlugin({ name: "ConsoleJanitor", description: "Disables annoying console messages/errors", - authors: [Devs.Nuckyz], + authors: [Devs.Nuckyz, Devs.sadan], settings, + startAt: StartAt.Init, + start() { + logAllow.clear(); + this.settings.store.whitelistedLoggers?.split(";").map(x => x.trim()).forEach(logAllow.add.bind(logAllow)); + }, + NoopLogger: () => NoopLogger, + shouldLog(logger: string) { + return logAllow.has(logger); + }, patches: [ { @@ -103,34 +123,13 @@ export default definePlugin({ replace: "" } }, - ...[ - '("MessageActionCreators")', '("ChannelMessages")', - '("Routing/Utils")', '("RTCControlSocket")', - '("ConnectionEventFramerateReducer")', '("RTCLatencyTestManager")', - '("OverlayBridgeStore")', '("RPCServer:WSS")', '("RPCServer:IPC")' - ].map(logger => ({ - find: logger, - predicate: () => settings.store.disableNoisyLoggers, - all: true, - replacement: { - match: new RegExp(String.raw`new \i\.\i${logger.replace(/([()])/g, "\\$1")}`), - replace: `$self.NoopLogger${logger}` - } - })), + // Patches discords generic logger function { - find: '"Experimental codecs: "', - predicate: () => settings.store.disableNoisyLoggers, + find: "Σ:", + predicate: () => settings.store.disableLoggers, replacement: { - match: /new \i\.\i\("Connection\("\.concat\(\i,"\)"\)\)/, - replace: "$self.NoopLogger()" - } - }, - { - find: '"_handleLocalVideoDisabled: ', - predicate: () => settings.store.disableNoisyLoggers, - replacement: { - match: /new \i\.\i\("RTCConnection\("\.concat.+?\)\)(?=,)/, - replace: "$self.NoopLogger()" + match: /(?<=&&)(?=console)/, + replace: "$self.shouldLog(arguments[0])&&" } }, { @@ -141,5 +140,5 @@ export default definePlugin({ replace: "$self.NoopLogger()" } } - ] + ], });