swaxios
Version:
Swagger API client generator based on axios and TypeScript.
61 lines • 2.23 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResourceGenerator = void 0;
const StringUtil_1 = require("../util/StringUtil");
const MethodGenerator_1 = require("./MethodGenerator");
const TemplateGenerator_1 = require("./TemplateGenerator");
class ResourceGenerator extends TemplateGenerator_1.TemplateGenerator {
directory;
methods = [];
name;
templateFile;
fullyQualifiedName;
imports;
constructor(fullyQualifiedName, resources, spec) {
super();
const directories = fullyQualifiedName.split('/');
if (directories.length > 2) {
this.name = (0, StringUtil_1.camelCase)(directories.slice(-1), true);
directories.pop();
this.directory = directories.join('/');
}
else if (directories.length > 1) {
this.name = directories.pop();
this.directory = directories.join('/');
}
else {
this.directory = '/';
this.name = fullyQualifiedName;
}
const interfacesDir = this.directory.replace(/[^\/]+/g, '..');
this.imports = {
list: [],
path: `${interfacesDir}/interfaces/`,
};
for (const [url, definition] of Object.entries(resources)) {
for (const [method, data] of Object.entries(definition)) {
const methodDefinition = new MethodGenerator_1.MethodGenerator(url, method, data, spec);
this.methods.push(methodDefinition);
for (const importValue of methodDefinition.imports) {
if (!this.imports.list.includes(importValue)) {
this.imports.list.push(importValue);
}
}
}
}
this.fullyQualifiedName = `${this.directory}/${this.name}`;
this.templateFile = 'Resource.hbs';
}
async getContext() {
return {
imports: this.imports,
methods: this.methods,
name: this.name,
};
}
get filePath() {
return `${this.directory}/${this.name}.ts`;
}
}
exports.ResourceGenerator = ResourceGenerator;
//# sourceMappingURL=ResourceGenerator.js.map