mirror of
https://github.com/SteamDeckHomebrew/decky-frontend-lib.git
synced 2026-06-05 17:16:55 +02:00
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
|
|
import { Module, findAllModules } from "./webpack";
|
||
|
|
|
||
|
|
export interface ClassModule {
|
||
|
|
[name: string]: string
|
||
|
|
};
|
||
|
|
|
||
|
|
export const classMap: ClassModule[] = findAllModules((m: Module) => {
|
||
|
|
if (typeof m == "object" && !m.__esModule) {
|
||
|
|
const keys = Object.keys(m);
|
||
|
|
// special case some libraries
|
||
|
|
if (keys.length == 1 && m.version) return false;
|
||
|
|
// special case localization
|
||
|
|
if (keys.length > 1000 && m.AboutSettings) return false;
|
||
|
|
|
||
|
|
return keys.length > 0 && keys.every(k => !Object.getOwnPropertyDescriptor(m, k)?.get && typeof m[k] == "string")
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
});
|
||
|
|
|
||
|
|
export function findClass(name: string): string | void {
|
||
|
|
return classMap.find(m => m?.[name])?.[name];
|
||
|
|
}
|
||
|
|
|
||
|
|
export function findClassModule(filter: (module: any) => boolean) : ClassModule | void {
|
||
|
|
return classMap.find(m => filter(m));
|
||
|
|
}
|
||
|
|
|
||
|
|
export function unminifyClass(minifiedClass: string): string | void {
|
||
|
|
for (let m of classMap) {
|
||
|
|
for (let className of Object.keys(m)) {
|
||
|
|
if (m[className] == minifiedClass) return className;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|