UNPKG

@bithomp/xrpl-api

Version:

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

84 lines (83 loc) 3.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseURITokenChanges = parseURITokenChanges; const common_1 = require("../../common"); function parseURITokenChanges(tx) { return new URITokenChanges(tx).call(); } class URITokenChanges { constructor(tx) { this.tx = tx; this.changes = {}; } call() { if (this.hasAffectedNodes() === false) { return this.changes; } this.parseAffectedNodes(); return this.changes; } hasAffectedNodes() { if (this.tx.meta?.AffectedNodes === undefined) { return false; } if (this.tx.meta?.AffectedNodes?.length === 0) { return false; } return true; } addChange(account, change) { if (!this.changes[account]) { this.changes[account] = []; } this.changes[account].push((0, common_1.removeUndefined)(change)); } parseAffectedNodes() { 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) { this.addChange(node.NewFields.Owner, { status: "added", flags: node.NewFields.Flags, uritokenID, uri: node.NewFields.URI, digest: node.NewFields.Digest, issuer: node.NewFields.Issuer, }); } if (affectedNode.ModifiedNode) { if (node.PreviousFields.Owner && node.PreviousFields.Owner !== node.FinalFields.Owner) { this.addChange(node.PreviousFields.Owner, { status: "removed", flags: node.FinalFields.Flags, uritokenID, uri: node.FinalFields.URI, digest: node.FinalFields.Digest, issuer: node.FinalFields.Issuer, }); this.addChange(node.FinalFields.Owner, { status: "added", flags: node.FinalFields.Flags, uritokenID, uri: node.FinalFields.URI, digest: node.FinalFields.Digest, issuer: node.FinalFields.Issuer, }); } } if (affectedNode.DeletedNode) { this.addChange(node.FinalFields.Owner, { status: "removed", flags: node.FinalFields.Flags, uritokenID, uri: node.FinalFields.URI, digest: node.FinalFields.Digest, issuer: node.FinalFields.Issuer, }); } } } } }