hapi-joi-to-schema-swagger

0.0.5 • Public • Published

hapi-joi-to-schema-swagger

  • Biblioteca para gerar os componentes swagger a partir de um validador @hapi/joi

Build Status

Conteúdo

Instalação

  • Para um projeto node
npm install --save hapi-to-schema-swagger

Configuração

  • Importe a biblioteca em seu projeto e a configure:
// generateComponentSwagger.js
 
const { joiToSwagger } = require('hapi-joi-to-component-swagger')
const Joi = require('@hapi/joi')
 
const testSchema = Joi.object().keys({
    testId: Joi.number()
})
 
const commonSchema = Joi.object().keys({
    errorCode: Joi.number()
})
 
const config = { apiPathComponent: './lib', fileName: '_definitions', fileExtension: 'yaml' }
 
const schemas = [{ folderName: 'testSchema', schemas: { testSchema }}]
 
const commonSchemas = { commonSchema }
 
// Chamamos a função para gerar o arquivo
joiToSwagger(config, schemas, commonSchemas)
  .then(()=> done)
 

Package.json

  • Configurar comando no package.json

Podemos também criar um script para ser chamado usando o npm, faça o seguinte no scripts de seu package.json

  "scripts": {    
    "swagger-generator": "node ./utils/generateComponentSwagger.js"
  },

Utilização

Função que gera o arquivo com os components swagger e salva no local indicado

joiToSwagger(config, schemas, commonSchemas)

Paramêtros da função:

/**
* Configuração para geração do arquivo
@param { string } apiPathComponent Caminho onde serão salvos os arquivos
@param { string } fileName Nome do arquivo que será gerado
@param { string } fileExtension Extensão do arquivo
*/
const config = {
    apiPathComponent,
    fileName,
    fileExtension
}
 
/**
* Lista com os schemas joi
@param { string } folderName Nome da pasta onde o arquivo será salvo
@param { object } schemas Objeto com todos os joi schemas referente aquela pasta 
*/
const schemas = [{ folderName: 'suaPasta', schemas: { seuSchema, seuSchema2, ...espalharMaisUmMonte }}]
 
/**
* Objeto contendo os schemas padrões que apareceram em todos os arquivos gerado 
*/
const commonSchemas = { commonSchema }
 

(No momento a lib da suporte apenas as versões >= 15.0.0 e <= 15.1.1 do @hapi/joi, então, para evitar problemas, fique atento em estar a utilizando em seus projetos.)

Package Sidebar

Install

npm i hapi-joi-to-schema-swagger

Weekly Downloads

134

Version

0.0.5

License

MIT

Unpacked Size

7.27 kB

Total Files

8

Last publish

Collaborators

  • ricardoalvarenga