Skip to content

trojs/openapi-model

Repository files navigation

OpenAPI Model

NPM version Coverage Quality Gate Status Bugs Code Smells Technical Debt Vulnerabilities Maintainability Rating Reliability Rating Security Rating

Create easy a Model from a OpenAPI spec.

Installation

npm install @trojs/openapi-model or yarn add @trojs/openapi-model

Test the package

npm run test or yarn test

How to use

const schema = {
    type: 'object',
    properties: {
        foo: {
            type: 'string',
            default: 'bar'
        }
    },
    required: ['foo'],
    additionalProperties: false
}

const options = {
    validate: true,
    strict: false,
    extraAjvFormats: ['date-time']
}

const ExampleModel = openapiToModel(schema, options)

// Create an empty model, with the default values
const example = new ExampleModel()
/*
{
    foo: 'bar'
}
*/

// Create a model with the default values, but overwrite the given properties
const example2 = new ExampleModel({
    foo: 'It works!'
})
/*
{
    foo: 'It works!'
}
*/

// Create a model with the default values, but overwrite the given properties
const example2 = new ExampleModel({
    foo: 3.14
})
/*
    Throws an Error because the type is wrong

    error.message
    "Invalid data"

    error.errors
    [
      {
        instancePath: '/foo',
        keyword: 'type',
        message: 'must be string',
        params: {
          type: 'string'
        },
        schemaPath: '#/properties/foo/type'
      }
    ]

    error.schema
    {
        type: 'object',
        properties: {
            foo: {
                type: 'string',
                default: 'bar'
            }
        },
        required: ['foo'],
        additionalProperties: false
    }

    // The object that is send to the model
    error.data
    {
        foo: 3.14
    }

    // The object that is send to the model, but also with the default values
    error.newData
    {
        foo: 3.14
    }
*/