UNPKG

exonum-client-cis

Version:

Light Client for Exonum CIS Blockchain

68 lines (55 loc) 1.77 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.isObject = isObject; exports.verifyElement = verifyElement; exports.cleanZeroValuedFields = cleanZeroValuedFields; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); function isStrictTypedArray(arr) { return arr instanceof Int8Array || arr instanceof Int16Array || arr instanceof Int32Array || arr instanceof Uint8Array || arr instanceof Uint8ClampedArray || arr instanceof Uint16Array || arr instanceof Uint32Array || arr instanceof Float32Array || arr instanceof Float64Array; } /** * Check if element is of type Object * @param obj * @returns {boolean} */ function isObject(obj) { return (0, _typeof2["default"])(obj) === 'object' && !Array.isArray(obj) && obj !== null && !(obj instanceof Date); } /** * @param {Object} element * @returns {boolean} */ function verifyElement(element) { switch ((0, _typeof2["default"])(element)) { case 'string': return element !== '0' && element.length !== 0; case 'number': return element !== 0; } return true; } /** * @param {Object} data * @param {Object} object * @returns {Object} */ function cleanZeroValuedFields(data, object) { var keys = Object.keys(data); keys.forEach(function (key) { if (isStrictTypedArray(data[key]) || data[key] instanceof Array) { object[key] = data[key]; } else { if ((0, _typeof2["default"])(data[key]) === 'object') { object[key] = cleanZeroValuedFields(data[key], {}); } else { if (verifyElement(data[key])) { object[key] = data[key]; } } } }); return object; }