123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.xrpToDrops = exports.dropsToXrp = void 0;
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
- const errors_1 = require("../errors");
- const DROPS_PER_XRP = 1000000.0;
- const MAX_FRACTION_LENGTH = 6;
- const BASE_TEN = 10;
- const SANITY_CHECK = /^-?[0-9.]+$/u;
- function dropsToXrp(dropsToConvert) {
- const drops = new bignumber_js_1.default(dropsToConvert).toString(BASE_TEN);
- if (typeof dropsToConvert === 'string' && drops === 'NaN') {
- throw new errors_1.ValidationError(`dropsToXrp: invalid value '${dropsToConvert}', should be a BigNumber or string-encoded number.`);
- }
- if (drops.includes('.')) {
- throw new errors_1.ValidationError(`dropsToXrp: value '${drops}' has too many decimal places.`);
- }
- if (!SANITY_CHECK.exec(drops)) {
- throw new errors_1.ValidationError(`dropsToXrp: failed sanity check -` +
- ` value '${drops}',` +
- ` does not match (^-?[0-9]+$).`);
- }
- return new bignumber_js_1.default(drops).dividedBy(DROPS_PER_XRP).toString(BASE_TEN);
- }
- exports.dropsToXrp = dropsToXrp;
- function xrpToDrops(xrpToConvert) {
- const xrp = new bignumber_js_1.default(xrpToConvert).toString(BASE_TEN);
- if (typeof xrpToConvert === 'string' && xrp === 'NaN') {
- throw new errors_1.ValidationError(`xrpToDrops: invalid value '${xrpToConvert}', should be a BigNumber or string-encoded number.`);
- }
- if (!SANITY_CHECK.exec(xrp)) {
- throw new errors_1.ValidationError(`xrpToDrops: failed sanity check - value '${xrp}', does not match (^-?[0-9.]+$).`);
- }
- const components = xrp.split('.');
- if (components.length > 2) {
- throw new errors_1.ValidationError(`xrpToDrops: failed sanity check - value '${xrp}' has too many decimal points.`);
- }
- const fraction = components[1] || '0';
- if (fraction.length > MAX_FRACTION_LENGTH) {
- throw new errors_1.ValidationError(`xrpToDrops: value '${xrp}' has too many decimal places.`);
- }
- return new bignumber_js_1.default(xrp)
- .times(DROPS_PER_XRP)
- .integerValue(bignumber_js_1.default.ROUND_FLOOR)
- .toString(BASE_TEN);
- }
- exports.xrpToDrops = xrpToDrops;
- //# sourceMappingURL=xrpConversion.js.map
|