@smontero/ppp-client-api
Version:
Project People & Profile client api
427 lines (354 loc) • 12.9 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _getRandomValues = _interopRequireDefault(require("get-random-values"));
var Util =
/*#__PURE__*/
function () {
function Util() {
(0, _classCallCheck2["default"])(this, Util);
}
(0, _createClass2["default"])(Util, null, [{
key: "isEmptyObj",
value: function isEmptyObj(obj) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) return false;
}
return true;
}
}, {
key: "_wasFound",
value: function _wasFound(str, chars, pos) {
var not = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var foundChar = chars.indexOf(str.charAt(pos)) > -1;
return foundChar && !not || !foundChar && not;
}
}, {
key: "indexOf",
value: function indexOf(str, chars, pos) {
var not = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
for (var i = pos; i < str.length; i++) {
if (this._wasFound(str, chars, i, not)) {
return i;
}
}
return -1;
}
}, {
key: "lastIndexOf",
value: function lastIndexOf(str, chars, pos) {
var not = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
for (var i = pos; i >= 0; i--) {
if (this._wasFound(str, chars, i, not)) {
return i;
}
}
return -1;
}
}, {
key: "modifiedProps",
value: function modifiedProps(oldObj, newObj, _props) {
var mod = {};
var props = _props;
props = props || Object.keys(oldObj);
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = props[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var prop = _step.value;
if (!Util.areEqual(oldObj[prop], newObj[prop])) {
mod[prop] = true;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
_iterator["return"]();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return Util.isEmptyObj(mod) ? null : mod;
}
}, {
key: "toKeyValue",
value: function toKeyValue(objs, key, value) {
var keyValue = {};
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = objs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var obj = _step2.value;
keyValue[obj[key]] = obj[value];
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
_iterator2["return"]();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
return keyValue;
}
}, {
key: "areArraysEqual",
value: function areArraysEqual(a1, a2) {
return a1.length === a2.length && !a1.some(function (v) {
return a2.indexOf(v) < 0;
});
}
}, {
key: "cloneArray",
value: function cloneArray(a) {
return a.slice(0);
}
/**
* @desc Removes duplicate elements from array
*/
}, {
key: "removeDuplicates",
value: function removeDuplicates(values) {
values = Array.isArray(values) ? values : [values];
return (0, _toConsumableArray2["default"])(new Set(values));
}
}, {
key: "areEqual",
value: function areEqual(v1, v2) {
// Get the value type
var type = Object.prototype.toString.call(v1); // If the two objects are not the same type, return false
if (type !== Object.prototype.toString.call(v2)) return false; // If items are not an object or array, return false
if (['[object Array]', '[object Object]'].indexOf(type) < 0) {
return v1 === v2;
} // Compare the length of the length of the two items
var valueLen = type === '[object Array]' ? v1.length : Object.keys(v1).length;
var otherLen = type === '[object Array]' ? v2.length : Object.keys(v2).length;
if (valueLen !== otherLen) return false; // Compare two items
function compare(item1, item2) {
// Get the object type
var itemType = Object.prototype.toString.call(item1); // If an object or array, compare recursively
if (['[object Array]', '[object Object]'].indexOf(itemType) >= 0) {
if (!Util.areEqual(item1, item2)) return false;
} // Otherwise, do a simple comparison
else {
// If the two items are not the same type, return false
if (itemType !== Object.prototype.toString.call(item2)) return false; // Else if it's a function, convert to a string and compare
// Otherwise, just compare
if (itemType === '[object Function]') {
if (item1.toString() !== item2.toString()) return false;
} else if (item1 !== item2) return false;
}
return false;
} // Compare properties
if (type === '[object Array]') {
for (var i = 0; i < valueLen; i++) {
if (compare(v1[i], v2[i]) === false) return false;
}
} else {
for (var key in v1) {
if (v1.hasOwnProperty(key)) {
if (compare(v1[key], v2[key]) === false) return false;
}
}
} // If nothing failed, return true
return true;
}
}, {
key: "getPropertyValue",
value: function getPropertyValue(obj, property) {
var typeMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (obj) {
obj = obj[property];
}
if (typeMode && obj) {
obj = obj[Object.keys(obj)[0]];
}
return obj;
}
/**
* Gets path in object if it does not exist return value
*
* @param {object} obj
* @param {string} path string path separated by '.' char
*/
}, {
key: "getPath",
value: function getPath(obj, path, value) {
var typeMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var steps = path.split('.');
var currentObj = obj;
var i = 0;
while (currentObj && i < steps.length - 1) {
currentObj = this.getPropertyValue(currentObj, steps[i], typeMode);
i++;
}
if (!currentObj) {
return value;
}
currentObj = this.getPropertyValue(currentObj, steps[steps.length - 1], typeMode);
return typeof currentObj === 'undefined' ? value : currentObj;
}
}, {
key: "removeLeadingZeros",
value: function removeLeadingZeros(_value) {
var value = _value.toString();
return value.replace(/^0*/, '');
}
}, {
key: "getValueOfKey",
value: function getValueOfKey(key, array) {
// recorr array
for (var item in array) {
if (array[item].value === key) {
return array[item].display;
}
}
return null;
}
}, {
key: "isString",
value: function isString(value) {
return typeof value === 'string' || value instanceof String;
}
}, {
key: "getRandomString",
value: function getRandomString(length) {
var randomValues = new Uint8Array(length);
(0, _getRandomValues["default"])(randomValues);
return Array.from(randomValues).map(Util.intToHex).join('');
}
}, {
key: "intToHex",
value: function intToHex(number) {
return number.toString(16).padStart(2, '0');
}
}, {
key: "hydrate",
value: function () {
var _hydrate = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee(objs, keyProp, hydratedProp, hydrateFn) {
var keyValues, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, obj, keyValue, keyData, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, _obj;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
keyValues = [];
_iteratorNormalCompletion3 = true;
_didIteratorError3 = false;
_iteratorError3 = undefined;
_context.prev = 4;
for (_iterator3 = objs[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
obj = _step3.value;
keyValue = obj[keyProp];
if (keyValue) keyValues.push(keyValue);
}
_context.next = 12;
break;
case 8:
_context.prev = 8;
_context.t0 = _context["catch"](4);
_didIteratorError3 = true;
_iteratorError3 = _context.t0;
case 12:
_context.prev = 12;
_context.prev = 13;
if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
_iterator3["return"]();
}
case 15:
_context.prev = 15;
if (!_didIteratorError3) {
_context.next = 18;
break;
}
throw _iteratorError3;
case 18:
return _context.finish(15);
case 19:
return _context.finish(12);
case 20:
keyValues = Util.removeDuplicates(keyValues);
if (!(keyValues.length === 0)) {
_context.next = 23;
break;
}
return _context.abrupt("return", objs);
case 23:
_context.next = 25;
return hydrateFn(keyValues);
case 25:
keyData = _context.sent;
_iteratorNormalCompletion4 = true;
_didIteratorError4 = false;
_iteratorError4 = undefined;
_context.prev = 29;
for (_iterator4 = objs[Symbol.iterator](); !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
_obj = _step4.value;
_obj[hydratedProp] = keyData[_obj[keyProp]];
}
_context.next = 37;
break;
case 33:
_context.prev = 33;
_context.t1 = _context["catch"](29);
_didIteratorError4 = true;
_iteratorError4 = _context.t1;
case 37:
_context.prev = 37;
_context.prev = 38;
if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
_iterator4["return"]();
}
case 40:
_context.prev = 40;
if (!_didIteratorError4) {
_context.next = 43;
break;
}
throw _iteratorError4;
case 43:
return _context.finish(40);
case 44:
return _context.finish(37);
case 45:
return _context.abrupt("return", objs);
case 46:
case "end":
return _context.stop();
}
}
}, _callee, null, [[4, 8, 12, 20], [13,, 15, 19], [29, 33, 37, 45], [38,, 40, 44]]);
}));
function hydrate(_x, _x2, _x3, _x4) {
return _hydrate.apply(this, arguments);
}
return hydrate;
}()
}]);
return Util;
}();
var _default = Util;
exports["default"] = _default;