dotbit
Version:
A complete .bit SDK and utilities in TypeScript
87 lines • 3.25 kB
JavaScript
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
;