alapa
Version:
A cutting-edge web development framework designed to revolutionize the way developers build modern web applications.
79 lines (78 loc) • 2.84 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateApiDocs = void 0;
exports.generateOpenAPIFile = generateOpenAPIFile;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const main_1 = require("./schema/main");
const path_2 = require("./builder/path");
const globals_1 = require("../../shared/globals");
const utils_1 = require("../../utils");
const entry_1 = require("./builder/entry");
async function generateOpenAPIFile() {
const schema = await (0, main_1.buildSchema)();
(0, path_2.buildPaths)();
let filePath = globals_1.GlobalConfig.api?.docs?.openapiDefinitionFile;
if (!filePath)
filePath = "openapi.json";
const dir = path_1.default.dirname(filePath);
if (!fs_1.default.existsSync(dir)) {
fs_1.default.mkdirSync(dir, { recursive: true });
}
let openApiDefinitions = globals_1.GlobalConfig.api.docs?.openApiDefinitions;
if (!openApiDefinitions) {
openApiDefinitions = {
openapi: "3.0.0",
version: "1.0.0",
servers: [
{
url: "http://localhost:3000/api",
description: "Development Server server",
},
],
info: {
title: "API Documentation",
version: "1.0.0",
description: "API documentation for the application",
},
paths: entry_1.openApiDefinitionsPaths,
components: {
schemas: schema,
},
};
}
else {
if (openApiDefinitions.components) {
if (!openApiDefinitions.components.schemas) {
openApiDefinitions.components.schemas = schema;
}
else {
openApiDefinitions.components.schemas = {
...openApiDefinitions.components.schemas,
...schema,
};
}
}
if (!openApiDefinitions.paths) {
openApiDefinitions.paths = entry_1.openApiDefinitionsPaths;
}
}
// Append the message to the file
try {
fs_1.default.writeFileSync(filePath, JSON.stringify(openApiDefinitions));
}
catch (e) {
utils_1.Logger.error(`Error writing ${filePath} to ${openApiDefinitions}`, e);
}
}
const generateApiDocs = async (config) => {
if (config)
(0, globals_1.setGlobalConfig)(config);
utils_1.Logger.info("Generating API documentation...");
await generateOpenAPIFile();
utils_1.Logger.success("API documentation generated successfully");
};
exports.generateApiDocs = generateApiDocs;
;