From 0d78244b24d494393641e8c6bf09cffca45b9796 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Sat, 30 Mar 2024 19:48:00 +0100 Subject: [PATCH 1/6] ext/settings: fix patch --- packages/core-extensions/src/settings/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core-extensions/src/settings/index.ts b/packages/core-extensions/src/settings/index.ts index c98f56a..45f232e 100644 --- a/packages/core-extensions/src/settings/index.ts +++ b/packages/core-extensions/src/settings/index.ts @@ -5,9 +5,9 @@ export const patches: Patch[] = [ { find: ".UserSettingsSections.HOTSPOT_OPTIONS", replace: { - match: /\.CUSTOM,element:(.+?)}\];return (.{1,2})/, - replacement: (_, lastElement, sections) => - `.CUSTOM,element:${lastElement}}];return require("settings_settings").Settings._mutateSections(${sections})` + match: /return(\[.+?\.CUSTOM,element:.+?}\])}/, + replacement: (_, arr) => + `return require("settings_settings").Settings._mutateSections(${arr})}` } }, { From 849eb73fe594e1ab49ee82e485e3aa5aa9017313 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Sat, 30 Mar 2024 19:57:50 +0100 Subject: [PATCH 2/6] ext/moonbase: fix icon lazy loading --- .../src/moonbase/webpackModules/ui/extensions/filterBar.tsx | 6 +++++- packages/types/src/discord/webpack.ts | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx index 150dc71..64cc84e 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx @@ -32,6 +32,7 @@ export enum Filter { } export const defaultFilter = ~(~0 << 7); +// TODO: turn this into a utility function const channelModule = spacepack.require.m[ spacepack.findByCode( @@ -39,7 +40,10 @@ const channelModule = )[0].id ].toString(); const moduleId = channelModule.match(/webpackId:"(.+?)"/)![1]; -const modPromise = spacepack.require.el(moduleId); +const chunks = [...channelModule.matchAll(/e\("(\d+)"\)/g)].map(([, id]) => id); +const modPromise = Promise.all(chunks.map((c) => spacepack.require.e(c))).then( + () => spacepack.require(moduleId) +); const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; const SortMenuClasses = spacepack.findByCode("container:", "clearText:")[0] diff --git a/packages/types/src/discord/webpack.ts b/packages/types/src/discord/webpack.ts index d2a8541..2469c96 100644 --- a/packages/types/src/discord/webpack.ts +++ b/packages/types/src/discord/webpack.ts @@ -3,7 +3,7 @@ import WebpackRequire from "./require"; export type WebpackRequireType = typeof WebpackRequire & { c: Record; m: Record; - el: (module: number | string) => Promise; + e: (module: number | string) => Promise; }; export type WebpackModule = { From a130e9ac400c0049ed027c03b6c47de1df99fc37 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Sat, 30 Mar 2024 20:04:05 +0100 Subject: [PATCH 3/6] ext/common: fix Flex find --- .../core-extensions/src/common/webpackModules/components.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-extensions/src/common/webpackModules/components.ts b/packages/core-extensions/src/common/webpackModules/components.ts index e8a0a55..33479f8 100644 --- a/packages/core-extensions/src/common/webpackModules/components.ts +++ b/packages/core-extensions/src/common/webpackModules/components.ts @@ -6,7 +6,7 @@ const MarkdownParser = spacepack.findByCode( )[0].exports.default; const LegacyText = spacepack.findByCode(".selectable", ".colorStandard")[0] .exports.default; -const Flex = spacepack.findByCode(".flex" + "GutterSmall,")[0].exports.default; +const Flex = spacepack.findByCode(".flex" + "GutterSmall,")[0].exports.Flex; const CardClasses = spacepack.findByCode("card", "cardHeader", "inModal")[0] .exports; const ControlClasses = spacepack.findByCode( From 5cd461565f80daf151ccbcb36d71455bf2e0e09f Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Sat, 30 Mar 2024 20:08:10 +0100 Subject: [PATCH 4/6] ext/spacepack: fix type error --- .../core-extensions/src/spacepack/webpackModules/spacepack.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts b/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts index d83663c..6db885d 100644 --- a/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts +++ b/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts @@ -162,6 +162,7 @@ export const spacepack: Spacepack = { ); }, + // TODO: rework this lazyLoad: (find: string | RegExp | (string | RegExp)[], match: RegExp) => { const module = Array.isArray(find) ? spacepack.findByCode(...find) @@ -175,7 +176,7 @@ export const spacepack: Spacepack = { if (!matchResult) return Promise.reject("Match failed"); const matchId = matchResult[1]; - return webpackRequire.el(matchId).then(() => webpackRequire(matchId)); + return webpackRequire.e(matchId).then(() => webpackRequire(matchId)); }, filterReal: (modules: WebpackModule[]) => { From a5741da379f23fd0d1c418070de1abb8ab5b1d27 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Sat, 30 Mar 2024 20:12:11 +0100 Subject: [PATCH 5/6] ext/quietLoggers: fix RunningGameStore search --- packages/core-extensions/src/quietLoggers/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-extensions/src/quietLoggers/index.ts b/packages/core-extensions/src/quietLoggers/index.ts index c7df00a..a90d611 100644 --- a/packages/core-extensions/src/quietLoggers/index.ts +++ b/packages/core-extensions/src/quietLoggers/index.ts @@ -33,7 +33,7 @@ const stubPatches = [ "is not a valid locale", /(.)\.error\(""\.concat\((.)," is not a valid locale\."\)\)/g ], - ['.displayName="RunningGameStore"', /.\.info\("games",{.+?}\),/], + ['="RunningGameStore"', /.\.info\("games",{.+?}\),/], [ '"[BUILD INFO] Release Channel: "', /new .{1,2}\.default\(\)\.log\("\[BUILD INFO\] Release Channel: ".+?"\)\),/ From e1b21bb79335fb62b7c8c4ac0b1a586052f8d8a1 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Sat, 30 Mar 2024 20:22:55 +0100 Subject: [PATCH 6/6] ext/spacepack: fix lazyLoad --- .../ui/extensions/filterBar.tsx | 15 +++------- .../src/spacepack/webpackModules/spacepack.ts | 28 +++++++++++++------ packages/types/src/coreExtensions.ts | 3 +- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx index 64cc84e..8a1e31f 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx @@ -32,17 +32,10 @@ export enum Filter { } export const defaultFilter = ~(~0 << 7); -// TODO: turn this into a utility function -const channelModule = - spacepack.require.m[ - spacepack.findByCode( - '"Missing channel in Channel.openChannelContextMenu"' - )[0].id - ].toString(); -const moduleId = channelModule.match(/webpackId:"(.+?)"/)![1]; -const chunks = [...channelModule.matchAll(/e\("(\d+)"\)/g)].map(([, id]) => id); -const modPromise = Promise.all(chunks.map((c) => spacepack.require.e(c))).then( - () => spacepack.require(moduleId) +const modPromise = spacepack.lazyLoad( + '"Missing channel in Channel.openChannelContextMenu"', + /e\("(\d+)"\)/g, + /webpackId:"(.+?)"/ ); const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; diff --git a/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts b/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts index 6db885d..5a58003 100644 --- a/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts +++ b/packages/core-extensions/src/spacepack/webpackModules/spacepack.ts @@ -162,21 +162,31 @@ export const spacepack: Spacepack = { ); }, - // TODO: rework this - lazyLoad: (find: string | RegExp | (string | RegExp)[], match: RegExp) => { - const module = Array.isArray(find) + lazyLoad: ( + find: string | RegExp | (string | RegExp)[], + chunk: RegExp, + module: RegExp + ) => { + if (!chunk.flags.includes("g")) + return Promise.reject("Chunk ID regex must be global"); + + const mod = Array.isArray(find) ? spacepack.findByCode(...find) : spacepack.findByCode(find); - if (module.length < 1) return Promise.reject("Find failed"); + if (mod.length < 1) return Promise.reject("Module find failed"); - const findId = module[0].id; + const findId = mod[0].id; const findCode = webpackRequire.m[findId].toString().replace(/\n/g, ""); - const matchResult = findCode.match(match); - if (!matchResult) return Promise.reject("Match failed"); + const chunkIds = [...findCode.matchAll(chunk)].map(([, id]) => id); + if (chunkIds.length === 0) return Promise.reject("Chunk ID match failed"); - const matchId = matchResult[1]; - return webpackRequire.e(matchId).then(() => webpackRequire(matchId)); + const moduleId = findCode.match(module)?.[1]; + if (!moduleId) return Promise.reject("Module ID match failed"); + + return Promise.all(chunkIds.map((c) => webpackRequire.e(c))).then(() => + webpackRequire(moduleId) + ); }, filterReal: (modules: WebpackModule[]) => { diff --git a/packages/types/src/coreExtensions.ts b/packages/types/src/coreExtensions.ts index 6b6e181..28898c6 100644 --- a/packages/types/src/coreExtensions.ts +++ b/packages/types/src/coreExtensions.ts @@ -29,7 +29,8 @@ export type Spacepack = { ) => Function | null; lazyLoad: ( find: string | RegExp | (string | RegExp)[], - match: RegExp + chunk: RegExp, + module: RegExp ) => Promise; filterReal: (modules: WebpackModule[]) => WebpackModule[]; };