@parity/light.js
Version:
A high-level reactive JS library optimized for light clients
129 lines (128 loc) • 4.56 kB
JavaScript
// 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$;
;