# JavaScript

### Installation

#### NPM

Run this command:

```bash
npm install comfortable-javascript
```

#### For Usage in Browser

```markup
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/comfortable-javascript@latest/dist/comfortable.min.js"></script>
```

> **Note:** For a specific version replace `@latest` with the version of your choice.

The SDK will be available as a global variable called: `Comfortable`

#### **Downloadable version**

Check out the release Page: <https://github.com/cmftable/comfortable-javascript/releases>

### Include the dependency

```javascript
const Comfortable = require('comfortable-javascript');
```

### Connect to your Repository and make your first request:

```javascript
const api = Comfortable.api('<repository-api-id>', '<api-key>', options);

api.getDocuments()
  .then(result => {
    // futher implementation
  })
  .catch(err => {
    throw err;
  })
```

list of **options** can be found [here](#options).

**Full Query example**

```javascript
const api = Comfortable.api('<repository-api-id>', '<api-key>', options);

api.getDocuments({
  limit: 25,
  offset: 0,
  locale: 'en',
  includes: 2,
  includeTags: ['include', 'me'],
  excludeTags: ['exclude', 'this'],
  fields: 'meta,fields(title)',
  embedAssets: true,
  filters: new Comfortable.Filter()
    .addAnd('title', 'like', '%Hello%')
    .addOr('title', 'like', '%World%'),
  sorting: new Comfortable.Sorting()
    .add('date', 'asc')
    .add('title', 'asc'),
  search: 'sport -football +soccer'
})
  .then(result => {
    // futher implementation
  })
  .catch(err => {
    throw err;
  })
```

### Options

| Option   | Type    | Description                                                                     |
| -------- | ------- | ------------------------------------------------------------------------------- |
| useProxy | boolean | enables the usage of a Proxy Endpoint instead of using <https://api.cmft.io/v1> |
| proxy    | string  | Proxy Url (e.g. <https://custom-api.com/v1>)                                    |
