@daminort/data-caster

0.1.2 • Public • Published

data-caster

A tool for cast and coerce data from one format to another, so you always can be sure that data you use in your components has certain shape and type.

Documentation

Feel free to visit the documentation site: Data-Caster Docs

Installation

$ npm install --save @daminort/data-caster

Basic usage

import { DataCaster } from 'data-caster;

const serverData = {
  user_id    : '1220',
  user_name  : 'John Snow',
  role       : '',
  is_active  : true,
  died       : '-1',
  birthday   : '1998-06-12T10:14:36',
  last_visit : null,
  age        : 21,
  balance    : '116.84',
  pos_x      : 33.32547962,
  pos_y      : 68.84637914,
  zones      : ['Winterfell', 'Wall'],
  stages     : [12, 15, 23, 56],
  love: {
    name : 'Daenerys Targaryen',
    age  : '20',
  },
  friends: [
    { id: 42, name: 'Arya Stark' },
    { id: 54, name: 'Sansa Stark' },
  ],
};

const dc = new DataCaster()
  .init()
  .int('user_id', { resultName: 'id' })
  .string('user_name', { resultName: 'name' })
  .string('role')
  .bool('is_active')
  .bool('died', {
    adapter: (value) => +value === 1,
  })
  .date('birthday')
  .date('last_visit')
  .int('age')
  .number('balance')
  .int('pos_x')
  .int('pos_y')
  .stringArray('zones')
  .intArray('stages')
  .object('love')
  .objectArray('friends');
	
const adaptUser = (rawData) => adapter
  .ignoreExcluded(true)
  .adapt();
	
const adaptedData = adaptUser(serverData);

// We will get:
// {
//   id        : 1220,
//   name      : 'John Snow',
//   role      : '',
//   isActive  : true,
//   died      : false,
//   birthday  : 1998-06-12T10:14:36Z002,
//   lastVisit : null,
//   age       : 21,
//   balance   : 116.84,
//   posX      : 33,
//   posY      : 68,
//   zones     : ['Winterfell', 'Wall'],
//   stages    : [12, 15, 23, 56],
//   love: {
//     name : 'Daenerys Targaryen',
//     age  : '20',
//   },
//   friends: [
//     { id: 42, name: 'Arya Stark' },
//     { id: 54, name: 'Sansa Stark' },
//   ],
// }

For more information and examples, please, visit to Documentation page

/@daminort/data-caster/

    Package Sidebar

    Install

    npm i @daminort/data-caster

    Weekly Downloads

    6

    Version

    0.1.2

    License

    MIT

    Unpacked Size

    89.1 kB

    Total Files

    37

    Last publish

    Collaborators

    • daminort