'use strict'; | |
module.exports = (object, propertyName, fn) => { | |
const define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true}); | |
Object.defineProperty(object, propertyName, { | |
configurable: true, | |
enumerable: true, | |
get() { | |
const result = fn(); | |
define(result); | |
return result; | |
}, | |
set(value) { | |
define(value); | |
} | |
}); | |
return object; | |
}; |