dafit

2.0.0 • Public • Published

Dafit

Transform data to fit your structures.

npm npm license

CircleCI Codecov

Installation

$ npm install --save dafit

Usage

Dafit enables you to create a dynamic schema you want your data to fit.

import { Resolver } from 'dafit';
// import dafit from 'dafit';
// then user dafit.Resolver
// or
// const { Resolver } = require('dafit');
 
const defaultValue = null;
 
const resolveUser = new Resolver({
    id: defaultValue, // if field id is present will return it if not will set it to defaultValue
    firstname: user => user.first_name, // will set firstname as the return value of the function
    lastname: user => user.last_name,
    fullName: user => `${user.first_name} ${user.last_name.toUpperCase()}` 
    friends: user => getFriends(user.id), // will wait for any thenable (e.g Promise) to resolve
    permissions: (user, context) => { // receives a context to enable more dynamic resolving
        if (contact.withPermissions) return getPermissions(user)
        return []
    },
})
 
const user = {
    id: 1,
    first_name: 'John',
    last_name: 'Cena',
    age: 39
}
 
const result = resolveUser(user, { withPermissions: true });
// Promise<{
//    id: 1, 
//    firstname: 'John', 
//    lastname: 'Cena', 
//    fullName: 'John CENA', 
//    friends: [...], 
//    permissions: ['WRITE_DASHBOARD']
// }>

You can also use a synchronuous resolver for some use case to avoid using Promises

import { SyncResolver } from 'dafit';
// const { SyncResolver } = require('dafit');
 
const defaultValue = null;
 
const resolveUser = new SyncResolver({
    id: defaultValue, // if field id is present will return it if not will set it to defaultValue
    firstname: user => user.first_name, // will set firstname as the return value of the function
    lastname: user => user.last_name,
    fullName: user => `${user.first_name} ${user.last_name.toUpperCase()}`,
    aPromise: () => new Promise((resolve) => resolve('Hello World!')), // the promise will not be resolved before return
})
 
const user = {
    id: 1,
    first_name: 'John',
    last_name: 'Cena',
    age: 39
}
 
const result = resolveUser(user, { withPermission: true });
// {
//    id: 1, 
//    firstname: 'John', 
//    lastname: 'Cena', 
//    fullName: 'John CENA',
//    aPromise: Promise<'Hello World!'>
// }

Change Log

Dependents (0)

Package Sidebar

Install

npm i dafit

Weekly Downloads

20

Version

2.0.0

License

MIT

Last publish

Collaborators

  • kilix_user
  • alefevre19
  • shegunmb
  • alexandrebodin