noderowallet
TypeScript icon, indicating that this package has built-in type declarations

1.1.3 • Public • Published

noderowallet

A Javascript library for interacting with the Monero Wallet RPC interface, written in TypeScript, documented with JSDoc, with BigInt support. Zero (0) dependencies. Since version 1.1.0, this library uses the fetch API instead of the node.js http module, and is supposed to work in the browser and other JS runtimes.

Currently, authentication is not supported. You have to start monero-wallet-rpc with --disable-rpc-login, use a reverse proxy that does authentication for you, or use a fetch client that implements digest authentication (see below)

Be careful when using monero-wallet-rpc without authenticaton. Block the RPC port with a firewall, or even better, run the wallet in Docker. If the port is open to the Internet anyone can use your wallet, including stealing all your funds.

Usage

import {NoderoWallet} from 'noderowallet'

// WARNING: make sure your port is not in the bad ports list
// https://fetch.spec.whatwg.org/#port-blocking
const monero = new NoderoWallet({ host: '127.0.0.1', port: 1234 })
monero.getBalance().then((x) => console.log(x))

// Outputs:
{
  balance: 1125125151521n,
// atomic units, in this case the balance is 1.125125151521
// from https://www.getmonero.org/resources/moneropedia/atomic-units.html:
// Atomic Units refer to the smallest fraction of 1 XMR. One atomic unit is currently 1e-12 XMR (0.000000000001 XMR, or one piconero). It may be changed in the future.
  blocks_to_unlock: 0n,
  multisig_import_needed: false,
  per_subaddress: [
    {
      account_index: 0n,
      address: '52R4RNjVjPn6Aj3SVA1yzZQStC8a4StYTUiuAtLjBPk92A76vrCD2pcPmV51Td8X56Gb1smNTaiEadc4gurjQ5nJBUuVCFB',
      address_index: 0n,
      balance: 1125125151521n,
      blocks_to_unlock: 0n,
      label: 'Primary account',
      num_unspent_outputs: 1n,
      time_to_unlock: 0n,
      unlocked_balance: 1125125151521n
    }
  ],
  time_to_unlock: 0n,
  unlocked_balance: 1125125151521n
}

Using a custom fetch client

noderowallet supports passing your own fetch-compatible client, more specifically, any function that matches the following type:

type FetchClient = (
	url: string,
	options: {
		method: 'POST'
		body: string
	}
) => Promise<{
	ok: boolean
	status: number
	text: () => Promise<string>
}>

For example, to use the digest-fetch library:

import { NoderoWallet } from 'noderowallet'
import DigestClient from 'digest-fetch'

const digestClient = new DigestClient('monerouser', 'moneropassword')

const monero = new NoderoWallet({
	host: '127.0.0.1',
	port: 1234,
	fetchClient: (url, options) => digestClient.fetch(url, options)
})
(◣_◢)

Package Sidebar

Install

npm i noderowallet

Weekly Downloads

2

Version

1.1.3

License

BANG

Unpacked Size

175 kB

Total Files

8

Last publish

Collaborators

  • keef1337