@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.
Files changed (53) hide show
  1. package/ARCHITECTURE.md +230 -0
  2. package/FORMATS.md +180 -0
  3. package/OPENAPI-COMPARISON.md +355 -0
  4. package/QUICKSTART.md +118 -0
  5. package/README.md +405 -0
  6. package/SUMMARY.md +184 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +49 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/file-writer.d.ts +24 -0
  12. package/dist/file-writer.d.ts.map +1 -0
  13. package/dist/file-writer.js +95 -0
  14. package/dist/file-writer.js.map +1 -0
  15. package/dist/generator.d.ts +6 -0
  16. package/dist/generator.d.ts.map +1 -0
  17. package/dist/generator.js +104 -0
  18. package/dist/generator.js.map +1 -0
  19. package/dist/generators/client-service.generator.d.ts +6 -0
  20. package/dist/generators/client-service.generator.d.ts.map +1 -0
  21. package/dist/generators/client-service.generator.js +203 -0
  22. package/dist/generators/client-service.generator.js.map +1 -0
  23. package/dist/generators/controller.generator.d.ts +6 -0
  24. package/dist/generators/controller.generator.d.ts.map +1 -0
  25. package/dist/generators/controller.generator.js +241 -0
  26. package/dist/generators/controller.generator.js.map +1 -0
  27. package/dist/generators/dto.generator.d.ts +10 -0
  28. package/dist/generators/dto.generator.d.ts.map +1 -0
  29. package/dist/generators/dto.generator.js +221 -0
  30. package/dist/generators/dto.generator.js.map +1 -0
  31. package/dist/generators/module.generator.d.ts +10 -0
  32. package/dist/generators/module.generator.d.ts.map +1 -0
  33. package/dist/generators/module.generator.js +52 -0
  34. package/dist/generators/module.generator.js.map +1 -0
  35. package/dist/generators/service.generator.d.ts +6 -0
  36. package/dist/generators/service.generator.d.ts.map +1 -0
  37. package/dist/generators/service.generator.js +179 -0
  38. package/dist/generators/service.generator.js.map +1 -0
  39. package/dist/parser.d.ts +24 -0
  40. package/dist/parser.d.ts.map +1 -0
  41. package/dist/parser.js +82 -0
  42. package/dist/parser.js.map +1 -0
  43. package/dist/types.d.ts +97 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +3 -0
  46. package/dist/types.js.map +1 -0
  47. package/dist/utils.d.ts +38 -0
  48. package/dist/utils.d.ts.map +1 -0
  49. package/dist/utils.js +114 -0
  50. package/dist/utils.js.map +1 -0
  51. package/package.json +40 -0
  52. package/test-all-formats.sh +32 -0
  53. 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,6 @@
1
+ export type GenerationMode = 'server' | 'client' | 'both';
2
+ /**
3
+ * Main generator function
4
+ */
5
+ export declare function generateFromSwagger(inputPath: string, outputPath: string, mode?: GenerationMode): Promise<void>;
6
+ //# sourceMappingURL=generator.d.ts.map
@@ -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":";;AAOA,sDAmCC;AAzCD,oCAAuG;AACvG,sCAAiD;AAEjD;;GAEG;AACH,SAAgB,qBAAqB,CACnC,GAAW,EACX,SAAyB,EACzB,IAAiB;IAEjB,MAAM,WAAW,GAAG,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,SAAS,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IAEjF,IAAI,cAAc,GAAG,gBAAgB,WAAW,MAAM,CAAC;IACvD,cAAc,IAAI,qCAAqC,CAAC;IACxD,cAAc,IAAI,iEAAiE,CAAC;IACpF,cAAc,IAAI,mCAAmC,CAAC;IACtD,cAAc,IAAI,kBAAkB,CAAC;IACrC,cAAc,IAAI,oBAAoB,CAAC;IACvC,cAAc,IAAI,WAAW,CAAC;IAC9B,cAAc,IAAI,SAAS,CAAC;IAE5B,qCAAqC;IACrC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAA,wBAAgB,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACxG,cAAc,IAAI,eAAe,CAAC;IACpC,CAAC;IAED,cAAc,IAAI,KAAK,CAAC;IAExB,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,cAAc,EAAE,CAAC;IAEzE,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAClC,UAAkB,EAClB,UAAkB,EAClB,IAAY,EACZ,SAAc,EACd,IAAiB,EACjB,OAAoB;IAEpB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,+BAA+B;IAC/B,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,QAAQ,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YACzE,QAAQ,CAAC,IAAI,CAAC,QAAQ,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,0BAA0B;IAC1B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,IAAI;gBAAE,SAAS;YAC1B,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO;gBAAE,SAAS;YACnC,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxD,SAAS,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,oBAAoB,IAAA,mBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrF,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtB,SAAS,GAAG,IAAA,yBAAiB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC9B,SAAS,GAAG,IAAA,yBAAiB,EAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YAED,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,QAAQ,KAAK,SAAS,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,SAA6B,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QAExC,+CAA+C;QAC/C,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC;QACzE,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAChD,IAAI,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9D,QAAQ,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,oBAAoB,IAAA,mBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClF,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,UAAU,CAAC,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IAEtC,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAEzC,cAAc;QACd,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAChE,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;gBACxB,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5B,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC9D,UAAU,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,oBAAoB,IAAA,mBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtF,CAAC;qBAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;oBACjF,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACpE,UAAU,GAAG,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,IAAI,CAAC;oBAC1C,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,oBAAoB,IAAA,mBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;QACH,CAAC;QACD,cAAc;aACT,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClE,UAAU,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,oBAAoB,IAAA,mBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtF,CAAC;iBAAM,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;gBACzF,MAAM,OAAO,GAAG,IAAA,6BAAoB,EAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxE,UAAU,GAAG,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,IAAI,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,oBAAoB,IAAA,mBAAW,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,aAAa,IAAI,WAAW,UAAU,IAAI,YAAY,cAAc,UAAU,OAAO,CAAC;IAEtF,iCAAiC;IACjC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC;QACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE,MAAM,SAAS,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,uBAAuB;IACvB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,WAAW,CAAC,IAAI,CAAC,mBAAmB,SAAS,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAExC,eAAe;IACf,IAAI,SAAS,EAAE,CAAC;QACd,uCAAuC;QACvC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,aAAa,IAAI,yCAAyC,MAAM,MAAM,OAAO,OAAO,SAAS,OAAO,CAAC;YACrG,aAAa,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAChD,aAAa,IAAI,WAAW,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,aAAa,IAAI,yCAAyC,MAAM,MAAM,OAAO,OAAO,SAAS,MAAM,CAAC;QACtG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,qCAAqC;QACrC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,aAAa,IAAI,yCAAyC,MAAM,MAAM,OAAO,SAAS,CAAC;YACvF,aAAa,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAChD,aAAa,IAAI,WAAW,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,aAAa,IAAI,yCAAyC,MAAM,MAAM,OAAO,QAAQ,CAAC;QACxF,CAAC;IACH,CAAC;IAED,aAAa,IAAI,6BAA6B,CAAC;IAC/C,aAAa,IAAI,SAAS,CAAC;IAE3B,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -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"}