Package Exports
- icetray
- icetray/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (icetray) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
IceTray
IceTray is simple tool to transform raw data to schema, and sanitize data type
Getting Started
Installation
$ npm i icetrayExample
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]
}
*/