UNPKG

servuex

Version:

Abstraction service layer on top of vuex store

152 lines (124 loc) 4.59 kB
"use strict"; 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