UNPKG

@parity/api

Version:

The Parity Promise-based API library for interfacing with Ethereum over RPC

86 lines (85 loc) 3.09 kB
"use strict"; // Copyright 2015-2019 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see <http://www.gnu.org/licenses/>. var Eth = require('./eth'); var Parity = require('./parity'); var Net = require('./net'); var Signer = require('./signer'); var isFunction = require('../util/types').isFunction; var PubSub = /** @class */ (function () { function PubSub(provider) { if (!provider || !isFunction(provider.subscribe)) { throw new Error('Pubsub API needs transport with subscribe() function defined. (WebSocket)'); } this._eth = new Eth(provider); this._net = new Net(provider); this._parity = new Parity(provider); this._signer = new Signer(provider); } Object.defineProperty(PubSub.prototype, "net", { get: function () { return this._net; }, enumerable: true, configurable: true }); Object.defineProperty(PubSub.prototype, "eth", { get: function () { return this._eth; }, enumerable: true, configurable: true }); Object.defineProperty(PubSub.prototype, "parity", { get: function () { return this._parity; }, enumerable: true, configurable: true }); Object.defineProperty(PubSub.prototype, "signer", { get: function () { return this._signer; }, enumerable: true, configurable: true }); PubSub.prototype.unsubscribe = function (subscriptionIds) { // subscriptions are namespace independent. Thus we can simply removeListener from any. return this._parity.removeListener(subscriptionIds); }; PubSub.prototype.subscribeAndGetResult = function (f, callback) { var _this = this; return new Promise(function (resolve, reject) { var isFirst = true; var onSubscription = function (error, data) { var p1 = error ? Promise.reject(error) : Promise.resolve(data); var p2 = p1.then(callback); if (isFirst) { isFirst = false; p2 .then(resolve) .catch(reject); } }; try { f.call(_this, onSubscription).catch(reject); } catch (err) { reject(err); } }); }; return PubSub; }()); module.exports = PubSub;