framework4js
Version:
Framework-for-js is a better Javascript's framework
79 lines (76 loc) • 2.48 kB
JavaScript
;
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;