@stand/base
Version:
154 lines (124 loc) • 4.6 kB
JavaScript
;
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var _Object$keys = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/keys'));
var _forEachInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/for-each'));
var _concatInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/concat'));
var _classCallCheck = _interopDefault(require('@babel/runtime-corejs3/helpers/classCallCheck'));
var _createClass = _interopDefault(require('@babel/runtime-corejs3/helpers/createClass'));
var _possibleConstructorReturn = _interopDefault(require('@babel/runtime-corejs3/helpers/possibleConstructorReturn'));
var _getPrototypeOf = _interopDefault(require('@babel/runtime-corejs3/helpers/getPrototypeOf'));
var _inherits = _interopDefault(require('@babel/runtime-corejs3/helpers/inherits'));
var _Symbol = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/symbol'));
var _merge = _interopDefault(require('lodash/merge'));
var StandEvent = _interopDefault(require('@stand/event'));
var symbolsSymbol = _Symbol('symbols');
var StandBase =
/*#__PURE__*/
function (_StandEvent) {
_inherits(StandBase, _StandEvent);
function StandBase() {
var _getPrototypeOf2, _context;
var _this;
_classCallCheck(this, StandBase);
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
params[_key] = arguments[_key];
}
_this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(StandBase)).call.apply(_getPrototypeOf2, _concatInstanceProperty(_context = [this]).call(_context, params)));
_this[symbolsSymbol] = {};
_this.addSetAndGetMethods('set', 'get');
return _this;
}
_createClass(StandBase, [{
key: "getSameSymbol",
value: function getSameSymbol(key) {
if (!this[symbolsSymbol][key]) {
this[symbolsSymbol][key] = _Symbol(key);
}
return this[symbolsSymbol][key];
}
}, {
key: "addSetAndGetMethods",
value: function addSetAndGetMethods(setName, getName, props) {
var _this2 = this;
var datas = {};
this.setReadOnlyProps(setName, props);
var propsSymbol = this.getSameSymbol(setName);
this[setName] = function (key, value) {
var readOnlys = _this2[propsSymbol] || {};
if (typeof value === 'undefined') {
var _context2;
var config = key || {};
_forEachInstanceProperty(_context2 = _Object$keys(readOnlys)).call(_context2, function (prop) {
if (typeof config[prop] !== 'undefined') {
_this2.emit('STANDLOG', {
code: 300002,
message: 'can not set readonly props',
detail: {
method: setName,
prop: prop,
value: config[prop]
}
});
delete config[prop];
}
});
_merge(datas, config);
} else {
if (!readOnlys[key]) {
datas[key] = value;
} else {
_this2.emit('STANDLOG', {
code: 300001,
message: 'can not set readonly prop',
detail: {
method: setName,
prop: key,
value: value
}
});
}
}
return _this2;
};
this[getName] = function (field) {
if (field) {
return datas[field];
}
return datas;
};
return this;
}
}, {
key: "setReadOnlyProps",
value: function setReadOnlyProps(setName) {
var _context3;
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var propsSymbol = this.getSameSymbol(setName);
var readOnlys = this[propsSymbol] = this[propsSymbol] || {};
_forEachInstanceProperty(_context3 = _Object$keys(props)).call(_context3, function (key) {
if (props[key]) {
readOnlys[key] = true;
} else {
delete readOnlys[key];
}
});
this.emit('STANDLOG', {
code: 200001,
message: 'add readonly props',
detail: {
method: setName,
value: props
}
});
return this;
}
}, {
key: "rewrite",
value: function rewrite(name, method) {
this[name] = method;
return this;
}
}]);
return StandBase;
}(StandEvent);
module.exports = StandBase;