mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-24 02:58:09 +01:00
25 lines
607 B
JavaScript
25 lines
607 B
JavaScript
|
module.exports = ensnare
|
||
|
|
||
|
// creates a proxy object that calls cb everytime the obj's properties/fns are accessed
|
||
|
function ensnare(obj, cb){
|
||
|
var proxy = {}
|
||
|
Object.keys(obj).forEach(function(key){
|
||
|
var val = obj[key]
|
||
|
switch (typeof val) {
|
||
|
case 'function':
|
||
|
proxy[key] = function(){
|
||
|
cb()
|
||
|
val.apply(obj, arguments)
|
||
|
}
|
||
|
return
|
||
|
default:
|
||
|
Object.defineProperty(proxy, key, {
|
||
|
get: function(){ cb(); return obj[key] },
|
||
|
set: function(val){ cb(); return obj[key] = val },
|
||
|
})
|
||
|
return
|
||
|
}
|
||
|
})
|
||
|
return proxy
|
||
|
}
|