move down

This commit is contained in:
Nuckyz 2024-06-12 17:33:26 -03:00
parent 31c39bc761
commit 3d0ce5449d
No known key found for this signature in database
GPG key ID: 440BF8296E1C4AD9

View file

@ -104,6 +104,40 @@ define(Function.prototype, "O", {
} }
}); });
const moduleFactoriesHandler: ProxyHandler<PatchedModuleFactories> = {
/*
If Discord ever decides to set module factories using the variable of the modules object directly instead of wreq.m, we need to switch the proxy to the prototype
and that requires defining additional traps for keeping the object working
// Proxies on the prototype dont intercept "get" when the property is in the object itself. But in case it isn't we need to return undefined,
// to avoid Reflect.get having no effect and causing a stack overflow
get: (target, p, receiver) => {
return undefined;
},
// Same thing as get
has: (target, p) => {
return false;
}
*/
// The set trap for patching or defining getters for the module factories when new module factories are loaded
set: (target, p, newValue, receiver) => {
// If the property is not a number, we are not dealing with a module factory
if (Number.isNaN(Number(p))) {
return define(target, p, { value: newValue });
}
if (updateExistingFactory(target, p, newValue)) {
return true;
}
notifyFactoryListeners(newValue);
defineModulesFactoryGetter(p, Settings.eagerPatches ? patchFactory(p, newValue) : newValue);
return true;
}
};
/** /**
* Define the getter for returning the patched version of the module factory. * Define the getter for returning the patched version of the module factory.
* *
@ -184,40 +218,6 @@ function notifyFactoryListeners(factory: AnyModuleFactory) {
} }
} }
const moduleFactoriesHandler: ProxyHandler<PatchedModuleFactories> = {
/*
If Discord ever decides to set module factories using the variable of the modules object directly instead of wreq.m, we need to switch the proxy to the prototype
and that requires defining additional traps for keeping the object working
// Proxies on the prototype dont intercept "get" when the property is in the object itself. But in case it isn't we need to return undefined,
// to avoid Reflect.get having no effect and causing a stack overflow
get: (target, p, receiver) => {
return undefined;
},
// Same thing as get
has: (target, p) => {
return false;
}
*/
// The set trap for patching or defining getters for the module factories when new module factories are loaded
set: (target, p, newValue, receiver) => {
// If the property is not a number, we are not dealing with a module factory
if (Number.isNaN(Number(p))) {
return define(target, p, { value: newValue });
}
if (updateExistingFactory(target, p, newValue)) {
return true;
}
notifyFactoryListeners(newValue);
defineModulesFactoryGetter(p, Settings.eagerPatches ? patchFactory(p, newValue) : newValue);
return true;
}
};
/** /**
* Patches a module factory. * Patches a module factory.
* *