# modela

> Javascript model library

Latest version **0.4.0** (published 2018-05-13) · ISC license · 0 weekly downloads

## Install

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

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.0 |
| Published | 2018-05-13 |
| First published | 2017-10-31 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 113.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 8 |
| Author | Nainemom |
| Maintainers | nainemom |
| Keywords | javascript, model |

## Links

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

## Recent versions

- 0.4.0 (latest) — 2018-05-13
- 0.3.1 — 2018-05-06
- 0.3.0 — 2018-05-06
- 0.2.0 — 2018-04-10
- 0.1.0 — 2017-11-07
- 0.0.221 — 2017-10-31
- 0.0.22 — 2017-10-31
- 0.0.21 — 2017-10-31
- 0.0.2 — 2017-10-31
- 0.0.1 — 2017-10-31

## README

# Modela

Javascript model library to work with objects.
To create model objects and check validations.

## Features

- Manual validation
- Type check
- Clean object

## Install

```bash
$ npm install modela --save
# or
$ yarn add modela
```

And then, import it:

```javascript
// ES2015+
import Modela from 'modela';

// CommonJS
var Modela = require('modela');
```

## Usage

### Create Model
```javascript
const user = new Modela({
  username: {
    type: ['string'],
    validator: v => v.length >= 4,
    default: v => v + 'x'.repeat(4-v.length)
  },
  name: {
    type: ['string', 'undefined']
  },
  birthday: {
    type: ['date', 'undefined']
  },
  city: {
    type: ['string'],
    default: v => 'Tehran'
  },
  role: {
    type: ['string'],
    validator: v => ['agent', 'user', 'admin'].indexOf(v) > -1,
    default: v => 'user',
    importer: v => v.replace('role: ', '').trim(),
    formatter: v => `role: ${v}`,
    message: v => `role cannot be "${v}"! it should be one of agent, user or admin.`
  }
})
```

### $set
To assign javascript object to Modela created schema, use `$set` method.
```javascript
const userObject = {
  username: 'n',
  name: 'Amir Momenian',
  birthday: new Date('27 sept 1992'),
  role: 'role: zeus'
}
user.$set(userObject)
```

### $check
To check validity of Modela object, use `$check` method.
```javascript
const userCheck = user.$check()
// userCheck = {
//   result: false,
//   errors: {
//     username: 'Illegal value!',
//     role: 'role cannot be "zeus"! it should be one of "agent", "user" or "admin".'
//   }
// }
})
```
### $clean
To clean Modela object (replace illegal values by default value), use `$clean` method.
```javascript
const userClean = user.$clean()
// userClean = true
})
```

### $export
To export Modela object to normal javascript object, use `$export` method.
```javascript
const userExport = user.$export()
// userExport = {
//   username: 'nxxx',
//   name: 'Amir Momenian',
//   birthday: '1992-09-26T20:30:00.000Z',
//   city: 'Tehran',
//   role: 'role: user'
// }
})
```

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