@protocolnebula/ts-openapi-generator
Version:
Build API and models from Swagger/OpenAPI to use in any project type
52 lines • 2.21 kB
JavaScript
;
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