UNPKG

swaxios

Version:

Swagger API client generator based on axios and TypeScript.

61 lines 2.23 kB
"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