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

    Install

    npm i dafit

    DownloadsWeekly Downloads

    74

    Version

    2.0.0

    License

    MIT

    Last publish

    Collaborators

    • lelvamos
    • kilix_user
    • alefevre19
    • shegunmb
    • alexandrebodin