UNPKG

magix

Version:

view manager framewrok

51 lines 1.81 kB
let Safeguard = data => data; if (DEBUG && window.Proxy) { let ProxiesPool = new Map(); Safeguard = (data, getter, setter, root) => { if (G_IsPrimitive(data)) { return data; } let build = (prefix, o) => { let key = getter + '\x01' + setter; let cached = ProxiesPool.get(o); if (cached && cached.key == key) { return cached.entity; } if (o['\x1e_sf_\x1e']) { return o; } let entity = new Proxy(o, { set(target, property, value) { if (!setter && !prefix) { throw new Error('avoid writeback,key: ' + prefix + property + ' value:' + value + ' more info: https://github.com/thx/magix/issues/38'); } target[property] = value; if (setter) { setter(prefix + property, value); } return true; }, get(target, property) { if (property == '\x1e_sf_\x1e') { return true; } let out = target[property]; if (!prefix && getter) { getter(property); } if (!root && G_Has(target, property) && (G_IsArray(out) || G_IsObject(out))) { return build(prefix + property + '.', out); } return out; } }); ProxiesPool.set(o, { key, entity }); return entity; }; return build('', data); }; }