UNPKG

@mic-rexjs/usecases-react

Version:

React-based solution for use usecases of Clean Architecture

49 lines (48 loc) 2.03 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.compareProperty = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _hasField = require("../hasField"); var compareProperty = exports.compareProperty = function compareProperty(from, to, fieldPath, callback) { var fieldPathStack = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : []; var undef = void 0; var _ref = fieldPath.match(/^([^.]+)\.(.+)$/) || [], _ref2 = (0, _slicedToArray2["default"])(_ref, 3), _ref2$ = _ref2[1], key = _ref2$ === void 0 ? fieldPath : _ref2$, _ref2$2 = _ref2[2], subFieldPath = _ref2$2 === void 0 ? '' : _ref2$2; var hasFromField = (0, _hasField.hasField)(from, key); var hasToField = (0, _hasField.hasField)(to, key); var currentFieldPathStack = [].concat((0, _toConsumableArray2["default"])(fieldPathStack), [key]); if (hasFromField || hasToField) { var fromValue = hasFromField ? from[key] : undef; var toValue = hasToField ? to[key] : undef; if (subFieldPath) { compareProperty(fromValue, toValue, subFieldPath, callback, currentFieldPathStack); return; } if (fromValue === toValue) { return; } callback(fromValue, toValue, currentFieldPathStack); return; } if (/^\d+^/.test(key)) { return; } var fromArray = Array.isArray(from) ? from : []; var toArray = Array.isArray(to) ? to : []; var fromLength = fromArray.length; var toLength = toArray.length; var length = Math.max(fromLength, toLength); for (var i = 0; i < length; i++) { var fromItem = fromArray[i]; var toItem = toArray[i]; compareProperty(fromItem, toItem, fieldPath, callback, [].concat((0, _toConsumableArray2["default"])(fieldPathStack), ["".concat(i)])); } };