@eqxjs/swagger-codegen 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +230 -0
- package/FORMATS.md +180 -0
- package/OPENAPI-COMPARISON.md +355 -0
- package/QUICKSTART.md +118 -0
- package/README.md +405 -0
- package/SUMMARY.md +184 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +49 -0
- package/dist/cli.js.map +1 -0
- package/dist/file-writer.d.ts +24 -0
- package/dist/file-writer.d.ts.map +1 -0
- package/dist/file-writer.js +95 -0
- package/dist/file-writer.js.map +1 -0
- package/dist/generator.d.ts +6 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +104 -0
- package/dist/generator.js.map +1 -0
- package/dist/generators/client-service.generator.d.ts +6 -0
- package/dist/generators/client-service.generator.d.ts.map +1 -0
- package/dist/generators/client-service.generator.js +203 -0
- package/dist/generators/client-service.generator.js.map +1 -0
- package/dist/generators/controller.generator.d.ts +6 -0
- package/dist/generators/controller.generator.d.ts.map +1 -0
- package/dist/generators/controller.generator.js +241 -0
- package/dist/generators/controller.generator.js.map +1 -0
- package/dist/generators/dto.generator.d.ts +10 -0
- package/dist/generators/dto.generator.d.ts.map +1 -0
- package/dist/generators/dto.generator.js +221 -0
- package/dist/generators/dto.generator.js.map +1 -0
- package/dist/generators/module.generator.d.ts +10 -0
- package/dist/generators/module.generator.d.ts.map +1 -0
- package/dist/generators/module.generator.js +52 -0
- package/dist/generators/module.generator.js.map +1 -0
- package/dist/generators/service.generator.d.ts +6 -0
- package/dist/generators/service.generator.d.ts.map +1 -0
- package/dist/generators/service.generator.js +179 -0
- package/dist/generators/service.generator.js.map +1 -0
- package/dist/parser.d.ts +24 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +82 -0
- package/dist/parser.js.map +1 -0
- package/dist/types.d.ts +97 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +38 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +114 -0
- package/dist/utils.js.map +1 -0
- package/package.json +40 -0
- package/test-all-formats.sh +32 -0
- package/test.sh +27 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.ensureDir = ensureDir;
|
|
40
|
+
exports.writeFile = writeFile;
|
|
41
|
+
exports.fileExists = fileExists;
|
|
42
|
+
exports.readFile = readFile;
|
|
43
|
+
exports.createDirectoryStructure = createDirectoryStructure;
|
|
44
|
+
const fs = __importStar(require("fs-extra"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
47
|
+
const utils_1 = require("./utils");
|
|
48
|
+
/**
|
|
49
|
+
* Ensure directory exists
|
|
50
|
+
*/
|
|
51
|
+
async function ensureDir(dirPath) {
|
|
52
|
+
await fs.ensureDir(dirPath);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Write file to disk
|
|
56
|
+
*/
|
|
57
|
+
async function writeFile(filePath, content) {
|
|
58
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
59
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
60
|
+
console.log(chalk_1.default.green(`✓ Generated: ${path.relative(process.cwd(), filePath)}`));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if file exists
|
|
64
|
+
*/
|
|
65
|
+
async function fileExists(filePath) {
|
|
66
|
+
try {
|
|
67
|
+
await fs.access(filePath);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Read file content
|
|
76
|
+
*/
|
|
77
|
+
async function readFile(filePath) {
|
|
78
|
+
return fs.readFile(filePath, 'utf-8');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create directory structure
|
|
82
|
+
*/
|
|
83
|
+
async function createDirectoryStructure(outputPath, tags) {
|
|
84
|
+
const dtos = path.join(outputPath, 'dtos');
|
|
85
|
+
await ensureDir(dtos);
|
|
86
|
+
const tagDirs = new Map();
|
|
87
|
+
for (const tag of tags) {
|
|
88
|
+
const kebabTag = (0, utils_1.toKebabCase)(tag);
|
|
89
|
+
const tagDir = path.join(outputPath, kebabTag);
|
|
90
|
+
await ensureDir(tagDir);
|
|
91
|
+
tagDirs.set(tag, tagDir);
|
|
92
|
+
}
|
|
93
|
+
return { dtos, tagDirs };
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=file-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../src/file-writer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,8BAEC;AAKD,8BAIC;AAKD,gCAOC;AAKD,4BAEC;AAKD,4DAgBC;AA3DD,6CAA+B;AAC/B,2CAA6B;AAC7B,kDAA0B;AAC1B,mCAAsC;AAEtC;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAe;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAAC,UAAkB,EAAE,IAAc;IAI/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1D;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,cAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Df"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.generateFromSwagger = generateFromSwagger;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const parser_1 = require("./parser");
|
|
43
|
+
const dto_generator_1 = require("./generators/dto.generator");
|
|
44
|
+
const service_generator_1 = require("./generators/service.generator");
|
|
45
|
+
const client_service_generator_1 = require("./generators/client-service.generator");
|
|
46
|
+
const controller_generator_1 = require("./generators/controller.generator");
|
|
47
|
+
const module_generator_1 = require("./generators/module.generator");
|
|
48
|
+
const file_writer_1 = require("./file-writer");
|
|
49
|
+
const utils_1 = require("./utils");
|
|
50
|
+
/**
|
|
51
|
+
* Main generator function
|
|
52
|
+
*/
|
|
53
|
+
async function generateFromSwagger(inputPath, outputPath, mode = 'server') {
|
|
54
|
+
console.log(chalk_1.default.blue('\n📋 Parsing Swagger file...'));
|
|
55
|
+
const spec = await (0, parser_1.parseSwaggerFile)(inputPath);
|
|
56
|
+
// Group endpoints by tag
|
|
57
|
+
const endpointsByTag = (0, parser_1.groupEndpointsByTag)(spec);
|
|
58
|
+
const tags = Array.from(endpointsByTag.keys());
|
|
59
|
+
console.log(chalk_1.default.blue('🏗️ Creating directory structure...'));
|
|
60
|
+
const dirs = await (0, file_writer_1.createDirectoryStructure)(outputPath, tags);
|
|
61
|
+
// Generate DTOs
|
|
62
|
+
console.log(chalk_1.default.blue('\n📦 Generating DTOs...'));
|
|
63
|
+
const dtos = (0, dto_generator_1.generateDtos)(spec);
|
|
64
|
+
for (const dto of dtos) {
|
|
65
|
+
const filePath = path.join(dirs.dtos, `${(0, utils_1.toKebabCase)(dto.name)}.dto.ts`);
|
|
66
|
+
await (0, file_writer_1.writeFile)(filePath, dto.content);
|
|
67
|
+
}
|
|
68
|
+
// Generate services, controllers, and modules for each tag
|
|
69
|
+
console.log(chalk_1.default.blue('\n🔧 Generating Services, Controllers, and Modules...'));
|
|
70
|
+
for (const [tag, endpoints] of endpointsByTag.entries()) {
|
|
71
|
+
const tagDir = dirs.tagDirs.get(tag);
|
|
72
|
+
const kebabTag = (0, utils_1.toKebabCase)(tag);
|
|
73
|
+
if (mode === 'server' || mode === 'both') {
|
|
74
|
+
// Generate server service
|
|
75
|
+
const service = (0, service_generator_1.generateService)(tag, endpoints, spec);
|
|
76
|
+
const servicePath = path.join(tagDir, `${kebabTag}.service.ts`);
|
|
77
|
+
await (0, file_writer_1.writeFile)(servicePath, service.content);
|
|
78
|
+
// Generate controller
|
|
79
|
+
const controller = (0, controller_generator_1.generateController)(tag, endpoints, spec);
|
|
80
|
+
const controllerPath = path.join(tagDir, `${kebabTag}.controller.ts`);
|
|
81
|
+
await (0, file_writer_1.writeFile)(controllerPath, controller.content);
|
|
82
|
+
// Generate module
|
|
83
|
+
const module = (0, module_generator_1.generateModule)(tag);
|
|
84
|
+
const modulePath = path.join(tagDir, `${kebabTag}.module.ts`);
|
|
85
|
+
await (0, file_writer_1.writeFile)(modulePath, module.content);
|
|
86
|
+
}
|
|
87
|
+
if (mode === 'client' || mode === 'both') {
|
|
88
|
+
// Generate client service
|
|
89
|
+
const clientService = (0, client_service_generator_1.generateClientService)(tag, endpoints, spec);
|
|
90
|
+
const clientServicePath = path.join(tagDir, `${kebabTag}.client.ts`);
|
|
91
|
+
await (0, file_writer_1.writeFile)(clientServicePath, clientService.content);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk_1.default.green('\n✅ All files generated successfully!'));
|
|
95
|
+
console.log(chalk_1.default.gray(`\nGenerated files in: ${outputPath}`));
|
|
96
|
+
console.log(chalk_1.default.gray(` - ${dtos.length} DTOs`));
|
|
97
|
+
if (mode === 'server' || mode === 'both') {
|
|
98
|
+
console.log(chalk_1.default.gray(` - ${tags.length} Feature modules (service, controller, module per tag)`));
|
|
99
|
+
}
|
|
100
|
+
if (mode === 'client' || mode === 'both') {
|
|
101
|
+
console.log(chalk_1.default.gray(` - ${tags.length} Client services`));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SwaggerSpec, EndpointInfo, GeneratedService } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Generate a client service for a specific tag/resource using Axios
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateClientService(tag: string, endpoints: EndpointInfo[], spec: SwaggerSpec): GeneratedService;
|
|
6
|
+
//# sourceMappingURL=client-service.generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-service.generator.d.ts","sourceRoot":"","sources":["../../src/generators/client-service.generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIvE;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,YAAY,EAAE,EACzB,IAAI,EAAE,WAAW,GAChB,gBAAgB,CA+BlB"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateClientService = generateClientService;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const parser_1 = require("../parser");
|
|
6
|
+
/**
|
|
7
|
+
* Generate a client service for a specific tag/resource using Axios
|
|
8
|
+
*/
|
|
9
|
+
function generateClientService(tag, endpoints, spec) {
|
|
10
|
+
const serviceName = `${(0, utils_1.toPascalCase)(tag)}Service`;
|
|
11
|
+
const imports = new Set();
|
|
12
|
+
imports.add("import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';");
|
|
13
|
+
let serviceContent = `export class ${serviceName} {\n`;
|
|
14
|
+
serviceContent += ` private axios: AxiosInstance;\n\n`;
|
|
15
|
+
serviceContent += ` constructor(baseURL: string, config?: AxiosRequestConfig) {\n`;
|
|
16
|
+
serviceContent += ` this.axios = axios.create({\n`;
|
|
17
|
+
serviceContent += ` baseURL,\n`;
|
|
18
|
+
serviceContent += ` ...config,\n`;
|
|
19
|
+
serviceContent += ` });\n`;
|
|
20
|
+
serviceContent += ` }\n\n`;
|
|
21
|
+
// Generate methods for each endpoint
|
|
22
|
+
for (const endpoint of endpoints) {
|
|
23
|
+
const { method, path, operation } = endpoint;
|
|
24
|
+
const methodName = (0, utils_1.getOperationName)(path, method, operation.operationId);
|
|
25
|
+
const methodSignature = generateClientServiceMethod(methodName, method, path, operation, spec, imports);
|
|
26
|
+
serviceContent += methodSignature;
|
|
27
|
+
}
|
|
28
|
+
serviceContent += '}\n';
|
|
29
|
+
const content = `${Array.from(imports).join('\n')}\n\n${serviceContent}`;
|
|
30
|
+
return {
|
|
31
|
+
name: serviceName,
|
|
32
|
+
content,
|
|
33
|
+
imports,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract path parameters from a path
|
|
38
|
+
*/
|
|
39
|
+
function extractPathParams(path) {
|
|
40
|
+
const matches = path.match(/\{([^}]+)\}/g);
|
|
41
|
+
if (!matches)
|
|
42
|
+
return [];
|
|
43
|
+
return matches.map(match => match.slice(1, -1));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Generate a client service method
|
|
47
|
+
*/
|
|
48
|
+
function generateClientServiceMethod(methodName, httpMethod, path, operation, spec, imports) {
|
|
49
|
+
const parameters = [];
|
|
50
|
+
const comments = [];
|
|
51
|
+
// Add description if available
|
|
52
|
+
if (operation.summary || operation.description) {
|
|
53
|
+
comments.push(' /**');
|
|
54
|
+
if (operation.summary) {
|
|
55
|
+
comments.push(` * ${operation.summary}`);
|
|
56
|
+
}
|
|
57
|
+
if (operation.description && operation.description !== operation.summary) {
|
|
58
|
+
comments.push(` * ${operation.description}`);
|
|
59
|
+
}
|
|
60
|
+
comments.push(' */');
|
|
61
|
+
}
|
|
62
|
+
// Handle path parameters
|
|
63
|
+
const pathParams = extractPathParams(path);
|
|
64
|
+
for (const param of pathParams) {
|
|
65
|
+
const paramName = (0, utils_1.toCamelCase)(param);
|
|
66
|
+
parameters.push(`${paramName}: string`);
|
|
67
|
+
}
|
|
68
|
+
// Handle query parameters
|
|
69
|
+
const queryParams = [];
|
|
70
|
+
if (operation.parameters) {
|
|
71
|
+
for (const param of operation.parameters) {
|
|
72
|
+
if (!param.name)
|
|
73
|
+
continue;
|
|
74
|
+
if (param.in !== 'query')
|
|
75
|
+
continue;
|
|
76
|
+
const paramName = (0, utils_1.toCamelCase)(param.name);
|
|
77
|
+
let paramType = 'any';
|
|
78
|
+
if (param.schema?.$ref) {
|
|
79
|
+
const refName = (0, parser_1.getSchemaNameFromRef)(param.schema.$ref);
|
|
80
|
+
paramType = (0, utils_1.toPascalCase)(refName);
|
|
81
|
+
imports.add(`import { ${paramType} } from '../dtos/${(0, utils_1.toKebabCase)(refName)}.dto';`);
|
|
82
|
+
}
|
|
83
|
+
else if (param.type) {
|
|
84
|
+
paramType = (0, utils_1.getTypeScriptType)(param.type);
|
|
85
|
+
}
|
|
86
|
+
else if (param.schema?.type) {
|
|
87
|
+
paramType = (0, utils_1.getTypeScriptType)(param.schema.type);
|
|
88
|
+
}
|
|
89
|
+
queryParams.push(paramName);
|
|
90
|
+
const optional = param.required === false ? '?' : '';
|
|
91
|
+
parameters.push(`${paramName}${optional}: ${paramType}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Handle request body
|
|
95
|
+
let bodyParam;
|
|
96
|
+
let bodyType = 'any';
|
|
97
|
+
if (operation.requestBody) {
|
|
98
|
+
let requestBody = operation.requestBody;
|
|
99
|
+
// Resolve requestBody reference if it's a $ref
|
|
100
|
+
if (requestBody.$ref) {
|
|
101
|
+
const refPath = requestBody.$ref.split('/');
|
|
102
|
+
const refName = refPath[refPath.length - 1];
|
|
103
|
+
requestBody = spec.components?.requestBodies?.[refName] || requestBody;
|
|
104
|
+
}
|
|
105
|
+
const content = requestBody.content;
|
|
106
|
+
if (content) {
|
|
107
|
+
const jsonContent = content['application/json'];
|
|
108
|
+
if (jsonContent?.schema?.$ref) {
|
|
109
|
+
const refName = (0, parser_1.getSchemaNameFromRef)(jsonContent.schema.$ref);
|
|
110
|
+
bodyType = (0, utils_1.toPascalCase)(refName);
|
|
111
|
+
imports.add(`import { ${bodyType} } from '../dtos/${(0, utils_1.toKebabCase)(refName)}.dto';`);
|
|
112
|
+
bodyParam = 'data';
|
|
113
|
+
const optional = requestBody.required === false ? '?' : '';
|
|
114
|
+
parameters.push(`data${optional}: ${bodyType}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Determine return type
|
|
119
|
+
let returnType = 'any';
|
|
120
|
+
const responses = operation.responses;
|
|
121
|
+
if (responses && responses['200']) {
|
|
122
|
+
const successResponse = responses['200'];
|
|
123
|
+
// OpenAPI 3.x
|
|
124
|
+
if (successResponse.content) {
|
|
125
|
+
const jsonContent = successResponse.content['application/json'];
|
|
126
|
+
if (jsonContent?.schema) {
|
|
127
|
+
if (jsonContent.schema.$ref) {
|
|
128
|
+
const refName = (0, parser_1.getSchemaNameFromRef)(jsonContent.schema.$ref);
|
|
129
|
+
returnType = (0, utils_1.toPascalCase)(refName);
|
|
130
|
+
imports.add(`import { ${returnType} } from '../dtos/${(0, utils_1.toKebabCase)(refName)}.dto';`);
|
|
131
|
+
}
|
|
132
|
+
else if (jsonContent.schema.type === 'array' && jsonContent.schema.items?.$ref) {
|
|
133
|
+
const refName = (0, parser_1.getSchemaNameFromRef)(jsonContent.schema.items.$ref);
|
|
134
|
+
returnType = `${(0, utils_1.toPascalCase)(refName)}[]`;
|
|
135
|
+
const typeName = (0, utils_1.toPascalCase)(refName);
|
|
136
|
+
imports.add(`import { ${typeName} } from '../dtos/${(0, utils_1.toKebabCase)(refName)}.dto';`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Swagger 2.0
|
|
141
|
+
else if (successResponse.schema) {
|
|
142
|
+
if (successResponse.schema.$ref) {
|
|
143
|
+
const refName = (0, parser_1.getSchemaNameFromRef)(successResponse.schema.$ref);
|
|
144
|
+
returnType = (0, utils_1.toPascalCase)(refName);
|
|
145
|
+
imports.add(`import { ${returnType} } from '../dtos/${(0, utils_1.toKebabCase)(refName)}.dto';`);
|
|
146
|
+
}
|
|
147
|
+
else if (successResponse.schema.type === 'array' && successResponse.schema.items?.$ref) {
|
|
148
|
+
const refName = (0, parser_1.getSchemaNameFromRef)(successResponse.schema.items.$ref);
|
|
149
|
+
returnType = `${(0, utils_1.toPascalCase)(refName)}[]`;
|
|
150
|
+
const typeName = (0, utils_1.toPascalCase)(refName);
|
|
151
|
+
imports.add(`import { ${typeName} } from '../dtos/${(0, utils_1.toKebabCase)(refName)}.dto';`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Build method
|
|
156
|
+
let methodContent = '';
|
|
157
|
+
if (comments.length > 0) {
|
|
158
|
+
methodContent += comments.join('\n') + '\n';
|
|
159
|
+
}
|
|
160
|
+
const paramsString = parameters.join(', ');
|
|
161
|
+
methodContent += ` async ${methodName}(${paramsString}): Promise<${returnType}> {\n`;
|
|
162
|
+
// Build URL with path parameters
|
|
163
|
+
let urlPath = path;
|
|
164
|
+
for (const param of pathParams) {
|
|
165
|
+
const paramName = (0, utils_1.toCamelCase)(param);
|
|
166
|
+
urlPath = urlPath.replace(`{${param}}`, `\${${paramName}}`);
|
|
167
|
+
}
|
|
168
|
+
// Build request config
|
|
169
|
+
const configParts = [];
|
|
170
|
+
// Add query parameters
|
|
171
|
+
if (queryParams.length > 0) {
|
|
172
|
+
const paramsObj = queryParams.map(p => `${p}`).join(', ');
|
|
173
|
+
configParts.push(` params: { ${paramsObj} }`);
|
|
174
|
+
}
|
|
175
|
+
const method = httpMethod.toLowerCase();
|
|
176
|
+
// Make request
|
|
177
|
+
if (bodyParam) {
|
|
178
|
+
// Methods with body (POST, PUT, PATCH)
|
|
179
|
+
if (configParts.length > 0) {
|
|
180
|
+
methodContent += ` const response = await this.axios.${method}(\`${urlPath}\`, ${bodyParam}, {\n`;
|
|
181
|
+
methodContent += configParts.join(',\n') + '\n';
|
|
182
|
+
methodContent += ` });\n`;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
methodContent += ` const response = await this.axios.${method}(\`${urlPath}\`, ${bodyParam});\n`;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
// Methods without body (GET, DELETE)
|
|
190
|
+
if (configParts.length > 0) {
|
|
191
|
+
methodContent += ` const response = await this.axios.${method}(\`${urlPath}\`, {\n`;
|
|
192
|
+
methodContent += configParts.join(',\n') + '\n';
|
|
193
|
+
methodContent += ` });\n`;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
methodContent += ` const response = await this.axios.${method}(\`${urlPath}\`);\n`;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
methodContent += ` return response.data;\n`;
|
|
200
|
+
methodContent += ` }\n\n`;
|
|
201
|
+
return methodContent;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=client-service.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-service.generator.js","sourceRoot":"","sources":["../../src/generators/client-service.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SwaggerSpec, EndpointInfo, GeneratedController } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Generate a controller for a specific tag/resource
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateController(tag: string, endpoints: EndpointInfo[], spec: SwaggerSpec): GeneratedController;
|
|
6
|
+
//# sourceMappingURL=controller.generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.generator.d.ts","sourceRoot":"","sources":["../../src/generators/controller.generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAI1E;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,YAAY,EAAE,EACzB,IAAI,EAAE,WAAW,GAChB,mBAAmB,CAwCrB"}
|