dareway-rui
Version:
262 lines (226 loc) • 10.4 kB
JavaScript
;
var _interopRequireWildcard = require('@babel/runtime/helpers/interopRequireWildcard');
var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault');
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.genState = genState;
exports.genReducers = genReducers;
exports.wrapTagApis = wrapTagApis;
exports.wrapTagEffects = wrapTagEffects;
exports.wrapTagReducers = wrapTagReducers;
exports.wrapTagAction = wrapTagAction;
exports.proxyReducer = proxyReducer;
exports.selectTagStateFromBizVMState = selectTagStateFromBizVMState;
var _regenerator = _interopRequireDefault(require('@babel/runtime/regenerator'));
var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty'));
var _objectSpread4 = _interopRequireDefault(require('@babel/runtime/helpers/objectSpread'));
var sagaEffects = _interopRequireWildcard(require('redux-saga/effects'));
function genState() {
return {
'@@tags': {}
};
}
function genReducers() {
return {
__privateAddTag: function __privateAddTag(state, _ref) {
var payload = _ref.payload;
var tagName = payload.tagName,
tagInitState = payload.tagInitState;
if (state['@@tags'][tagName]) {
throw new Error(
'VM\u4E2D\u5DF2\u5B58\u5728\u540D\u4E3A'.concat(
tagName,
'\u7684\u6807\u7B7E\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
);
}
return (0, _objectSpread4.default)({}, state, {
'@@tags': (0, _objectSpread4.default)(
{},
state['@@tags'],
(0, _defineProperty2.default)({}, tagName, tagInitState)
)
});
},
__privateRemoveTag: function __privateRemoveTag(state, _ref2) {
var payload = _ref2.payload;
var tagName = payload.tagName;
var newTags = (0, _objectSpread4.default)({}, state['@@tags']);
delete newTags[tagName];
return (0, _objectSpread4.default)({}, state, {
'@@tags': newTags
});
}
};
}
function wrapTagApis(bizModelNamespace, tagName, apis) {
function invokeEffectOrReducer(effectOrReducerName, payload) {
return wrapTagAction(bizModelNamespace, tagName, effectOrReducerName, payload);
}
var o = apis(invokeEffectOrReducer);
return Object.keys(o).reduce(function(acc, apiName) {
acc[apiName] =
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
var ret,
_args = arguments;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch ((_context.prev = _context.next)) {
case 0:
ret = o[apiName].apply(o, _args);
if (!(ret && ret.type && ret.payload)) {
_context.next = 9;
break;
}
_context.next = 4;
return sagaEffects.put(ret);
case 4:
_context.next = 6;
return _context.sent;
case 6:
return _context.abrupt('return', _context.sent);
case 9:
return _context.abrupt('return', ret);
case 10:
case 'end':
return _context.stop();
}
}
}, _callee);
});
return acc;
}, {});
}
function wrapTagEffects(effects) {
var o = effects();
return Object.keys(o).reduce(function(acc, effectName) {
acc[effectName] =
/*#__PURE__*/
_regenerator.default.mark(function _callee2(_ref3, RUI) {
var _marked, _marked2, _ref3$payload, tagName, payload, getState, invoke;
return _regenerator.default.wrap(function _callee2$(_context4) {
while (1) {
switch ((_context4.prev = _context4.next)) {
case 0:
invoke = function _ref5(effectOrReducerName, payload) {
return _regenerator.default.wrap(function invoke$(_context3) {
while (1) {
switch ((_context3.prev = _context3.next)) {
case 0:
_context3.next = 2;
return RUI.invoke(effectOrReducerName, {
tagName: tagName,
payload: payload
});
case 2:
return _context3.abrupt('return', _context3.sent);
case 3:
case 'end':
return _context3.stop();
}
}
}, _marked2);
};
getState = function _ref4() {
var bizVMState;
return _regenerator.default.wrap(function getState$(_context2) {
while (1) {
switch ((_context2.prev = _context2.next)) {
case 0:
_context2.next = 2;
return RUI.getState();
case 2:
bizVMState = _context2.sent;
return _context2.abrupt(
'return',
selectTagStateFromBizVMState(bizVMState, tagName)
);
case 4:
case 'end':
return _context2.stop();
}
}
}, _marked);
};
(_marked =
/*#__PURE__*/
_regenerator.default.mark(getState)),
(_marked2 =
/*#__PURE__*/
_regenerator.default.mark(invoke));
(_ref3$payload = _ref3.payload),
(tagName = _ref3$payload.tagName),
(payload = _ref3$payload.payload);
_context4.next = 6;
return o[effectName](
{
payload: payload
},
(0, _objectSpread4.default)({}, RUI, {
getState: getState,
invoke: invoke
})
);
case 6:
_context4.next = 8;
return _context4.sent;
case 8:
return _context4.abrupt('return', _context4.sent);
case 9:
case 'end':
return _context4.stop();
}
}
}, _callee2);
});
return acc;
}, {});
}
function wrapTagReducers(reducers) {
var o = reducers();
return Object.keys(o).reduce(function(acc, reducerName) {
acc[reducerName] = function(state, _ref6) {
var payload = _ref6.payload;
return proxyReducer(state, payload, o[reducerName]);
};
return acc;
}, {});
}
/**
* 业务模型空间名称
* 标签名
* 函数名
* 参数
*/
function wrapTagAction(bizVMNamespace, tagName, effectOrReducerFnName, payload) {
return {
type: ''.concat(bizVMNamespace, '/').concat(effectOrReducerFnName),
payload: {
tagName: tagName,
payload: payload
}
};
}
function proxyReducer(bizVMState, wrappedPayload, tagReducer) {
var tagName = wrappedPayload.tagName,
payload = wrappedPayload.payload;
return (0, _objectSpread4.default)({}, bizVMState, {
'@@tags': (0, _objectSpread4.default)(
{},
bizVMState['@@tags'],
(0, _defineProperty2.default)(
{},
tagName,
tagReducer(bizVMState['@@tags'][tagName], {
payload: payload
})
)
)
});
}
function selectTagStateFromBizVMState(bizVMState, tagName) {
return bizVMState['@@tags'][tagName];
}
//@ sourceMappingURL=extraModelBaseAPI.js.map