UNPKG

parse-openapi

Version:

OpenAPI v3 parser

62 lines (48 loc) 1.73 kB
# parse-openapi The OpenAPi v3 parser extracted from [openapi-typescript-codegen](https://github.com/ferdikoomen/openapi-typescript-codegen). So first of all, all credits go to [Ferdi Koomen](https://github.com/ferdikoomen) for his work on this great library. Only the parser is needed to render the models, services and hooks with custom templates, hence this stripped down version. ## Installation npm install -D parse-openapi openapi-types ## API ```typescript import { readFile, writeFile } from 'fs/promises'; import { parse } from 'parse-openapi'; import { renderModel, renderService } from './templates'; import type { OpenAPIV3 } from 'openapi-types'; const specs: OpenAPIV3 = JSON.parse(await readFile('swagger.json', 'utf8')); const { version, server, models, services } = parse(specs); models.forEach(model => writeFile(`${model.name}.ts`, renderModel(model))); services.forEach(service => writeFile(`${service.name}.ts`, renderService(service)) ); ``` ## Example render function This could be anything from Handlebars templates to template literals. Here's a minimal example: ```typescript import type { Operation, Service } from 'parse-openapi'; const renderOperation = (operation: Operation): string => { const [result] = operation.results; return ` /** * ${operation.summary} * ${operation.description} * @returns ${result.type} ${result.description} ${operation.deprecated ? '* @deprecated' : ''} */ export function ${operation.name}([...]): Promise<${result.type}> { return request({ method: '${operation.method}', path: \`${operation.path}\`, [...] }); }`; }; export default (service: Service) => { return services.operations.map(renderOperation).join(';'); }; ```