UNPKG

@nodearch/joi-express

Version:

NodeArch Joi Express Extension

66 lines 2.58 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { Service } from '@nodearch/core'; import j2s from 'joi-to-swagger'; let JoiOpenApiService = class JoiOpenApiService { getRouteInfo(schema) { const openAPI = { parameters: [] }; const { swagger, components } = j2s.default(schema); const { query, headers, params, cookies, body } = swagger.properties; if (query) { const queryParams = this.getParams('query', query); openAPI.parameters = openAPI.parameters.concat(queryParams); } if (headers) { const headerParams = this.getParams('header', headers); openAPI.parameters = openAPI.parameters.concat(headerParams); } if (params) { const pathParams = this.getParams('path', params); openAPI.parameters = openAPI.parameters.concat(pathParams); } if (cookies) { const cookieParams = this.getParams('cookie', cookies); openAPI.parameters = openAPI.parameters.concat(cookieParams); } if (body) { openAPI.requestBody = this.getBody(body); } return openAPI; } getParams(location, schema) { const parameters = []; const paramKeys = Object.keys(schema.properties); paramKeys.forEach(key => { const paramSchema = schema.properties[key]; const parameter = { name: key, in: location, required: schema.required ? schema.required.includes(key) : false, schema: paramSchema }; parameters.push(parameter); }); return parameters; } getBody(schema) { return { content: { 'application/json': { schema: schema } } }; } }; JoiOpenApiService = __decorate([ Service() ], JoiOpenApiService); export { JoiOpenApiService }; //# sourceMappingURL=joi-openapi.service.js.map