mirror of
https://github.com/pysunday/rs-reverse.git
synced 2025-04-12 03:46:56 +08:00
30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
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);
|
||
}
|
||
});
|
||
}
|