@hirosystems/api-toolkit
Version:
API development toolkit
23 lines • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateOpenApiSpec = generateOpenApiSpec;
const fastify_1 = require("fastify");
const swagger_1 = require("@fastify/swagger");
const fs_1 = require("fs");
/**
* Generates OpenAPI JSON and YAML spec documents based on a given Fastify API plugin with optional
* Swagger definitions.
*/
async function generateOpenApiSpec(options) {
const fastify = (0, fastify_1.default)().withTypeProvider();
await fastify.register(swagger_1.default, options.swaggerOptions);
await fastify.register(options.apiDefinition, { prefix: options.prefix });
await fastify.ready();
const directory = options.outputDirectory ?? './tmp';
if (!(0, fs_1.existsSync)(directory))
(0, fs_1.mkdirSync)(directory);
(0, fs_1.writeFileSync)(`${directory}/openapi.yaml`, fastify.swagger({ yaml: true }));
(0, fs_1.writeFileSync)(`${directory}/openapi.json`, JSON.stringify(fastify.swagger(), null, 2));
await fastify.close();
}
//# sourceMappingURL=openapi.js.map