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

exir-node-lib

v0.3.2

Published

Exir crypto exchange nodejs library

Downloads

2

Readme

exir-node-lib

Exir crypto exchange nodejs library

Usage

const Exir = require('exir-node-lib');

var client = new Exir();

You can pass your Access_Token generated from the site as follows:

var client = new Exir({ accessToken: MY_ACCESS_TOKEN });

There is a list of functions you can call which will be added later and they are not at this point implemented yet.

getTicker

var client = new Exir({ accessToken: MY_ACCESS_TOKEN });
client
	.getTicker('btc-eur')
	.then((res) => {
		let data = JSON.parse(res);
		console.log('The volume is', data.volume);
	})
	.catch((err) => {
		console.log(err);
	});

| Command | Parameters | Description | | ---------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | getTicker | symbol e.g. btc-eur | Last, high, low, open and close price and volume within the last 24 hours | | getOrderbook | symbol (optional) e.g. btc-eur | Orderbook containing list of bids and asks | | getTrade | symbol (optional) e.g. btc-eur | List of last trades | | getConstant | | Tick size, min price, max price, min size and max size of each symbol pair | | getUser | | User's personal information | | getBalance | | User's wallet balance | | getDeposit | | User's list of all deposits | | getWithdrawal | | User's list of all withdrawals | | getUserTrade | | User's list of all trades | | getOrder | orderId | Get specific information about a certain order | | getAllOrder | symbol (optional) e.g. btc-eur | Get the list of all user orders. It can be filter by passing the symbol | | createOrder | symbol, side (buy or sell), size (amount), type (market or limit), price | create a new order | | cancelOrder | orderId | Cancel a specific order with its ID | | cancelAllOrder | symbol (optional) e.g. btc-eur | Cancel all open order. It can be filter by passing the symbol |

Websocket

You can connect and subscribe to different websocket channels for realtime updates.

const socket = client.connect('orderbook');
socket.on('orderbook', (data) => {
	console.log(data);
});

You can only subscribe to specific symbols as follows: orderbook:btc-eur Here is the list of events you can subscribe:

  • orderbook
  • ticker
  • trades
  • chart
  • user (Private updates for the user such as balance, user orders etc as explained below)
  • all (It subsribes to all events)

When you subscribe to private updates on user you should listen for the events as follows:

const socket = client.connect('user');

socket.on('userInfo', (data) => {
	console.log(data);
});
socket.on('userOrder', (data) => {
	console.log(data);
});
socket.on('userTrade', (data) => {
	console.log(data);
});
socket.on('userWallet', (data) => {
	console.log(data);
});
socket.on('userUpdate', (data) => {
	console.log(data);
});

userInfo, userOrder, userTrade, userWallet are only partial and send data once. These sockets are similar to GET requests and you should not expect any updates after you receive the first set of data. However userUpdate is what is used for all updates on user's private data.

These are list of userUpdate client gets after subscribtion.

  • userUpdate: Updates related to the user's pivate information are as follows:
    • order_queued: When a user order is added to the queue.
    {
    	"type": "order_queued",
    	"data": {
    		"id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd",
    		"created_by": 79,
    		"price": 1001,
    		"side": "sell",
    		"size": 2,
    		"symbol": "bch-btc",
    		"filled": 0,
    		"type": "limit"
    	}
    }
    • order_processed: When a user order has been processed in the queue.
    {
    	"type": "order_processed",
    	"data": { "id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd" }
    }
    • order_canceled: When a user order has been canceled in the queue, so it has not been added to the orderbook.
    {
    	"type": "order_canceled",
    	"data": {
    		"id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd",
    		"message": "Insufficent balance to perform the order."
    	}
    }
    • order_added: When a user order is added to the orderbook.
    {
    	"type": "order_added",
    	"data": {
    		"id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd",
    		"created_by": 79,
    		"price": 1001,
    		"side": "sell",
    		"size": 2,
    		"symbol": "bch-btc",
    		"filled": 0,
    		"type": "limit"
    	}
    }
    • order_partialy_filled: When a user order is update because it was taken some part by another order.
    {
    	"type": "order_partialy_filled",
    	"data": {
    		"id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd",
    		"created_by": 79,
    		"price": 1001,
    		"side": "sell",
    		"size": 2,
    		"type": "limit"
    	}
    }
    • order_filled: When a user order is taken by another other in a trade.
    {
      "type": "order_filled",
      "data": [
        {
          "id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd"
        },
        {
          "id": "bc7717d4-04e9-4430-a21b-08d32b2c34cd"
        },
        ...
      ]
    }
    • order_updated: When a user updates the order.
    {
    	"type": "order_updated",
    	"data": {
    		"id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd",
    		"created_by": 79,
    		"price": 1001,
    		"side": "sell",
    		"size": 2,
    		"type": "limit"
    	}
    }
    • order_remove: When a user order is taken or the user cancel the orders/orders.
    {
      "type": "order_remove",
      "data": [
        {
          "id": "ac7717d4-04e9-4430-a21b-08d32b2c34cd"
        },
        {
          "id": "bc7717d4-04e9-4430-a21b-08d32b2c34cd"
        },
        ...
      ]
    }
    • trade: When a trade happens in the orderbook.
    {
      "type": "trade",
      "data": [
        {
          "order": { "id": "1efd30b6-fcb5-44da-82c1-82d9def2ddbd", "size": 0.2 },
          "price": 999,
          "side": "sell",
          "size": 0.1,
          "fee": 0,
          "timestamp": "2017-07-26T13:20:40.464Z"
        },
        ...
      ]
    }
    • deposit: When a user get a deposit in his account. Status = pending or completed
    {
    	"type": "deposit",
    	"data": {
    		"amount": 3000,
    		"currency": "fiat",
    		"status": false
    	},
    	"balance": {
    		"fiat_balance": 0,
    		"btc_balance": 300000,
    		"updated_at": "2017-07-26T13:20:40.464Z"
    	}
    }
    • withdrawal: When a user performs a withdrawal in his account. Status = pending or completed
    {
    	"type": "withdrawal",
    	"data": {
    		"amount": 5000,
    		"currency": "btc",
    		"status": true
    	},
    	"balance": {
    		"fiat_balance": 0,
    		"btc_balance": 300000,
    		"updated_at": "2017-07-26T13:20:40.464Z"
    	}
    }

Example

You can run the example by going to example folder and running:

node app.js

Documentation

For adding additional functionalities simply go to index.js and add more features. You can read more about api documentation at https://apidocs.exir.io You should create your token on the platform in setting->api keys