@mic-rexjs/usecases
Version:
Usecases of Clean Architecture
59 lines (58 loc) • 2.85 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.objectUseCase = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _entityUseCase = require("../entityUseCase");
var _getAccessorDescriptorMap = require("./methods/getAccessorDescriptorMap");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var objectUseCase = exports.objectUseCase = function objectUseCase() {
var hasAccessors = false;
var accessorDescriptors = null;
var entityReducers = (0, _entityUseCase.entityUseCase)();
var setEntity = /*#__PURE__*/_regenerator["default"].mark(function setEntity(entity, settableEntity) {
var newEntity;
return _regenerator["default"].wrap(function setEntity$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!(typeof settableEntity === 'function')) {
_context.next = 6;
break;
}
newEntity = settableEntity(entity);
if (!(entity === newEntity)) {
_context.next = 4;
break;
}
return _context.abrupt("return", newEntity);
case 4:
_context.next = 7;
break;
case 6:
newEntity = _objectSpread(_objectSpread({}, entity), settableEntity);
case 7:
if (accessorDescriptors === null) {
accessorDescriptors = (0, _getAccessorDescriptorMap.getAccessorDescriptorMap)(entity);
hasAccessors = Object.keys(accessorDescriptors).length > 0;
}
if (hasAccessors) {
Object.defineProperties(newEntity, accessorDescriptors);
}
_context.next = 11;
return newEntity;
case 11:
return _context.abrupt("return", _context.sent);
case 12:
case "end":
return _context.stop();
}
}, setEntity);
});
return _objectSpread(_objectSpread({}, entityReducers), {}, {
setEntity: setEntity
});
};