swagger-ts-generator
Version:
Given a swagger.json file, generates a number of TypeScript files which can be used as models and model-driven forms in Angular 2 (and above)
54 lines (44 loc) • 2.05 kB
JavaScript
;
/* global __dirname */
let fs = require('fs');
let path = require('path');
let _ = require('lodash');
let utils = require('./lib/utils');
let modelGenerator = require('./lib/modelGenerator');
let enumGenerator = require('./lib/enumGenerator');
module.exports.generateTSFiles = generateTSFiles;
/**
* Generate TypeScript files based on the given SwaggerFile and some templates
*
* @param {string} swaggerFileName The fileName of the swagger.json file including path
* @param {object} options Options which are used during generation
* .modelFolder: the name of the folder (path) to generate the models in.
each model class is generated in its own file.
* .enumTSFile: the name of the enum TS file including path
* .enumI18NHtmlFile: the name of the HTML file including path to generate enum values for translation.
* .enumLanguageFiles: array with the names of the enum languages file including path
* .modelModuleName: the name of the model module (aka namespace)
* .enumModuleName: the name of the enum module (aka namespace)
*/
function generateTSFiles(swaggerFileName, options) {
// console.log('swagger-ts-generator');
if (!_.isString(swaggerFileName)) {
throw 'swaggerFileName must be defined';
}
if (!_.isObject(options)) {
throw 'options must be defined';
}
let folder = path.normalize(options.modelFolder);
// utils.removeFolder(folder);
let swagger = JSON.parse(fs.readFileSync(swaggerFileName, utils.ENCODING).trim());
if(!options.hasOwnProperty("generateClasses"))
options.generateClasses = true;
modelGenerator.generateModelTSFiles(swagger, options);
enumGenerator.generateEnumTSFile(swagger, options);
if (options.enumI18NHtmlFile) {
enumGenerator.generateEnumI18NHtmlFile(swagger, options);
}
if (options.enumLanguageFiles) {
enumGenerator.generateEnumLanguageFiles(swagger, options);
}
}