joi-json

    4.0.0 • Public • Published

    Build Status npm version

    Joi-JSON

    Creates Joi based object schemas from JSON.

    Features

    • Create Joi schemas from JSON data
    • Express simple schemas using a single string
    • Lightweight with minimal dependencies
    • Compatible with most of the Joi API
    • Node.js 10.x compatible for use in AWS Lambda environments
    • Supports @hapi/joi implementation

    Installation

    Install via npm.

    npm install joi-json --save
    

    Note: @hapi/joi needs to be installed into your project

    Getting Started

    const builder = require( 'joi-json' ).builder();
     
    let jsonSchema = {
     
        firstName: 'string:min=1,max=60,required',  // string using string-based notation
     
        lastName: { // string using object notation
     
            '@type': 'string',
            min: 1,
            max: 60,
            required: true
        },
     
        address: {  // address is an object (i.e. joi.object() )
     
            street: 'string:min=1,max=80,required',
            street2: 'string:min=1,max=80',
            city: 'string:min=1,max=40,required',
            state: 'string:min=1,max=40,required',
            postal: 'string:min=1,max=20,required',
     
            '@required': true   // needs the '@' to indicate that "required" is a property
        },
     
        // alternative values (i.e. joi.alternatives().try() )
        favNumberOrWord: [
     
            'string:min=1,max=10',
            'number:min=0,max=100'
        ]
    };
     
    let schema = builder.build( jsonSchema );

    Which would yield the equivalent to the following joi schema:

     
    const joi = require( '@hapi/joi' );
     
    let schema = {
     
        firstName: joi.string().min(1).max(60).trim().required(),
     
        lastName: joi.string().min(1).max(60).trim().required(),
     
        address: Object.keys( {
     
                street: joi.string().min(1).max(80).trim().required(),
                street2: joi.string().min(1).max(80).trim(),
                city: joi.string().min(1).max(40).trim().required(),
                state: joi.string().min(1).max(40).trim().required(),
                postal: joi.string().min(1).max(20).trim().required()
     
            }).required(),
     
        favNumberOrWord: [
     
                joi.string().min(1).max(10).trim(),
                joi.number().min(1).max(100)
            ]
    };

    Documentation

    For information on how to use Joi-JSON, please see our API documentation

    Feedback

    We'd love to get feedback on how to make this tool better. Feel free to contact us at feedback@vandium.io

    License

    BSD-3-Clause

    Install

    npm i joi-json

    DownloadsWeekly Downloads

    5,933

    Version

    4.0.0

    License

    BSD-3-Clause

    Unpacked Size

    16.8 kB

    Total Files

    16

    Last publish

    Collaborators

    • richardhyatt