# cognitesdk [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage Status](https://coveralls.io/repos/github/cognitedata/cognitesdk-js/badge.svg?branch=master)](https://coveralls.io/github/cognitedata/cognitesdk-js?branch=master)

> Javascript client library for Cognite SDK

## Installation

```sh
$ npm install --save cognitesdk
```

## Usage


#### Authentication with 'silent login' (available from version >0.4)

This injects an iframe into the 

```js
  // Intially call the redirect function
  cognitesdk.loginWithRedirect();

  // get the token from the url
  const token = some_querystring_parser('access_token');

  // use that token for all subsequent calls to api
  cognitesdk.setBearerToken(token)

  // Figure out how long til the token expires
  const decodedToken = jwtDecode(token);
  const msToExpiration =
    decodedToken.expire_time * 1000 - new Date().getTime();

  /* Call silentlogin function some time before it expires
  repeat every time you get a new token 
  
  This injcts an iframe into your page, and gets the token from the a redirect in that frame
  Pass in the url to an empty html file for fastest load times.
  */
  setTimeout(() => {
    getAccessTokenFromSession('www.myapplication.com/empty.html')
  }, msToExpiration - 5000);
```

#### Example get a project

```js
const cognitesdk = require('cognitesdk');

cognitesdk.configure({
  project,
  version,
});


cognitesdk
  .getProject()
  .then(console.log)
  .catch(console.error);
```

## To release
Use the command `yarn release`

This will build, bump version and release to npm.


## Build from repo

The tests need an API key to make sure it's working. Create a file called
`.secrets.json` in the root folder, looking like this:

```json
{
  "apikey": "..."
}
```

```bash
$ git clone git@github.com:cognitedata/cognitesdk-js
$ yarn
$ yarn test
```

[daviddm-image]: https://david-dm.org/cognitedata/cognitesdk-js.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/cognitedata/cognitesdk-js
