UNPKG

dotbit

Version:

A complete .bit SDK and utilities in TypeScript

87 lines 3.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.matchDWebProtocol = exports.stringVisualLength = exports.checkKeyInfo = exports.isEthAddress = exports.isTronAddress = exports.sleep = exports.isEmptyAddress = exports.remove0x = exports.pad0x = exports.mmJsonHashAndChainIdHex = void 0; const const_1 = require("../const"); const ethers_1 = require("ethers"); const grapheme_splitter_1 = __importDefault(require("grapheme-splitter")); const multicoin_address_validator_1 = require("multicoin-address-validator"); const eth_sig_util_1 = require("@metamask/eth-sig-util"); function mmJsonHashAndChainIdHex(typedData, chainId) { const mmHash = eth_sig_util_1.TypedDataUtils.eip712Hash(typedData, eth_sig_util_1.SignTypedDataVersion.V4).toString('hex'); const chainIdHex = chainId.toString(16).padStart(16, '0'); return mmHash + chainIdHex; } exports.mmJsonHashAndChainIdHex = mmJsonHashAndChainIdHex; function pad0x(str) { return str.startsWith('0x') ? str : `0x${str}`; } exports.pad0x = pad0x; function remove0x(str) { return str.startsWith('0x') ? str.substring(2) : str; } exports.remove0x = remove0x; function isEmptyAddress(address) { return !address || address === '0x' || address === '0x0' || address === '0x0000000000000000000000000000000000000000'; } exports.isEmptyAddress = isEmptyAddress; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } exports.sleep = sleep; function isTronAddress(address) { try { return address.length !== 42 && (0, multicoin_address_validator_1.validate)(address, 'Tron'); } catch (err) { console.warn(`invalid Tron address: ${address}`); return false; } } exports.isTronAddress = isTronAddress; function isEthAddress(address) { try { return /^(0x|0X)[0-9a-f]{40}$/i.test(address) && (0, ethers_1.isAddress)(address); } catch (err) { console.warn(`invalid ETH address: ${address}`); return false; } } exports.isEthAddress = isEthAddress; function checkKeyInfo(keyInfo) { let ret; if ([const_1.CoinType.ETH, const_1.CoinType.MATIC, const_1.CoinType.BSC].includes(keyInfo.coin_type)) { if (isEthAddress(keyInfo.key)) { ret = true; } else { console.warn(`invalid ETH address: ${keyInfo.key}`); ret = false; } } else if (keyInfo.coin_type === const_1.CoinType.TRX) { if (isTronAddress(keyInfo.key)) { ret = true; } else { console.warn(`invalid Tron address: ${keyInfo.key}`); ret = false; } } return ret; } exports.checkKeyInfo = checkKeyInfo; function stringVisualLength(str) { const splitter = new grapheme_splitter_1.default(); const split = splitter.splitGraphemes(str); return split.length; } exports.stringVisualLength = stringVisualLength; function matchDWebProtocol(str) { return str.match(/^(ipns|ipfs|sia|arweave|ar|resilio):\/\/(.*)/); } exports.matchDWebProtocol = matchDWebProtocol; //# sourceMappingURL=common.js.map