Need private packages and team management tools?Check out npm Teams »

structured-jayschema-errors

1.1.0 • Public • Published

structured-jayschema-errors

Return jayschema error messages with the same structure as the validated data

Usage

var JaySchema = require('jayschema');
var jaySchema = new JaySchema();
 
var structureErrors = require('structured-jayschema-errors');
 
var data = {
    a: 1,
    b: {
        c: "3",
        d: 4
    }
};
 
schema = {
    "type": "object",
    "properties": {
        "a": {
            "type": "string"
        },
        "b": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "c": {
                    "type": "number"
                }
            }
        }
    }
};
 
var errors = jaySchema.validate(data, schema);
 
var structuredErrors = structureErrors(myJaySchemaErrorsOutput);
 
//results in:
{
    a: {
        [Error]
        instanceContext: '#/a',
        resolutionScope: 'anon...',
        constraintName: 'type',
        constraintValue: 'string',
        testedValue: 'integer'
    },
    b: {
        c: {
            [Error]
            instanceContext: '#/b/c',
            resolutionScope: 'anon-...',
            constraintName: 'type',
            constraintValue: 'number',
            testedValue: 'string'
        },
        d: {
            [Error]
            instanceContext: '#/b',
            resolutionScope: 'anon-...',
            constraintName: 'additionalProperties',
            testedValue: 'd',
            desc: 'property "d" not allowed by...',
            kind: 'ObjectValidationError'
        }
    }
}

Error Transformations

Additionally you can pass a function to transform the errors.

For example, you may want to transform the errors into a human readable form.

 
var errors = jaySchema.validate(data, schema),
    transformErrors = require('./my-error-transform-function');
 
var structuredErrors = structureErrors(myJaySchemaErrorsOutput, transformErrors);
 
//results in:
{
    a: 'Should be a string',
    b: {
        c: 'Should be a number',
        d: 'Property not allowed'
    }
}

Install

npm i structured-jayschema-errors

DownloadsWeekly Downloads

0

Version

1.1.0

License

MIT

Last publish

Collaborators

  • avatar