@marcduez/openapi-to-joi
TypeScript icon, indicating that this package has built-in type declarations

1.2.0 • Public • Published

openapi-to-joi

NPM version

Installation

$ npm install @marcduez/openapi-to-joi

$ yarn add @marcduez/openapi-to-joi

General Usage

Generates a file with Joi schemas from an OpenAPI 3 document.

For example, starting with this document:

{
  "openapi": "3.0.0",
  ...
  "paths": {
    "/": {
      "get": {
        "operationId": "operation1",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation1Response"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Operation1Response": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email"
          },
          "age": {
            "type": "integer",
            "format": "int32",
            "minimum": 18,
            "maximum": 99
          }
        }
      }
    }
  }
}

And running this command:

$ openapi-to-joi openapi.json --output generated.ts

Produces this generated.ts:

/* eslint-disable */
/* prettier-ignore */
import Joi from "joi"

export const schemas = {
  parameters: {
    operation1: { id: Joi.string().required().min(5) },
  },
  components: {
    Operation1Response: Joi.object({
      email: Joi.string().email({}),
      age: Joi.number().integer().max(99).min(18),
    }).unknown(),
  },
}

Using the CLI

To view usage instructions for the CLI, use the --help command:

$ npm run openapi-to-joi --help

$ yarn openapi-to-joi --help

Package Sidebar

Install

npm i @marcduez/openapi-to-joi

Weekly Downloads

5

Version

1.2.0

License

MIT

Unpacked Size

45.3 kB

Total Files

9

Last publish

Collaborators

  • marcduez