UNPKG

define-state

Version:
49 lines (43 loc) 966 B
/** * Define stateful property on an object */ module.exports = defineState; var State = require('st8'); State.ENTER = 'before' State.EXIT = 'after' /** * Define stateful property on a target * * @param {object} target Any object * @param {string} property Property name * @param {object} descriptor State descriptor * * @return {object} target */ function defineState (target, property, descriptor, isFn) { //define accessor on a target if (isFn) { target[property] = function () { if (arguments.length) { return state.set(arguments[0]); } else { return state.get(); } }; } //define setter/getter on a target else { Object.defineProperty(target, property, { set: function (value) { return state.set(value); }, get: function () { return state.get(); } }); } //define state controller var state = new State(descriptor, target); return target; }