UNPKG

uport-connect

Version:

Library for integrating uPort into your app frontend

2,224 lines (2,139 loc) 44.4 kB
'use strict'; var cov_7c8ruliiv = function () { var path = '/Users/mxu/code/uport-connect/src/UportSubprovider.js', hash = 'b17e30ca08c1cacf9f3e2dd1a16ad3135a500209', Function = function () {}.constructor, global = new Function('return this')(), gcv = '__coverage__', coverageData = { path: '/Users/mxu/code/uport-connect/src/UportSubprovider.js', statementMap: { '0': { start: { line: 25, column: 4 }, end: { line: 31, column: 5 } }, '1': { start: { line: 27, column: 6 }, end: { line: 27, column: 54 } }, '2': { start: { line: 29, column: 6 }, end: { line: 29, column: 30 } }, '3': { start: { line: 30, column: 6 }, end: { line: 30, column: 95 } }, '4': { start: { line: 34, column: 4 }, end: { line: 43, column: 5 } }, '5': { start: { line: 38, column: 6 }, end: { line: 42, column: 7 } }, '6': { start: { line: 39, column: 8 }, end: { line: 39, column: 39 } }, '7': { start: { line: 41, column: 8 }, end: { line: 41, column: 39 } }, '8': { start: { line: 45, column: 4 }, end: { line: 45, column: 26 } }, '9': { start: { line: 46, column: 4 }, end: { line: 54, column: 5 } }, '10': { start: { line: 47, column: 6 }, end: { line: 47, column: 53 } }, '11': { start: { line: 47, column: 24 }, end: { line: 47, column: 53 } }, '12': { start: { line: 48, column: 6 }, end: { line: 53, column: 27 } }, '13': { start: { line: 50, column: 29 }, end: { line: 50, column: 125 } }, '14': { start: { line: 51, column: 10 }, end: { line: 51, column: 76 } }, '15': { start: { line: 53, column: 17 }, end: { line: 53, column: 26 } }, '16': { start: { line: 56, column: 4 }, end: { line: 61, column: 5 } }, '17': { start: { line: 57, column: 6 }, end: { line: 60, column: 7 } }, '18': { start: { line: 58, column: 19 }, end: { line: 58, column: 36 } }, '19': { start: { line: 59, column: 17 }, end: { line: 59, column: 26 } }, '20': { start: { line: 63, column: 4 }, end: { line: 68, column: 5 } }, '21': { start: { line: 64, column: 6 }, end: { line: 67, column: 7 } }, '22': { start: { line: 65, column: 19 }, end: { line: 65, column: 63 } }, '23': { start: { line: 66, column: 17 }, end: { line: 66, column: 26 } }, '24': { start: { line: 70, column: 4 }, end: { line: 75, column: 5 } }, '25': { start: { line: 71, column: 6 }, end: { line: 74, column: 7 } }, '26': { start: { line: 72, column: 19 }, end: { line: 72, column: 63 } }, '27': { start: { line: 73, column: 17 }, end: { line: 73, column: 26 } }, '28': { start: { line: 79, column: 4 }, end: { line: 86, column: 5 } }, '29': { start: { line: 80, column: 19 }, end: { line: 80, column: 34 } }, '30': { start: { line: 81, column: 6 }, end: { line: 84, column: 7 } }, '31': { start: { line: 82, column: 8 }, end: { line: 82, column: 35 } }, '32': { start: { line: 83, column: 8 }, end: { line: 83, column: 19 } }, '33': { start: { line: 85, column: 6 }, end: { line: 85, column: 18 } }, '34': { start: { line: 88, column: 4 }, end: { line: 88, column: 70 } }, '35': { start: { line: 89, column: 4 }, end: { line: 89, column: 15 } }, '36': { start: { line: 97, column: 4 }, end: { line: 97, column: 44 } }, '37': { start: { line: 111, column: 40 }, end: { line: 111, column: 64 } }, '38': { start: { line: 113, column: 4 }, end: { line: 116, column: 5 } }, '39': { start: { line: 114, column: 6 }, end: { line: 114, column: 103 } }, '40': { start: { line: 115, column: 6 }, end: { line: 115, column: 66 } }, '41': { start: { line: 115, column: 20 }, end: { line: 115, column: 66 } }, '42': { start: { line: 119, column: 4 }, end: { line: 122, column: 5 } }, '43': { start: { line: 120, column: 6 }, end: { line: 120, column: 48 } }, '44': { start: { line: 121, column: 6 }, end: { line: 121, column: 12 } }, '45': { start: { line: 124, column: 20 }, end: { line: 138, column: 5 } }, '46': { start: { line: 125, column: 6 }, end: { line: 137, column: 7 } }, '47': { start: { line: 126, column: 8 }, end: { line: 130, column: 10 } }, '48': { start: { line: 132, column: 8 }, end: { line: 136, column: 10 } }, '49': { start: { line: 139, column: 4 }, end: { line: 142, column: 5 } }, '50': { start: { line: 140, column: 6 }, end: { line: 140, column: 61 } }, '51': { start: { line: 141, column: 6 }, end: { line: 141, column: 12 } }, '52': { start: { line: 143, column: 4 }, end: { line: 163, column: 5 } }, '53': { start: { line: 146, column: 8 }, end: { line: 146, column: 39 } }, '54': { start: { line: 148, column: 8 }, end: { line: 150, column: 10 } }, '55': { start: { line: 149, column: 10 }, end: { line: 149, column: 35 } }, '56': { start: { line: 152, column: 23 }, end: { line: 152, column: 40 } }, '57': { start: { line: 153, column: 8 }, end: { line: 153, column: 54 } }, '58': { start: { line: 156, column: 24 }, end: { line: 156, column: 41 } }, '59': { start: { line: 157, column: 8 }, end: { line: 157, column: 53 } }, '60': { start: { line: 159, column: 19 }, end: { line: 159, column: 36 } }, '61': { start: { line: 160, column: 8 }, end: { line: 160, column: 47 } }, '62': { start: { line: 162, column: 8 }, end: { line: 162, column: 57 } }, '63': { start: { line: 168, column: 2 }, end: { line: 168, column: 61 } } }, fnMap: { '0': { name: '(anonymous_0)', decl: { start: { line: 24, column: 2 }, end: { line: 24, column: 3 } }, loc: { start: { line: 24, column: 99 }, end: { line: 76, column: 3 } }, line: 24 }, '1': { name: '(anonymous_1)', decl: { start: { line: 46, column: 22 }, end: { line: 46, column: 23 } }, loc: { start: { line: 46, column: 30 }, end: { line: 54, column: 5 } }, line: 46 }, '2': { name: '(anonymous_2)', decl: { start: { line: 49, column: 8 }, end: { line: 49, column: 9 } }, loc: { start: { line: 49, column: 19 }, end: { line: 52, column: 9 } }, line: 49 }, '3': { name: '(anonymous_3)', decl: { start: { line: 53, column: 8 }, end: { line: 53, column: 9 } }, loc: { start: { line: 53, column: 17 }, end: { line: 53, column: 26 } }, line: 53 }, '4': { name: '(anonymous_4)', decl: { start: { line: 56, column: 27 }, end: { line: 56, column: 28 } }, loc: { start: { line: 56, column: 42 }, end: { line: 61, column: 5 } }, line: 56 }, '5': { name: '(anonymous_5)', decl: { start: { line: 58, column: 8 }, end: { line: 58, column: 9 } }, loc: { start: { line: 58, column: 19 }, end: { line: 58, column: 36 } }, line: 58 }, '6': { name: '(anonymous_6)', decl: { start: { line: 59, column: 8 }, end: { line: 59, column: 9 } }, loc: { start: { line: 59, column: 17 }, end: { line: 59, column: 26 } }, line: 59 }, '7': { name: '(anonymous_7)', decl: { start: { line: 63, column: 25 }, end: { line: 63, column: 26 } }, loc: { start: { line: 63, column: 44 }, end: { line: 68, column: 5 } }, line: 63 }, '8': { name: '(anonymous_8)', decl: { start: { line: 65, column: 8 }, end: { line: 65, column: 9 } }, loc: { start: { line: 65, column: 19 }, end: { line: 65, column: 63 } }, line: 65 }, '9': { name: '(anonymous_9)', decl: { start: { line: 66, column: 8 }, end: { line: 66, column: 9 } }, loc: { start: { line: 66, column: 17 }, end: { line: 66, column: 26 } }, line: 66 }, '10': { name: '(anonymous_10)', decl: { start: { line: 70, column: 24 }, end: { line: 70, column: 25 } }, loc: { start: { line: 70, column: 38 }, end: { line: 75, column: 5 } }, line: 70 }, '11': { name: '(anonymous_11)', decl: { start: { line: 72, column: 8 }, end: { line: 72, column: 9 } }, loc: { start: { line: 72, column: 19 }, end: { line: 72, column: 63 } }, line: 72 }, '12': { name: '(anonymous_12)', decl: { start: { line: 73, column: 8 }, end: { line: 73, column: 9 } }, loc: { start: { line: 73, column: 17 }, end: { line: 73, column: 26 } }, line: 73 }, '13': { name: '(anonymous_13)', decl: { start: { line: 78, column: 2 }, end: { line: 78, column: 3 } }, loc: { start: { line: 78, column: 22 }, end: { line: 90, column: 3 } }, line: 78 }, '14': { name: '(anonymous_14)', decl: { start: { line: 96, column: 2 }, end: { line: 96, column: 3 } }, loc: { start: { line: 96, column: 26 }, end: { line: 98, column: 3 } }, line: 96 }, '15': { name: '(anonymous_15)', decl: { start: { line: 110, column: 2 }, end: { line: 110, column: 3 } }, loc: { start: { line: 110, column: 37 }, end: { line: 164, column: 3 } }, line: 110 }, '16': { name: '(anonymous_16)', decl: { start: { line: 124, column: 20 }, end: { line: 124, column: 21 } }, loc: { start: { line: 124, column: 39 }, end: { line: 138, column: 5 } }, line: 124 }, '17': { name: '(anonymous_17)', decl: { start: { line: 148, column: 31 }, end: { line: 148, column: 32 } }, loc: { start: { line: 148, column: 51 }, end: { line: 150, column: 9 } }, line: 148 }, '18': { name: 'encodeSignature', decl: { start: { line: 167, column: 16 }, end: { line: 167, column: 31 } }, loc: { start: { line: 167, column: 45 }, end: { line: 169, column: 1 } }, line: 167 } }, branchMap: { '0': { loc: { start: { line: 25, column: 4 }, end: { line: 31, column: 5 } }, type: 'if', locations: [{ start: { line: 25, column: 4 }, end: { line: 31, column: 5 } }, { start: { line: 25, column: 4 }, end: { line: 31, column: 5 } }], line: 25 }, '1': { loc: { start: { line: 34, column: 4 }, end: { line: 43, column: 5 } }, type: 'if', locations: [{ start: { line: 34, column: 4 }, end: { line: 43, column: 5 } }, { start: { line: 34, column: 4 }, end: { line: 43, column: 5 } }], line: 34 }, '2': { loc: { start: { line: 38, column: 6 }, end: { line: 42, column: 7 } }, type: 'if', locations: [{ start: { line: 38, column: 6 }, end: { line: 42, column: 7 } }, { start: { line: 38, column: 6 }, end: { line: 42, column: 7 } }], line: 38 }, '3': { loc: { start: { line: 47, column: 6 }, end: { line: 47, column: 53 } }, type: 'if', locations: [{ start: { line: 47, column: 6 }, end: { line: 47, column: 53 } }, { start: { line: 47, column: 6 }, end: { line: 47, column: 53 } }], line: 47 }, '4': { loc: { start: { line: 51, column: 10 }, end: { line: 51, column: 76 } }, type: 'cond-expr', locations: [{ start: { line: 51, column: 37 }, end: { line: 51, column: 59 } }, { start: { line: 51, column: 62 }, end: { line: 51, column: 76 } }], line: 51 }, '5': { loc: { start: { line: 79, column: 4 }, end: { line: 86, column: 5 } }, type: 'if', locations: [{ start: { line: 79, column: 4 }, end: { line: 86, column: 5 } }, { start: { line: 79, column: 4 }, end: { line: 86, column: 5 } }], line: 79 }, '6': { loc: { start: { line: 79, column: 8 }, end: { line: 79, column: 42 } }, type: 'binary-expr', locations: [{ start: { line: 79, column: 8 }, end: { line: 79, column: 23 } }, { start: { line: 79, column: 27 }, end: { line: 79, column: 42 } }], line: 79 }, '7': { loc: { start: { line: 81, column: 6 }, end: { line: 84, column: 7 } }, type: 'if', locations: [{ start: { line: 81, column: 6 }, end: { line: 84, column: 7 } }, { start: { line: 81, column: 6 }, end: { line: 84, column: 7 } }], line: 81 }, '8': { loc: { start: { line: 88, column: 19 }, end: { line: 88, column: 70 } }, type: 'cond-expr', locations: [{ start: { line: 88, column: 37 }, end: { line: 88, column: 60 } }, { start: { line: 88, column: 63 }, end: { line: 88, column: 70 } }], line: 88 }, '9': { loc: { start: { line: 113, column: 4 }, end: { line: 116, column: 5 } }, type: 'if', locations: [{ start: { line: 113, column: 4 }, end: { line: 116, column: 5 } }, { start: { line: 113, column: 4 }, end: { line: 116, column: 5 } }], line: 113 }, '10': { loc: { start: { line: 113, column: 8 }, end: { line: 113, column: 61 } }, type: 'binary-expr', locations: [{ start: { line: 113, column: 8 }, end: { line: 113, column: 32 } }, { start: { line: 113, column: 36 }, end: { line: 113, column: 61 } }], line: 113 }, '11': { loc: { start: { line: 115, column: 6 }, end: { line: 115, column: 66 } }, type: 'if', locations: [{ start: { line: 115, column: 6 }, end: { line: 115, column: 66 } }, { start: { line: 115, column: 6 }, end: { line: 115, column: 66 } }], line: 115 }, '12': { loc: { start: { line: 119, column: 4 }, end: { line: 122, column: 5 } }, type: 'if', locations: [{ start: { line: 119, column: 4 }, end: { line: 122, column: 5 } }, { start: { line: 119, column: 4 }, end: { line: 122, column: 5 } }], line: 119 }, '13': { loc: { start: { line: 125, column: 6 }, end: { line: 137, column: 7 } }, type: 'if', locations: [{ start: { line: 125, column: 6 }, end: { line: 137, column: 7 } }, { start: { line: 125, column: 6 }, end: { line: 137, column: 7 } }], line: 125 }, '14': { loc: { start: { line: 139, column: 4 }, end: { line: 142, column: 5 } }, type: 'if', locations: [{ start: { line: 139, column: 4 }, end: { line: 142, column: 5 } }, { start: { line: 139, column: 4 }, end: { line: 142, column: 5 } }], line: 139 }, '15': { loc: { start: { line: 143, column: 4 }, end: { line: 163, column: 5 } }, type: 'switch', locations: [{ start: { line: 145, column: 6 }, end: { line: 146, column: 39 } }, { start: { line: 147, column: 6 }, end: { line: 150, column: 10 } }, { start: { line: 151, column: 6 }, end: { line: 153, column: 54 } }, { start: { line: 154, column: 6 }, end: { line: 154, column: 34 } }, { start: { line: 155, column: 6 }, end: { line: 157, column: 53 } }, { start: { line: 158, column: 6 }, end: { line: 160, column: 47 } }, { start: { line: 161, column: 6 }, end: { line: 162, column: 57 } }], line: 143 } }, s: { '0': 0, '1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0, '9': 0, '10': 0, '11': 0, '12': 0, '13': 0, '14': 0, '15': 0, '16': 0, '17': 0, '18': 0, '19': 0, '20': 0, '21': 0, '22': 0, '23': 0, '24': 0, '25': 0, '26': 0, '27': 0, '28': 0, '29': 0, '30': 0, '31': 0, '32': 0, '33': 0, '34': 0, '35': 0, '36': 0, '37': 0, '38': 0, '39': 0, '40': 0, '41': 0, '42': 0, '43': 0, '44': 0, '45': 0, '46': 0, '47': 0, '48': 0, '49': 0, '50': 0, '51': 0, '52': 0, '53': 0, '54': 0, '55': 0, '56': 0, '57': 0, '58': 0, '59': 0, '60': 0, '61': 0, '62': 0, '63': 0 }, f: { '0': 0, '1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0, '9': 0, '10': 0, '11': 0, '12': 0, '13': 0, '14': 0, '15': 0, '16': 0, '17': 0, '18': 0 }, b: { '0': [0, 0], '1': [0, 0], '2': [0, 0], '3': [0, 0], '4': [0, 0], '5': [0, 0], '6': [0, 0], '7': [0, 0], '8': [0, 0], '9': [0, 0], '10': [0, 0], '11': [0, 0], '12': [0, 0], '13': [0, 0], '14': [0, 0], '15': [0, 0, 0, 0, 0, 0, 0] }, _coverageSchema: '332fd63041d2c1bcb487cc26dd0d5f7d97098a6c' }, coverage = global[gcv] || (global[gcv] = {}); if (coverage[path] && coverage[path].hash === hash) { return coverage[path]; } coverageData.hash = hash; return coverage[path] = coverageData; }(); Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); exports.encodeSignature = encodeSignature; var _async = require('async'); var _async2 = _interopRequireDefault(_async); var _mnid = require('mnid'); var _ethjsProviderHttp = require('ethjs-provider-http'); var _ethjsProviderHttp2 = _interopRequireDefault(_ethjsProviderHttp); var _ui = require('uport-transports/lib/transport/ui'); var _util = require('./util'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * A web3 style provider which can easily be wrapped with uPort functionality. * Builds on a base provider. Used in Connect to wrap a provider with uPort specific * functionality. */ var UportSubprovider = function () { /** * Instantiates a new wrapped provider * * @param {Object} args required arguments * @param {Function} args.requestAddress function to get the address of a uPort identity. * @param {Function} args.sendTransaction function to handle passing transaction information to a uPort application * @param {Object} args.provider a web3 sytle provider * @return {UportSubprovider} this */ function UportSubprovider(_ref) { var _this = this; var requestAddress = _ref.requestAddress, sendTransaction = _ref.sendTransaction, signTypedData = _ref.signTypedData, personalSign = _ref.personalSign, provider = _ref.provider, network = _ref.network; (0, _classCallCheck3.default)(this, UportSubprovider); cov_7c8ruliiv.f[0]++; cov_7c8ruliiv.s[0]++; if (!provider) { cov_7c8ruliiv.b[0][0]++; cov_7c8ruliiv.s[1]++; // Extend ethjs HTTP provider if none is given this.provider = new _ethjsProviderHttp2.default(network.rpcUrl); } else { cov_7c8ruliiv.b[0][1]++; cov_7c8ruliiv.s[2]++; this.provider = provider; cov_7c8ruliiv.s[3]++; console.warn('Uport functionality may not be entirely compatible with custom providers.'); } // Detect injected provider cov_7c8ruliiv.s[4]++; if ((0, _util.hasWeb3)()) { cov_7c8ruliiv.b[1][0]++; cov_7c8ruliiv.s[5]++; // Distinguish between providers in mobile and other cases // Metamask/mist etc. will give the option to use uport // Mobile injected providers (coinbase wallet, etc.) will be used automatically if ((0, _util.isMobile)()) { cov_7c8ruliiv.b[2][0]++; cov_7c8ruliiv.s[6]++; this.useInjectedProvider = true; } else { cov_7c8ruliiv.b[2][1]++; cov_7c8ruliiv.s[7]++; this.hasInjectedProvider = true; } } else { cov_7c8ruliiv.b[1][1]++; } cov_7c8ruliiv.s[8]++; this.network = network; cov_7c8ruliiv.s[9]++; this.getAddress = function (cb) { cov_7c8ruliiv.f[1]++; cov_7c8ruliiv.s[10]++; if (_this.address) { cov_7c8ruliiv.b[3][0]++; cov_7c8ruliiv.s[11]++; return cb(null, _this.address); } else { cov_7c8ruliiv.b[3][1]++; }cov_7c8ruliiv.s[12]++; requestAddress().then(function (address) { cov_7c8ruliiv.f[2]++; var errorMatch = (cov_7c8ruliiv.s[13]++, new Error('Address/Account received does not match the network your provider is configured for')); cov_7c8ruliiv.s[14]++; _this.setAccount(address) ? (cov_7c8ruliiv.b[4][0]++, cb(null, _this.address)) : (cov_7c8ruliiv.b[4][1]++, cb(errorMatch)); }, function (error) { cov_7c8ruliiv.f[3]++; cov_7c8ruliiv.s[15]++; return cb(error); }); }; cov_7c8ruliiv.s[16]++; this.sendTransaction = function (txobj, cb) { cov_7c8ruliiv.f[4]++; cov_7c8ruliiv.s[17]++; sendTransaction(txobj).then(function (address) { cov_7c8ruliiv.f[5]++; cov_7c8ruliiv.s[18]++; return cb(null, address); }, function (error) { cov_7c8ruliiv.f[6]++; cov_7c8ruliiv.s[19]++; return cb(error); }); }; cov_7c8ruliiv.s[20]++; this.signTypedData = function (typedData, cb) { cov_7c8ruliiv.f[7]++; cov_7c8ruliiv.s[21]++; signTypedData(typedData).then(function (payload) { cov_7c8ruliiv.f[8]++; cov_7c8ruliiv.s[22]++; return cb(null, encodeSignature(payload.signature)); }, function (error) { cov_7c8ruliiv.f[9]++; cov_7c8ruliiv.s[23]++; return cb(error); }); }; cov_7c8ruliiv.s[24]++; this.personalSign = function (data, cb) { cov_7c8ruliiv.f[10]++; cov_7c8ruliiv.s[25]++; personalSign(data).then(function (payload) { cov_7c8ruliiv.f[11]++; cov_7c8ruliiv.s[26]++; return cb(null, encodeSignature(payload.signature)); }, function (error) { cov_7c8ruliiv.f[12]++; cov_7c8ruliiv.s[27]++; return cb(error); }); }; } (0, _createClass3.default)(UportSubprovider, [{ key: 'setAccount', value: function setAccount(address) { cov_7c8ruliiv.f[13]++; cov_7c8ruliiv.s[28]++; if ((cov_7c8ruliiv.b[6][0]++, this.network.id) && (cov_7c8ruliiv.b[6][1]++, (0, _mnid.isMNID)(address))) { cov_7c8ruliiv.b[5][0]++; var mnid = (cov_7c8ruliiv.s[29]++, (0, _mnid.decode)(address)); cov_7c8ruliiv.s[30]++; if (this.network.id === mnid.network) { cov_7c8ruliiv.b[7][0]++; cov_7c8ruliiv.s[31]++; this.address = mnid.address; cov_7c8ruliiv.s[32]++; return true; } else { cov_7c8ruliiv.b[7][1]++; } cov_7c8ruliiv.s[33]++; return false; } else { cov_7c8ruliiv.b[5][1]++; } // Does not force validation, if no network id given will still set address cov_7c8ruliiv.s[34]++; this.address = (0, _mnid.isMNID)(address) ? (cov_7c8ruliiv.b[8][0]++, (0, _mnid.decode)(address).address) : (cov_7c8ruliiv.b[8][1]++, address); cov_7c8ruliiv.s[35]++; return true; } /** * Replace sync send with async send * @private */ }, { key: 'send', value: function send(payload, callback) { cov_7c8ruliiv.f[14]++; cov_7c8ruliiv.s[36]++; return this.sendAsync(payload, callback); } /** * Overrides sendAsync to caputure the following RPC calls eth_coinbase, eth_accounts, * and eth_sendTransaction. All other calls are passed to the based provider. * eth_coinbase, eth_accounts will get a uPort identity address with getAddress. * While eth_sendTransaction with send transactions to a uPort app with sendTransaction * * @param {Any} payload request payload * @param {Function} callback called with response or error * @private */ }, { key: 'sendAsync', value: function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(payload, callback) { var remember, useInjectedProvider, _ref3, respond, txParams, typedData, data; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: cov_7c8ruliiv.f[15]++; remember = void 0, useInjectedProvider = (cov_7c8ruliiv.s[37]++, this.useInjectedProvider); // Present a dialog to ask about using injected provider if present but not approved cov_7c8ruliiv.s[38]++; if (!((cov_7c8ruliiv.b[10][0]++, this.hasInjectedProvider) && (cov_7c8ruliiv.b[10][1]++, !this.useInjectedProvider))) { _context.next = 15; break; } cov_7c8ruliiv.b[9][0]++; cov_7c8ruliiv.s[39]++; _context.next = 8; return (0, _ui.askProvider)(payload.method === 'eth_sendTransaction'); case 8: _ref3 = _context.sent; remember = _ref3.remember; useInjectedProvider = _ref3.useInjectedProvider; cov_7c8ruliiv.s[40]++; if (remember) { cov_7c8ruliiv.b[11][0]++; cov_7c8ruliiv.s[41]++; this.useInjectedProvider = useInjectedProvider; } else { cov_7c8ruliiv.b[11][1]++; }_context.next = 16; break; case 15: cov_7c8ruliiv.b[9][1]++; case 16: cov_7c8ruliiv.s[42]++; if (!useInjectedProvider) { _context.next = 25; break; } cov_7c8ruliiv.b[12][0]++; cov_7c8ruliiv.s[43]++; web3.provider.sendAsync(payload, callback); cov_7c8ruliiv.s[44]++; return _context.abrupt('return'); case 25: cov_7c8ruliiv.b[12][1]++; case 26: cov_7c8ruliiv.s[45]++; respond = function respond(error, result) { cov_7c8ruliiv.f[16]++; cov_7c8ruliiv.s[46]++; if (error) { cov_7c8ruliiv.b[13][0]++; cov_7c8ruliiv.s[47]++; callback({ id: payload.id, jsonrpc: '2.0', error: error.message }); } else { cov_7c8ruliiv.b[13][1]++; cov_7c8ruliiv.s[48]++; callback(null, { id: payload.id, jsonrpc: '2.0', result: result }); } }; cov_7c8ruliiv.s[49]++; if (!Array.isArray(payload)) { _context.next = 37; break; } cov_7c8ruliiv.b[14][0]++; cov_7c8ruliiv.s[50]++; _async2.default.map(payload, this.sendAsync.bind(this), callback); cov_7c8ruliiv.s[51]++; return _context.abrupt('return'); case 37: cov_7c8ruliiv.b[14][1]++; case 38: cov_7c8ruliiv.s[52]++; _context.t0 = payload.method; _context.next = _context.t0 === 'eth_coinbase' ? 42 : _context.t0 === 'eth_accounts' ? 45 : _context.t0 === 'eth_sendTransaction' ? 48 : _context.t0 === 'eth_signTypedData_v3' ? 52 : _context.t0 === 'eth_signTypedData' ? 53 : _context.t0 === 'personal_sign' ? 57 : 61; break; case 42: cov_7c8ruliiv.b[15][0]++; cov_7c8ruliiv.s[53]++; return _context.abrupt('return', this.getAddress(respond)); case 45: cov_7c8ruliiv.b[15][1]++; cov_7c8ruliiv.s[54]++; return _context.abrupt('return', this.getAddress(function (error, address) { cov_7c8ruliiv.f[17]++; cov_7c8ruliiv.s[55]++; respond(error, [address]); })); case 48: cov_7c8ruliiv.b[15][2]++; txParams = (cov_7c8ruliiv.s[56]++, payload.params[0]); cov_7c8ruliiv.s[57]++; return _context.abrupt('return', this.sendTransaction(txParams, respond)); case 52: cov_7c8ruliiv.b[15][3]++; case 53: cov_7c8ruliiv.b[15][4]++; typedData = (cov_7c8ruliiv.s[58]++, payload.params[0]); cov_7c8ruliiv.s[59]++; return _context.abrupt('return', this.signTypedData(typedData, respond)); case 57: cov_7c8ruliiv.b[15][5]++; data = (cov_7c8ruliiv.s[60]++, payload.params[0]); cov_7c8ruliiv.s[61]++; return _context.abrupt('return', this.personalSign(data, respond)); case 61: cov_7c8ruliiv.b[15][6]++; cov_7c8ruliiv.s[62]++; return _context.abrupt('return', this.provider.sendAsync(payload, callback)); case 64: case 'end': return _context.stop(); } } }, _callee, this); })); function sendAsync(_x, _x2) { return _ref2.apply(this, arguments); } return sendAsync; }() }]); return UportSubprovider; }(); function encodeSignature(_ref4) { var r = _ref4.r, s = _ref4.s, v = _ref4.v; cov_7c8ruliiv.f[18]++; cov_7c8ruliiv.s[63]++; return '0x' + r.padStart(64, '0') + s.padStart(64, '0') + v; } exports.default = UportSubprovider;