rs-reverse/utils/monitor.js
2024-01-04 13:27:22 +08:00

30 lines
1.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const logger = require('./logger');
module.exports = function monitor(tar, name, config = {}) {
const {
getLog, // 开启get日志
setLog, // 开启set日志
getKeys = [], // 触发get的debugger的键集合
setKeys = [], // 触发set的debugger的键集合
keys = [], // 触发debugger的键集合
getCb, // get的回调设置的debugger更友好
setCb, // set的回调设置的debugger更友好
cb, // 回调设置的debugger更友好
parse = (key, val) => val,
} = config;
return new Proxy(tar, {
get: function(target, property, receiver) {
getLog && logger.trace(`${name} Getting ${property}`);
if (getKeys.includes(property) || keys.includes(property)) debugger;
(getCb || cb)?.(property);
return Reflect.get(target, property, receiver);
},
set: function(target, property, value, receiver) {
setLog && logger.trace(`${name} Setting ${property} to ${value}`);
if (getKeys.includes(property) || keys.includes(property)) debugger;
(setCb || cb)?.(property, value);
return Reflect.set(target, property, parse(property, value), receiver);
}
});
}