UNPKG

genji-core

Version:

The core lightweight library for genji, based on redux and redux-saga.

55 lines (39 loc) 2.15 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = checkModel; var _keys = _interopRequireDefault(require("@babel/runtime/core-js/object/keys")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _invariant = _interopRequireDefault(require("invariant")); var _utils = require("./utils"); function checkModel(model, existModels) { var namespace = model.namespace, mutations = model.mutations, actions = model.actions, subscriptions = model.subscriptions, state = model.state; // namespace 必须被定义 (0, _invariant.default)(namespace, "[app.model] namespace should be defined"); // 并且是字符串 (0, _invariant.default)(typeof namespace === 'string', "[app.model] namespace should be string, but got ".concat((0, _typeof2.default)(namespace))); // 并且唯一 (0, _invariant.default)(!existModels.some(function (model) { return model.namespace === namespace; }), "[app.model] namespace should be unique"); // state 任意 // mutations 可以为空,PlainObject 或者数组 if (mutations) { (0, _invariant.default)((0, _utils.isPlainObject)(mutations), "[app.model] mutations should be plain object, but got ".concat((0, _typeof2.default)(mutations))); } // actions 可以为空,PlainObject if (actions) { (0, _invariant.default)((0, _utils.isPlainObject)(actions), "[app.model] actions should be plain object, but got ".concat((0, _typeof2.default)(actions))); } if (subscriptions) { // subscriptions 可以为空,PlainObject (0, _invariant.default)((0, _utils.isPlainObject)(subscriptions), "[app.model] subscriptions should be plain object, but got ".concat((0, _typeof2.default)(subscriptions))); // subscription 必须为函数 (0, _invariant.default)(isAllFunction(subscriptions), "[app.model] subscription should be function"); } } function isAllFunction(obj) { return (0, _keys.default)(obj).every(function (key) { return (0, _utils.isFunction)(obj[key]); }); }