json-clay

1.1.1 • Public • Published

JSON Clay

JSON schema validation, fake data generation and migrations.

BuildStatus

Usage

var Clay = require('json-clay')
 
var person = new Clay({
  schema: {
    id: 'https://schema.ehealthafrica.org/1.0/person#',
    $schema: 'http://json-schema.org/draft-04/schema#',
    allOf: [
      {
        $ref: 'https://schema.ehealthafrica.org/1.0/base#'
      }
    ],
    type: 'object',
    properties: {
      name: {
        type: 'string',
        minLength: 1
      }
    },
    required: ['name']
  },
  defaults: {
    type: 'person',
    version: '1.2.3'
  }
}) 
 
person.validate({
  type: 'person',
  version: '1.2.3'
})
// =>
// {
//   validation: {
//     name: {
//       required: true
//     }
//   }
// }
 
 
person.generate({
  version: '1.0.0',
})
// =>
// {
//   "type": "person",
//   "version": "1.0.0"
// }
 
// The future:
// person.migrate({
//   version: '1.0.0'
//   firstName: 'Audrey',
//   lastName: 'Horne'
// })
// // =>
// // [
// //   {
// //     version: '1.2.3'
// //     name: 'Audrey Horne'
// //   }
// // ]

Constructor: new Clay([options])

Create a new JSON schema clay.

  • options.schema - JSON schema of the clay. Default is the base schema.
  • options.refs - Array of referenced schemas.
  • options.defaults - Default properties used for generating fake data.

Validation: clay.validate(json)

Validate the attribjson against the schema. Returns undefined if the data is valid, otherwise an array of errors.

Validation Errors

A typical error object looks like this:

{
  validation: {
    name: {
      required: true
    }
  }
}

Generate Fake Data: clay.generate([attributes])

Use this method if you want to get fake data. Utilizes json-schema-faker. If an attributes object is provided, its properties will be used instead of faked values.

Clay.schema

Holds the schema.

Clay.refs

Holds the refs.

Clay.defaults

Holds the defaults.

CLI

Use it to create a simple command line utility which generates fake data:

var Clay = require('json-clay')
var cli = require('json-clay/cli')
 
var person = new Clay()
 
cli(person, process.argv.slice(2))

Browserify Build

npm run build

Creates a browserified release in dist/json-clay.js. This build does not include the fake data generator.

Tests

npm test

Author

© 2015 eHealth Systems Africa

Readme

Keywords

Package Sidebar

Install

npm i json-clay

Weekly Downloads

1,042

Version

1.1.1

License

Apache-2.0

Last publish

Collaborators

  • jo