Merge branch 'immediate-finds' into immediate-finds-modules-proxy

This commit is contained in:
Nuckyz 2024-07-17 15:59:48 -03:00
commit 5462bb1438
No known key found for this signature in database
GPG key ID: 440BF8296E1C4AD9
5 changed files with 34 additions and 11 deletions

View file

@ -21,6 +21,7 @@
"buildReporter": "pnpm buildWebStandalone --reporter --skip-extension", "buildReporter": "pnpm buildWebStandalone --reporter --skip-extension",
"buildReporterDesktop": "pnpm build --reporter", "buildReporterDesktop": "pnpm build --reporter",
"watch": "pnpm build --watch", "watch": "pnpm build --watch",
"dev": "pnpm watch",
"watchWeb": "pnpm buildWeb --watch", "watchWeb": "pnpm buildWeb --watch",
"generatePluginJson": "tsx scripts/generatePluginList.ts", "generatePluginJson": "tsx scripts/generatePluginList.ts",
"generateTypes": "tspc --emitDeclarationOnly --declaration --outDir packages/vencord-types", "generateTypes": "tspc --emitDeclarationOnly --declaration --outDir packages/vencord-types",

View file

@ -91,7 +91,7 @@ export default definePlugin({
/* new profiles */ /* new profiles */
{ {
find: ".PANEL]:14", find: ".FULL_SIZE]:26",
replacement: { replacement: {
match: /(?<=(\i)=\(0,\i\.\i\)\(\i\);)return 0===\i.length\?/, match: /(?<=(\i)=\(0,\i\.\i\)\(\i\);)return 0===\i.length\?/,
replace: "$1.unshift(...$self.getBadges(arguments[0].displayProfile));$&" replace: "$1.unshift(...$self.getBadges(arguments[0].displayProfile));$&"

View file

@ -162,16 +162,32 @@ function loadAndCacheShortcut(key: string, val: any, forceLoad: boolean) {
const currentVal = val.getter(); const currentVal = val.getter();
if (!currentVal || val.preload === false) return currentVal; if (!currentVal || val.preload === false) return currentVal;
let value: any; function unwrapProxy(value: any) {
if (currentVal[SYM_LAZY_GET]) { if (value[SYM_LAZY_GET]) {
value = forceLoad ? currentVal[SYM_LAZY_GET]() : currentVal[SYM_LAZY_CACHED]; return forceLoad ? value[SYM_LAZY_GET]() : value[SYM_LAZY_CACHED];
} else if (currentVal[SYM_PROXY_INNER_GET]) { } else if (value[SYM_PROXY_INNER_GET]) {
value = forceLoad ? currentVal[SYM_PROXY_INNER_GET]() : currentVal[SYM_PROXY_INNER_VALUE]; return forceLoad ? value[SYM_PROXY_INNER_GET]() : value[SYM_PROXY_INNER_VALUE];
} else {
value = currentVal;
} }
if (value) define(window.shortcutList, key, { value }); return value;
}
const value = unwrapProxy(currentVal);
if (typeof value === "object") {
const descriptors = Object.getOwnPropertyDescriptors(value);
for (const propKey in descriptors) {
const descriptor = descriptors[propKey];
if (descriptor.writable === true || descriptor.set != null) {
value[propKey] = unwrapProxy(value[propKey]);
}
}
}
if (value) {
define(window.shortcutList, key, { value });
}
return value; return value;
} }

View file

@ -1,6 +1,6 @@
.vc-mentionAvatars-avatar { .vc-mentionAvatars-avatar {
vertical-align: middle; vertical-align: middle;
width: 1em; width: 1em !important; /* insane discord sets width: 100% in channel topic */
height: 1em; height: 1em;
margin: 0 4px 0.2rem 2px; margin: 0 4px 0.2rem 2px;
border-radius: 50%; border-radius: 50%;

View file

@ -432,6 +432,8 @@ export function findByFactoryCode<T = any>(...code: CodeFilter | [...CodeFilter,
* Find the module exports of the first module which the factory includes all the given code, * Find the module exports of the first module which the factory includes all the given code,
* then map them into an easily usable object via the specified mappers. * then map them into an easily usable object via the specified mappers.
* *
* IMPORTANT: You can destructure the properties of the returned object at top level as long as the property filter does not return a primitive value export.
*
* @example * @example
* const Modals = mapMangledModule("headerIdIsManaged:", { * const Modals = mapMangledModule("headerIdIsManaged:", {
* openModal: filters.byCode("headerIdIsManaged:"), * openModal: filters.byCode("headerIdIsManaged:"),
@ -450,7 +452,7 @@ export function mapMangledModule<S extends PropertyKey>(code: string | RegExp |
// Wrapper to select whether the parent factory filter or child mapper filter failed when the error is thrown // Wrapper to select whether the parent factory filter or child mapper filter failed when the error is thrown
const errorMsgWrapper = lazyString(() => `Webpack mapMangledModule ${callbackCalled ? "mapper" : "factory"} filter matched no module. Filter: ${printFilter(callbackCalled ? mappers[newName] : factoryFilter)}`); const errorMsgWrapper = lazyString(() => `Webpack mapMangledModule ${callbackCalled ? "mapper" : "factory"} filter matched no module. Filter: ${printFilter(callbackCalled ? mappers[newName] : factoryFilter)}`);
const [proxy, setInnerValue] = proxyInner(errorMsgWrapper, "Webpack find with proxy called on a primitive value."); const [proxy, setInnerValue] = proxyInner(errorMsgWrapper, "Webpack find with proxy called on a primitive value. This may happen if you are trying to destructure a mapMangledModule primitive value on top level.");
mapping[newName] = proxy; mapping[newName] = proxy;
setters[newName] = setInnerValue; setters[newName] = setInnerValue;
} }
@ -469,6 +471,10 @@ export function mapMangledModule<S extends PropertyKey>(code: string | RegExp |
const filter = mappers[newName]; const filter = mappers[newName];
if (filter(exportValue)) { if (filter(exportValue)) {
if (typeof exportValue !== "object" && typeof exportValue !== "function") {
mapping[newName] = exportValue;
}
setters[newName](exportValue); setters[newName](exportValue);
} }
} }