Webpack: Expose cache and require
This commit is contained in:
parent
9aed4d275f
commit
83cdd86926
|
@ -1,4 +1,7 @@
|
||||||
let webpackCache: typeof window.webpackChunkdiscord_app;
|
import type { WebpackInstance } from "discord-types/other";
|
||||||
|
|
||||||
|
export let wreq: WebpackInstance;
|
||||||
|
export let cache: WebpackInstance["c"];
|
||||||
|
|
||||||
export type FilterFn = (mod: any) => boolean;
|
export type FilterFn = (mod: any) => boolean;
|
||||||
|
|
||||||
|
@ -16,9 +19,10 @@ export const listeners = new Set<CallbackFn>();
|
||||||
export type CallbackFn = (mod: any) => void;
|
export type CallbackFn = (mod: any) => void;
|
||||||
|
|
||||||
export function _initWebpack(instance: typeof window.webpackChunkdiscord_app) {
|
export function _initWebpack(instance: typeof window.webpackChunkdiscord_app) {
|
||||||
if (webpackCache !== void 0) throw "no.";
|
if (cache !== void 0) throw "no.";
|
||||||
|
|
||||||
webpackCache = instance.push([[Symbol()], {}, (r) => r.c]);
|
wreq = instance.push([[Symbol()], {}, (r) => r]);
|
||||||
|
cache = wreq.c;
|
||||||
instance.pop();
|
instance.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,8 +30,8 @@ export function find(filter: FilterFn, getDefault = true) {
|
||||||
if (typeof filter !== "function")
|
if (typeof filter !== "function")
|
||||||
throw new Error("Invalid filter. Expected a function got", filter);
|
throw new Error("Invalid filter. Expected a function got", filter);
|
||||||
|
|
||||||
for (const key in webpackCache) {
|
for (const key in cache) {
|
||||||
const mod = webpackCache[key];
|
const mod = cache[key];
|
||||||
if (mod?.exports && filter(mod.exports))
|
if (mod?.exports && filter(mod.exports))
|
||||||
return mod.exports;
|
return mod.exports;
|
||||||
if (mod?.exports?.default && filter(mod.exports.default))
|
if (mod?.exports?.default && filter(mod.exports.default))
|
||||||
|
@ -41,8 +45,8 @@ export function findAll(filter: FilterFn, getDefault = true) {
|
||||||
if (typeof filter !== "function") throw new Error("Invalid filter. Expected a function got", filter);
|
if (typeof filter !== "function") throw new Error("Invalid filter. Expected a function got", filter);
|
||||||
|
|
||||||
const ret = [] as any[];
|
const ret = [] as any[];
|
||||||
for (const key in webpackCache) {
|
for (const key in cache) {
|
||||||
const mod = webpackCache[key];
|
const mod = cache[key];
|
||||||
if (mod?.exports && filter(mod.exports)) ret.push(mod.exports);
|
if (mod?.exports && filter(mod.exports)) ret.push(mod.exports);
|
||||||
if (mod?.exports?.default && filter(mod.exports.default)) ret.push(getDefault ? mod.exports.default : mod.exports);
|
if (mod?.exports?.default && filter(mod.exports.default)) ret.push(getDefault ? mod.exports.default : mod.exports);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue