Skip to content

tradologics/schemorfer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The JSON Object Transformer

npm Version npm Version Code Factor Star this repo Follow me on

Schemorfer is a JSON Schema transformation library.

It converts the source JSON structure to a different one, based on a supplied map JSON file, which contains instructions on how to convert each element.

Schemorfer also has the option to validates the schema against a valid e JSON Schema file. It uses Ajv under the hood to validate, assign defaults to optional/empty properties, and remove empty properties from the source JSON data.

Schemorfer was developed by Tradologics to convert various JSON payloads from various API providers into a standardized, pre-defined format.

Install

$ npm install @tradologics/schemorfer

Usage

const schemorfer = require('@tradologics/schemorfer');

// option 1
const data = require('./post-payload.json');
const mapper = require('./post-mapper.json');
const newData = schemorfer.transform(data, mapper);

// option 2
// const newData = schemorfer.transform(
//     './post-payload.json', './post-mapper.json');

console.log(newData);

Keywords

- $from = source key
- $default = default value (if empty, undefined, or null)
- $rename = array-based rename
- $if
    - $prop = the property to check against
    - $is (for true/false)
    - $typeof
    - $condition, either
        - $type = simple/const (default = simple)
        - $const = eval statement
- $then (required for if), either
    - $from = source key
    - $value = hard coded value
- $else, either
    - $from = source key
    - $value = hard coded value
- :: = nested source
- $apply - optional function to manipulate the value (`value` is passed as parameter)

$apply example:

{
  ...
  "$apply": "return value.toUpperCase()"
  ...
}

* More docs coming soon 🙂


JSON Schema Validation

const schemorfer = require('schemorfer');

// option 1
const payload = require('./post-payload.json');
const schema = require('./post-schema.json');
const valid = schemorfer.validate(payload, schema);

// option 2
// const valid = schemorfer.validate(
//     './post-payload.json', './post-schema.json');

if (!valid) {
    console.error(schemorfer.errors());
}

// payload now has all the optional fields populated with the defaults
console.log(valid);