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,358 @@
1
+ "use strict";
2
+ /**
3
+ * SwaggerParser - Parses Swagger 2.0 and OpenAPI 3.x documents
4
+ * Extracts endpoints, schemas, and parameters into a unified format
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SwaggerParser = void 0;
8
+ const naming_1 = require("./utils/naming");
9
+ class SwaggerParser {
10
+ document;
11
+ schemas = new Map();
12
+ generatedTypes = new Map();
13
+ constructor(document) {
14
+ this.document = document;
15
+ this.loadSchemas();
16
+ }
17
+ /**
18
+ * Detect if document is Swagger 2.0 or OpenAPI 3.x
19
+ */
20
+ isSwagger2() {
21
+ return 'swagger' in this.document && this.document.swagger === '2.0';
22
+ }
23
+ isOpenAPI3() {
24
+ return 'openapi' in this.document && this.document.openapi.startsWith('3.');
25
+ }
26
+ /**
27
+ * Get service name from document info
28
+ */
29
+ getServiceName() {
30
+ const title = this.document.info.title || 'ApiService';
31
+ return (0, naming_1.toPascalCase)(title.replace(/api|service/gi, '').trim()) + 'Service';
32
+ }
33
+ /**
34
+ * Load all schemas from the document
35
+ */
36
+ loadSchemas() {
37
+ if (this.isSwagger2()) {
38
+ const doc = this.document;
39
+ if (doc.definitions) {
40
+ for (const [name, schema] of Object.entries(doc.definitions)) {
41
+ this.schemas.set(`#/definitions/${name}`, schema);
42
+ this.schemas.set(name, schema);
43
+ }
44
+ }
45
+ }
46
+ else if (this.isOpenAPI3()) {
47
+ const doc = this.document;
48
+ if (doc.components?.schemas) {
49
+ for (const [name, schema] of Object.entries(doc.components.schemas)) {
50
+ this.schemas.set(`#/components/schemas/${name}`, schema);
51
+ this.schemas.set(name, schema);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Resolve a $ref to its schema
58
+ */
59
+ resolveRef(ref) {
60
+ return this.schemas.get(ref);
61
+ }
62
+ /**
63
+ * Extract ref name from $ref path
64
+ */
65
+ extractRefName(ref) {
66
+ const parts = ref.split('/');
67
+ return parts[parts.length - 1];
68
+ }
69
+ /**
70
+ * Parse all endpoints from the document
71
+ */
72
+ parseEndpoints() {
73
+ const endpoints = [];
74
+ const paths = this.document.paths;
75
+ for (const [path, pathItem] of Object.entries(paths)) {
76
+ const methods = [
77
+ 'get',
78
+ 'post',
79
+ 'put',
80
+ 'patch',
81
+ 'delete',
82
+ ];
83
+ // Get path-level parameters
84
+ const pathLevelParams = pathItem.parameters || [];
85
+ for (const method of methods) {
86
+ const operation = pathItem[method];
87
+ if (!operation)
88
+ continue;
89
+ const endpoint = this.parseOperation(path, method.toUpperCase(), operation, pathLevelParams);
90
+ endpoints.push(endpoint);
91
+ }
92
+ }
93
+ return endpoints;
94
+ }
95
+ /**
96
+ * Parse a single operation
97
+ */
98
+ parseOperation(path, method, operation, pathLevelParams) {
99
+ // Combine path-level and operation-level parameters
100
+ const allParams = [...pathLevelParams, ...(operation.parameters || [])];
101
+ const pathParams = this.parseParameters(allParams.filter((p) => p.in === 'path'));
102
+ const queryParams = this.parseParameters(allParams.filter((p) => p.in === 'query'));
103
+ const headerParams = this.parseParameters(allParams.filter((p) => p.in === 'header'));
104
+ // Parse request body (different for Swagger 2.0 vs OpenAPI 3.x)
105
+ let requestBody;
106
+ if (this.isSwagger2()) {
107
+ const bodyParam = allParams.find((p) => p.in === 'body');
108
+ if (bodyParam?.schema) {
109
+ requestBody = this.parseSchema(bodyParam.schema, 'RequestBody');
110
+ }
111
+ }
112
+ else if (operation.requestBody) {
113
+ const content = operation.requestBody.content;
114
+ const schema = content['application/json']?.schema || Object.values(content)[0]?.schema;
115
+ if (schema) {
116
+ requestBody = this.parseSchema(schema, 'RequestBody');
117
+ }
118
+ }
119
+ // Parse responses
120
+ const responses = {};
121
+ if (operation.responses) {
122
+ for (const [statusCode, response] of Object.entries(operation.responses)) {
123
+ let schema;
124
+ if (this.isSwagger2() && response.schema) {
125
+ schema = response.schema;
126
+ }
127
+ else if (response.content) {
128
+ schema =
129
+ response.content['application/json']?.schema ||
130
+ Object.values(response.content)[0]?.schema;
131
+ }
132
+ if (schema) {
133
+ responses[statusCode] = this.parseSchema(schema, `Response${statusCode}`);
134
+ }
135
+ }
136
+ }
137
+ return {
138
+ path,
139
+ method,
140
+ operationId: operation.operationId,
141
+ summary: operation.summary,
142
+ description: operation.description,
143
+ tags: operation.tags,
144
+ pathParams,
145
+ queryParams,
146
+ headerParams,
147
+ requestBody,
148
+ responses,
149
+ deprecated: operation.deprecated,
150
+ };
151
+ }
152
+ /**
153
+ * Parse parameters array
154
+ */
155
+ parseParameters(params) {
156
+ return params.map((param) => ({
157
+ name: param.name,
158
+ required: param.required || false,
159
+ type: this.parameterToTypeScript(param),
160
+ description: param.description,
161
+ enum: param.enum,
162
+ }));
163
+ }
164
+ /**
165
+ * Convert parameter to TypeScript type
166
+ */
167
+ parameterToTypeScript(param) {
168
+ if (param.schema) {
169
+ return this.schemaToTypeScript(param.schema);
170
+ }
171
+ const typeMap = {
172
+ string: 'string',
173
+ integer: 'number',
174
+ number: 'number',
175
+ boolean: 'boolean',
176
+ array: 'unknown[]',
177
+ object: 'Record<string, unknown>',
178
+ file: 'File',
179
+ };
180
+ if (param.enum) {
181
+ return param.enum.map((e) => `'${e}'`).join(' | ');
182
+ }
183
+ return typeMap[param.type || 'string'] || 'unknown';
184
+ }
185
+ /**
186
+ * Parse schema into TypeScript representation
187
+ */
188
+ parseSchema(schema, defaultName) {
189
+ // Handle $ref
190
+ if (schema.$ref) {
191
+ const refName = this.extractRefName(schema.$ref);
192
+ const resolvedSchema = this.resolveRef(schema.$ref);
193
+ if (resolvedSchema) {
194
+ return {
195
+ typeName: (0, naming_1.toPascalCase)(refName),
196
+ typeDefinition: this.schemaToTypeScript(resolvedSchema),
197
+ };
198
+ }
199
+ return {
200
+ typeName: (0, naming_1.toPascalCase)(refName),
201
+ typeDefinition: (0, naming_1.toPascalCase)(refName),
202
+ };
203
+ }
204
+ // Handle array
205
+ if (schema.type === 'array' && schema.items) {
206
+ const itemsSchema = this.parseSchema(schema.items, `${defaultName}Item`);
207
+ return {
208
+ typeName: `${itemsSchema.typeName}[]`,
209
+ typeDefinition: `${itemsSchema.typeDefinition}[]`,
210
+ isArray: true,
211
+ };
212
+ }
213
+ // Handle enum
214
+ if (schema.enum) {
215
+ return {
216
+ typeName: defaultName,
217
+ typeDefinition: schema.enum.map((e) => (typeof e === 'string' ? `'${e}'` : e)).join(' | '),
218
+ isEnum: true,
219
+ enumValues: schema.enum,
220
+ };
221
+ }
222
+ // Handle allOf, oneOf, anyOf
223
+ if (schema.allOf) {
224
+ const types = schema.allOf.map((s, i) => this.parseSchema(s, `${defaultName}AllOf${i}`));
225
+ return {
226
+ typeName: defaultName,
227
+ typeDefinition: types.map((t) => t.typeDefinition).join(' & '),
228
+ };
229
+ }
230
+ if (schema.oneOf || schema.anyOf) {
231
+ const schemas = schema.oneOf || schema.anyOf || [];
232
+ const types = schemas.map((s, i) => this.parseSchema(s, `${defaultName}Union${i}`));
233
+ return {
234
+ typeName: defaultName,
235
+ typeDefinition: types.map((t) => t.typeDefinition).join(' | '),
236
+ };
237
+ }
238
+ // Handle object
239
+ if (schema.type === 'object' || schema.properties) {
240
+ return {
241
+ typeName: defaultName,
242
+ typeDefinition: this.objectSchemaToTypeScript(schema),
243
+ properties: schema.properties
244
+ ? Object.fromEntries(Object.entries(schema.properties).map(([key, value]) => [
245
+ key,
246
+ this.parseSchema(value, key),
247
+ ]))
248
+ : undefined,
249
+ required: schema.required,
250
+ };
251
+ }
252
+ // Handle primitive types
253
+ return {
254
+ typeName: defaultName,
255
+ typeDefinition: this.schemaToTypeScript(schema),
256
+ };
257
+ }
258
+ /**
259
+ * Convert schema to TypeScript type string
260
+ */
261
+ schemaToTypeScript(schema) {
262
+ // Handle $ref
263
+ if (schema.$ref) {
264
+ return (0, naming_1.toPascalCase)(this.extractRefName(schema.$ref));
265
+ }
266
+ // Handle array
267
+ if (schema.type === 'array' && schema.items) {
268
+ return `${this.schemaToTypeScript(schema.items)}[]`;
269
+ }
270
+ // Handle enum
271
+ if (schema.enum) {
272
+ return schema.enum.map((e) => (typeof e === 'string' ? `'${e}'` : e)).join(' | ');
273
+ }
274
+ // Handle allOf
275
+ if (schema.allOf) {
276
+ return schema.allOf.map((s) => this.schemaToTypeScript(s)).join(' & ');
277
+ }
278
+ // Handle oneOf/anyOf
279
+ if (schema.oneOf || schema.anyOf) {
280
+ const schemas = schema.oneOf || schema.anyOf || [];
281
+ return schemas.map((s) => this.schemaToTypeScript(s)).join(' | ');
282
+ }
283
+ // Handle object with properties
284
+ if (schema.type === 'object' || schema.properties) {
285
+ return this.objectSchemaToTypeScript(schema);
286
+ }
287
+ // Handle additional properties (dictionary)
288
+ if (schema.additionalProperties) {
289
+ if (typeof schema.additionalProperties === 'boolean') {
290
+ return 'Record<string, unknown>';
291
+ }
292
+ return `Record<string, ${this.schemaToTypeScript(schema.additionalProperties)}>`;
293
+ }
294
+ // Handle primitive types
295
+ const typeMap = {
296
+ string: 'string',
297
+ integer: 'number',
298
+ number: 'number',
299
+ boolean: 'boolean',
300
+ null: 'null',
301
+ file: 'File',
302
+ };
303
+ const baseType = typeMap[schema.type || 'unknown'] || 'unknown';
304
+ // Handle nullable
305
+ if (schema.nullable) {
306
+ return `${baseType} | null`;
307
+ }
308
+ return baseType;
309
+ }
310
+ /**
311
+ * Convert object schema to TypeScript interface body
312
+ */
313
+ objectSchemaToTypeScript(schema) {
314
+ if (!schema.properties) {
315
+ if (schema.additionalProperties) {
316
+ if (typeof schema.additionalProperties === 'boolean') {
317
+ return 'Record<string, unknown>';
318
+ }
319
+ return `Record<string, ${this.schemaToTypeScript(schema.additionalProperties)}>`;
320
+ }
321
+ return 'Record<string, unknown>';
322
+ }
323
+ const required = new Set(schema.required || []);
324
+ const props = [];
325
+ for (const [propName, propSchema] of Object.entries(schema.properties)) {
326
+ const isRequired = required.has(propName);
327
+ const nullable = propSchema.nullable ? ' | null' : '';
328
+ const type = this.schemaToTypeScript(propSchema);
329
+ const safeName = /[^a-zA-Z0-9_$]/.test(propName) ? `'${propName}'` : propName;
330
+ props.push(`${safeName}${isRequired ? '' : '?'}: ${type}${nullable}`);
331
+ }
332
+ return `{\n ${props.join(';\n ')}\n}`;
333
+ }
334
+ /**
335
+ * Get all schemas for type generation
336
+ */
337
+ getAllSchemas() {
338
+ return this.schemas;
339
+ }
340
+ /**
341
+ * Get base URL from document
342
+ */
343
+ getBaseUrl() {
344
+ if (this.isSwagger2()) {
345
+ const doc = this.document;
346
+ const scheme = doc.schemes?.[0] || 'https';
347
+ const host = doc.host || 'api.example.com';
348
+ const basePath = doc.basePath || '';
349
+ return `${scheme}://${host}${basePath}`;
350
+ }
351
+ else {
352
+ const doc = this.document;
353
+ return doc.servers?.[0]?.url || 'https://api.example.com';
354
+ }
355
+ }
356
+ }
357
+ exports.SwaggerParser = SwaggerParser;
358
+ //# sourceMappingURL=SwaggerParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerParser.js","sourceRoot":"","sources":["../../../src/utils/swagger/SwaggerParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * TypeGenerator - Generates TypeScript interfaces from parsed endpoints
3
+ * Handles deduplication and proper naming conventions
4
+ */
5
+ import { SwaggerParser } from './SwaggerParser';
6
+ import { ParsedEndpoint, GeneratedType } from './types';
7
+ export declare class TypeGenerator {
8
+ private parser;
9
+ private generatedTypes;
10
+ private typeDefinitions;
11
+ constructor(parser: SwaggerParser);
12
+ /**
13
+ * Generate all types from endpoints
14
+ */
15
+ generateAllTypes(endpoints: ParsedEndpoint[]): GeneratedType[];
16
+ /**
17
+ * Generate types from top-level schemas
18
+ */
19
+ private generateSchemaTypes;
20
+ /**
21
+ * Generate types for a specific endpoint
22
+ */
23
+ private generateEndpointTypes;
24
+ /**
25
+ * Build request type from endpoint
26
+ */
27
+ private buildRequestType;
28
+ /**
29
+ * Generate type body from schema
30
+ */
31
+ private generateTypeBody;
32
+ /**
33
+ * Add a type with deduplication
34
+ */
35
+ private addType;
36
+ /**
37
+ * Generate TypeScript type declarations as string
38
+ */
39
+ generateTypeDeclarations(): string;
40
+ /**
41
+ * Get type name for an endpoint's request
42
+ */
43
+ getRequestTypeName(endpoint: ParsedEndpoint): string | null;
44
+ /**
45
+ * Get type name for an endpoint's response
46
+ */
47
+ getResponseTypeName(endpoint: ParsedEndpoint): string | null;
48
+ }
49
+ //# sourceMappingURL=TypeGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeGenerator.d.ts","sourceRoot":"","sources":["../../../src/utils/swagger/TypeGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAQtE,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,eAAe,CAAkC;gBAE7C,MAAM,EAAE,aAAa;IAIjC;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,aAAa,EAAE;IAY9D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuD7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,OAAO;IAwBf;;OAEG;IACH,wBAAwB,IAAI,MAAM;IAuBlC;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IAU3D;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;CAW5D"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * TypeGenerator - Generates TypeScript interfaces from parsed endpoints
4
+ * Handles deduplication and proper naming conventions
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TypeGenerator = void 0;
8
+ const naming_1 = require("./utils/naming");
9
+ class TypeGenerator {
10
+ parser;
11
+ generatedTypes = new Map();
12
+ typeDefinitions = new Map();
13
+ constructor(parser) {
14
+ this.parser = parser;
15
+ }
16
+ /**
17
+ * Generate all types from endpoints
18
+ */
19
+ generateAllTypes(endpoints) {
20
+ // First, generate shared schema types
21
+ this.generateSchemaTypes();
22
+ // Then generate endpoint-specific types
23
+ for (const endpoint of endpoints) {
24
+ this.generateEndpointTypes(endpoint);
25
+ }
26
+ return Array.from(this.generatedTypes.values());
27
+ }
28
+ /**
29
+ * Generate types from top-level schemas
30
+ */
31
+ generateSchemaTypes() {
32
+ const schemas = this.parser.getAllSchemas();
33
+ for (const [name, schema] of schemas) {
34
+ // Skip refs, only process actual schema definitions
35
+ if (name.startsWith('#/'))
36
+ continue;
37
+ const typeName = (0, naming_1.toPascalCase)(name);
38
+ if (this.typeDefinitions.has(typeName))
39
+ continue;
40
+ const typeBody = this.generateTypeBody(schema);
41
+ this.addType(typeName, typeBody, `schema:${name}`);
42
+ }
43
+ }
44
+ /**
45
+ * Generate types for a specific endpoint
46
+ */
47
+ generateEndpointTypes(endpoint) {
48
+ const resourceName = (0, naming_1.extractResourceName)(endpoint.path);
49
+ const pathParams = (0, naming_1.extractPathParams)(endpoint.path);
50
+ // Generate request type only if there's a request body
51
+ if (endpoint.requestBody) {
52
+ const requestTypeName = (0, naming_1.generateTypeName)(endpoint.method, resourceName, pathParams, 'Request');
53
+ if (!this.typeDefinitions.has(requestTypeName)) {
54
+ const requestBody = this.buildRequestType(endpoint);
55
+ if (requestBody) {
56
+ this.addType(requestTypeName, requestBody, `endpoint:${endpoint.method}:${endpoint.path}:request`);
57
+ }
58
+ }
59
+ }
60
+ // Generate response type (use the success response, typically 200 or 201)
61
+ const successCodes = ['200', '201', '202', '204'];
62
+ const responseTypeName = (0, naming_1.generateTypeName)(endpoint.method, resourceName, pathParams, 'Response');
63
+ if (!this.typeDefinitions.has(responseTypeName)) {
64
+ let responseBody;
65
+ for (const code of successCodes) {
66
+ if (endpoint.responses[code]?.typeDefinition) {
67
+ responseBody = endpoint.responses[code].typeDefinition;
68
+ break;
69
+ }
70
+ }
71
+ // Default to 'any' if no response schema defined or empty object
72
+ const trimmed = responseBody?.replace(/\s/g, '') || '';
73
+ const finalResponseBody = responseBody && trimmed !== '{}' ? responseBody : 'any';
74
+ this.addType(responseTypeName, finalResponseBody, `endpoint:${endpoint.method}:${endpoint.path}:response`);
75
+ }
76
+ }
77
+ /**
78
+ * Build request type from endpoint
79
+ */
80
+ buildRequestType(endpoint) {
81
+ // Only generate type for request body
82
+ if (endpoint.requestBody) {
83
+ return endpoint.requestBody.typeDefinition;
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Generate type body from schema
89
+ */
90
+ generateTypeBody(schema) {
91
+ return this.parser.schemaToTypeScript(schema);
92
+ }
93
+ /**
94
+ * Add a type with deduplication
95
+ */
96
+ addType(name, definition, source) {
97
+ // Check if we already have this exact definition
98
+ const existingDef = this.typeDefinitions.get(name);
99
+ if (existingDef === definition)
100
+ return;
101
+ // If name exists with different definition, make it unique
102
+ let uniqueName = name;
103
+ let counter = 1;
104
+ while (this.typeDefinitions.has(uniqueName) &&
105
+ this.typeDefinitions.get(uniqueName) !== definition) {
106
+ uniqueName = `${name}${counter}`;
107
+ counter++;
108
+ }
109
+ this.typeDefinitions.set(uniqueName, definition);
110
+ this.generatedTypes.set(uniqueName, {
111
+ name: uniqueName,
112
+ definition,
113
+ source,
114
+ });
115
+ }
116
+ /**
117
+ * Generate TypeScript type declarations as string
118
+ */
119
+ generateTypeDeclarations() {
120
+ const types = [];
121
+ for (const [name, definition] of this.typeDefinitions) {
122
+ // Check if it's an interface (object type) or type alias
123
+ if (definition.startsWith('{') ||
124
+ definition.includes('Record<') ||
125
+ definition.includes('[]')) {
126
+ if (definition.startsWith('{')) {
127
+ types.push(`export interface ${name} ${definition}`);
128
+ }
129
+ else {
130
+ types.push(`export type ${name} = ${definition};`);
131
+ }
132
+ }
133
+ else {
134
+ types.push(`export type ${name} = ${definition};`);
135
+ }
136
+ }
137
+ return types.join('\n\n');
138
+ }
139
+ /**
140
+ * Get type name for an endpoint's request
141
+ */
142
+ getRequestTypeName(endpoint) {
143
+ if (!endpoint.requestBody) {
144
+ return null;
145
+ }
146
+ const resourceName = (0, naming_1.extractResourceName)(endpoint.path);
147
+ const pathParams = (0, naming_1.extractPathParams)(endpoint.path);
148
+ return (0, naming_1.generateTypeName)(endpoint.method, resourceName, pathParams, 'Request');
149
+ }
150
+ /**
151
+ * Get type name for an endpoint's response
152
+ */
153
+ getResponseTypeName(endpoint) {
154
+ const successCodes = ['200', '201', '202', '204'];
155
+ for (const code of successCodes) {
156
+ if (endpoint.responses[code]) {
157
+ const resourceName = (0, naming_1.extractResourceName)(endpoint.path);
158
+ const pathParams = (0, naming_1.extractPathParams)(endpoint.path);
159
+ return (0, naming_1.generateTypeName)(endpoint.method, resourceName, pathParams, 'Response');
160
+ }
161
+ }
162
+ return null;
163
+ }
164
+ }
165
+ exports.TypeGenerator = TypeGenerator;
166
+ //# sourceMappingURL=TypeGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeGenerator.js","sourceRoot":"","sources":["../../../src/utils/swagger/TypeGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Generator module exports
3
+ */
4
+ export { SwaggerParser } from './SwaggerParser';
5
+ export { TypeGenerator } from './TypeGenerator';
6
+ export { ClientGenerator } from './ClientGenerator';
7
+ export { FileWriter } from './FileWriter';
8
+ export { SwaggerGenerator, generateFromFile, generateFromUrl, GeneratorOptions, GeneratorResult, } from './SwaggerGenerator';
9
+ export * from './types';
10
+ export * from './utils/naming';
11
+ export * from './utils/pathUtils';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/swagger/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,GACf,MAAM,oBAAoB,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Generator module exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.generateFromUrl = exports.generateFromFile = exports.SwaggerGenerator = exports.FileWriter = exports.ClientGenerator = exports.TypeGenerator = exports.SwaggerParser = void 0;
21
+ var SwaggerParser_1 = require("./SwaggerParser");
22
+ Object.defineProperty(exports, "SwaggerParser", { enumerable: true, get: function () { return SwaggerParser_1.SwaggerParser; } });
23
+ var TypeGenerator_1 = require("./TypeGenerator");
24
+ Object.defineProperty(exports, "TypeGenerator", { enumerable: true, get: function () { return TypeGenerator_1.TypeGenerator; } });
25
+ var ClientGenerator_1 = require("./ClientGenerator");
26
+ Object.defineProperty(exports, "ClientGenerator", { enumerable: true, get: function () { return ClientGenerator_1.ClientGenerator; } });
27
+ var FileWriter_1 = require("./FileWriter");
28
+ Object.defineProperty(exports, "FileWriter", { enumerable: true, get: function () { return FileWriter_1.FileWriter; } });
29
+ var SwaggerGenerator_1 = require("./SwaggerGenerator");
30
+ Object.defineProperty(exports, "SwaggerGenerator", { enumerable: true, get: function () { return SwaggerGenerator_1.SwaggerGenerator; } });
31
+ Object.defineProperty(exports, "generateFromFile", { enumerable: true, get: function () { return SwaggerGenerator_1.generateFromFile; } });
32
+ Object.defineProperty(exports, "generateFromUrl", { enumerable: true, get: function () { return SwaggerGenerator_1.generateFromUrl; } });
33
+ // Re-export types
34
+ __exportStar(require("./types"), exports);
35
+ // Re-export utilities
36
+ __exportStar(require("./utils/naming"), exports);
37
+ __exportStar(require("./utils/pathUtils"), exports);
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/swagger/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,uDAM4B;AAL3B,oHAAA,gBAAgB,OAAA;AAChB,oHAAA,gBAAgB,OAAA;AAChB,mHAAA,eAAe,OAAA;AAKhB,kBAAkB;AAClB,0CAAwB;AAExB,sBAAsB;AACtB,iDAA+B;AAC/B,oDAAkC"}