icetray
v1.4.1
Published
IceTray is simple tool to transform raw data to schema, and sanitize data type
Downloads
102
Maintainers
Readme
IceTray
IceTray is simple tool to transform raw data to schema, and sanitize data type
Getting Started
Installation
$ npm i icetray
Example
const IceTray = require('icetray');
// Create Data Schema
const CatSchema = {
id: Number,
name: String,
age: Number
}
const rawData = {
id: '12345',
name: 'Garfield',
age: '3',
color: 'black'
}
const cat = IceTray(CatSchema, rawData)
/*
cat = {
id: 12345,
name: 'Garfield,
age: 3
}
*/
Simple Schema Design
Key Reference
- type
data type for this key
- default
default value
- fields
mapping key
- allowNull
true: allow this key is null
- trim
return trimmed data of key
Type Support
- String
return data type String
- Number
return data type Number
- Boolean
return data type Boolean
- 'default'
return raw data of key
const schema = {
key1: String,
key2: {
type: String,
default: 'Default Value',
fields: ['map1', 'map2', 'map3'],
allowNull: true
},
key3: {
string: String,
trim: true
}
}
Nested Schema Design
const nestedSchema = {
// Array of value
key1: [String],
// Array of Object
key2: [{
subKey1: String,
subKey2: Number,
subKey3: {
type: String,
fields: ['sk3', 'key3'],
default: 'default-value'
}
}],
// Object
key3: {
subKey1: String,
subKey2: Number
}
}
Date Type
const schema = {
key1: Type.DATE,
key2: Type.DATE,
key3: Type.DATE,
key4: {
type: Type.DATE,
allowNull: true
},
key5: {
type: Type.DATE,
allowNull: true
}
}
const rawData = {
key1: 1640995200000, // 2022-01-01 00:00:00 UTC+0
key2: '2022-01-01 00:00:00 UTC+0',
key3: 'invalid format',
key4: 'invalid format',
key5: null
}
const result = Icetray(schema, rawData)
/* Result Object
{
key1: 2022-01-01T00:00:00.000Z // Date object
key2: 2022-01-01T00:00:00.000Z // Date object
key3: 1970-01-01T00:00:00.000Z // Date object
key4: null
key5: null
}
*/
JSON Data Type
==> Mode: Stringify
const IceTray = require('icetray');
const {JSON_MODE, Type} = IceTray
// Create Data Schema
const CatSchema = {
jsonData: Type.JSON,
dataList: Type.JSON
}
const rawData = {
jsonData: {
id: 1,
name: 'Garfield'
},
dataList: [1, 2, 3, 4, 5]
}
const cat = IceTray(CatSchema, rawData, JSON_MODE.STRINGIFY)
/*
cat = {
jsonData: '{"id":1,"name":"Garfield}',
dataList: '[1,2,3,4,5]'
}
*/
==> Mode: Parse
const IceTray = require('icetray');
const {JSON_MODE, Type} = IceTray
// Create Data Schema
const CatSchema = {
jsonData: Type.JSON,
dataList: Type.JSON
}
const rawData = {
jsonData: '{"id":1,"name":"Garfield"}',
dataList: '[1,2,3,4,5]'
}
const cat = IceTray(CatSchema, rawData, JSON_MODE.PARSE)
/*
cat = {
jsonData: {
id: 1,
name: "Garfield"
}',
dataList: [1, 2, 3, 4, 5]
}
*/