Skip to content

Commit

Permalink
Remove newlines in webpack chunks
Browse files Browse the repository at this point in the history
  • Loading branch information
Vendicated committed Sep 15, 2022
1 parent b1d3f5e commit 9bf28c0
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/plugins/STFU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export default definePlugin({
patches: [{
find: "setDevtoolsCallbacks",
replacement: {
match: /\.default=function.+$/s,
match: /\.default=function.+$/,
replace: ".default=function(){}}"
}
}]
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default definePlugin({
}
},
{
match: /\w\.createElement.+?["']Host ["'].+?\):null/s,
match: /\w\.createElement.+?["']Host ["'].+?\):null/,
replace: m => {
const idx = m.indexOf("Host") - 1;
const template = m.slice(0, idx);
Expand Down
15 changes: 9 additions & 6 deletions src/utils/patchWebpack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ const logger = new Logger("WebpackInterceptor", "#8caaee");
Object.defineProperty(window, WEBPACK_CHUNK, {
get: () => webpackChunk,
set: (v) => {
// There are two possible values for push.
// - Native push with toString result of function push() { [native code] }
// - Webpack's push with toString result of function() { [native code] }
// We don't want to override the native one, so check for "push"
if (v && !v.push.toString().includes("push")) {
if (v?.push !== Array.prototype.push) {
logger.info(`Patching ${WEBPACK_CHUNK}.push`);
_initWebpack(v);
patchPush();
Expand All @@ -35,7 +31,14 @@ function patchPush() {

for (const id in modules) {
let mod = modules[id];
let code = mod.toString();
// Discords Webpack chunks for some ungodly reason contain random
// newlines. Cyn recommended this workaround and it seems to work fine,
// however this could potentially break code, so if anything goes weird,
// this is probably why.
// Additionally, `[actual newline]` is one less char than "\n", so if Discord
// ever targets newer browsers, the minifier could potentially use this trick and
// cause issues.
let code = mod.toString().replaceAll("\n", "");
const originalMod = mod;
const patchedBy = new Set();

Expand Down

0 comments on commit 9bf28c0

Please sign in to comment.