this repo has no description

Merge pull request #214 from uwx/feature/group-prefix-wp-modules

Fix very laggy Sources tab in DevTools when using "Patch all" in Spacepack

Changed files
+7 -6
packages
core
src
core-extensions
src
moonbase
webpackModules
spacepack
webpackModules
+3 -3
packages/core-extensions/src/moonbase/webpackModules/crashScreen.tsx
···
import { ConfigExtension, DetectedExtension } from "@moonlight-mod/types";
import DiscoveryClasses from "@moonlight-mod/wp/discord/modules/discovery/web/Discovery.css";
-
const MODULE_REGEX = /Webpack-Module-(\d+)/g;
+
const MODULE_REGEX = /Webpack-Module\/(\d+)\/(\d+)/g;
const logger = moonlight.getLogger("moonbase/crashScreen");
···
const causes = React.useMemo(() => {
const causes = new Set<string>();
if (state.error.stack) {
-
for (const [, id] of state.error.stack.matchAll(MODULE_REGEX))
+
for (const [, , id] of state.error.stack.matchAll(MODULE_REGEX))
for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext);
}
-
for (const [, id] of state.info.componentStack.matchAll(MODULE_REGEX))
+
for (const [, , id] of state.info.componentStack.matchAll(MODULE_REGEX))
for (const ext of moonlight.patched.get(id) ?? []) causes.add(ext);
return [...causes];
}, []);
+1 -1
packages/core-extensions/src/spacepack/webpackModules/spacepack.ts
···
"module",
"exports",
"require",
-
`(${funcStr}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module-${module}`
+
`(${funcStr}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module/${module.slice(0, 3)}/${module}`
) as WebpackModuleFunc;
},
+3 -2
packages/core/src/patch.ts
···
const wrapped =
`(${replaced}).apply(this, arguments)\n` +
`// Patched by moonlight: ${patchedStr}\n` +
-
`//# sourceURL=Webpack-Module-${id}`;
+
`//# sourceURL=Webpack-Module/${id.slice(0, 3)}/${id}`;
try {
const func = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc;
···
if (moonlightNode.config.patchAll === true) {
if ((typeof id !== "string" || !id.includes("_")) && !entry[id].__moonlight) {
-
const wrapped = `(${moduleCache[id]}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module-${id}`;
+
const wrapped =
+
`(${moduleCache[id]}).apply(this, arguments)\n` + `//# sourceURL=Webpack-Module/${id.slice(0, 3)}/${id}`;
entry[id] = new Function("module", "exports", "require", wrapped) as WebpackModuleFunc;
entry[id].__moonlight = true;
}