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

zaidan-dealer-client

v0.8.0

Published

A simple browser client for the Zaidan dealer system, leveraging 0x and ZEIP-18 based fills.

Downloads

10

Readme

Zaidan dealer client

A simple browser client for the Zaidan dealer system, leveraging 0x and ZEIP-18 based fills.

Includes helpful utilities for viewing ERC-20 balances, and setting 0x asset proxy allowances.

View the documentation for full API reference.

Usage

The DealerClient supports Web3 browsers that expose a window.ethereum provider, and can also be used in server environments by passing an Ethereum JSONRPC URL as the second parameter to the constructor.

In the future, it will support additional provider types, such as hardware wallets and mnemonics.

Import into project

TypeScript/ES6:

import { DealerClient } from "zaidan-dealer-client";

CommonJS:

const { DealerClient } = require("zaidan-dealer-client");

Browser (using provided WebPack config):

const { DealerClient } = window.Zaidan;

Initialize

Pass the DealerClient constructor a full URL to a Zaidan dealer RPC server.

Client-side (browser)

(async () => {
  const dealer = new DealerClient("https://dealer.zaidan.io/");

  // must be initialized before use, will prompt user to connect wallet
  await dealer.init();
})();

Server-side (unlocked node)

(async () => {
  const dealer = new DealerClient("https://dealer.zaidan.io/", {
    providerUrl: "http://localhost:8545",
  });

  // must be initialized before use, will prompt user to connect wallet
  await dealer.init();
})();

Get and fill quotes

There are two ways to get price quotes for supported markets from a configured dealer.

A currency pair can be provided as well as a side ("bid" or "ask") to retrieve a quote for that market using the base and quote asset of the currency pair. This provides a more conventional trading interface.

For convenience, an alternate "swap" functionality can be used which allows the client to directly specify the maker and taker asset, by indicating their desired taker quantity to retrieve a price quote and signed order from the dealer for a corresponding amount of the maker asset. This interface is popular for many contract-based decentralized exchanges.

Currency pair quote

Use the method below to request a bid or ask quote from a supported market provided by a dealer, where the size is in units of the base asset.

// other fields available in response (price, fee, etc.), see documentation
const { id, order, price } = await dealer.getQuote(4.24, "WETH/DAI", "bid");

Swap quote

Conceptually, the getSwapQuote call below can be interpreted as the client requesting to swap 3.5 WETH for an equivalent amount of DAI, according to a price quote from the dealer.

// other fields available in response (price, fee, etc.), see documentation
const { id, order, price } = await dealer.getSwapQuote(3.5, "WETH", "DAI");

Request for fill

If the client wishes to execute the quote (within the bounds of it's expiration), they can sign the order according to ZEIP-18 and request for the dealer to execute the fill.

// simply pass the full quote object back to `handleTrade` to execute a quote
// will prompt for signature and request the trade be settled by the dealer
const txId = await dealer.handleTrade(quote);

See the ./docs folder for more.

Development

Additional development scripts can be found in package.json (docs site, etc.).

Build

Compile TypeScript source:

yarn build

Test

Run spec tests (requires docker-compose for 0x snapshot):

yarn test

Run with alternate Ethereum JSONRPC (see tests/ for more configuration):

# default shown
WEB3_URL=http://localhost:8545 yarn test

Generate documentation

Build documentation from TypeScript comments using tsdoc (ouput to docs/):

yarn docs

Build docs site

Generate the vuepress site (output to docs/.vuepress/dist):

yarn docs:build