tronewb
Version:
JavaScript SDK that encapsulates the TRON HTTP API
128 lines • 4.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isValidURL = isValidURL;
exports.isObject = isObject;
exports.isArray = isArray;
exports.isJson = isJson;
exports.isBoolean = isBoolean;
exports.isBigNumber = isBigNumber;
exports.isString = isString;
exports.isFunction = isFunction;
exports.isHex = isHex;
exports.isInteger = isInteger;
exports.hasProperty = hasProperty;
exports.hasProperties = hasProperties;
exports.mapEvent = mapEvent;
exports.parseEvent = parseEvent;
exports.padLeft = padLeft;
exports.isNotNullOrUndefined = isNotNullOrUndefined;
exports.sleep = sleep;
const tslib_1 = require("tslib");
const bignumber_js_1 = require("bignumber.js");
const validator_1 = tslib_1.__importDefault(require("validator"));
const address_js_1 = require("./address.js");
function isValidURL(url) {
if (typeof url !== 'string')
return false;
return validator_1.default.isURL(url.toString(), {
protocols: ['http', 'https'],
require_tld: false,
});
}
function isObject(obj) {
return obj === Object(obj) && Object.prototype.toString.call(obj) !== '[object Array]';
}
function isArray(array) {
return Array.isArray(array);
}
function isJson(string) {
try {
return !!JSON.parse(string);
}
catch (ex) {
return false;
}
}
function isBoolean(bool) {
return typeof bool === 'boolean';
}
function isBigNumber(number) {
return !!number && (number instanceof bignumber_js_1.BigNumber || (number.constructor && number.constructor.name === 'BigNumber'));
}
function isString(string) {
return typeof string === 'string' || (!!string && string.constructor && string.constructor.name === 'String');
}
function isFunction(obj) {
return typeof obj === 'function';
}
function isHex(string) {
return typeof string === 'string' && !isNaN(parseInt(string, 16)) && /^(0x|)[a-fA-F0-9]+$/.test(string);
}
function isInteger(number) {
if (number === null)
return false;
return Number.isInteger(Number(number));
}
function hasProperty(obj, property) {
return Object.prototype.hasOwnProperty.call(obj, property);
}
function hasProperties(obj, ...properties) {
return (properties.length &&
!properties
.map((property) => {
return hasProperty(obj, property);
})
.includes(false));
}
function mapEvent(event) {
const data = {
block: event.block_number,
timestamp: event.block_timestamp,
contract: event.contract_address,
name: event.event_name,
transaction: event.transaction_id,
result: event.result,
resourceNode: event.resource_Node || (event._unconfirmed ? 'fullNode' : 'solidityNode'),
};
if (event._unconfirmed) {
data.unconfirmed = event._unconfirmed;
}
if (event._fingerprint) {
data.fingerprint = event._fingerprint;
}
return data;
}
function parseEvent(event, { inputs: abi }) {
if (!event.result)
return event;
if (isObject(event.result)) {
for (let i = 0; i < abi.length; i++) {
const obj = abi[i];
if (obj.type == 'address' && obj.name in event.result)
event.result[obj.name] = address_js_1.ADDRESS_PREFIX + event.result[obj.name].substr(2).toLowerCase();
}
}
else if (isArray(event.result)) {
event.result = event.result.reduce((obj, result, index) => {
const { name, type } = abi[index];
if (type == 'address')
result = address_js_1.ADDRESS_PREFIX + result.substr(2).toLowerCase();
obj[name] = result;
return obj;
}, {});
}
return event;
}
function padLeft(input, padding, amount) {
let res = input.toString();
while (res.length < amount)
res = padding + res;
return res;
}
function isNotNullOrUndefined(val) {
return val !== null && typeof val !== 'undefined';
}
async function sleep(millis = 1000) {
return new Promise((resolve) => setTimeout(resolve, millis));
}
//# sourceMappingURL=validations.js.map