swagger-to-playwright-api-clients 1.0.4

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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +190 -0
  3. package/dist/api.d.ts +27 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +127 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/cli.d.ts +6 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +255 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/clients/BaseAPIClient.d.ts +88 -0
  12. package/dist/clients/BaseAPIClient.d.ts.map +1 -0
  13. package/dist/clients/BaseAPIClient.js +199 -0
  14. package/dist/clients/BaseAPIClient.js.map +1 -0
  15. package/dist/config/types.d.ts +72 -0
  16. package/dist/config/types.d.ts.map +1 -0
  17. package/dist/config/types.js +19 -0
  18. package/dist/config/types.js.map +1 -0
  19. package/dist/index.d.ts +17 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +55 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/utils/copyBaseClient.d.ts +8 -0
  24. package/dist/utils/copyBaseClient.d.ts.map +1 -0
  25. package/dist/utils/copyBaseClient.js +354 -0
  26. package/dist/utils/copyBaseClient.js.map +1 -0
  27. package/dist/utils/logger.d.ts +6 -0
  28. package/dist/utils/logger.d.ts.map +1 -0
  29. package/dist/utils/logger.js +57 -0
  30. package/dist/utils/logger.js.map +1 -0
  31. package/dist/utils/swagger/ClientGenerator.d.ts +49 -0
  32. package/dist/utils/swagger/ClientGenerator.d.ts.map +1 -0
  33. package/dist/utils/swagger/ClientGenerator.js +192 -0
  34. package/dist/utils/swagger/ClientGenerator.js.map +1 -0
  35. package/dist/utils/swagger/FileWriter.d.ts +66 -0
  36. package/dist/utils/swagger/FileWriter.d.ts.map +1 -0
  37. package/dist/utils/swagger/FileWriter.js +185 -0
  38. package/dist/utils/swagger/FileWriter.js.map +1 -0
  39. package/dist/utils/swagger/SwaggerGenerator.d.ts +42 -0
  40. package/dist/utils/swagger/SwaggerGenerator.d.ts.map +1 -0
  41. package/dist/utils/swagger/SwaggerGenerator.js +211 -0
  42. package/dist/utils/swagger/SwaggerGenerator.js.map +1 -0
  43. package/dist/utils/swagger/SwaggerParser.d.ts +69 -0
  44. package/dist/utils/swagger/SwaggerParser.d.ts.map +1 -0
  45. package/dist/utils/swagger/SwaggerParser.js +358 -0
  46. package/dist/utils/swagger/SwaggerParser.js.map +1 -0
  47. package/dist/utils/swagger/TypeGenerator.d.ts +49 -0
  48. package/dist/utils/swagger/TypeGenerator.d.ts.map +1 -0
  49. package/dist/utils/swagger/TypeGenerator.js +166 -0
  50. package/dist/utils/swagger/TypeGenerator.js.map +1 -0
  51. package/dist/utils/swagger/index.d.ts +12 -0
  52. package/dist/utils/swagger/index.d.ts.map +1 -0
  53. package/dist/utils/swagger/index.js +38 -0
  54. package/dist/utils/swagger/index.js.map +1 -0
  55. package/dist/utils/swagger/run-generator.d.ts +23 -0
  56. package/dist/utils/swagger/run-generator.d.ts.map +1 -0
  57. package/dist/utils/swagger/run-generator.js +195 -0
  58. package/dist/utils/swagger/run-generator.js.map +1 -0
  59. package/dist/utils/swagger/types.d.ts +142 -0
  60. package/dist/utils/swagger/types.d.ts.map +1 -0
  61. package/dist/utils/swagger/types.js +7 -0
  62. package/dist/utils/swagger/types.js.map +1 -0
  63. package/dist/utils/swagger/utils/naming.d.ts +48 -0
  64. package/dist/utils/swagger/utils/naming.d.ts.map +1 -0
  65. package/dist/utils/swagger/utils/naming.js +109 -0
  66. package/dist/utils/swagger/utils/naming.js.map +1 -0
  67. package/dist/utils/swagger/utils/pathUtils.d.ts +40 -0
  68. package/dist/utils/swagger/utils/pathUtils.d.ts.map +1 -0
  69. package/dist/utils/swagger/utils/pathUtils.js +118 -0
  70. package/dist/utils/swagger/utils/pathUtils.js.map +1 -0
  71. package/package.json +56 -0
