swaxios
Version:
Swagger API client generator based on axios and TypeScript.
58 lines • 2.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateGenerator = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const handlebars_1 = __importDefault(require("handlebars"));
const path_1 = __importDefault(require("path"));
const prettier_1 = __importDefault(require("prettier"));
class TemplateGenerator {
handlebars;
constructor() {
this.handlebars = handlebars_1.default.create();
this.handlebars.registerHelper('eq', function (a, b, options) {
if (a == b) {
return options.fn(this);
}
return options.inverse(this);
});
this.handlebars.registerHelper('isnt', function (a, b, options) {
if (a != b) {
return options.fn(this);
}
return options.inverse(this);
});
}
getTemplateFile() {
return path_1.default.resolve(__dirname, '../templates', this.templateFile);
}
async renderTemplate() {
const templateFile = this.getTemplateFile();
const context = await this.getContext();
if (templateFile && context) {
const templateSource = await fs_extra_1.default.readFile(templateFile, 'utf8');
const template = this.handlebars.compile(templateSource);
return template(context);
}
return '';
}
async writeTemplate() {
const renderedTemplate = await this.renderTemplate();
return prettier_1.default.format(renderedTemplate, {
bracketSpacing: false,
parser: 'typescript',
singleQuote: true,
trailingComma: 'es5',
});
}
get filePath() {
return `${this.name}.ts`;
}
toString() {
return this.writeTemplate();
}
}
exports.TemplateGenerator = TemplateGenerator;
//# sourceMappingURL=TemplateGenerator.js.map