add diffing and start work on reporter GUI

This commit is contained in:
sadan 2024-08-20 12:37:47 -04:00
parent 219c764680
commit da01d52e50
No known key found for this signature in database
4 changed files with 71 additions and 32 deletions

View file

@ -11,7 +11,36 @@ import { patches } from "plugins";
import { loadLazyChunks } from "./loadLazyChunks";
const ReporterLogger = new Logger("Reporter");
interface ReporterData {
failedPatches: {
/**
* pluginName > array of failed modules
*/
foundNoModule: Record<string, string[]>;
};
failedWebpack: Record<Webpack.TypeWebpackSearchHistory, string[][]>;
}
const reporterData: ReporterData = {
failedPatches: {
foundNoModule: {}
},
failedWebpack: {
find: [[]],
findByProps: [[]],
findByCode: [[]],
findStore: [[]],
findComponent: [[]],
findComponentByCode: [[]],
findExportedComponent: [[]],
waitFor: [[]],
waitForComponent: [[]],
waitForStore: [[]],
proxyLazyWebpack: [[]],
LazyComponentWebpack: [[]],
extractAndLoadChunks: [[]],
mapMangledModule: [[]]
}
};
async function runReporter() {
try {
ReporterLogger.log("Starting test...");
@ -70,7 +99,7 @@ async function runReporter() {
logMessage += `("${args[0]}", {\n${failedMappings.map(mapping => `\t${mapping}: ${args[1][mapping].toString().slice(0, 147)}...`).join(",\n")}\n})`;
}
else logMessage += `(${args.map(arg => `"${arg}"`).join(", ")})`;
reporterData.failedWebpack[method].push(args.map(a => String(a)));
ReporterLogger.log("Webpack Find Fail:", logMessage);
}
}
@ -82,3 +111,4 @@ async function runReporter() {
}
runReporter();
console.log(reporterData);

View file

@ -131,35 +131,42 @@ function initWs(isManual = false) {
switch (type) {
case "diff": {
const { extractType, idOrSearch } = data;
switch (extractType) {
case "id": {
if (typeof idOrSearch !== "number")
throw new Error("Id is not a number, got :" + typeof idOrSearch);
replyData({
type: "diff",
ok: true,
data: {
patched: extractOrThrow(idOrSearch),
source: extractModule(idOrSearch, false)
},
moduleNumber: idOrSearch
});
break;
}
case "search": {
const moduleId = +findModuleId([idOrSearch.toString()]);
replyData({
type: "diff",
ok: true,
data: {
patched: extractOrThrow(moduleId),
source: extractModule(moduleId, false)
},
moduleNumber: moduleId
});
break;
try {
const { extractType, idOrSearch } = data;
switch (extractType) {
case "id": {
if (typeof idOrSearch !== "number")
throw new Error("Id is not a number, got :" + typeof idOrSearch);
replyData({
type: "diff",
ok: true,
data: {
patched: extractOrThrow(idOrSearch),
source: extractModule(idOrSearch, false)
},
moduleNumber: idOrSearch
});
break;
}
case "search": {
const moduleId = +findModuleId([idOrSearch.toString()]);
const p = extractOrThrow(moduleId);
const p2 = extractModule(moduleId, false);
console.log(p, p2, "done");
replyData({
type: "diff",
ok: true,
data: {
patched: p,
source: p2
},
moduleNumber: moduleId
});
break;
}
}
} catch (error) {
reply(String(error));
}
break;
}

View file

@ -63,7 +63,7 @@ export function extractModule(id: number, patched = settings.store.usePatchedMod
const module = wreq.m[id];
if (!module)
throw new Error("No module found for module id:" + id);
return patched ? module.$$vencordPatchedSource ?? module.original : module.original;
return patched ? module.$$vencordPatchedSource ?? module.original.toString() : module.original.toString();
} export function parseNode(node: Node) {
switch (node.type) {
case "string":

View file

@ -287,7 +287,9 @@ export function findModuleFactory(...code: CodeFilter) {
return wreq.m[id];
}
export const lazyWebpackSearchHistory = [] as Array<["find" | "findByProps" | "findByCode" | "findStore" | "findComponent" | "findComponentByCode" | "findExportedComponent" | "waitFor" | "waitForComponent" | "waitForStore" | "proxyLazyWebpack" | "LazyComponentWebpack" | "extractAndLoadChunks" | "mapMangledModule", any[]]>;
// FIXME: give this a better name
export type TypeWebpackSearchHistory = "find" | "findByProps" | "findByCode" | "findStore" | "findComponent" | "findComponentByCode" | "findExportedComponent" | "waitFor" | "waitForComponent" | "waitForStore" | "proxyLazyWebpack" | "LazyComponentWebpack" | "extractAndLoadChunks" | "mapMangledModule";
export const lazyWebpackSearchHistory = [] as Array<[TypeWebpackSearchHistory, any[]]>;
/**
* This is just a wrapper around {@link proxyLazy} to make our reporter test for your webpack finds.