npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

xrpl-orderbook-reader

v0.4.0

Published

Parse XRPL Order Book results into effective liquidity based exchange prices

Downloads

141

Readme

XRPL Orderbook Reader npm version

This repository takes XRPL Orderbook (book_offers) datasets and requested volume to exchange and calculates the effective exchange rates based on the requested and available liquidity.

Optionally certain checks can be specified (eg. book_offers on the other side of the book) to warn for limited (percentage) liquidity on the requested side, and possibly other side of the order book.

Typescript 3.8+ is required

How to use:

For now: See samples/Sample.ts

Call & get results

Please create one LiquidityCheck instance per pair (from/to).

  const Lc = new LiquidityCheck(Params)
  const Lq = await Lc.get()
  log(Lq.rate)

You can update Params and fetch new data, and get the results based on the new data with the refresh method. When called without input parameter (refresh()) existing Params will be used based on fresh order book information. If a new Params object is provided, the entire instance will be updated.

  // Lc instance already exists
  // const Lc = new LiquidityCheck(Params)
  
  Params.trade.amount += 1000

  Lc.refresh(Params)
  const newLq = await Lc.get()

Available options here.

Client

This lib. requires a connection to an XRPL node. There are two supported clients:

Preferred: xrpl-client - https://www.npmjs.com/package/xrpl-client

You can pass the entire class instance of xrpl-client to the Params object. You pass the class as client property.

new LiquidityCheck({
  <...>,
  client: new XrplClient()
})

Deprecated: rippled-ws-client - https://www.npmjs.com/package/rippled-ws-client

You can pass the send method of rippled-ws-client to the Params object as method property.

new LiquidityCheck({
  <...>,
  method: RippledWsClientInstance.send
})

Custom WebSocket/... implementation

You can pass a send method to the Params object. The send method passed to the Params should take an object with a command for rippled and return a Promise that will resolve to contain requested order book lines. You pass a function as method property.

new LiquidityCheck({
  <...>,
  method: (JsonRequestWithCommand) => {
    return new Promise(resolve) {
      // Custom implementation to fetch the book results
    }
  }
})

Sample in JS (not TS) environment(s):

Please see /samples/PlainSample.js

How to...

Test:

npm run test

Run development code:

npm run dev (Compiles and runs /samples/Sample.ts)