From 10678f019e24df7506056dd62ef5fdce5f8510bd Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Sat, 29 Jun 2024 21:09:28 -0300 Subject: [PATCH 1/9] feat(plugins): ConsoleJanitor --- src/plugins/consoleJanitor/index.ts | 91 +++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/plugins/consoleJanitor/index.ts diff --git a/src/plugins/consoleJanitor/index.ts b/src/plugins/consoleJanitor/index.ts new file mode 100644 index 0000000000..60ca88a392 --- /dev/null +++ b/src/plugins/consoleJanitor/index.ts @@ -0,0 +1,91 @@ +/* + * Vencord, a Discord client mod + * Copyright (c) 2024 Vendicated and contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { Devs } from "@utils/constants"; +import definePlugin from "@utils/types"; + +const Noop = () => { }; +const NoopLogger = { + logDangerously: Noop, + log: Noop, + verboseDangerously: Noop, + verbose: Noop, + info: Noop, + warn: Noop, + error: Noop, + trace: Noop, + time: Noop, + fileOnly: Noop +}; + +export default definePlugin({ + name: "ConsoleJanitor", + description: "Disables annoying console messages/errors", + authors: [Devs.Nuckyz], + + NoopLogger: () => NoopLogger, + + patches: [ + { + find: 'console.warn("Window state not initialized"', + replacement: { + match: /console\.warn\("Window state not initialized",\i\),/, + replace: "" + } + }, + { + find: "is not a valid locale.", + replacement: { + match: /\i\.error\(""\.concat\(\i," is not a valid locale."\)\);/, + replace: "" + } + }, + { + find: "notosans-400-normalitalic", + replacement: { + match: /,"notosans-.+?"/g, + replace: "" + } + }, + { + find: 'console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");', + all: true, + replacement: { + match: /console\.warn\("\[DEPRECATED\] Please use `subscribeWithSelector` middleware"\);/, + replace: "" + } + }, + { + find: "RPCServer:WSS", + replacement: { + match: /\i\.error\("Error: "\.concat\((\i)\.message/, + replace: '!$1.message.includes("EADDRINUSE")&&$&' + } + }, + { + find: "Tried getting Dispatch instance before instantiated", + replacement: { + match: /null==\i&&\i\.warn\("Tried getting Dispatch instance before instantiated"\),/, + replace: "" + } + }, + { + find: "Unable to determine render window for element", + replacement: { + match: /return console\.warn\("Unable to determine render window for element",\i\),/, + replace: "" + } + }, + ...['("MessageActionCreators")', '("MessageQueue")', '("ChannelMessages")', '("Routing/Utils")'].map(logger => ({ + find: logger, + all: true, + replacement: { + match: new RegExp(String.raw`new \i\.\i${logger.replace(/([()])/g, "\\$1")}`), + replace: `$self.NoopLogger${logger}` + } + })) + ] +}); From 94dbec982a5de008dadf0386b154f3b8210a8d7f Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Sat, 29 Jun 2024 21:43:54 -0300 Subject: [PATCH 2/9] Ignore more messages --- src/plugins/consoleJanitor/index.ts | 52 +++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/src/plugins/consoleJanitor/index.ts b/src/plugins/consoleJanitor/index.ts index 60ca88a392..c03b18af6f 100644 --- a/src/plugins/consoleJanitor/index.ts +++ b/src/plugins/consoleJanitor/index.ts @@ -4,8 +4,9 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +import { definePluginSettings } from "@api/Settings"; import { Devs } from "@utils/constants"; -import definePlugin from "@utils/types"; +import definePlugin, { OptionType } from "@utils/types"; const Noop = () => { }; const NoopLogger = { @@ -21,10 +22,20 @@ const NoopLogger = { fileOnly: Noop }; +const settings = definePluginSettings({ + disableNoisyLoggers: { + type: OptionType.BOOLEAN, + description: "Disable noisy loggers like the MessageActionCreators", + default: true, + restartNeeded: true + } +}); + export default definePlugin({ name: "ConsoleJanitor", description: "Disables annoying console messages/errors", authors: [Devs.Nuckyz], + settings, NoopLogger: () => NoopLogger, @@ -79,13 +90,48 @@ export default definePlugin({ replace: "" } }, - ...['("MessageActionCreators")', '("MessageQueue")', '("ChannelMessages")', '("Routing/Utils")'].map(logger => ({ + { + find: "failed to send analytics events", + replacement: { + match: /console\.error\("\[analytics\] failed to send analytics events query: "\.concat\(\i\)\)/, + replace: "" + } + }, + { + find: "Slow dispatch on", + replacement: { + match: /\i\.totalTime>100&&\i\.verbose\("Slow dispatch on ".+?\)\);/, + replace: "" + } + }, + ...[ + '("MessageActionCreators")', '("ChannelMessages")', + '("Routing/Utils")', '("RTCControlSocket")', + '("ConnectionEventFramerateReducer")', '("RTCLatencyTestManager")', + '("OverlayBridgeStore")', '("RPCServer:WSS")' + ].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}` } - })) + })), + { + find: '"Experimental codecs: "', + predicate: () => settings.store.disableNoisyLoggers, + replacement: { + match: /new \i\.\i\("Connection\("\.concat\(\i,"\)"\)\)/, + replace: "$self.NoopLogger()" + } + }, + { + find: '"Handling ping: "', + replacement: { + match: /new \i\.\i\("RTCConnection\("\.concat.+?\)\)(?=,)/, + replace: "$self.NoopLogger()" + } + } ] }); From 92f7238b745495db9ac6176e78a3ee9dc96ab967 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Sat, 29 Jun 2024 21:45:33 -0300 Subject: [PATCH 3/9] oops --- src/plugins/consoleJanitor/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/consoleJanitor/index.ts b/src/plugins/consoleJanitor/index.ts index c03b18af6f..46a81f6b9f 100644 --- a/src/plugins/consoleJanitor/index.ts +++ b/src/plugins/consoleJanitor/index.ts @@ -128,6 +128,7 @@ export default definePlugin({ }, { find: '"Handling ping: "', + predicate: () => settings.store.disableNoisyLoggers, replacement: { match: /new \i\.\i\("RTCConnection\("\.concat.+?\)\)(?=,)/, replace: "$self.NoopLogger()" From f24094ead0cc4d6ab196435103ccf774a9655620 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Sat, 29 Jun 2024 21:54:50 -0300 Subject: [PATCH 4/9] Dont push disabled patches --- src/plugins/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/index.ts b/src/plugins/index.ts index 9268051ffd..e6caf73401 100644 --- a/src/plugins/index.ts +++ b/src/plugins/index.ts @@ -59,11 +59,15 @@ export function addPatch(newPatch: Omit, pluginName: string) { delete patch.group; } + if (patch.predicate && !patch.predicate()) return; + canonicalizeFind(patch); if (!Array.isArray(patch.replacement)) { patch.replacement = [patch.replacement]; } + patch.replacement = patch.replacement.filter(({ predicate }) => !predicate || predicate()); + if (IS_REPORTER) { patch.replacement.forEach(r => { delete r.predicate; From 21a42afe3066ae2c02173919d8975c639a9854ee Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Sat, 29 Jun 2024 21:55:36 -0300 Subject: [PATCH 5/9] Not needed anymore --- src/webpack/patchWebpack.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/webpack/patchWebpack.ts b/src/webpack/patchWebpack.ts index 4b3b28a8e3..f32aeb7898 100644 --- a/src/webpack/patchWebpack.ts +++ b/src/webpack/patchWebpack.ts @@ -259,7 +259,6 @@ function patchFactories(factories: Record Date: Sun, 30 Jun 2024 19:26:39 -0300 Subject: [PATCH 6/9] when I explode react --- src/plugins/consoleJanitor/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/consoleJanitor/index.ts b/src/plugins/consoleJanitor/index.ts index 46a81f6b9f..c048d00d93 100644 --- a/src/plugins/consoleJanitor/index.ts +++ b/src/plugins/consoleJanitor/index.ts @@ -86,7 +86,7 @@ export default definePlugin({ { find: "Unable to determine render window for element", replacement: { - match: /return console\.warn\("Unable to determine render window for element",\i\),/, + match: /console\.warn\("Unable to determine render window for element",\i\),/, replace: "" } }, From 21d79cd844b435fbe9ef88d3384f7b15a0071434 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Tue, 2 Jul 2024 22:00:28 -0300 Subject: [PATCH 7/9] Add README --- src/plugins/consoleJanitor/README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/plugins/consoleJanitor/README.md diff --git a/src/plugins/consoleJanitor/README.md b/src/plugins/consoleJanitor/README.md new file mode 100644 index 0000000000..fbba766a49 --- /dev/null +++ b/src/plugins/consoleJanitor/README.md @@ -0,0 +1,5 @@ +# ConsoleJanitor + +Disables annoying console messages/errors. This plugin mainly removes errors/warnings that happen all the time and noisy/spammy logging messages. + +Some of the disabled messages include the "notosans-400-normalitalic" error and MessageActionCreators, Routing/Utils loggers. From a7253d22badb571e799384c68912c4af139183d3 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Tue, 2 Jul 2024 22:05:42 -0300 Subject: [PATCH 8/9] Make plugin dev only --- src/plugins/{consoleJanitor => consoleJanitor.dev}/README.md | 0 src/plugins/{consoleJanitor => consoleJanitor.dev}/index.ts | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/plugins/{consoleJanitor => consoleJanitor.dev}/README.md (100%) rename src/plugins/{consoleJanitor => consoleJanitor.dev}/index.ts (100%) diff --git a/src/plugins/consoleJanitor/README.md b/src/plugins/consoleJanitor.dev/README.md similarity index 100% rename from src/plugins/consoleJanitor/README.md rename to src/plugins/consoleJanitor.dev/README.md diff --git a/src/plugins/consoleJanitor/index.ts b/src/plugins/consoleJanitor.dev/index.ts similarity index 100% rename from src/plugins/consoleJanitor/index.ts rename to src/plugins/consoleJanitor.dev/index.ts From c81af4ec56317249574bf7737fba441b3bb360c3 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Tue, 2 Jul 2024 22:17:15 -0300 Subject: [PATCH 9/9] Disable Spotify logger; enabled by default and non dev --- .../README.md | 0 .../index.ts | 15 +++++++++++++++ 2 files changed, 15 insertions(+) rename src/plugins/{consoleJanitor.dev => consoleJanitor}/README.md (100%) rename src/plugins/{consoleJanitor.dev => consoleJanitor}/index.ts (89%) diff --git a/src/plugins/consoleJanitor.dev/README.md b/src/plugins/consoleJanitor/README.md similarity index 100% rename from src/plugins/consoleJanitor.dev/README.md rename to src/plugins/consoleJanitor/README.md diff --git a/src/plugins/consoleJanitor.dev/index.ts b/src/plugins/consoleJanitor/index.ts similarity index 89% rename from src/plugins/consoleJanitor.dev/index.ts rename to src/plugins/consoleJanitor/index.ts index c048d00d93..5579b4c709 100644 --- a/src/plugins/consoleJanitor.dev/index.ts +++ b/src/plugins/consoleJanitor/index.ts @@ -26,6 +26,12 @@ const settings = definePluginSettings({ disableNoisyLoggers: { type: OptionType.BOOLEAN, description: "Disable noisy loggers like the MessageActionCreators", + default: false, + restartNeeded: true + }, + disableSpotifyLogger: { + type: OptionType.BOOLEAN, + description: "Disable the Spotify logger, which leaks account information and access token", default: true, restartNeeded: true } @@ -35,6 +41,7 @@ export default definePlugin({ name: "ConsoleJanitor", description: "Disables annoying console messages/errors", authors: [Devs.Nuckyz], + enabledByDefault: true, settings, NoopLogger: () => NoopLogger, @@ -133,6 +140,14 @@ export default definePlugin({ match: /new \i\.\i\("RTCConnection\("\.concat.+?\)\)(?=,)/, replace: "$self.NoopLogger()" } + }, + { + find: '("Spotify")', + predicate: () => settings.store.disableSpotifyLogger, + replacement: { + match: /new \i\.\i\("Spotify"\)/, + replace: "$self.NoopLogger()" + } } ] });