diff options
author | Cynthia Foxwell <gamers@riseup.net> | 2022-10-11 17:25:50 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-12 01:25:50 +0200 |
commit | bfb4114e18988766c4c4e4c1e24467390be0d7a9 (patch) | |
tree | 7da9c55d1084e0eb8c21bbf6dd3083b4379da1a0 | |
parent | 6afd959530c93b0fcea6520972adac142323b5c4 (diff) | |
download | Vencord-bfb4114e18988766c4c4e4c1e24467390be0d7a9.tar.gz Vencord-bfb4114e18988766c4c4e4c1e24467390be0d7a9.tar.bz2 Vencord-bfb4114e18988766c4c4e4c1e24467390be0d7a9.zip |
feat(plugin): UnminifyErrors (#90)
Co-authored-by: Ven <vendicated@riseup.net>
-rw-r--r-- | src/plugins/unminifyErrors.ts | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/plugins/unminifyErrors.ts b/src/plugins/unminifyErrors.ts new file mode 100644 index 0000000..9ff9556 --- /dev/null +++ b/src/plugins/unminifyErrors.ts @@ -0,0 +1,41 @@ +import definePlugin from "../utils/types"; +import { Devs } from "../utils/constants"; + +let ERROR_CODES: any; +const CODES_URL = + "https://raw.githubusercontent.com/facebook/react/17.0.2/scripts/error-codes/codes.json"; + +export default definePlugin({ + name: "ReactErrorDecoder", + description: 'Replaces "Minifed React Error" with the actual error.', + authors: [Devs.Cyn], + patches: [ + { + find: '"https://reactjs.org/docs/error-decoder.html?invariant="', + replacement: { + match: /(function .\(.\)){(for\(var .="https:\/\/reactjs\.org\/docs\/error-decoder\.html\?invariant="\+.,.=1;.<arguments\.length;.\+\+\).\+="&args\[\]="\+encodeURIComponent\(arguments\[.\]\);return"Minified React error #"\+.\+"; visit "\+.\+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.")}/, + replace: (_, func, original) => + `${func}{var decoded=Vencord.Plugins.plugins.ReactErrorDecoder.decodeError.apply(null, arguments);if(decoded)return decoded;${original}}`, + }, + }, + ], + + async start() { + ERROR_CODES = await fetch(CODES_URL) + .then(res => res.json()) + .catch(e => console.error("[ReactErrorDecoder] Failed to fetch React error codes\n", e)); + }, + + stop() { + ERROR_CODES = undefined; + }, + + decodeError(code: number, ...args: any) { + let index = 0; + return ERROR_CODES?.[code]?.replace(/%s/g, () => { + const arg = args[index]; + index++; + return arg; + }); + }, +}); |