# Asekurojs

A TypeScript library for interacting with the Asekuro protocol

### Installing

The latest version `0.1.7` is published to npm:

```
npm i asekuro-js
```

### Importing library

You can import the generated bundle to use the whole library generated by this starter:

```javascript
import Asekuro from 'asekuro-js'
```

### Usage

Create a Asekuro Config object containing addresses of deployed contracts. The easiest way to do this is by using a contract's Truffle artifact:

```javascript
const networkId = await promisify(this.state.web3.version.getNetwork)();

const asekuroConfig = {
    policyRegistryAddress: PolicyRegistry.networks[networkId].address
}
```

Then instantiate the asekuro library by passing in a web3 provider and the Asekuro Config:

```javascript
const asekuro = new Asekuro(this.web3.currentProvider, asekuroConfig);
```

Additionally, you can import the transpiled modules from `dist/lib` in case you have a modular library:

```javascript
import something from 'mylib/dist/lib/something'
```

To reference a specific Type:

```javascript
import { ApplicationOrder } from 'asekuro-js/dist/lib/types';
```

### NPM scripts

 - `npm t`: Run test suite
 - `npm start`: Run `npm run build` in watch mode
 - `npm run test:watch`: Run test suite in [interactive watch mode](http://facebook.github.io/jest/docs/cli.html#watch)
 - `npm run test:prod`: Run linting and generate coverage
 - `npm run build`: Generate bundles and typings, create docs
 - `npm run lint`: Lints code
 - `npm run commit`: Commit using conventional commit style ([husky](https://github.com/typicode/husky) will tell you to use it if you haven't :wink:)