#bluzelle-lib

A JavaScript API for interacting with Bluzelle in Node.js and the browser

[![Circle CI](https://circleci.com/gh/bluzelle/bluzelle-lib/tree/develop.svg?style=svg)](https://circleci.com/gh/bluzelle/bluzelle-lib/tree/develop) [![Coverage Status](https://coveralls.io/repos/bluzelle/bluzelle-lib/badge.png?branch=develop)](https://coveralls.io/r/bluzelle/bluzelle-lib?branch=develop)

[![NPM](https://nodei.co/npm/bluzelle-lib.png)](https://www.npmjs.org/package/bluzelle-lib)

###Features

+ Connect to a bluzelled server in JavaScript (Node.js or browser)
+ Issue [bluzelled API](https://bluzelle.com/build/bluzelled-apis/) requests
+ Listen to events on the Bluzelle network (transaction, ledger, etc.)
+ Sign and submit transactions to the Bluzelle network

###In this file

1. [Installation](#installation)
2. [Quick start](#quick-start)
3. [Running tests](#running-tests)

###Additional documentation

1. [Guides](docs/GUIDES.md)
2. [API Reference](docs/REFERENCE.md)
3. [Wiki](https://bluzelle.com/wiki/Bluzelle_JavaScript_library)

###Also see

+ [The Bluzelle wiki](https://bluzelle.com/wiki)
+ [bluzelle.com](https://bluzelle.com)

##Installation

**Via npm for Node.js**

```
  $ npm install bluzelle-lib
```

**Via bower (for browser use)**

```
  $ bower install bluzelle
```

See the [bower-bluzelle repo](https://github.com/bluzelle/bower-bluzelle) for additional bower instructions.


**Building bluzelle-lib for browser environments**

bluzelle-lib uses Gulp to generate browser builds. These steps will generate minified and non-minified builds of bluzelle-lib in the `build/` directory.

```
  $ git clone https://github.com/bluzelle/bluzelle-lib
  $ npm install
  $ npm run build
```

**Restricted browser builds**

You may generate browser builds that contain a subset of features. To do this, run `./node_modules/.bin/gulp build-<name>`

+ `build-core` Contains the functionality to make requests and listen for events such as `ledgerClose`. Only `bluzelle.Remote` is currently exposed. Advanced features like transaction submission and orderbook tracking are excluded from this build.

##Quick start

`Remote.js` ([remote.js](https://github.com/bluzelle/bluzelle-lib/blob/develop/src/js/bluzelle/remote.js)) is the point of entry for interacting with bluzelled

```js
/* Loading bluzelle-lib with Node.js */
var Remote = require('bluzelle-lib').Remote;

/* Loading bluzelle-lib in a webpage */
// var Remote = bluzelle.Remote;

var remote = new Remote({
  // see the API Reference for available options
  servers: [ 'wss://s1.bluzelle.com:443' ]
});

remote.connect(function() {
  /* remote connected */
  remote.requestServerInfo(function(err, info) {
    // process err and info
  });
});
```

##Running tests

1. Clone the repository

2. `cd` into the repository and install dependencies with `npm install`

3. `npm test`

**Generating code coverage**

bluzelle-lib uses `istanbul` to generate code coverage. To create a code coverage report, run `npm test --coverage`. The report will be created in `coverage/lcov-report/`.
