@blockfrost/blockfrost-cardano-cli
Version:
Drop-in(ish) replacement for cardano-cli powered by Blockfrost
70 lines (69 loc) • 2.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getNetworkFromRewardAccount = exports.transformPoolUpdateCert = exports.transformPoolRelays = exports.bech32ToHex = exports.stripQuotes = exports.stringify = exports.stringToBigInt = void 0;
const bech32_1 = require("bech32");
const safe_stable_stringify_1 = require("safe-stable-stringify");
const stringToBigInt = (value) => (value ? BigInt(value) : value);
exports.stringToBigInt = stringToBigInt;
const stringify = (obj) => {
// safe-stable-stringify properly stringifies BigInt
const s = safe_stable_stringify_1.default.configure({ deterministic: false }); // rely on the insertion order
return s(obj, undefined, 4);
};
exports.stringify = stringify;
const stripQuotes = (str) => {
if (typeof str === 'string' && str[0] === '"' && str[str.length - 1] === '"') {
return str.slice(1, -1);
}
return str;
};
exports.stripQuotes = stripQuotes;
const bech32ToHex = (bech32Addr, stripPrefix = false) => {
const decodedWords = bech32_1.bech32.decode(bech32Addr, 1000);
const payload = bech32_1.bech32.fromWords(decodedWords.words);
const keyHashHex = Buffer.from(payload)
.toString('hex')
.slice(stripPrefix ? 2 : 0); // first byte is prefix
return keyHashHex;
};
exports.bech32ToHex = bech32ToHex;
const transformPoolRelays = (relays) => relays.map(r => r.dns
? {
'single host name': {
port: r.port,
dnsName: r.dns,
},
}
: {
'single host address': {
IPv6: r.ipv6,
port: r.port,
IPv4: r.ipv4,
},
});
exports.transformPoolRelays = transformPoolRelays;
const transformPoolUpdateCert = (poolHex, cert) => {
var _a, _b;
return {
publicKey: poolHex,
cost: cert.fixed_cost,
metadata: {
hash: (_a = cert.metadata) === null || _a === void 0 ? void 0 : _a.hash,
url: (_b = cert.metadata) === null || _b === void 0 ? void 0 : _b.url,
},
vrf: cert.vrf_key,
owners: cert.owners.map(o => (0, exports.bech32ToHex)(o, true)),
pledge: (0, exports.stringToBigInt)(cert.pledge),
rewardAccount: {
network: (0, exports.getNetworkFromRewardAccount)(cert.reward_account),
credential: {
'key hash': (0, exports.bech32ToHex)(cert.reward_account, true),
},
},
margin: cert.margin_cost,
relays: (0, exports.transformPoolRelays)(cert.relays),
};
};
exports.transformPoolUpdateCert = transformPoolUpdateCert;
const getNetworkFromRewardAccount = (rewardAccount) => rewardAccount.startsWith('stake_test1') ? 'Testnet' : 'Mainnet';
exports.getNetworkFromRewardAccount = getNetworkFromRewardAccount;