servuex
Version:
Abstraction service layer on top of vuex store
152 lines (124 loc) • 4.59 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BaseServuex = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldGet"));
var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldSet"));
var _errors = require("./errors");
var BaseServuex = /*#__PURE__*/function () {
function BaseServuex(namespace, store) {
(0, _classCallCheck2["default"])(this, BaseServuex);
_namespace.set(this, {
writable: true,
value: null
});
_store.set(this, {
writable: true,
value: null
});
_initialized.set(this, {
writable: true,
value: false
});
(0, _classPrivateFieldSet2["default"])(this, _namespace, namespace);
(0, _classPrivateFieldSet2["default"])(this, _store, store);
}
(0, _createClass2["default"])(BaseServuex, [{
key: "initialize",
value: function initialize() {
if ((0, _classPrivateFieldGet2["default"])(this, _initialized)) {
throw new _errors.AlreadyInitializedError();
}
var schema = this.getStoreSchema();
this.createStoreModule(schema);
this.decorateState(schema.state);
(0, _classPrivateFieldSet2["default"])(this, _initialized, true);
}
}, {
key: "getMutationName",
value: function getMutationName(name) {
return "set_".concat(name);
}
}, {
key: "getStoreSchema",
value: function getStoreSchema() {
var _this = this;
var schema = {
namespaced: true,
state: {},
mutations: {},
actions: {},
getters: {}
};
var proto = this;
while (proto && proto.constructor !== BaseServuex) {
var descriptors = Object.getOwnPropertyDescriptors(proto);
Object.entries(descriptors).filter(function (_ref) {
var _ref2 = (0, _slicedToArray2["default"])(_ref, 1),
name = _ref2[0];
return name !== 'constructor';
}).forEach(function (_ref3) {
var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
name = _ref4[0],
descriptor = _ref4[1];
if (typeof descriptor.value === 'function' && name !== 'constructor') {
schema.actions[name] = descriptor.value.bind(_this);
} else if (typeof descriptor.get === 'function') {
schema.getters[name] = descriptor.get.bind(_this);
}
});
proto = Object.getPrototypeOf(proto);
}
Object.entries(this).forEach(function (_ref5) {
var _ref6 = (0, _slicedToArray2["default"])(_ref5, 2),
key = _ref6[0],
value = _ref6[1];
schema.state[key] = value;
schema.mutations[_this.getMutationName(key)] = function mutation(state, val) {
state[key] = val;
};
});
return schema;
}
}, {
key: "createStoreModule",
value: function createStoreModule(schema) {
(0, _classPrivateFieldGet2["default"])(this, _store).registerModule(this.namespace, schema);
}
}, {
key: "decorateState",
value: function decorateState(state) {
var _this2 = this;
Object.entries(state).forEach(function (_ref7) {
var _ref8 = (0, _slicedToArray2["default"])(_ref7, 1),
name = _ref8[0];
Object.defineProperty(_this2, name, {
configurable: true,
enumerable: true,
get: function get() {
return (0, _classPrivateFieldGet2["default"])(_this2, _store).state[(0, _classPrivateFieldGet2["default"])(_this2, _namespace)][name];
},
set: function set(v) {
(0, _classPrivateFieldGet2["default"])(_this2, _store).commit("".concat(_this2.namespace, "/").concat(_this2.getMutationName(name)), v);
}
});
});
}
}, {
key: "namespace",
get: function get() {
return (0, _classPrivateFieldGet2["default"])(this, _namespace);
}
}]);
return BaseServuex;
}();
exports.BaseServuex = BaseServuex;
var _namespace = new WeakMap();
var _store = new WeakMap();
var _initialized = new WeakMap();
//# sourceMappingURL=base-servuex.js.map