UNPKG

@parity/light.js

Version:

A high-level reactive JS library optimized for light clients

129 lines (128 loc) 4.56 kB
"use strict"; // Copyright 2015-2019 Parity Technologies (UK) Ltd. // This file is part of Parity. // // SPDX-License-Identifier: MIT Object.defineProperty(exports, "__esModule", { value: true }); var operators_1 = require("rxjs/operators"); var createRpc_1 = require("./utils/createRpc"); var frequency_1 = require("../frequency"); var operators_2 = require("../utils/operators"); /** * Observable containing the EIP155 chain ID used for transaction signing. * Calls `eth_chainId` * * @param options - Options to pass to {@link RpcObservableOptions}. * @return - An Observable containing the chain ID. */ function chainId$(options) { return createRpc_1.default({ calls: ['eth_chainId'], frequency: [frequency_1.default.onStartup$], name: 'chainId$', pipes: function (api) { return [operators_2.switchMapPromise(function () { return api.eth.chainId(); })]; } })(options)(); } exports.chainId$ = chainId$; /** * Observable which contains the array of all addresses managed by the light * client. * * Calls eth_accounts. * * @param options - Options to pass to {@link RpcObservableOptions}. * @return - An Observable containing the list of public addresses. */ function accounts$(options) { return createRpc_1.default({ frequency: [frequency_1.default.onAccountsChanged$], name: 'accounts$' })(options)(); } exports.accounts$ = accounts$; /** * Get the balance of a given account. Calls `eth_getBalance`. * * @param address - The account address to query the balance. * @param options - Options to pass to {@link RpcObservableOptions}. * @return - An Observable containing the balance. */ function balanceOf$(address, options) { return createRpc_1.default({ calls: ['eth_getBalance'], frequency: [frequency_1.default.onEveryBlock$, frequency_1.default.onStartup$], name: 'balanceOf$', pipes: function (api) { return [operators_2.switchMapPromise(function () { return api.eth.getBalance(address); })]; } })(options)(address); } exports.balanceOf$ = balanceOf$; /** * Get the transaction count of a given account. Calls `eth_getTransactionCount` * * @param address - Address of the account whose transaction count we want to query. * @param options - Options to pass to {@link RpcObservableOptions}. * @return - An Observable containing the transaction count. */ function transactionCountOf$(address, options) { return createRpc_1.default({ calls: ['eth_getTransactionCount'], frequency: [frequency_1.default.onEveryBlock$, frequency_1.default.onStartup$], name: 'transactionCountOf$', pipes: function (api) { return [ operators_2.switchMapPromise(function () { return api.eth.getTransactionCount(address); }) ]; } })(options)(address); } exports.transactionCountOf$ = transactionCountOf$; /** * Get the default account managed by the light client. * * @param options - Options to pass to {@link RpcObservableOptions}. * @return - An Observable containing the public address * of the default account. */ function defaultAccount$(options) { return createRpc_1.default({ dependsOn: accounts$, name: 'defaultAccount$', pipes: function () { return [operators_1.map(function (accounts) { return accounts[0]; })]; } })(options)(); } exports.defaultAccount$ = defaultAccount$; /** * Get the current block number. * * @return {Observable<Number>} - An Observable containing the block height. */ function blockNumber$(options) { return createRpc_1.default({ frequency: [frequency_1.default.onEveryBlock$], name: 'blockNumber$', pipes: function () { return [operators_1.map(function (block) { return block.number; })]; } })(options)(); } exports.blockNumber$ = blockNumber$; /** * Shorthand for fetching the current account's balance. */ function myBalance$(options) { return createRpc_1.default({ calls: ['eth_getBalance'], dependsOn: defaultAccount$, name: 'myBalance$', pipes: function () { return [operators_1.switchMap(function (defaultAccount) { return balanceOf$(defaultAccount); })]; } })(options)(); } exports.myBalance$ = myBalance$; /** * Get the syncStatus state. * * @return - An Observable containing the syncing state object, or false. */ function syncStatus$(options) { return createRpc_1.default({ frequency: [frequency_1.default.onSyncingChanged$], name: 'syncStatus$' })(options)(); } exports.syncStatus$ = syncStatus$;