UNPKG

framework4js

Version:

Framework-for-js is a better Javascript's framework

79 lines (76 loc) 2.48 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _Exception = _interopRequireDefault(require("../spanners/Exception")); var _Lib = _interopRequireDefault(require("../spanners/Lib")); // /** // * Class VuexAdapter // * Vuex 适配器 // */ var VuexAdapter = /*#__PURE__*/function () { function VuexAdapter($object) { (0, _classCallCheck2["default"])(this, VuexAdapter); if (!_Lib["default"].isObject($object)) { throw new _Exception["default"]('The Vuex must be an Object', 'AdapterError'); } this.Vuex = $object; // 模型容器最终注入modules this.modelContainer = {}; // setModules this.setModules(); } /** * Method setModules */ (0, _createClass2["default"])(VuexAdapter, [{ key: "setModules", value: function setModules() { var _this = this; try { var jss = null; // "@/app/store/" directory does not exist try { jss = require.context("@/app/store/", true, /\.js$/); } catch (error) { console.warn('"@/app/store/" directory does not exist. You cannot use Vuex'); return; } var modules = jss.keys().reduce(function (modules, modulePath) { var moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1'); var value = jss(modulePath); modules[moduleName] = value["default"]; return modules; }, {}); // Object if (_Lib["default"].isObject(modules)) { Object.keys(modules).forEach(function (className) { var model = new modules[className](); var obj = {}; obj[model.alias] = model; Object.assign(_this.modelContainer, obj); }); } } catch (e) { throw new _Exception["default"]("@/app/store/ ".concat(e.message), 'StorePathError'); } } /** * Method getStore * @returns store instance */ }, { key: "getStore", value: function getStore() { return new this.Vuex.Store({ modules: this.modelContainer }); } }]); return VuexAdapter; }(); exports["default"] = VuexAdapter;