Parseus
Parseus is a javascript library written in Typescript which allow marshall/unmarshall JSON into class instance. This library is able to run in NodeJS, Typescript or any JS platform.
API Docs
Usage Javascript (ESNEXT)
class Person {
@Field({ type: 'string', name: 'person_name' })
name
@Field({ readOnly: true, name: 'person_age', type: 'number' })
age
@Field({ name: 'person_last_name', type: 'string' })
lastName
@Field({ name: 'person_gender', default: 'M', type: 'string' })
gender
@Field({ name: 'person_created_at', type: 'date' })
createdAt
}
const data = {
person_name: 'Jhon',
person_last_name: 'Smith',
person_age: 25,
person_created_at: '2018-01-01T12:00:00.000Z'
}
const person = Parseus.decode(data).to(Person)
person.gender = 'F'
person.age = 18
person.name = 'Sara'
const personMarshalled = Parseus.encode(person, Person)
Usage Typescript
class Person {
@Field({ type: 'string', name: 'person_name' })
name?: string
@Field({ readOnly: true, name: 'person_age' })
age?: number
@Field({ name: 'person_last_name' })
lastName?: string
@Field({ name: 'person_gender', default: 'M' })
gender?: string
@Field({ name: 'person_created_at', type: 'date' })
createdAt?: Date
}
const data = {
person_name: 'Jhon',
person_last_name: 'Smith',
person_age: 25,
person_created_at: '2018-01-01T12:00:00.000Z'
}
const person = Parseus.decode(data).to(Person)
person.gender = 'F'
person.age = 18
person.name = 'Sara'
const personMarshalled = Parseus.encode(person, Person)
Instalation
-
Install the npm package:
npm install parseus --save
or using yarn yarn add parseus
-
You need to install reflect-metadata
shim:
npm install reflect-metadata --save
or using yarn yarn add reflect-metadata
and import it somewhere in the global place of your app:
import 'reflect-metadata'
API
FieldType
Parseus allow the next field type values:
- string
- number
- decimal
- boolean
- unique
- date
- array
- object
Field Options
Property | Description | Type | Default |
---|
type | Field type. Must be one of the values from the FieldType | string | 'string' |
name | Key name in source object. if this value is not provided it takes the model field's name wrapped | string | - |
isVirtual | Indicates if field's value is ignored when marshall Object | boolean | false |
default | Indicates the initial field's value | any | - |
readOnly | Indicates if field's value is read only (freeze) | boolean | false |
fixed | The scale for a decimal (exact numeric) field, which represents the number of digits to the right of the decimal point | number | 6 |
transformer | Specifies a value transformer that is to be used to (un)marshall the current field when (un)marshall | ITransformer | - |
factory | Indicates the field's model class of target | class | - |
ITransformer
Property | Description | Type | Default |
---|
to | Used to marshall data when writing to the new object | Function | - |
from | Used to unmarshall data when reading from object | Function | - |
ITransformerParams
Property | Description | Type | Default |
---|
key | key name in source object | string | - |
options | Field type options field's | IFieldOptions | - |
data | complete mapped source object | object | - |
Still in progress...