UNPKG

@bcpros/crypto-wallet-core

Version:

A multi-currency support library for address derivation, private key creation, and transaction creation

439 lines 23 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); var chai_1 = require("chai"); var src_1 = require("../src"); var mocha_1 = require("mocha"); (0, mocha_1.describe)('Address Validation', function () { var btcAddress = '1NuKwkDtCymgA1FNLUBaUWLD8s4kdKWvgn'; var btcTestAddress = 'mkUNMewkQsHKRcUvv5HLKbqmepCqNH8goc'; var bchAddress = 'qr8uujscckc56ancdkmqnyyl2rx6pnp24gmdfrf8qd'; var bchTestLegacyAddress = 'mms6yCDGo3fDdapguTSMtCyF9XGfWJpD6H'; var dogeAddress = 'DQnSpKaUdXYZz8Q4WUBCdaGBSthiAJbWBr'; var dogeTestAddress = 'nY525SPsHXVopmUMm1JyReDEop45MSWc3D'; var ltcAddress = 'LYgDcZ3oW3aZBhZUyiC84fb99hyUPVxLwB'; var ltcTestAddress = 'QhpBFbYvLG2bgCZ3D1ztGEUVqmcgY5vjVF'; var ethAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; var prefixEthAddress = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; var xrpAddress = 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh'; var xpiAddress = 'lotus_16PSJPUXqERYw1izoVXJhpJ4bRcrsm9mJGUgVk2Y6'; var xecAddress = 'ecash:qrs7r23u6el66fthxvlljd23ch7xhsrjaqsvpvdawc'; var btcUri = 'bitcoin:1NuKwkDtCymgA1FNLUBaUWLD8s4kdKWvgn'; var bchUri = 'bitcoincash:pp8skudq3x5hzw8ew7vzsw8tn4k8wxsqsv0lt0mf3g'; var dogeUri = 'dogecoin:DQnSpKaUdXYZz8Q4WUBCdaGBSthiAJbWBr'; var ltcUri = 'litecoin:LYgDcZ3oW3aZBhZUyiC84fb99hyUPVxLwB'; var ethUri = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; var ethUriParams = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123&gasPrice=123&gas=123&gasLimit=123'; var ethUriSingleParam = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=123'; var btcTestUri = 'bitcoin:mkUNMewkQsHKRcUvv5HLKbqmepCqNH8goc'; var bchTestUri = 'bchtest:qq083kgf3wjg7ya8nun36e8nf24g9xgvachahfnyle'; var xecUri = 'ecash:pp8skudq3x5hzw8ew7vzsw8tn4k8wxsqsvkjlyqnhl'; var xecTestUri = 'ectest:qq083kgf3wjg7ya8nun36e8nf24g9xgvacvfe9dyar'; var dogeTestUri = 'dogecoin:mpz836YMHb7Ubjx4G2YnutwQRd1yz5ssNv'; var ltcTestUri = 'litecoin:QhpBFbYvLG2bgCZ3D1ztGEUVqmcgY5vjVF'; var xrpUri = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF'; var xrpUriParams = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF?amount=123456&dt=123456'; var xrpUriSingleParam = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF?amount=123456'; var invalidBtcAddress = '1NuKwkDtCymgA1FNLUBaUWLD8s4kKWvgn'; var invalidBchAddress = 'r8uujscckc56ancdkmqnyyl2rx6pnp24gmdfrf8qd'; var invalidDogeAddress = 'DQnSpKaUdXYZz8Q4WUBCdaGBSthiAJbWB'; var invalidLtcAddress = 'LYgDcZ3oW3aZBhZUyiC84fb99hyUPVxLw'; var invalidEthAddress = '37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08'; var invalidXrpAddress = 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTH'; var invalidEthPrefix = '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A'; var invalidXrpPrefix = 'rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF'; var invalidEthUriParams = 'ethereum:0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A?value=invalid&gasLimit=123&gas=123'; var invalidXrpUriParams = 'ripple:rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF?amount=invalid&dt=123'; (0, mocha_1.it)('should be able to validate an BTC address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress, isValidTestAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('BTC', 'mainnet', btcAddress)]; case 1: isValidAddress = _a.sent(); return [4, src_1.Validation.validateAddress('BTC', 'testnet', btcTestAddress)]; case 2: isValidTestAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); (0, chai_1.expect)(isValidTestAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an BCH address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress, isValidTestLegacyAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('BCH', 'mainnet', bchAddress)]; case 1: isValidAddress = _a.sent(); return [4, src_1.Validation.validateAddress('BCH', 'testnet', bchTestLegacyAddress)]; case 2: isValidTestLegacyAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); (0, chai_1.expect)(isValidTestLegacyAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an DOGE address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress, isValidTestAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('DOGE', 'mainnet', dogeAddress)]; case 1: isValidAddress = _a.sent(); return [4, src_1.Validation.validateAddress('DOGE', 'testnet', dogeTestAddress)]; case 2: isValidTestAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); (0, chai_1.expect)(isValidTestAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an LTC address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress, isValidTestAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('LTC', 'mainnet', ltcAddress)]; case 1: isValidAddress = _a.sent(); return [4, src_1.Validation.validateAddress('LTC', 'testnet', ltcTestAddress)]; case 2: isValidTestAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); (0, chai_1.expect)(isValidTestAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an ETH address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress, isValidPrefixAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('ETH', 'mainnet', ethAddress)]; case 1: isValidAddress = _a.sent(); return [4, src_1.Validation.validateAddress('ETH', 'mainnet', prefixEthAddress)]; case 2: isValidPrefixAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); (0, chai_1.expect)(isValidPrefixAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an XRP address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('XRP', 'mainnet', xrpAddress)]; case 1: isValidAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an XPI address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('XPI', 'mainnet', xpiAddress)]; case 1: isValidAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an XEC address', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('XEC', 'mainnet', xecAddress)]; case 1: isValidAddress = _a.sent(); (0, chai_1.expect)(isValidAddress).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an BTC Uri', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidUri, isValidTestUri; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('BTC', btcUri)]; case 1: isValidUri = _a.sent(); return [4, src_1.Validation.validateUri('BTC', btcTestUri)]; case 2: isValidTestUri = _a.sent(); (0, chai_1.expect)(isValidUri).to.equal(true); (0, chai_1.expect)(isValidTestUri).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an BCH Uri', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidUri, isValidTestUri; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('BCH', bchUri)]; case 1: isValidUri = _a.sent(); return [4, src_1.Validation.validateUri('BCH', bchTestUri)]; case 2: isValidTestUri = _a.sent(); (0, chai_1.expect)(isValidUri).to.equal(true); (0, chai_1.expect)(isValidTestUri).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an XEC Uri', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidUri, isValidTestUri; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('XEC', xecUri)]; case 1: isValidUri = _a.sent(); return [4, src_1.Validation.validateUri('XEC', xecTestUri)]; case 2: isValidTestUri = _a.sent(); (0, chai_1.expect)(isValidUri).to.equal(true); (0, chai_1.expect)(isValidTestUri).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an DOGE Uri', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidUri, isValidTestUri; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('DOGE', dogeUri)]; case 1: isValidUri = _a.sent(); return [4, src_1.Validation.validateUri('DOGE', dogeTestUri)]; case 2: isValidTestUri = _a.sent(); (0, chai_1.expect)(isValidUri).to.equal(true); (0, chai_1.expect)(isValidTestUri).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an LTC Uri', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidUri, isValidTestUri; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('LTC', ltcUri)]; case 1: isValidUri = _a.sent(); return [4, src_1.Validation.validateUri('LTC', ltcTestUri)]; case 2: isValidTestUri = _a.sent(); (0, chai_1.expect)(isValidUri).to.equal(true); (0, chai_1.expect)(isValidTestUri).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an ETH Uri', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidUri, isValidUriParams, isValidUriSingleParam; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('ETH', ethUri)]; case 1: isValidUri = _a.sent(); return [4, src_1.Validation.validateUri('ETH', ethUriParams)]; case 2: isValidUriParams = _a.sent(); return [4, src_1.Validation.validateUri('ETH', ethUriSingleParam)]; case 3: isValidUriSingleParam = _a.sent(); (0, chai_1.expect)(isValidUri).to.equal(true); (0, chai_1.expect)(isValidUriParams).to.equal(true); (0, chai_1.expect)(isValidUriSingleParam).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to validate an XRP Uri', function () { return __awaiter(void 0, void 0, void 0, function () { var isValidUri, isValidUriParams, isValidUriSingleParam; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('XRP', xrpUri)]; case 1: isValidUri = _a.sent(); return [4, src_1.Validation.validateUri('XRP', xrpUriParams)]; case 2: isValidUriParams = _a.sent(); return [4, src_1.Validation.validateUri('XRP', xrpUriSingleParam)]; case 3: isValidUriSingleParam = _a.sent(); (0, chai_1.expect)(isValidUri).to.equal(true); (0, chai_1.expect)(isValidUriParams).to.equal(true); (0, chai_1.expect)(isValidUriSingleParam).to.equal(true); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate an incorrect BTC address', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('BTC', 'mainnet', invalidBtcAddress)]; case 1: inValidAddress = _a.sent(); (0, chai_1.expect)(inValidAddress).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate an incorrect BCH address', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('BCH', 'mainnet', invalidBchAddress)]; case 1: inValidAddress = _a.sent(); (0, chai_1.expect)(inValidAddress).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate an incorrect DOGE address', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('DOGE', 'mainnet', invalidDogeAddress)]; case 1: inValidAddress = _a.sent(); (0, chai_1.expect)(inValidAddress).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate an incorrect LTC address', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('LTC', 'mainnet', invalidLtcAddress)]; case 1: inValidAddress = _a.sent(); (0, chai_1.expect)(inValidAddress).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate an incorrect ETH address', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('ETH', 'mainnet', invalidEthAddress)]; case 1: inValidAddress = _a.sent(); (0, chai_1.expect)(inValidAddress).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate an incorrect XRP address', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateAddress('XRP', 'mainnet', invalidXrpAddress)]; case 1: inValidAddress = _a.sent(); (0, chai_1.expect)(inValidAddress).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate incorrect ETH Uri params', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidEthUri; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('ETH', invalidEthUriParams)]; case 1: inValidEthUri = _a.sent(); (0, chai_1.expect)(inValidEthUri).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate ETH URI without ethereum prefix', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidEthPrefix; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('ETH', invalidEthPrefix)]; case 1: inValidEthPrefix = _a.sent(); (0, chai_1.expect)(inValidEthPrefix).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate incorrect XRP Uri params', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidXrpUri; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('XRP', invalidXrpUriParams)]; case 1: inValidXrpUri = _a.sent(); (0, chai_1.expect)(inValidXrpUri).to.equal(false); return [2]; } }); }); }); (0, mocha_1.it)('should be able to invalidate XRP URI without ripple prefix', function () { return __awaiter(void 0, void 0, void 0, function () { var inValidXrpPrefix; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, src_1.Validation.validateUri('XRP', invalidXrpPrefix)]; case 1: inValidXrpPrefix = _a.sent(); (0, chai_1.expect)(inValidXrpPrefix).to.equal(false); return [2]; } }); }); }); }); //# sourceMappingURL=validation.js.map