@bithomp/xrpl-api
Version:
A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger
111 lines (110 loc) • 4.97 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseTransaction = exports.parseTransactionType = void 0;
const common_1 = require("../../common");
const parse_outcome_1 = __importDefault(require("../parse_outcome"));
const settings_1 = __importDefault(require("./settings"));
const account_delete_1 = __importDefault(require("./account-delete"));
const check_cancel_1 = __importDefault(require("./check-cancel"));
const check_cash_1 = __importDefault(require("./check-cash"));
const check_create_1 = __importDefault(require("./check-create"));
const deposit_preauth_1 = __importDefault(require("./deposit-preauth"));
const escrow_cancellation_1 = __importDefault(require("./escrow-cancellation"));
const escrow_creation_1 = __importDefault(require("./escrow-creation"));
const escrow_execution_1 = __importDefault(require("./escrow-execution"));
const cancellation_1 = __importDefault(require("./cancellation"));
const order_1 = __importDefault(require("./order"));
const payment_1 = __importDefault(require("./payment"));
const payment_channel_claim_1 = __importDefault(require("./payment-channel-claim"));
const payment_channel_create_1 = __importDefault(require("./payment-channel-create"));
const payment_channel_fund_1 = __importDefault(require("./payment-channel-fund"));
const ticket_create_1 = __importDefault(require("./ticket-create"));
const trustline_1 = __importDefault(require("./trustline"));
const account_nfts_1 = require("../../../models/account_nfts");
const amendment_1 = __importDefault(require("./amendment"));
const fee_update_1 = __importDefault(require("./fee-update"));
const transactionTypeToType = {
AccountSet: 'settings',
AccountDelete: 'accountDelete',
CheckCancel: 'checkCancel',
CheckCash: 'checkCash',
CheckCreate: 'checkCreate',
DepositPreauth: 'depositPreauth',
EscrowCancel: 'escrowCancellation',
EscrowCreate: 'escrowCreation',
EscrowFinish: 'escrowExecution',
OfferCancel: 'orderCancellation',
OfferCreate: 'order',
Payment: 'payment',
PaymentChannelClaim: 'paymentChannelClaim',
PaymentChannelCreate: 'paymentChannelCreate',
PaymentChannelFund: 'paymentChannelFund',
SetRegularKey: 'settings',
SignerListSet: 'settings',
TicketCreate: 'ticketCreate',
TrustSet: 'trustline',
NFTokenBurn: 'nftokenBurn',
NFTokenMint: 'nftokenMint',
NFTokenCancelOffer: 'nftokenCancelOffer',
NFTokenCreateOffer: 'nftokenCreateOffer',
NFTokenAcceptOffer: 'nftokenAcceptOffer',
EnableAmendment: 'amendment',
SetFee: 'feeUpdate'
};
function parseTransactionType(type) {
return transactionTypeToType[type] || null;
}
exports.parseTransactionType = parseTransactionType;
const parserTypeFunc = {
settings: settings_1.default,
accountDelete: account_delete_1.default,
checkCancel: check_cancel_1.default,
checkCash: check_cash_1.default,
checkCreate: check_create_1.default,
depositPreauth: deposit_preauth_1.default,
escrowCancellation: escrow_cancellation_1.default,
escrowCreation: escrow_creation_1.default,
escrowExecution: escrow_execution_1.default,
orderCancellation: cancellation_1.default,
order: order_1.default,
payment: payment_1.default,
paymentChannelClaim: payment_channel_claim_1.default,
paymentChannelCreate: payment_channel_create_1.default,
paymentChannelFund: payment_channel_fund_1.default,
ticketCreate: ticket_create_1.default,
trustline: trustline_1.default,
nftokenBurn: account_nfts_1.parseNFTokenBurn,
nftokenMint: account_nfts_1.parseNFTokenMint,
nftokenCancelOffer: account_nfts_1.parseNFTokenCancelOffer,
nftokenCreateOffer: account_nfts_1.parseNFTokenCreateOffer,
nftokenAcceptOffer: account_nfts_1.parseNFTokenAcceptOffer,
amendment: amendment_1.default,
feeUpdate: fee_update_1.default
};
function parseTransaction(tx, includeRawTransaction) {
const type = parseTransactionType(tx.TransactionType);
const parser = parserTypeFunc[type];
const specification = parser
? parser(tx)
: {
UNAVAILABLE: 'Unrecognized transaction type.',
SEE_RAW_TRANSACTION: 'Since this type is unrecognized, `rawTransaction` is included in this response.'
};
if (!parser) {
includeRawTransaction = true;
}
const outcome = (0, parse_outcome_1.default)(tx);
return (0, common_1.removeUndefined)({
type: type,
address: tx.Account,
sequence: tx.Sequence,
id: tx.hash,
specification: (0, common_1.removeUndefined)(specification),
outcome: outcome ? (0, common_1.removeUndefined)(outcome) : undefined,
rawTransaction: includeRawTransaction ? JSON.stringify(tx) : undefined
});
}
exports.parseTransaction = parseTransaction;