UNPKG

@mic-rexjs/usecases

Version:
59 lines (58 loc) 2.85 kB
"use strict"; 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 }); };