@bithomp/xrpl-api
Version:
A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger
51 lines (50 loc) • 1.59 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseDIDChanges = parseDIDChanges;
const utils_1 = require("../utils");
const common_1 = require("../../common");
function parseDIDStatus(node) {
if (node.diffType === "CreatedNode") {
return "created";
}
if (node.diffType === "ModifiedNode") {
return "modified";
}
if (node.diffType === "DeletedNode") {
return "deleted";
}
return undefined;
}
function summarizeDID(node) {
const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
const prev = node.previousFields;
const summary = {
status: parseDIDStatus(node),
didID: node.ledgerIndex,
account: final.Account,
uri: final.URI,
data: final.Data,
didDocument: final.DIDDocument,
};
if (prev.URI) {
summary.uriChange = prev.URI;
}
if (prev.Data) {
summary.dataChanges = prev.Data;
}
if (prev.DIDDocument) {
summary.didDocumentChanges = prev.DIDDocument;
}
return (0, common_1.removeUndefined)(summary);
}
function parseDIDChanges(metadata) {
const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => {
const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
return node.LedgerEntryType === "DID";
});
if (affectedNodes.length !== 1) {
return undefined;
}
const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
return summarizeDID(normalizedNode);
}
;