aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/ensnare.js
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2016-05-23 06:23:16 +0800
committerkumavis <aaron@kumavis.me>2016-05-23 06:23:16 +0800
commit00e9f3c6ae2d4092f0c9270d113d7e6dd47ddf0b (patch)
tree06711908a618aa911c6a820b039bf748f52c240c /app/scripts/lib/ensnare.js
parent27790b38a95e219b7663852150b82387cedb58e2 (diff)
downloadtangerine-wallet-browser-00e9f3c6ae2d4092f0c9270d113d7e6dd47ddf0b.tar.gz
tangerine-wallet-browser-00e9f3c6ae2d4092f0c9270d113d7e6dd47ddf0b.tar.zst
tangerine-wallet-browser-00e9f3c6ae2d4092f0c9270d113d7e6dd47ddf0b.zip
inpage - refactor for modularity
Diffstat (limited to 'app/scripts/lib/ensnare.js')
-rw-r--r--app/scripts/lib/ensnare.js24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/scripts/lib/ensnare.js b/app/scripts/lib/ensnare.js
new file mode 100644
index 000000000..b70330a5a
--- /dev/null
+++ b/app/scripts/lib/ensnare.js
@@ -0,0 +1,24 @@
+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
+}