o2-client
Version:
Light Client for O2 Blockchain
140 lines (118 loc) • 2.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.validateInteger = validateInteger;
exports.validateBigInteger = validateBigInteger;
exports.validateFloat = validateFloat;
exports.validateHexadecimal = validateHexadecimal;
exports.validateBytesArray = validateBytesArray;
exports.validateBinaryString = validateBinaryString;
var _bigInteger = require('big-integer');
var _bigInteger2 = _interopRequireDefault(_bigInteger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @param {number} value
* @param {number} min
* @param {number} max
* @param {number} from
* @param {number} length
* @returns {boolean}
*/
function validateInteger(value, min, max, from, length) {
if (typeof value !== 'number' || value < min || value > max) {
return false;
}
return true;
}
/**
* @param {number|string} value
* @param {number} min
* @param {number} max
* @param {number} from
* @param {number} length
* @returns {*}
*/
function validateBigInteger(value, min, max, from, length) {
if (!(typeof value === 'number' || typeof value === 'string')) {
return false;
}
var val = void 0;
try {
val = (0, _bigInteger2.default)(value);
} catch (error) {
return false;
}
if (val.lt(min) || val.gt(max)) {
return false;
}
return true;
}
/**
* @param {number} value
* @param {number} from
* @param {number} length
* @returns {boolean}
*/
function validateFloat(value, from, length) {
return typeof value === 'number' || typeof value === 'string';
}
/**
* @param {string} hash
* @param {number} [bytes=32] - optional
* @returns {boolean}
*/
function validateHexadecimal(hash, bytes) {
bytes = bytes || 32;
if (typeof hash !== 'string') {
return false;
}
if (hash.length !== bytes * 2) {
// 'hexadecimal string is of wrong length
return false;
}
for (var i = 0; i < hash.length; i++) {
if (isNaN(parseInt(hash[i], 16))) {
// invalid symbol in hexadecimal string
return false;
}
}
return true;
}
/**
* @param {Array} arr
* @param {number} [bytes] - optional
* @returns {boolean}
*/
function validateBytesArray(arr, bytes) {
if (!Array.isArray(arr) && !(arr instanceof Uint8Array)) {
return false;
}
if (bytes && arr.length !== bytes) {
// array is of wrong length
return false;
}
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] !== 'number' || arr[i] < 0 || arr[i] > 255) {
return false;
}
}
return true;
}
/**
* @param {string} str
* @param {number} [bits] - optional
* @returns {*}
*/
function validateBinaryString(str, bits) {
if (bits !== undefined && str.length !== bits) {
return false;
}
for (var i = 0; i < str.length; i++) {
if (str[i] !== '0' && str[i] !== '1') {
// wrong bit
return false;
}
}
return true;
}