UNPKG

@meshsdk/mesh-csl

Version:

Cardano Off-chain Code APIs built on cardano-serialization-lib

89 lines (88 loc) 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.value = exports.tuple = exports.dict = exports.assocMap = exports.posixTime = exports.pubKeyHash = exports.paymentPubKeyHash = exports.txOutRef = exports.assetClass = exports.scriptAddress = exports.pubKeyAddress = exports.maybeStakingHash = exports.tokenName = exports.currencySymbol = exports.list = exports.integer = exports.builtinByteString = exports.bool = exports.conStr2 = exports.conStr1 = exports.conStr0 = exports.conStr = void 0; const conStr = (constructor, fields) => ({ constructor, fields, }); exports.conStr = conStr; const conStr0 = (fields) => (0, exports.conStr)(0, fields); exports.conStr0 = conStr0; const conStr1 = (fields) => (0, exports.conStr)(1, fields); exports.conStr1 = conStr1; const conStr2 = (fields) => (0, exports.conStr)(2, fields); exports.conStr2 = conStr2; const bool = (b) => (b ? (0, exports.conStr1)([]) : (0, exports.conStr0)([])); exports.bool = bool; const builtinByteString = (bytes) => ({ bytes }); exports.builtinByteString = builtinByteString; const integer = (int) => ({ int }); exports.integer = integer; const list = (pList) => ({ list: pList }); exports.list = list; const currencySymbol = (bytes) => (0, exports.builtinByteString)(bytes); exports.currencySymbol = currencySymbol; const tokenName = (bytes) => (0, exports.builtinByteString)(bytes); exports.tokenName = tokenName; const maybeStakingHash = (stakeCredential) => { if (stakeCredential === '') { return (0, exports.conStr1)([]); } return (0, exports.conStr0)([ (0, exports.conStr0)([(0, exports.conStr0)([(0, exports.builtinByteString)(stakeCredential)])]), ]); }; exports.maybeStakingHash = maybeStakingHash; const pubKeyAddress = (bytes, stakeCredential) => (0, exports.conStr0)([(0, exports.conStr0)([(0, exports.builtinByteString)(bytes)]), (0, exports.maybeStakingHash)(stakeCredential || '')]); exports.pubKeyAddress = pubKeyAddress; const scriptAddress = (bytes, stakeCredential) => (0, exports.conStr0)([(0, exports.conStr1)([(0, exports.builtinByteString)(bytes)]), (0, exports.maybeStakingHash)(stakeCredential || '')]); exports.scriptAddress = scriptAddress; const assetClass = (policyId, assetName) => (0, exports.conStr0)([(0, exports.currencySymbol)(policyId), (0, exports.tokenName)(assetName)]); exports.assetClass = assetClass; const txOutRef = (txHash, index) => (0, exports.conStr0)([(0, exports.conStr0)([(0, exports.builtinByteString)(txHash)]), (0, exports.integer)(index)]); exports.txOutRef = txOutRef; const paymentPubKeyHash = (bytes) => (0, exports.builtinByteString)(bytes); exports.paymentPubKeyHash = paymentPubKeyHash; const pubKeyHash = (bytes) => (0, exports.builtinByteString)(bytes); exports.pubKeyHash = pubKeyHash; const posixTime = (int) => ({ int }); exports.posixTime = posixTime; const assocMap = (itemsMap) => ({ map: itemsMap.map(([k, v]) => ({ k, v })), }); exports.assocMap = assocMap; const dict = (itemsMap) => ({ map: itemsMap.map(([k, v]) => ({ k, v })), }); exports.dict = dict; const tuple = (key, value) => (0, exports.conStr0)([key, value]); exports.tuple = tuple; const value = (assets) => { const valueMapToParse = []; const valueMap = {}; assets.forEach((asset) => { const sanitizedName = asset.unit.replace('lovelace', ''); const policy = sanitizedName.slice(0, 56) || ''; const token = sanitizedName.slice(56) || ''; if (!valueMap[policy]) { valueMap[policy] = {}; } if (!valueMap[policy][token]) { valueMap[policy][token] = Number(asset.quantity); } else { valueMap[policy][token] += Number(asset.quantity); } }); Object.keys(valueMap).forEach((policy) => { const policyByte = (0, exports.currencySymbol)(policy); const tokens = Object.keys(valueMap[policy]).map((name) => [ (0, exports.tokenName)(name), (0, exports.integer)(valueMap[policy][name]), ]); const policyMap = (0, exports.assocMap)(tokens); valueMapToParse.push([policyByte, policyMap]); }); return (0, exports.assocMap)(valueMapToParse); }; exports.value = value;