# @zuluprotocol/wallet-client

> Wallet client for the `client` namespace of the [Zulu wallet API v0.67.3](https://github.com/zuluprotocol/zulu/tree/develop/wallet/api) based on its [openrpc specs](https://github.com/zuluprotocol/zulu/blob/develop/wallet/api/openrpc.json).

Latest version **0.1.9** (published 2023-02-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install @zuluprotocol/wallet-client
pnpm add @zuluprotocol/wallet-client
yarn add @zuluprotocol/wallet-client
bun add @zuluprotocol/wallet-client
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.9 |
| Published | 2023-02-27 |
| First published | 2023-02-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 3 |
| Unpacked size | 31.4 KB |
| Known vulnerabilities | 0 (+5 in 2 direct dependencies) |
| Install scripts | no |
| Maintainers | adrianross |

## Links

- npm: https://www.npmjs.com/package/@zuluprotocol/wallet-client
- npm.io page: https://npm.io/package/@zuluprotocol/wallet-client

## Dependencies (3)

- [nanoid](https://npm.io/package/nanoid.md) 3.3.4
- [express](https://npm.io/package/express.md) 4.18.2
- [node-fetch](https://npm.io/package/node-fetch.md) 2.6.7

## Recent versions

- 0.1.9 (latest) — 2023-02-27

## README

# @zuluprotocol/wallet-client

Wallet client for the `client` namespace of the [Zulu wallet API v0.67.3](https://github.com/zuluprotocol/zulu/tree/develop/wallet/api) based on its [openrpc specs](https://github.com/zuluprotocol/zulu/blob/develop/wallet/api/openrpc.json).

## Usage

You can import and use the client in the following way:

```
import { WalletClient } from '@zuluprotocol/wallet-client'

const client = new WalletClient({ hostname: 'http://localhost:1789' })
```

The client takes two optional arguments, too, beside the hostname:

- `token`: if you have a previously saved token string, you can pass that in to the constructor
- `origin`: defaults to the value of `window.location.origin`

To sum it up:

```
const client = new WalletClient({
  hostname: 'http://localhost:1789',
  token: <YOUR_TOKEN>,
  origin: 'https://zulu.zyz'
})
```

## Error handling

1. The client will check if there is an error property on the response body and will throw an `WalletClientError` instance wrapping the error info, and expose a code property with the jsonrpc code, and a message based on the jsonrpc message and data properties, as defined in [specification](https://www.jsonrpc.org/specification).
2. If there is a network error / any sort of server error, the client will wrap it into a `WalletHttpError`, which will have a code property with the relevant http error code, and the message will the the http response status text.

## Generating the client

Run `yarn nx run wallet-client:generate` to regenerate the client from the API specs. If you run this locally, the generator will need an environment variable pointing to an openrpc specs file (remote through http or a local file path) to use that as the source of for the wallet client.

```
WALLET_CLIENT_SPECS=https://...
```

NOTE: by default, the code generator should be pointed to [wallet API openrpc definition](https://raw.githubusercontent.com/zuluprotocol/zulu/develop/wallet/api/openrpc.json)

## Mocks

The wallet client exposes a mock service which you can import and run anywhere:

```
import { MockWalletService } from '@zuluprotocol/wallet-client/mocks'

const service = new MockWalletService({ port: 1789 })

service.start()
...
service.stop()
```

Alternatively, you can run the `yarn nx run wallet-client:start-mock` from the zuluwallet-ui monorepo to start a mock service.

---
_Source: https://npm.io/package/@zuluprotocol/wallet-client · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
