@machinomy/hdwallet-provider
Version:
HD Wallet-enabled Web3 provider
103 lines • 4.69 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HDWalletProvider = void 0;
const filters_1 = __importDefault(require("web3-provider-engine/subproviders/filters"));
const sanitizer_1 = __importDefault(require("web3-provider-engine/subproviders/sanitizer"));
const cache_1 = __importDefault(require("web3-provider-engine/subproviders/cache"));
const subscriptions_1 = __importDefault(require("web3-provider-engine/subproviders/subscriptions"));
const inflight_cache_1 = __importDefault(require("web3-provider-engine/subproviders/inflight-cache"));
const util_1 = require("./util");
const nonce_subprovider_1 = require("./nonce.subprovider");
const mnemonic_subprovider_1 = require("./mnemonic.subprovider");
const path_util_1 = require("./path.util");
const ledger_subprovider_1 = require("./ledger.subprovider");
const FetchSubprovider = require("web3-provider-engine/subproviders/fetch");
const polling_1 = require("./block-tracker/polling");
const engine_1 = require("./engine");
async function ledgerProvider(getTransport, options) {
const remote = util_1.baseProvider(options.rpc);
const signer = new ledger_subprovider_1.LedgerSubprovider(getTransport, options);
return new HDWalletProvider(signer, remote);
}
class HDWalletProvider {
/**
* Initialize HDWallet using some sort of provider.
*/
constructor(signer, remote) {
const blockTracker = new polling_1.PollingBlockTracker({
provider: this,
pollingInterval: 4000,
setSkipCacheFlag: true
});
const engine = new engine_1.Engine({
blockTracker
});
this.getAddresses = () => {
return new Promise((resolve, reject) => {
signer.getAccounts((error, accounts) => {
error ? reject(error) : resolve(accounts);
});
});
};
engine.addProvider(signer);
engine.addProvider(new nonce_subprovider_1.NonceSubprovider());
engine.addProvider(new sanitizer_1.default());
engine.addProvider(new cache_1.default());
if (remote instanceof FetchSubprovider) {
engine.addProvider(new subscriptions_1.default());
engine.addProvider(new filters_1.default());
}
engine.addProvider(new inflight_cache_1.default());
engine.addProvider(remote);
this.engine = engine;
engine.start();
}
static mnemonic(options) {
const path = options.path || path_util_1.DEFAULT_PATH;
const remote = util_1.baseProvider(options.rpc);
const signer = new mnemonic_subprovider_1.MnemonicSubprovider(path, options.mnemonic, options.numberOfAccounts);
return new HDWalletProvider(signer, remote);
}
static async ledgerHID(options) {
require("babel-polyfill");
const TransportHid = (await Promise.resolve().then(() => __importStar(require("@ledgerhq/hw-transport-node-hid")))).default;
const getTransport = () => TransportHid.create();
return ledgerProvider(getTransport, options);
}
static async ledgerBLE(options) {
require("babel-polyfill");
const TransportBLE = (await Promise.resolve().then(() => __importStar(require("./transport-ble")))).TransportBle;
const getTransport = () => TransportBLE.create();
return ledgerProvider(getTransport, options);
}
send(payload, callback) {
this.engine.sendAsync(payload, callback);
}
sendAsync(payload, callback) {
this.engine.sendAsync(payload, callback);
}
}
exports.HDWalletProvider = HDWalletProvider;
//# sourceMappingURL=hdwallet.provider.js.map