UNPKG

@berrywallet/core

Version:

Berrywallet main Core for work with common cryptocurrencies like Bitcoin, Ethereum, Dash, Litecoin

102 lines (101 loc) 3.18 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; } var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; } Object.defineProperty(exports, "__esModule", { value: true }); const bignumber_js_1 = __importDefault(require("bignumber.js")); const EthereumJsUtil = __importStar(require("ethereumjs-util")); const Crypto = __importStar(require("./crypto")); exports.Crypto = Crypto; function isHexPrefixed(hex) { return hex.slice(0, 2) === '0x'; } exports.isHexPrefixed = isHexPrefixed; function isHexValid(hex, length = null, prefix = 0) { if (!/^(0x)?([0-9a-fA-F]+)?$/i.test(hex)) { return false; } let isPrefixed = isHexPrefixed(hex); if (prefix != 2 && (!!prefix) != isPrefixed) { return false; } if (length) { length *= 2; if (isPrefixed) { length += 2; } if (hex.length != length) { return false; } } else { let minLength = isPrefixed ? 2 : 0; if (hex.length < minLength || hex.length % 2 != 0) { return false; } } return true; } exports.isHexValid = isHexValid; function addHexPrefix(hex) { if (hex instanceof Buffer) { hex = hex.toString('hex'); } return EthereumJsUtil.addHexPrefix(hex); } exports.addHexPrefix = addHexPrefix; function padHexToEven(a) { if (a.length % 2) a = '0' + a; return a; } exports.padHexToEven = padHexToEven; function hexToBuffer(hex) { if (!isHexValid(hex, null, 2)) { throw new TypeError(`Invalid hex string ${hex}`); } if (isHexPrefixed(hex)) { hex = hex.slice(2); } return Buffer.from(hex.toLowerCase(), 'hex'); } exports.hexToBuffer = hexToBuffer; function validateAmountValue(value, minValue, allowZero = true) { if (value.isNegative()) { throw new RangeError("Value cannot be negative"); } if (value.decimalPlaces() > minValue.decimalPlaces()) { throw new RangeError(`Value (${value}) has more decimals than min value (${minValue})`); } if (!allowZero && value.isZero()) { throw new RangeError("Value cannot be zero"); } return value; } exports.validateAmountValue = validateAmountValue; function bigNumberToBuffer(value) { if (!value.isInteger()) { throw new Error("Value must be integer"); } return hexToBuffer(padHexToEven(value.toString(16))); } exports.bigNumberToBuffer = bigNumberToBuffer; function bufferToBigNumber(buffer) { return new bignumber_js_1.default(buffer.toString('hex'), 16); } exports.bufferToBigNumber = bufferToBigNumber; function numberToHex(number) { return "0x" + (new bignumber_js_1.default(number).toString(16)); } exports.numberToHex = numberToHex; function hexToBigNumber(hexNumber) { return new bignumber_js_1.default(hexNumber); } exports.hexToBigNumber = hexToBigNumber;