@@ -0,0 +1,66 @@
1
+ /**
2
+ * FileWriter - Handles file organization and writing for generated code
3
+ * Creates proper folder structure and writes TypeScript files
4
+ */
5
+ export interface FileOutput {
6
+ filePath: string;
7
+ content: string;
8
+ }
9
+ export interface FolderStructure {
10
+ serviceName: string;
11
+ folders: Map<string, FileOutput[]>;
12
+ }
13
+ export declare class FileWriter {
14
+ private outputDir;
15
+ private files;
16
+ constructor(outputDir: string);
17
+ /**
18
+ * Add a file to be written
19
+ */
20
+ addFile(relativePath: string, content: string): void;
21
+ /**
22
+ * Add types file for a service folder
23
+ */
24
+ addTypesFile(folderPath: string[], typeDefinitions: string): void;
25
+ /**
26
+ * Add client file for a service folder
27
+ */
28
+ addClientFile(folderPath: string[], className: string, content: string): void;
29
+ /**
30
+ * Add index file for exports
31
+ */
32
+ addIndexFile(folderPath: string[], exports: string[]): void;
33
+ /**
34
+ * Add root index file that exports all services
35
+ */
36
+ addRootIndex(serviceFolders: string[]): void;
37
+ /**
38
+ * Write all files to disk
39
+ */
40
+ writeAll(): Promise<string[]>;
41
+ /**
42
+ * Get all files to be written (for preview)
43
+ */
44
+ getFiles(): FileOutput[];
45
+ /**
46
+ * Preview the folder structure
47
+ */
48
+ previewStructure(): string;
49
+ /**
50
+ * Ensure directory exists
51
+ */
52
+ private ensureDir;
53
+ /**
54
+ * Format content with proper indentation
55
+ */
56
+ private formatContent;
57
+ /**
58
+ * Clear all pending files
59
+ */
60
+ clear(): void;
61
+ /**
62
+ * Get output directory
63
+ */
64
+ getOutputDir(): string;
65
+ }
66
+ //# sourceMappingURL=FileWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileWriter.d.ts","sourceRoot":"","sources":["../../../src/utils/swagger/FileWriter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;CACnC;AAED,qBAAa,UAAU;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAoB;gBAErB,SAAS,EAAE,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOpD;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAYjE;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAY7E;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAM3D;;OAEG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ5C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYnC;;OAEG;IACH,QAAQ,IAAI,UAAU,EAAE;IAIxB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IA8B1B;;OAEG;YACW,SAAS;IAWvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,YAAY,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ /**
3
+ * FileWriter - Handles file organization and writing for generated code
4
+ * Creates proper folder structure and writes TypeScript files
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.FileWriter = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const naming_1 = require("./utils/naming");
44
+ class FileWriter {
45
+ outputDir;
46
+ files = [];
47
+ constructor(outputDir) {
48
+ this.outputDir = outputDir;
49
+ }
50
+ /**
51
+ * Add a file to be written
52
+ */
53
+ addFile(relativePath, content) {
54
+ this.files.push({
55
+ filePath: path.join(this.outputDir, relativePath),
56
+ content: this.formatContent(content),
57
+ });
58
+ }
59
+ /**
60
+ * Add types file for a service folder
61
+ */
62
+ addTypesFile(folderPath, typeDefinitions) {
63
+ const relativePath = path.join(...folderPath, 'types.ts');
64
+ const content = `/**
65
+ * Auto-generated TypeScript types
66
+ * DO NOT EDIT - This file is generated from Swagger/OpenAPI specification
67
+ */
68
+
69
+ ${typeDefinitions}
70
+ `;
71
+ this.addFile(relativePath, content);
72
+ }
73
+ /**
74
+ * Add client file for a service folder
75
+ */
76
+ addClientFile(folderPath, className, content) {
77
+ const fileName = `${className}.ts`;
78
+ const relativePath = path.join(...folderPath, fileName);
79
+ const headerContent = `/**
80
+ * Auto-generated API Client
81
+ * DO NOT EDIT - This file is generated from Swagger/OpenAPI specification
82
+ */
83
+
84
+ ${content}`;
85
+ this.addFile(relativePath, headerContent);
86
+ }
87
+ /**
88
+ * Add index file for exports
89
+ */
90
+ addIndexFile(folderPath, exports) {
91
+ const relativePath = path.join(...folderPath, 'index.ts');
92
+ const content = exports.map((e) => `export * from './${e}';`).join('\n');
93
+ this.addFile(relativePath, `${content}\n`);
94
+ }
95
+ /**
96
+ * Add root index file that exports all services
97
+ */
98
+ addRootIndex(serviceFolders) {
99
+ const exports = serviceFolders.map((folder) => {
100
+ const pascalName = (0, naming_1.toPascalCase)(folder);
101
+ return `export * as ${pascalName} from './${folder}';`;
102
+ });
103
+ this.addFile('index.ts', exports.join('\n') + '\n');
104
+ }
105
+ /**
106
+ * Write all files to disk
107
+ */
108
+ async writeAll() {
109
+ const writtenFiles = [];
110
+ for (const file of this.files) {
111
+ await this.ensureDir(path.dirname(file.filePath));
112
+ await fs.promises.writeFile(file.filePath, file.content, 'utf-8');
113
+ writtenFiles.push(file.filePath);
114
+ }
115
+ return writtenFiles;
116
+ }
117
+ /**
118
+ * Get all files to be written (for preview)
119
+ */
120
+ getFiles() {
121
+ return this.files;
122
+ }
123
+ /**
124
+ * Preview the folder structure
125
+ */
126
+ previewStructure() {
127
+ const tree = [];
128
+ const dirs = new Set();
129
+ // Sort files for consistent output
130
+ const sortedFiles = [...this.files].sort((a, b) => a.filePath.localeCompare(b.filePath));
131
+ for (const file of sortedFiles) {
132
+ const relativePath = path.relative(this.outputDir, file.filePath);
133
+ const parts = relativePath.split(path.sep);
134
+ // Add directories
135
+ let currentPath = '';
136
+ for (let i = 0; i < parts.length - 1; i++) {
137
+ currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i];
138
+ if (!dirs.has(currentPath)) {
139
+ dirs.add(currentPath);
140
+ const indent = ' '.repeat(i);
141
+ tree.push(`${indent}${parts[i]}/`);
142
+ }
143
+ }
144
+ // Add file
145
+ const indent = ' '.repeat(parts.length - 1);
146
+ tree.push(`${indent}${parts[parts.length - 1]}`);
147
+ }
148
+ return tree.join('\n');
149
+ }
150
+ /**
151
+ * Ensure directory exists
152
+ */
153
+ async ensureDir(dirPath) {
154
+ try {
155
+ await fs.promises.mkdir(dirPath, { recursive: true });
156
+ }
157
+ catch (error) {
158
+ // Ignore if already exists
159
+ if (error.code !== 'EEXIST') {
160
+ throw error;
161
+ }
162
+ }
163
+ }
164
+ /**
165
+ * Format content with proper indentation
166
+ */
167
+ formatContent(content) {
168
+ // Basic cleanup - remove multiple blank lines
169
+ return content.replace(/\n{3,}/g, '\n\n').trim() + '\n';
170
+ }
171
+ /**
172
+ * Clear all pending files
173
+ */
174
+ clear() {
175
+ this.files = [];
176
+ }
177
+ /**
178
+ * Get output directory
179
+ */
180
+ getOutputDir() {
181
+ return this.outputDir;
182
+ }
183
+ }
184
+ exports.FileWriter = FileWriter;
185
+ //# sourceMappingURL=FileWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileWriter.js","sourceRoot":"","sources":["../../../src/utils/swagger/FileWriter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * SwaggerGenerator - Main entry point for generating API clients from Swagger/OpenAPI
3
+ * Orchestrates parsing, type generation, client generation, and file writing
4
+ */
5
+ import { SwaggerDocument } from './types';
6
+ export interface GeneratorOptions {
7
+ outputDir: string;
8
+ serviceName?: string;
9
+ baseClientPath?: string;
10
+ }
11
+ export interface GeneratorResult {
12
+ success: boolean;
13
+ serviceName: string;
14
+ filesWritten: string[];
15
+ folderStructure: string;
16
+ errors: string[];
17
+ }
18
+ export declare class SwaggerGenerator {
19
+ private options;
20
+ constructor(options: GeneratorOptions);
21
+ /**
22
+ * Generate API client from Swagger/OpenAPI JSON file
23
+ */
24
+ generateFromFile(filePath: string): Promise<GeneratorResult>;
25
+ /**
26
+ * Generate API client from Swagger/OpenAPI URL
27
+ */
28
+ generateFromUrl(url: string): Promise<GeneratorResult>;
29
+ /**
30
+ * Generate API client from Swagger/OpenAPI document object
31
+ */
32
+ generate(document: SwaggerDocument): Promise<GeneratorResult>;
33
+ }
34
+ /**
35
+ * Convenience function to generate from file
36
+ */
37
+ export declare function generateFromFile(filePath: string, outputDir: string, serviceName?: string): Promise<GeneratorResult>;
38
+ /**
39
+ * Convenience function to generate from URL
40
+ */
41
+ export declare function generateFromUrl(url: string, outputDir: string, serviceName?: string): Promise<GeneratorResult>;
42
+ //# sourceMappingURL=SwaggerGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerGenerator.d.ts","sourceRoot":"","sources":["../../../src/utils/swagger/SwaggerGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AAK1D,MAAM,WAAW,gBAAgB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,gBAAgB;IAOrC;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoBlE;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuB5D;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;CAsGnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAG1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACpC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAG1B"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * SwaggerGenerator - Main entry point for generating API clients from Swagger/OpenAPI
4
+ * Orchestrates parsing, type generation, client generation, and file writing
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.SwaggerGenerator = void 0;
44
+ exports.generateFromFile = generateFromFile;
45
+ exports.generateFromUrl = generateFromUrl;
46
+ const fs = __importStar(require("fs"));
47
+ const SwaggerParser_1 = require("./SwaggerParser");
48
+ const TypeGenerator_1 = require("./TypeGenerator");
49
+ const ClientGenerator_1 = require("./ClientGenerator");
50
+ const FileWriter_1 = require("./FileWriter");
51
+ const pathUtils_1 = require("./utils/pathUtils");
52
+ const logger_1 = __importDefault(require("../logger"));
53
+ class SwaggerGenerator {
54
+ options;
55
+ constructor(options) {
56
+ this.options = {
57
+ baseClientPath: '../../clients/BaseAPIClient',
58
+ ...options,
59
+ };
60
+ }
61
+ /**
62
+ * Generate API client from Swagger/OpenAPI JSON file
63
+ */
64
+ async generateFromFile(filePath) {
65
+ logger_1.default.info(`Reading Swagger file: ${filePath}`);
66
+ try {
67
+ const content = await fs.promises.readFile(filePath, 'utf-8');
68
+ const document = JSON.parse(content);
69
+ return this.generate(document);
70
+ }
71
+ catch (error) {
72
+ const errorMessage = error instanceof Error ? error.message : String(error);
73
+ logger_1.default.error(`Failed to read Swagger file: ${errorMessage}`);
74
+ return {
75
+ success: false,
76
+ serviceName: '',
77
+ filesWritten: [],
78
+ folderStructure: '',
79
+ errors: [`Failed to read file: ${errorMessage}`],
80
+ };
81
+ }
82
+ }
83
+ /**
84
+ * Generate API client from Swagger/OpenAPI URL
85
+ */
86
+ async generateFromUrl(url) {
87
+ logger_1.default.info(`Fetching Swagger from URL: ${url}`);
88
+ try {
89
+ const response = await fetch(url);
90
+ if (!response.ok) {
91
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
92
+ }
93
+ const document = (await response.json());
94
+ return this.generate(document);
95
+ }
96
+ catch (error) {
97
+ const errorMessage = error instanceof Error ? error.message : String(error);
98
+ logger_1.default.error(`Failed to fetch Swagger from URL: ${errorMessage}`);
99
+ return {
100
+ success: false,
101
+ serviceName: '',
102
+ filesWritten: [],
103
+ folderStructure: '',
104
+ errors: [`Failed to fetch URL: ${errorMessage}`],
105
+ };
106
+ }
107
+ }
108
+ /**
109
+ * Generate API client from Swagger/OpenAPI document object
110
+ */
111
+ async generate(document) {
112
+ const errors = [];
113
+ try {
114
+ // Initialize parser
115
+ const parser = new SwaggerParser_1.SwaggerParser(document);
116
+ const serviceName = this.options.serviceName || parser.getServiceName();
117
+ logger_1.default.info(`Generating API client for: ${serviceName}`);
118
+ logger_1.default.info(`OpenAPI version: ${parser.isSwagger2() ? '2.0' : '3.x'}`);
119
+ // Parse all endpoints
120
+ const endpoints = parser.parseEndpoints();
121
+ logger_1.default.info(`Found ${endpoints.length} endpoints`);
122
+ // Initialize generators
123
+ const typeGenerator = new TypeGenerator_1.TypeGenerator(parser);
124
+ const clientGenerator = new ClientGenerator_1.ClientGenerator(typeGenerator, this.options.baseClientPath);
125
+ const fileWriter = new FileWriter_1.FileWriter(this.options.outputDir);
126
+ // Generate types for all endpoints
127
+ typeGenerator.generateAllTypes(endpoints);
128
+ // Group endpoints by folder
129
+ const groups = (0, pathUtils_1.groupEndpointsByFolder)(document.paths, serviceName);
130
+ // Generate files for each group
131
+ for (const [folderKey, group] of groups) {
132
+ const folderPath = group.folder;
133
+ // Get endpoints for this group
134
+ const groupEndpoints = [];
135
+ for (const ep of group.endpoints) {
136
+ const found = endpoints.find((e) => e.path === ep.path && e.method === ep.method);
137
+ if (found) {
138
+ groupEndpoints.push(found);
139
+ }
140
+ }
141
+ if (groupEndpoints.length === 0)
142
+ continue;
143
+ // Generate types for this group
144
+ const groupTypeGenerator = new TypeGenerator_1.TypeGenerator(parser);
145
+ groupTypeGenerator.generateAllTypes(groupEndpoints);
146
+ const typeDefinitions = groupTypeGenerator.generateTypeDeclarations();
147
+ // Get type imports for client
148
+ const typeImports = [];
149
+ for (const endpoint of groupEndpoints) {
150
+ const requestType = groupTypeGenerator.getRequestTypeName(endpoint);
151
+ const responseType = groupTypeGenerator.getResponseTypeName(endpoint);
152
+ if (requestType && !typeImports.includes(requestType)) {
153
+ typeImports.push(requestType);
154
+ }
155
+ if (responseType && !typeImports.includes(responseType)) {
156
+ typeImports.push(responseType);
157
+ }
158
+ }
159
+ // Generate client class
160
+ const className = `${folderPath.join('')}Client`;
161
+ const clientCode = clientGenerator.generateClientClass(className, groupEndpoints, typeImports);
162
+ // Add files
163
+ if (typeDefinitions.trim()) {
164
+ fileWriter.addTypesFile(folderPath, typeDefinitions);
165
+ }
166
+ fileWriter.addClientFile(folderPath, className, clientCode);
167
+ }
168
+ // Preview structure
169
+ const folderStructure = fileWriter.previewStructure();
170
+ logger_1.default.info(`Folder structure:\n${folderStructure}`);
171
+ // Write all files
172
+ const filesWritten = await fileWriter.writeAll();
173
+ logger_1.default.info(`Generated ${filesWritten.length} files`);
174
+ return {
175
+ success: true,
176
+ serviceName,
177
+ filesWritten,
178
+ folderStructure,
179
+ errors,
180
+ };
181
+ }
182
+ catch (error) {
183
+ const errorMessage = error instanceof Error ? error.message : String(error);
184
+ logger_1.default.error(`Generation failed: ${errorMessage}`);
185
+ errors.push(errorMessage);
186
+ return {
187
+ success: false,
188
+ serviceName: '',
189
+ filesWritten: [],
190
+ folderStructure: '',
191
+ errors,
192
+ };
193
+ }
194
+ }
195
+ }
196
+ exports.SwaggerGenerator = SwaggerGenerator;
197
+ /**
198
+ * Convenience function to generate from file
199
+ */
200
+ async function generateFromFile(filePath, outputDir, serviceName) {
201
+ const generator = new SwaggerGenerator({ outputDir, serviceName });
202
+ return generator.generateFromFile(filePath);
203
+ }
204
+ /**
205
+ * Convenience function to generate from URL
206
+ */
207
+ async function generateFromUrl(url, outputDir, serviceName) {
208
+ const generator = new SwaggerGenerator({ outputDir, serviceName });
209
+ return generator.generateFromUrl(url);
210
+ }
211
+ //# sourceMappingURL=SwaggerGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerGenerator.js","sourceRoot":"","sources":["../../../src/utils/swagger/SwaggerGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * SwaggerParser - Parses Swagger 2.0 and OpenAPI 3.x documents
3
+ * Extracts endpoints, schemas, and parameters into a unified format
4
+ */
5
+ import { SwaggerDocument, ParsedEndpoint, ParsedSchema, SchemaObject } from './types';
6
+ export declare class SwaggerParser {
7
+ private document;
8
+ private schemas;
9
+ private generatedTypes;
10
+ constructor(document: SwaggerDocument);
11
+ /**
12
+ * Detect if document is Swagger 2.0 or OpenAPI 3.x
13
+ */
14
+ isSwagger2(): boolean;
15
+ isOpenAPI3(): boolean;
16
+ /**
17
+ * Get service name from document info
18
+ */
19
+ getServiceName(): string;
20
+ /**
21
+ * Load all schemas from the document
22
+ */
23
+ private loadSchemas;
24
+ /**
25
+ * Resolve a $ref to its schema
26
+ */
27
+ resolveRef(ref: string): SchemaObject | undefined;
28
+ /**
29
+ * Extract ref name from $ref path
30
+ */
31
+ private extractRefName;
32
+ /**
33
+ * Parse all endpoints from the document
34
+ */
35
+ parseEndpoints(): ParsedEndpoint[];
36
+ /**
37
+ * Parse a single operation
38
+ */
39
+ private parseOperation;
40
+ /**
41
+ * Parse parameters array
42
+ */
43
+ private parseParameters;
44
+ /**
45
+ * Convert parameter to TypeScript type
46
+ */
47
+ private parameterToTypeScript;
48
+ /**
49
+ * Parse schema into TypeScript representation
50
+ */
51
+ parseSchema(schema: SchemaObject, defaultName: string): ParsedSchema;
52
+ /**
53
+ * Convert schema to TypeScript type string
54
+ */
55
+ schemaToTypeScript(schema: SchemaObject): string;
56
+ /**
57
+ * Convert object schema to TypeScript interface body
58
+ */
59
+ private objectSchemaToTypeScript;
60
+ /**
61
+ * Get all schemas for type generation
62
+ */
63
+ getAllSchemas(): Map<string, SchemaObject>;
64
+ /**
65
+ * Get base URL from document
66
+ */
67
+ getBaseUrl(): string;
68
+ }
69
+ //# sourceMappingURL=SwaggerParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerParser.d.ts","sourceRoot":"","sources":["../../../src/utils/swagger/SwaggerParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,eAAe,EAGf,cAAc,EAEd,YAAY,EACZ,YAAY,EAGZ,MAAM,SAAS,CAAC;AAGjB,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,cAAc,CAAkC;gBAE5C,QAAQ,EAAE,eAAe;IAKrC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,cAAc,IAAI,MAAM;IAKxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjD;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,cAAc,IAAI,cAAc,EAAE;IAiClC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgEtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY;IA+EpE;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IA4DhD;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;OAEG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAI1C;;OAEG;IACH,UAAU,IAAI,MAAM;CAYpB"}