aboutsummaryrefslogtreecommitdiff
path: root/src/utils/misc.tsx
diff options
context:
space:
mode:
authorVendicated <vendicated@riseup.net>2022-10-14 21:34:35 +0200
committerVendicated <vendicated@riseup.net>2022-10-14 21:34:35 +0200
commit296336535f6d23c586c7e83edf0420b58cbf011a (patch)
treeaa2a12bd071b36d44f43da992aa9fddfdd11bf50 /src/utils/misc.tsx
parent563f2fb1dc2067345e4fbd71ce8da7d60d2928e1 (diff)
downloadVencord-296336535f6d23c586c7e83edf0420b58cbf011a.tar.gz
Vencord-296336535f6d23c586c7e83edf0420b58cbf011a.tar.bz2
Vencord-296336535f6d23c586c7e83edf0420b58cbf011a.zip
Fix modals, add wp.mapMangledModule
Diffstat (limited to 'src/utils/misc.tsx')
-rw-r--r--src/utils/misc.tsx17
1 files changed, 4 insertions, 13 deletions
diff --git a/src/utils/misc.tsx b/src/utils/misc.tsx
index b646ec1..f6ea36c 100644
--- a/src/utils/misc.tsx
+++ b/src/utils/misc.tsx
@@ -1,15 +1,17 @@
import { FilterFn, find } from "../webpack";
import { React } from "../webpack/common";
+import { proxyLazy } from "./proxyLazy";
/**
* Makes a lazy function. On first call, the value is computed.
* On subsequent calls, the same computed value will be returned
* @param factory Factory function
*/
-export function lazy<T>(factory: () => T): () => T {
+export function makeLazy<T>(factory: () => T): () => T {
let cache: T;
return () => cache ?? (cache = factory());
}
+export const lazy = makeLazy;
/**
* Do a lazy webpack search. Searches the module on first property access
@@ -17,18 +19,7 @@ export function lazy<T>(factory: () => T): () => T {
* @returns A proxy to the webpack module. Not all traps are implemented, may produce unexpected results.
*/
export function lazyWebpack<T = any>(filter: FilterFn): T {
- const getMod = lazy(() => find(filter));
-
- return new Proxy(() => null, {
- get: (_, prop) => getMod()[prop],
- set: (_, prop, value) => getMod()[prop] = value,
- has: (_, prop) => prop in getMod(),
- apply: (_, $this, args) => (getMod() as Function).apply($this, args),
- ownKeys: () => Reflect.ownKeys(getMod()),
- construct: (_, args, newTarget) => Reflect.construct(getMod(), args, newTarget),
- deleteProperty: (_, prop) => delete getMod()[prop],
- defineProperty: (_, property, attributes) => !!Object.defineProperty(getMod(), property, attributes)
- }) as any as T;
+ return proxyLazy(() => find(filter));
}
/**