PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@celo/connect/lib/utils
Просмотр файла: formatter.js
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.inputSignFormatter = exports.inputAddressFormatter = exports.outputBigNumberFormatter = exports.outputLogFormatter = exports.hexToNumber = exports.outputBlockFormatter = exports.outputBlockHeaderFormatter = exports.inputBlockNumberFormatter = exports.inputDefaultBlockNumberFormatter = exports.outputCeloTxReceiptFormatter = exports.outputCeloTxFormatter = exports.inputCeloTxFormatter = void 0;
var address_1 = require("@celo/base/lib/address");
var address_2 = require("@celo/utils/lib/address");
var solidity_1 = require("@celo/utils/lib/solidity");
var bignumber_js_1 = __importDefault(require("bignumber.js"));
var utf8_1 = require("utf8");
/**
* Formats the input of a transaction and converts all values to HEX
*/
function inputCeloTxFormatter(tx) {
var _a, _b, _c, _d;
tx.from = inputAddressFormatter((_a = tx.from) === null || _a === void 0 ? void 0 : _a.toString());
tx.to = inputAddressFormatter(tx.to);
tx.feeCurrency = inputAddressFormatter(tx.feeCurrency);
tx.gatewayFeeRecipient = inputAddressFormatter(tx.gatewayFeeRecipient);
if (tx.data) {
tx.data = (0, address_1.ensureLeading0x)(tx.data);
}
if (tx.data && !isHex(tx.data)) {
throw new Error('The data field must be HEX encoded data.');
}
tx.gas = numberToHex(tx.gas);
tx.gasPrice = numberToHex((_b = tx.gasPrice) === null || _b === void 0 ? void 0 : _b.toString());
tx.value = numberToHex((_c = tx.value) === null || _c === void 0 ? void 0 : _c.toString());
// @ts-ignore - nonce is defined as number, but uses as string (web3)
tx.nonce = numberToHex((_d = tx.nonce) === null || _d === void 0 ? void 0 : _d.toString());
tx.gatewayFee = numberToHex(tx.gatewayFee);
// @ts-ignore - prune undefines
Object.keys(tx).forEach(function (key) { return tx[key] === undefined && delete tx[key]; });
return tx;
}
exports.inputCeloTxFormatter = inputCeloTxFormatter;
function outputCeloTxFormatter(tx) {
if (tx.blockNumber !== null) {
tx.blockNumber = hexToNumber(tx.blockNumber);
}
if (tx.transactionIndex !== null) {
tx.transactionIndex = hexToNumber(tx.transactionIndex);
}
tx.nonce = hexToNumber(tx.nonce);
tx.gas = hexToNumber(tx.gas);
tx.gasPrice = outputBigNumberFormatter(tx.gasPrice);
tx.value = outputBigNumberFormatter(tx.value);
tx.gatewayFee = outputBigNumberFormatter(tx.gatewayFee);
tx.to =
tx.to && (0, address_2.isValidAddress)(tx.to)
? // tx.to could be `0x0` or `null` while contract creation
(tx.to = (0, address_2.toChecksumAddress)(tx.to))
: null; // set to `null` if invalid address
if (tx.from) {
tx.from = (0, address_2.toChecksumAddress)(tx.from);
}
if (tx.feeCurrency) {
tx.feeCurrency = (0, address_2.toChecksumAddress)(tx.feeCurrency);
}
if (tx.gatewayFeeRecipient) {
tx.gatewayFeeRecipient = (0, address_2.toChecksumAddress)(tx.gatewayFeeRecipient);
}
return tx;
}
exports.outputCeloTxFormatter = outputCeloTxFormatter;
function outputCeloTxReceiptFormatter(receipt) {
if (typeof receipt !== 'object') {
throw new Error('Received receipt is invalid: ' + receipt);
}
if (receipt.blockNumber !== null) {
receipt.blockNumber = hexToNumber(receipt.blockNumber);
}
if (receipt.transactionIndex !== null) {
receipt.transactionIndex = hexToNumber(receipt.transactionIndex);
}
receipt.cumulativeGasUsed = hexToNumber(receipt.cumulativeGasUsed);
receipt.gasUsed = hexToNumber(receipt.gasUsed);
if (Array.isArray(receipt.logs)) {
receipt.logs = receipt.logs.map(outputLogFormatter);
}
if (receipt.contractAddress) {
receipt.contractAddress = (0, address_2.toChecksumAddress)(receipt.contractAddress);
}
if (typeof receipt.status !== 'undefined' && receipt.status !== null) {
receipt.status = Boolean(parseInt((0, address_1.trimLeading0x)(receipt.status), 10));
}
return receipt;
}
exports.outputCeloTxReceiptFormatter = outputCeloTxReceiptFormatter;
function inputDefaultBlockNumberFormatter(blockNumber) {
if (blockNumber == null) {
blockNumber = 'latest';
}
return inputBlockNumberFormatter(blockNumber);
}
exports.inputDefaultBlockNumberFormatter = inputDefaultBlockNumberFormatter;
function inputBlockNumberFormatter(blockNumber) {
if (blockNumber == null) {
return undefined;
}
if (isPredefinedBlockNumber(blockNumber)) {
return blockNumber;
}
if (blockNumber === 'genesis') {
return '0x0';
}
return isHexStrict(blockNumber.toString())
? blockNumber.toString().toLocaleLowerCase()
: numberToHex(blockNumber.toString());
}
exports.inputBlockNumberFormatter = inputBlockNumberFormatter;
function outputBlockHeaderFormatter(blockHeader) {
// transform to number
blockHeader.gasLimit = hexToNumber(blockHeader.gasLimit);
blockHeader.gasUsed = hexToNumber(blockHeader.gasUsed);
blockHeader.size = hexToNumber(blockHeader.size);
blockHeader.timestamp = hexToNumber(blockHeader.timestamp);
if (blockHeader.number !== null) {
blockHeader.number = hexToNumber(blockHeader.number);
}
if (blockHeader.miner) {
blockHeader.miner = (0, address_2.toChecksumAddress)(blockHeader.miner);
}
return blockHeader;
}
exports.outputBlockHeaderFormatter = outputBlockHeaderFormatter;
function outputBlockFormatter(block) {
block = outputBlockHeaderFormatter(block);
if (block.difficulty) {
block.difficulty = outputBigNumberFormatter(block.difficulty);
}
if (block.totalDifficulty) {
block.totalDifficulty = outputBigNumberFormatter(block.totalDifficulty);
}
if (Array.isArray(block.transactions)) {
block.transactions.forEach(function (item) {
if (typeof item !== 'string' && !(item instanceof String)) {
return outputCeloTxFormatter(item);
}
});
}
return block;
}
exports.outputBlockFormatter = outputBlockFormatter;
function hexToNumber(hex) {
if (hex) {
return new bignumber_js_1.default(hex).toNumber();
}
return undefined;
}
exports.hexToNumber = hexToNumber;
function outputLogFormatter(log) {
// generate a custom log id
if (typeof log.blockHash === 'string' &&
typeof log.transactionHash === 'string' &&
typeof log.logIndex === 'string') {
var shaId = (0, solidity_1.sha3)((0, address_1.trimLeading0x)(log.blockHash) +
(0, address_1.trimLeading0x)(log.transactionHash) +
(0, address_1.trimLeading0x)(log.logIndex));
log.id = 'log_' + (0, address_1.trimLeading0x)(shaId).substr(0, 8);
}
else if (!log.id) {
log.id = null;
}
if (log.blockNumber !== null) {
log.blockNumber = hexToNumber(log.blockNumber);
}
if (log.transactionIndex !== null) {
log.transactionIndex = hexToNumber(log.transactionIndex);
}
if (log.logIndex !== null) {
log.logIndex = hexToNumber(log.logIndex);
}
if (log.address) {
log.address = (0, address_2.toChecksumAddress)(log.address);
}
return log;
}
exports.outputLogFormatter = outputLogFormatter;
function outputBigNumberFormatter(hex) {
return new bignumber_js_1.default(hex).toString(10);
}
exports.outputBigNumberFormatter = outputBigNumberFormatter;
function inputAddressFormatter(address) {
if (!address || address === '0x') {
return undefined;
}
if ((0, address_2.isValidAddress)(address)) {
return (0, address_1.ensureLeading0x)(address).toLocaleLowerCase();
}
throw new Error("Provided address ".concat(address, " is invalid, the capitalization checksum test failed"));
}
exports.inputAddressFormatter = inputAddressFormatter;
function inputSignFormatter(data) {
return isHexStrict(data) ? data : utf8ToHex(data);
}
exports.inputSignFormatter = inputSignFormatter;
function utf8ToHex(str) {
str = (0, utf8_1.encode)(str);
var hex = '';
// remove \u0000 padding from either side
str = str.replace(/^(?:\u0000)*/, '');
str = str.split('').reverse().join('');
str = str.replace(/^(?:\u0000)*/, '');
str = str.split('').reverse().join('');
for (var i = 0; i < str.length; i++) {
var code = str.charCodeAt(i);
// if (code !== 0) {
var n = code.toString(16);
hex += n.length < 2 ? '0' + n : n;
// }
}
return (0, address_1.ensureLeading0x)(hex);
}
function isHex(hex) {
return /^(-0x|0x)?[0-9a-f]*$/i.test(hex);
}
function isHexStrict(hex) {
return /^(-)?0x[0-9a-f]*$/i.test(hex);
}
function numberToHex(value) {
if (value) {
var numberValue = new bignumber_js_1.default(value);
var result = (0, address_1.ensureLeading0x)(new bignumber_js_1.default(value).toString(16));
// Seen in web3, copied just in case
return numberValue.lt(new bignumber_js_1.default(0)) ? "-".concat(result) : result;
}
return undefined;
}
function isPredefinedBlockNumber(blockNumber) {
return blockNumber === 'latest' || blockNumber === 'pending' || blockNumber === 'earliest';
}
//# sourceMappingURL=formatter.js.mapВыполнить команду
Для локальной разработки. Не используйте в интернете!