|
|
|
@ -25,13 +25,18 @@ const injector = {
|
|
|
|
|
const id = randomBytes(16).toString('hex');
|
|
|
|
|
mod.__vizalityInjectionId = Object.assign((mod.__vizalityInjectionId || {}), { [funcName]: id });
|
|
|
|
|
mod[`__vizalityOriginal_${funcName}`] = mod[funcName]; // To allow easier debugging
|
|
|
|
|
mod[funcName] = (_oldMethod => function (...args) {
|
|
|
|
|
const _oldMethod = mod[funcName];
|
|
|
|
|
mod[funcName] = function (...args) {
|
|
|
|
|
const finalArgs = injector._runPreInjections(id, args, this);
|
|
|
|
|
if (finalArgs !== false && Array.isArray(finalArgs)) {
|
|
|
|
|
const returned = _oldMethod ? _oldMethod.call(this, ...finalArgs) : void 0;
|
|
|
|
|
return injector._runInjections(id, finalArgs, returned, this);
|
|
|
|
|
}
|
|
|
|
|
})(mod[funcName]);
|
|
|
|
|
};
|
|
|
|
|
// Reassign displayName, defaultProps etc etc, not to mess with other plugins
|
|
|
|
|
Object.assign(mod[funcName], _oldMethod);
|
|
|
|
|
// Allow code search even after patching
|
|
|
|
|
mod[funcName].toString = (...args) => _oldMethod.toString(...args);
|
|
|
|
|
|
|
|
|
|
injector.injections[id] = [];
|
|
|
|
|
}
|
|
|
|
|