PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo-express/node_modules/ripple-lib-transactionparser/src
Просмотр файла: utils.js
'use strict'
var _ = require('lodash')
var BigNumber = require('bignumber.js')
// drops is a bignumber.js BigNumber
function dropsToXRP(drops) {
return drops.dividedBy(1000000)
}
function normalizeNode(affectedNode) {
var diffType = Object.keys(affectedNode)[0]
var node = affectedNode[diffType]
return {
diffType: diffType,
entryType: node.LedgerEntryType,
ledgerIndex: node.LedgerIndex,
newFields: node.NewFields || {},
finalFields: node.FinalFields || {},
previousFields: node.PreviousFields || {}
}
}
function normalizeNodes(metadata) {
if (!metadata.AffectedNodes) {
return []
}
return metadata.AffectedNodes.map(normalizeNode)
}
function parseCurrencyAmount(currencyAmount) {
if (currencyAmount === undefined) {
return undefined
}
if (typeof currencyAmount === 'string') {
return {
currency: 'XRP',
value: dropsToXRP(new BigNumber(currencyAmount)).toString()
}
}
return {
currency: currencyAmount.currency,
counterparty: currencyAmount.issuer,
value: currencyAmount.value
}
}
function isAccountField(fieldName) {
var fieldNames = ['Account', 'Owner', 'Destination', 'Issuer', 'Target']
return _.includes(fieldNames, fieldName)
}
function isAmountFieldAffectingIssuer(fieldName) {
var fieldNames = ['LowLimit', 'HighLimit', 'TakerPays', 'TakerGets']
return _.includes(fieldNames, fieldName)
}
function getAffectedAccounts(metadata) {
var accounts = []
_.forEach(normalizeNodes(metadata), function(node) {
var fields = node.diffType === 'CreatedNode' ?
node.newFields : node.finalFields
_.forEach(fields, function(fieldValue, fieldName) {
if (isAccountField(fieldName)) {
accounts.push(fieldValue)
} else if (isAmountFieldAffectingIssuer(fieldName) && fieldValue.issuer) {
accounts.push(fieldValue.issuer)
}
})
})
return _.uniq(accounts)
}
module.exports = {
dropsToXRP: dropsToXRP,
normalizeNodes: normalizeNodes,
parseCurrencyAmount: parseCurrencyAmount,
getAffectedAccounts: getAffectedAccounts
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!