open-index/open-npm huggingface dataset:
npm package: @radarrelay/subproviders
Description: A collection of useful subproviders.
Latest version: 0.5.5

# subproviders

A collection of useful subproviders.

Subproviders are like normal web3 providers, but only handle a subset of RPC methods. They can be used to route, or otherwise handle, RPC calls before returning a result to the caller.

## Installation

### npm

```
npm install @0xproject/subproviders
```

### Yarn

```
yarn add @0xproject/subproviders
```

## Usage

Simply import the subprovider you are interested in using:

```javascript
import {
    ledgerEthereumBrowserClientFactoryAsync as ledgerEthereumClientFactoryAsync,
    LedgerSubprovider,
} from '@0xproject/subproviders';

const ledgerSubprovider = new LedgerSubprovider({
    networkId,
    ledgerEthereumClientFactoryAsync,
});

const accounts = await ledgerSubprovider.getAccountsAsync();
```

## Subproviders


### Eth Lightwallet subprovider

A subprovider that enables your dApp to send signing requests to [eth-lightwallet](https://github.com/ConsenSys/eth-lightwallet). These can be requests to sign transactions or messages.

### Pass-Through subprovider

A subprovider that enables your dApp to pass account and signing calls to another class instance for additional processing before returning a result to the subprovider.

### Nonce Tracker subprovider

A subprovider that enables your dApp to pass account and signing calls to another class instance for additional processing before returning a result to the subprovider.

### Ledger Nano S subprovider

A subprovider that caches the nonce when a request to getTransactionCount is made and increments the pending nonce after successful transactions.

### Redundant RPC subprovider

A subprovider which attempts to send an RPC call to a list of RPC endpoints sequentially, until one of them returns a successful response.

### Injected Web3 subprovider

A subprovider that relays all signing related requests to a particular provider (in our case the provider injected onto the web page), while sending all other requests to a different provider (perhaps your own backing Ethereum node or Infura).


## Additional Information

### Install Dependencies

If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:

```bash
yarn config set workspaces-experimental true
```

```bash
yarn install
```

### Build

```bash
yarn build
```

or

```bash
yarn build:watch
```

### Clean

```bash
yarn clean
```

### Lint

```bash
yarn lint
```

### Run tests

#### Unit tests

```bash
yarn run test:unit
```

#### Integration tests

In order to run the integration tests, make sure you have a Ledger Nano S available.

* Plug it into your computer
* Unlock the device
* Open the on-device Ethereum app
* Make sure "browser support" is disabled

Then run:

```
yarn test:integration
```

#### All tests

```bash
yarn run test:all
```