123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.parseAmountValue = exports.validateBaseTransaction = exports.isAmount = exports.isIssuedCurrency = void 0;
- const ripple_binary_codec_1 = require("ripple-binary-codec");
- const errors_1 = require("../../errors");
- const utils_1 = require("../utils");
- const MEMO_SIZE = 3;
- function isMemo(obj) {
- if (obj.Memo == null) {
- return false;
- }
- const memo = obj.Memo;
- const size = Object.keys(memo).length;
- const validData = memo.MemoData == null || typeof memo.MemoData === 'string';
- const validFormat = memo.MemoFormat == null || typeof memo.MemoFormat === 'string';
- const validType = memo.MemoType == null || typeof memo.MemoType === 'string';
- return (size >= 1 &&
- size <= MEMO_SIZE &&
- validData &&
- validFormat &&
- validType &&
- (0, utils_1.onlyHasFields)(memo, ['MemoFormat', 'MemoData', 'MemoType']));
- }
- const SIGNER_SIZE = 3;
- function isSigner(obj) {
- const signerWrapper = obj;
- if (signerWrapper.Signer == null) {
- return false;
- }
- const signer = signerWrapper.Signer;
- return (Object.keys(signer).length === SIGNER_SIZE &&
- typeof signer.Account === 'string' &&
- typeof signer.TxnSignature === 'string' &&
- typeof signer.SigningPubKey === 'string');
- }
- const ISSUED_CURRENCY_SIZE = 3;
- function isRecord(value) {
- return value !== null && typeof value === 'object';
- }
- function isIssuedCurrency(input) {
- return (isRecord(input) &&
- Object.keys(input).length === ISSUED_CURRENCY_SIZE &&
- typeof input.value === 'string' &&
- typeof input.issuer === 'string' &&
- typeof input.currency === 'string');
- }
- exports.isIssuedCurrency = isIssuedCurrency;
- function isAmount(amount) {
- return typeof amount === 'string' || isIssuedCurrency(amount);
- }
- exports.isAmount = isAmount;
- function validateBaseTransaction(common) {
- if (common.Account === undefined) {
- throw new errors_1.ValidationError('BaseTransaction: missing field Account');
- }
- if (typeof common.Account !== 'string') {
- throw new errors_1.ValidationError('BaseTransaction: Account not string');
- }
- if (common.TransactionType === undefined) {
- throw new errors_1.ValidationError('BaseTransaction: missing field TransactionType');
- }
- if (typeof common.TransactionType !== 'string') {
- throw new errors_1.ValidationError('BaseTransaction: TransactionType not string');
- }
- if (!ripple_binary_codec_1.TRANSACTION_TYPES.includes(common.TransactionType)) {
- throw new errors_1.ValidationError('BaseTransaction: Unknown TransactionType');
- }
- if (common.Fee !== undefined && typeof common.Fee !== 'string') {
- throw new errors_1.ValidationError('BaseTransaction: invalid Fee');
- }
- if (common.Sequence !== undefined && typeof common.Sequence !== 'number') {
- throw new errors_1.ValidationError('BaseTransaction: invalid Sequence');
- }
- if (common.AccountTxnID !== undefined &&
- typeof common.AccountTxnID !== 'string') {
- throw new errors_1.ValidationError('BaseTransaction: invalid AccountTxnID');
- }
- if (common.LastLedgerSequence !== undefined &&
- typeof common.LastLedgerSequence !== 'number') {
- throw new errors_1.ValidationError('BaseTransaction: invalid LastLedgerSequence');
- }
- const memos = common.Memos;
- if (memos !== undefined && !memos.every(isMemo)) {
- throw new errors_1.ValidationError('BaseTransaction: invalid Memos');
- }
- const signers = common.Signers;
- if (signers !== undefined &&
- (signers.length === 0 || !signers.every(isSigner))) {
- throw new errors_1.ValidationError('BaseTransaction: invalid Signers');
- }
- if (common.SourceTag !== undefined && typeof common.SourceTag !== 'number') {
- throw new errors_1.ValidationError('BaseTransaction: invalid SourceTag');
- }
- if (common.SigningPubKey !== undefined &&
- typeof common.SigningPubKey !== 'string') {
- throw new errors_1.ValidationError('BaseTransaction: invalid SigningPubKey');
- }
- if (common.TicketSequence !== undefined &&
- typeof common.TicketSequence !== 'number') {
- throw new errors_1.ValidationError('BaseTransaction: invalid TicketSequence');
- }
- if (common.TxnSignature !== undefined &&
- typeof common.TxnSignature !== 'string') {
- throw new errors_1.ValidationError('BaseTransaction: invalid TxnSignature');
- }
- }
- exports.validateBaseTransaction = validateBaseTransaction;
- function parseAmountValue(amount) {
- if (!isAmount(amount)) {
- return NaN;
- }
- if (typeof amount === 'string') {
- return parseFloat(amount);
- }
- return parseFloat(amount.value);
- }
- exports.parseAmountValue = parseAmountValue;
- //# sourceMappingURL=common.js.map
|