# bactery

> Check if objects are well constructed according to a map

Latest version **1.1.2** (published 2016-04-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install bactery
pnpm add bactery
yarn add bactery
bun add bactery
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.2 |
| Published | 2016-04-27 |
| First published | 2016-04-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Matthieu Robin |
| Maintainers | matthieurobin |
| Keywords | bactery, object, control, param, map |

## Links

- npm: https://www.npmjs.com/package/bactery
- Repository: https://github.com/matthieurobin/bactery
- Homepage: https://github.com/matthieurobin/bactery#readme
- Issues: https://github.com/matthieurobin/bactery/issues
- npm.io page: https://npm.io/package/bactery

## Recent versions

- 1.1.2 (latest) — 2016-04-27
- 1.1.1 — 2016-04-26
- 1.1.0 — 2016-04-25
- 1.0.2 — 2016-04-25
- 1.0.1 — 2016-04-24
- 1.0.0 — 2016-04-24

## README

# bactery
Check if objects are well constructed according to a map

### Installation

```bash
npm install --save bactery
```

### Usage

```javascript

var bactery = require('bactery');

var requiredProperties = ['id', 'label', 'description'];
var myObjectToControl  = {
  id : 1,
  label : 'bla'
};

var res = bactery.check(requiredProperties, myObjectToControl);

res.isConform => false
res.message   => 'The following key(s) is/are missing : description'
res.errors    => ['description']

```
### API

`bactery.check(map, object)`

- `{Array} map`
- `{Object/Array} object` : if the object is an array, the corresponding map is applicated over the collection of objects

Returns an `object` :
  + `{boolean} isConform`, the result of the control
  + `{String} message`, an error message
  + `{Array} errors`, an array of the missing keys

### Advanced usages

This section describes how to write the map parameter. 

#### Object in object

Pay attention : 
  + the `*` character represents the key to access the sub object 
  + a simple `*` means that the property is required. It can not be `null`
  + a double `**`  means that the property is facultative.


```javascript

var objectToControl = { 
  id : 1, 
  label : 'Loar', 
  description : { 
    short : 'bla', 
    detailed : 'blabla'
  }
};

// All the properties are required
var requiredProperties = ['id', 'label', ['*description', 'short', 'detailed']];
// .description is facultative
var requiredProperties = ['id', 'label', ['**description', 'short', 'detailed']];

```

#### Array in object

Pay attention : 
  + the `*` character represents the key to access the sub array.
  + a simple `*` means that the property is required. It can not be `null`
  + a double `**`  means that the property is facultative.

```javascript

var objectToControl = { 
  id : 1, 
  section : 'novel',
  books: [
    { 
      id: 2513,
      label: 'Loar'
    },  {
      id: 2514
      label: 'Incognito'
    }
  ]
};

// All the properties are required
var requiredProperties = ['id', ['*books', 'id', 'label']];
// .books is facultative
var requiredProperties = ['id', ['**books', 'id', 'label']];

```

#### Deep objects/arrays

```javascript

var objectToControl = { 
  id: 1,
  section : 'novel',
  books: [
    { 
      id: 2513, 
      label: 'Loar',
      author: {
        name: 'Loïc Henry'
      }
    }, {
      id: 2544,
      label: 'Incognito'
      author: {
        name: 'David EAGLEMAN'
      }
    }
  ]
};

var requiredProperties = ['id', ['*books', 'id', 'label', ['*author', 'id', 'name']]];

```

#### Array of objects

```javascript

var objectsToControl = [
  {
    id : 1,
    label : 'bla'
  },
  {
    id : 2,
    label : 'blo'
  }
];

var requiredProperties = ['id', 'label'];

```

---
_Source: https://npm.io/package/bactery · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
