literally just a patcher
commit
bf1d5f0932
@ -0,0 +1,26 @@
|
||||
function monkeyPatch(name, parentObj, patches) {
|
||||
const injId = Math.random().toString(36).slice(2).toUpperCase()
|
||||
const before = (patches["before"] === undefined) ? (...args)=>args : patches["before"];
|
||||
const instead = (patches["instead"] === undefined) ? (...args)=>args : patches["instead"];
|
||||
const after = (patches["after"] === undefined) ? (args, res)=>res : patches["after"];
|
||||
const handler = {
|
||||
apply: (target, thisArg, args) => {
|
||||
before(args);
|
||||
res = (patches["instead"] === undefined) ? target(...args) : instead(...args);
|
||||
return after(...args, res);
|
||||
}
|
||||
};
|
||||
const prox = new Proxy(parentObj[name], handler);
|
||||
const orig = parentObj[name];
|
||||
parentObj[name] = prox;
|
||||
const unpatch = () => {
|
||||
parentObj[name] = orig;
|
||||
}
|
||||
parentObj[injId] = {
|
||||
name: name,
|
||||
orig: orig,
|
||||
unpatch: unpatch
|
||||
};
|
||||
return unpatch;
|
||||
}
|
||||
module.exports = monkeyPatch
|
Loading…
Reference in new issue