@bithomp/xrpl-api
Version:
A Bithomp JavaScript/TypeScript library for interacting with the XRP Ledger
60 lines (59 loc) • 2.22 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseCredentialChanges = parseCredentialChanges;
const models_1 = require("../../models");
const utils_1 = require("../utils");
const credential_flags_1 = __importDefault(require("../ledger/credential-flags"));
function parseCredentialStatus(node) {
if (node.diffType === "CreatedNode") {
return "created";
}
if (node.diffType === "ModifiedNode") {
return "modified";
}
if (node.diffType === "DeletedNode") {
return "deleted";
}
return undefined;
}
function summarizeCredential(node) {
const final = node.diffType === "CreatedNode" ? node.newFields : node.finalFields;
const prev = node.previousFields;
const summary = {
status: parseCredentialStatus(node),
credentialIndex: node.ledgerIndex,
issuer: final.Issuer,
subject: final.Subject,
credentialType: (0, utils_1.decodeHexData)(final.CredentialType),
flags: (0, credential_flags_1.default)(final.Flags, { excludeFalse: false }),
};
if (final.Expiration !== undefined) {
summary.expiration = (0, models_1.ledgerTimeToUnixTime)(final.Expiration);
}
if (final.URI !== undefined) {
summary.uri = final.URI;
}
if (node.diffType === "ModifiedNode") {
if (prev.Flags !== undefined) {
summary.flagsChange = (0, credential_flags_1.default)(prev.Flags, { excludeFalse: false });
}
}
if (node.PreviousTxnID) {
summary.previousTxnID = node.PreviousTxnID;
}
return summary;
}
function parseCredentialChanges(metadata) {
const affectedNodes = metadata.AffectedNodes.filter((affectedNode) => {
const node = affectedNode.CreatedNode || affectedNode.ModifiedNode || affectedNode.DeletedNode;
return node.LedgerEntryType === "Credential";
});
if (affectedNodes.length !== 1) {
return undefined;
}
const normalizedNode = (0, utils_1.normalizeNode)(affectedNodes[0]);
return summarizeCredential(normalizedNode);
}
;