UNPKG

@protocolnebula/ts-openapi-generator

Version:

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

52 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModelWritterService = void 0; const mustache = require("mustache"); const path_1 = require("path"); const config_model_1 = require("../../models/config.model"); const enum_model_1 = require("../../models/enum.model"); const files_util_1 = require("../../utils/files.util"); /** * This service Process all COMPONENTS (components/schemas/*) and convert it to ModelModel instances * */ class ModelWritterService { constructor(store, configuration = config_model_1.config) { this.store = store; this.configuration = configuration; } write() { this.prepareMustacheInstance(); console.group('Generating model files'); (0, files_util_1.makeDir)(this.configuration.outputModelsPath); for (const model of this.store.models.models) { const exportFileName = `${model.fileName}.${this.exportExtension}`; console.info(model.name, '->', exportFileName); console.group(); (0, files_util_1.generateFileSync)((0, path_1.resolve)(this.configuration.outputModelsPath, exportFileName), this.getGeneratedTemplate(model)); console.groupEnd(); } console.groupEnd(); } prepareMustacheInstance() { this.modelMustacheTemplate = (0, files_util_1.getTemplate)(this.configuration.templateConfig.modelFile); mustache.parse(this.modelMustacheTemplate); this.enumMustacheTemplate = (0, files_util_1.getTemplate)(this.configuration.templateConfig.enumModelFile); mustache.parse(this.enumMustacheTemplate); this.exportExtension = this.configuration.templateConfig.modelExtension; } getGeneratedTemplate(model) { if (model instanceof enum_model_1.EnumModel) { return mustache.render(this.enumMustacheTemplate, { model, }); } model.sort(); return mustache.render(this.modelMustacheTemplate, { model, dependences: model.getDependences(this.store.models), }); } } exports.ModelWritterService = ModelWritterService; //# sourceMappingURL=model-writter.service.js.map