validations.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.isValidURL = isValidURL;
  4. exports.isObject = isObject;
  5. exports.isArray = isArray;
  6. exports.isJson = isJson;
  7. exports.isBoolean = isBoolean;
  8. exports.isBigNumber = isBigNumber;
  9. exports.isString = isString;
  10. exports.isFunction = isFunction;
  11. exports.isHex = isHex;
  12. exports.isInteger = isInteger;
  13. exports.hasProperty = hasProperty;
  14. exports.hasProperties = hasProperties;
  15. exports.mapEvent = mapEvent;
  16. exports.parseEvent = parseEvent;
  17. exports.padLeft = padLeft;
  18. exports.isNotNullOrUndefined = isNotNullOrUndefined;
  19. exports.sleep = sleep;
  20. const tslib_1 = require("tslib");
  21. const bignumber_js_1 = require("bignumber.js");
  22. const validator_1 = tslib_1.__importDefault(require("validator"));
  23. const address_js_1 = require("./address.js");
  24. function isValidURL(url) {
  25. if (typeof url !== 'string')
  26. return false;
  27. return validator_1.default.isURL(url.toString(), {
  28. protocols: ['http', 'https'],
  29. require_tld: false,
  30. });
  31. }
  32. function isObject(obj) {
  33. return obj === Object(obj) && Object.prototype.toString.call(obj) !== '[object Array]';
  34. }
  35. function isArray(array) {
  36. return Array.isArray(array);
  37. }
  38. function isJson(string) {
  39. try {
  40. return !!JSON.parse(string);
  41. }
  42. catch (ex) {
  43. return false;
  44. }
  45. }
  46. function isBoolean(bool) {
  47. return typeof bool === 'boolean';
  48. }
  49. function isBigNumber(number) {
  50. return !!number && (number instanceof bignumber_js_1.BigNumber || (number.constructor && number.constructor.name === 'BigNumber'));
  51. }
  52. function isString(string) {
  53. return typeof string === 'string' || (!!string && string.constructor && string.constructor.name === 'String');
  54. }
  55. function isFunction(obj) {
  56. return typeof obj === 'function';
  57. }
  58. function isHex(string) {
  59. return typeof string === 'string' && !isNaN(parseInt(string, 16)) && /^(0x|)[a-fA-F0-9]+$/.test(string);
  60. }
  61. function isInteger(number) {
  62. if (number === null)
  63. return false;
  64. return Number.isInteger(Number(number));
  65. }
  66. function hasProperty(obj, property) {
  67. return Object.prototype.hasOwnProperty.call(obj, property);
  68. }
  69. function hasProperties(obj, ...properties) {
  70. return (properties.length &&
  71. !properties
  72. .map((property) => {
  73. return hasProperty(obj, property);
  74. })
  75. .includes(false));
  76. }
  77. function mapEvent(event) {
  78. const data = {
  79. block: event.block_number,
  80. timestamp: event.block_timestamp,
  81. contract: event.contract_address,
  82. name: event.event_name,
  83. transaction: event.transaction_id,
  84. result: event.result,
  85. resourceNode: event.resource_Node || (event._unconfirmed ? 'fullNode' : 'solidityNode'),
  86. };
  87. if (event._unconfirmed) {
  88. data.unconfirmed = event._unconfirmed;
  89. }
  90. if (event._fingerprint) {
  91. data.fingerprint = event._fingerprint;
  92. }
  93. return data;
  94. }
  95. function parseEvent(event, { inputs: abi }) {
  96. if (!event.result)
  97. return event;
  98. if (isObject(event.result)) {
  99. for (let i = 0; i < abi.length; i++) {
  100. const obj = abi[i];
  101. if (obj.type == 'address' && obj.name in event.result)
  102. event.result[obj.name] = address_js_1.ADDRESS_PREFIX + event.result[obj.name].substr(2).toLowerCase();
  103. }
  104. }
  105. else if (isArray(event.result)) {
  106. event.result = event.result.reduce((obj, result, index) => {
  107. const { name, type } = abi[index];
  108. if (type == 'address')
  109. result = address_js_1.ADDRESS_PREFIX + result.substr(2).toLowerCase();
  110. obj[name] = result;
  111. return obj;
  112. }, {});
  113. }
  114. return event;
  115. }
  116. function padLeft(input, padding, amount) {
  117. let res = input.toString();
  118. while (res.length < amount)
  119. res = padding + res;
  120. return res;
  121. }
  122. function isNotNullOrUndefined(val) {
  123. return val !== null && typeof val !== 'undefined';
  124. }
  125. async function sleep(millis = 1000) {
  126. return new Promise((resolve) => setTimeout(resolve, millis));
  127. }
  128. //# sourceMappingURL=validations.js.map