UNPKG

@protocolnebula/ts-openapi-generator

Version:

Build API and models from Swagger/OpenAPI to use in any project type

47 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiWritterService = void 0; const mustache = require("mustache"); const path_1 = require("path"); const config_model_1 = require("../../models/config.model"); const files_util_1 = require("../../utils/files.util"); /** * This service Process all COMPONENTS (components/schemas/*) and convert it to ModelModel instances * */ class ApiWritterService { constructor(store, configuration = config_model_1.config) { this.store = store; this.configuration = configuration; } write() { this.prepareMustacheInstance(); console.group('Generating api files'); const folder = this.configuration.outputApisPath; (0, files_util_1.makeDir)(folder); const groups = this.store.apis.apisGrouped; for (const groupName in groups) { const apis = groups[groupName]; const exportFileName = `${groupName}.${this.exportExtension}`; console.info(groupName, '->', exportFileName); console.group(); (0, files_util_1.generateFileSync)((0, path_1.resolve)(folder, exportFileName), this.getGeneratedTemplate(groupName, apis)); console.groupEnd(); } console.groupEnd(); } prepareMustacheInstance() { this.mustacheTemplate = (0, files_util_1.getTemplate)(this.configuration.templateConfig.apiFile); mustache.parse(this.mustacheTemplate); this.exportExtension = this.configuration.templateConfig.apiExtension; } getGeneratedTemplate(groupName, apis) { return mustache.render(this.mustacheTemplate, { groupName, apis, dependences: this.store.apis.getDependencesFor(apis, this.store.models), }); } } exports.ApiWritterService = ApiWritterService; //# sourceMappingURL=api-writter.service.js.map