UNPKG

@bithomp/xrpl-api

Version:

A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger

148 lines (147 loc) 6.43 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseAffectedObjects = parseAffectedObjects; const nftoken_changes_1 = require("./nftoken_changes"); const nftoken_offer_changes_1 = require("./nftoken_offer_changes"); const account_nfts_1 = require("../../models/account_nfts"); const nftoken_flags_1 = __importDefault(require("../ledger/nftoken-flags")); const nftoken_offer_flags_1 = __importDefault(require("../ledger/nftoken-offer-flags")); const uritoken_flags_1 = __importDefault(require("../ledger/uritoken-flags")); const common_1 = require("../../common"); function parseAffectedObjects(tx) { return new AffectedObjects(tx).call(); } class AffectedObjects { constructor(tx) { this.tx = tx; this.affectedObjects = {}; this.nftChanges = undefined; this.nftOfferChanges = undefined; } call() { this.parseNFTokens(); this.parseNFTokenOffers(); this.parseURITokenChanges(); if (Object.keys(this.affectedObjects).length > 0) { return this.affectedObjects; } return undefined; } getNFTokenChanges() { if (this.nftChanges) { return this.nftChanges; } this.nftChanges = (0, nftoken_changes_1.parseNFTokenChanges)(this.tx); return this.nftChanges; } getNFTokenOfferChanges() { if (this.nftOfferChanges) { return this.nftOfferChanges; } this.nftOfferChanges = (0, nftoken_offer_changes_1.parseNFTokenOfferChanges)(this.tx); return this.nftOfferChanges; } parseNFTokens() { const nftokens = {}; const nftokenChanges = this.getNFTokenChanges(); for (const account in nftokenChanges) { for (const nftsChange of nftokenChanges[account]) { if (nftokens[nftsChange.nftokenID]) { continue; } const nftokenIDInfo = (0, account_nfts_1.parseNFTokenID)(nftsChange.nftokenID); if (nftokenIDInfo) { nftokens[nftsChange.nftokenID] = { nftokenID: nftsChange.nftokenID, flags: (0, nftoken_flags_1.default)(nftokenIDInfo.Flags), transferFee: nftokenIDInfo.TransferFee, issuer: nftokenIDInfo.Issuer, nftokenTaxon: nftokenIDInfo.NFTokenTaxon, sequence: nftokenIDInfo.Sequence, }; } } } const nftokenOfferChanges = this.getNFTokenOfferChanges(); for (const account in nftokenOfferChanges) { for (const nftokenOfferChange of nftokenOfferChanges[account]) { if (nftokens[nftokenOfferChange.nftokenID]) { continue; } const nftokenIDInfo = (0, account_nfts_1.parseNFTokenID)(nftokenOfferChange.nftokenID); if (nftokenIDInfo) { nftokens[nftokenOfferChange.nftokenID] = { nftokenID: nftokenOfferChange.nftokenID, flags: (0, nftoken_flags_1.default)(nftokenIDInfo.Flags), transferFee: nftokenIDInfo.TransferFee, issuer: nftokenIDInfo.Issuer, nftokenTaxon: nftokenIDInfo.NFTokenTaxon, sequence: nftokenIDInfo.Sequence, }; } } } if (Object.keys(nftokens).length > 0) { this.affectedObjects.nftokens = nftokens; } } parseNFTokenOffers() { const nftokenOffers = {}; const nftokenOfferChanges = this.getNFTokenOfferChanges(); for (const account in nftokenOfferChanges) { for (const nftokenOfferChange of nftokenOfferChanges[account]) { if (nftokenOffers[nftokenOfferChange.index]) { continue; } nftokenOffers[nftokenOfferChange.index] = { index: nftokenOfferChange.index, nftokenID: nftokenOfferChange.nftokenID, flags: (0, nftoken_offer_flags_1.default)(nftokenOfferChange.flags), owner: nftokenOfferChange.owner, }; } } if (Object.keys(nftokenOffers).length > 0) { this.affectedObjects.nftokenOffers = nftokenOffers; } } parseURITokenChanges() { const uritokens = {}; for (const affectedNode of this.tx.meta.AffectedNodes) { const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode; if (node?.LedgerEntryType === "URIToken" && node?.LedgerIndex) { const uritokenID = node.LedgerIndex; if (affectedNode.CreatedNode) { uritokens[uritokenID] = (0, common_1.removeUndefined)({ uritokenID, flags: (0, uritoken_flags_1.default)(node.NewFields.Flags), uri: node.NewFields.URI, digest: node.NewFields.Digest, issuer: node.NewFields.Issuer, owner: node.NewFields.Owner, amount: node.NewFields.Amount, destination: node.NewFields.Destination, }); } if (affectedNode.ModifiedNode || affectedNode.DeletedNode) { uritokens[uritokenID] = (0, common_1.removeUndefined)({ uritokenID, flags: (0, uritoken_flags_1.default)(node.FinalFields.Flags), uri: node.FinalFields.URI, digest: node.FinalFields.Digest, issuer: node.FinalFields.Issuer, owner: node.FinalFields.Owner, amount: node.FinalFields.Amount, destination: node.FinalFields.Destination, }); } } } if (Object.keys(uritokens).length > 0) { this.affectedObjects.uritokens = uritokens; } } }