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