@edifice.io/edifice-nestjs-core 1.0.0-develop-pedago.20251210153355 → 1.0.0-develop-pedago.20251218101723

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/README.md CHANGED
@@ -988,6 +988,7 @@ Each tool is available as a binary when you install `@edifice.io/edifice-nestjs-
988
988
  - **edifice-generate-entities**: Generate MikroORM entities from database schema
989
989
  - **edifice-generate-metadata**: Generate application metadata file
990
990
  - **edifice-k6-sync-dto**: Synchronize DTOs for K6 Testing
991
+ - **generate-swagger-pdf**: Generate a PDF from your NestJS API Swagger documentation
991
992
 
992
993
  ---
993
994
 
@@ -1073,6 +1074,40 @@ pnpm edifice-k6-sync-dto
1073
1074
 
1074
1075
  ---
1075
1076
 
1077
+ #### generate-swagger-pdf
1078
+
1079
+ **Purpose:**
1080
+ Generate a PDF from the Swagger (OpenAPI) documentation exposed by your NestJS server.
1081
+
1082
+ **Usage:**
1083
+
1084
+ ```bash
1085
+ npx generate-swagger-pdf --host <host> --port <port>
1086
+ ```
1087
+
1088
+ **Options:**
1089
+
1090
+ - `--host`, `-h`: Swagger server host (default: `127.0.0.1`)
1091
+ - `--port`, `-p`: Swagger server port (default: `3002`)
1092
+
1093
+ The PDF will be generated in the `documentation/api-docs.pdf` folder of your project.
1094
+
1095
+ **Example:**
1096
+
1097
+ ```bash
1098
+ npx generate-swagger-pdf --host 127.0.0.1 --port 4000
1099
+ ```
1100
+
1101
+ This package provides several CLI tools to help you automate common backend tasks.
1102
+ Each tool is available as a binary when you install `@edifice.io/edifice-nestjs-core`.
1103
+
1104
+ - **edifice-generate-entities**: Generate MikroORM entities from database schema
1105
+ - **edifice-generate-metadata**: Generate application metadata file
1106
+ - **edifice-k6-sync-dto**: Synchronize DTOs for K6 Testing
1107
+ - **generate-swagger-pdf**: Generate a PDF from your NestJS API Swagger documentation
1108
+
1109
+ ---
1110
+
1076
1111
  **Note:**
1077
1112
  All CLI tools are available after installing the package.
1078
1113
  You can run them with `pnpm` or `npx` from your project root.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,581 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const ts = __importStar(require("typescript"));
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const PRIMITIVE_TYPES = new Set([
41
+ 'string',
42
+ 'number',
43
+ 'boolean',
44
+ 'Date',
45
+ 'any',
46
+ 'void',
47
+ 'object',
48
+ 'never',
49
+ 'unknown',
50
+ 'null',
51
+ 'undefined',
52
+ ]);
53
+ function parseControllers(filePath) {
54
+ const program = ts.createProgram([filePath], {
55
+ target: ts.ScriptTarget.ES2020,
56
+ module: ts.ModuleKind.CommonJS,
57
+ });
58
+ const sourceFile = program.getSourceFile(filePath);
59
+ if (!sourceFile) {
60
+ throw new Error(`Could not load source file: ${filePath}`);
61
+ }
62
+ const controllers = [];
63
+ ts.forEachChild(sourceFile, (node) => {
64
+ if (ts.isClassDeclaration(node) && node.name) {
65
+ const controllerDecorator = getDecorator(node, 'Controller');
66
+ if (!controllerDecorator)
67
+ return;
68
+ const basePath = getDecoratorArgument(controllerDecorator) || '';
69
+ const apiTagDecorator = getDecorator(node, 'ApiTags');
70
+ const tag = apiTagDecorator
71
+ ? getDecoratorArgument(apiTagDecorator)
72
+ : undefined;
73
+ const controller = {
74
+ name: node.name.text,
75
+ basePath,
76
+ methods: [],
77
+ jsdoc: getJsDoc(node),
78
+ tag,
79
+ };
80
+ node.members.forEach((member) => {
81
+ if (ts.isMethodDeclaration(member) && member.name) {
82
+ const methodMetadata = parseMethod(member);
83
+ if (methodMetadata) {
84
+ controller.methods.push(methodMetadata);
85
+ }
86
+ }
87
+ });
88
+ controllers.push(controller);
89
+ }
90
+ });
91
+ return controllers;
92
+ }
93
+ function parseMethod(method) {
94
+ const httpMethods = ['Get', 'Post', 'Put', 'Patch', 'Delete'];
95
+ let httpMethod = null;
96
+ let routePath = '';
97
+ for (const httpMethodName of httpMethods) {
98
+ const decorator = getDecorator(method, httpMethodName);
99
+ if (decorator) {
100
+ httpMethod = httpMethodName.toUpperCase();
101
+ routePath = getDecoratorArgument(decorator) || '';
102
+ break;
103
+ }
104
+ }
105
+ if (!httpMethod)
106
+ return null;
107
+ const methodName = method.name.text;
108
+ const params = [];
109
+ const reservedNames = new Set(['options', 'queryParams']);
110
+ method.parameters.forEach((param) => {
111
+ let paramName = param.name.text;
112
+ if (getDecorator(param, 'Req'))
113
+ return;
114
+ const paramDecorator = getDecorator(param, 'Param');
115
+ const queryDecorator = getDecorator(param, 'Query');
116
+ const bodyDecorator = getDecorator(param, 'Body');
117
+ let paramType = getTypeName(param.type);
118
+ if (paramDecorator) {
119
+ const expression = paramDecorator.expression;
120
+ if (ts.isCallExpression(expression) && expression.arguments.length > 1) {
121
+ const pipeArg = expression.arguments[1];
122
+ let pipeName = '';
123
+ if (ts.isIdentifier(pipeArg)) {
124
+ pipeName = pipeArg.text;
125
+ }
126
+ else if (ts.isNewExpression(pipeArg) &&
127
+ ts.isIdentifier(pipeArg.expression)) {
128
+ pipeName = pipeArg.expression.text;
129
+ }
130
+ const pipeTypeMap = {
131
+ ParseIntPipe: 'number',
132
+ ParseBoolPipe: 'boolean',
133
+ ParseFloatPipe: 'number',
134
+ ParseUUIDPipe: 'string',
135
+ ParseEnumPipe: 'string',
136
+ };
137
+ for (const [pipe, type] of Object.entries(pipeTypeMap)) {
138
+ if (pipeName.includes(pipe)) {
139
+ paramType = type;
140
+ break;
141
+ }
142
+ }
143
+ }
144
+ }
145
+ if (bodyDecorator) {
146
+ const bodyFieldArg = getDecoratorArgument(bodyDecorator);
147
+ if (bodyFieldArg) {
148
+ paramName = bodyFieldArg;
149
+ }
150
+ }
151
+ if (queryDecorator) {
152
+ const queryFieldArg = getDecoratorArgument(queryDecorator);
153
+ if (queryFieldArg) {
154
+ paramName = queryFieldArg;
155
+ }
156
+ }
157
+ if (reservedNames.has(paramName)) {
158
+ paramName = `_${paramName}`;
159
+ }
160
+ if (paramDecorator) {
161
+ params.push({
162
+ name: paramName,
163
+ type: paramType,
164
+ decorator: 'Param',
165
+ isOptional: !!param.questionToken,
166
+ });
167
+ }
168
+ else if (queryDecorator) {
169
+ params.push({
170
+ name: paramName,
171
+ type: paramType,
172
+ decorator: 'Query',
173
+ isOptional: !!param.questionToken,
174
+ });
175
+ }
176
+ else if (bodyDecorator) {
177
+ params.push({
178
+ name: paramName,
179
+ type: paramType,
180
+ decorator: 'Body',
181
+ isOptional: !!param.questionToken,
182
+ });
183
+ }
184
+ });
185
+ const returnType = getReturnType(method);
186
+ const apiOperationDecorator = getDecorator(method, 'ApiOperation');
187
+ const operationSummary = apiOperationDecorator
188
+ ? getDecoratorObjectProperty(apiOperationDecorator, 'summary')
189
+ : undefined;
190
+ return {
191
+ name: methodName,
192
+ httpMethod,
193
+ path: routePath,
194
+ params,
195
+ returnType,
196
+ jsdoc: getJsDoc(method),
197
+ operationSummary,
198
+ };
199
+ }
200
+ function getDecorator(node, decoratorName) {
201
+ const decorators = ts.getDecorators(node);
202
+ if (!decorators)
203
+ return undefined;
204
+ return decorators.find((decorator) => {
205
+ try {
206
+ const expression = decorator.expression;
207
+ if (ts.isCallExpression(expression)) {
208
+ const callExpression = expression.expression;
209
+ if (ts.isIdentifier(callExpression)) {
210
+ return callExpression.text === decoratorName;
211
+ }
212
+ if (ts.isPropertyAccessExpression(callExpression)) {
213
+ const name = callExpression.name;
214
+ if (ts.isIdentifier(name)) {
215
+ return name.text === decoratorName;
216
+ }
217
+ }
218
+ return false;
219
+ }
220
+ if (ts.isIdentifier(expression)) {
221
+ return expression.text === decoratorName;
222
+ }
223
+ if (ts.isPropertyAccessExpression(expression)) {
224
+ const name = expression.name;
225
+ if (ts.isIdentifier(name)) {
226
+ return name.text === decoratorName;
227
+ }
228
+ }
229
+ return false;
230
+ }
231
+ catch (_) {
232
+ return false;
233
+ }
234
+ });
235
+ }
236
+ function getDecoratorArgument(decorator) {
237
+ const expression = decorator.expression;
238
+ if (ts.isCallExpression(expression) && expression.arguments.length > 0) {
239
+ const arg = expression.arguments[0];
240
+ if (ts.isStringLiteral(arg)) {
241
+ return arg.text;
242
+ }
243
+ }
244
+ return undefined;
245
+ }
246
+ function getDecoratorObjectProperty(decorator, propertyName) {
247
+ const expression = decorator.expression;
248
+ if (ts.isCallExpression(expression) && expression.arguments.length > 0) {
249
+ const arg = expression.arguments[0];
250
+ if (ts.isObjectLiteralExpression(arg)) {
251
+ const property = arg.properties.find((prop) => {
252
+ if (!ts.isPropertyAssignment(prop))
253
+ return false;
254
+ let propName;
255
+ if (ts.isIdentifier(prop.name)) {
256
+ propName = prop.name.text;
257
+ }
258
+ else if (ts.isStringLiteral(prop.name)) {
259
+ propName = prop.name.text;
260
+ }
261
+ return propName === propertyName;
262
+ });
263
+ if (property && ts.isPropertyAssignment(property)) {
264
+ if (ts.isStringLiteral(property.initializer)) {
265
+ return property.initializer.text;
266
+ }
267
+ }
268
+ }
269
+ }
270
+ return undefined;
271
+ }
272
+ function getReturnType(method) {
273
+ if (!method.type)
274
+ return 'void';
275
+ try {
276
+ const typeNode = method.type;
277
+ if (ts.isTypeReferenceNode(typeNode)) {
278
+ const typeName = ts.isIdentifier(typeNode.typeName)
279
+ ? typeNode.typeName.text
280
+ : 'any';
281
+ if (typeName === 'Promise' &&
282
+ typeNode.typeArguments &&
283
+ typeNode.typeArguments.length > 0) {
284
+ const innerType = getTypeName(typeNode.typeArguments[0]);
285
+ return innerType === 'void' ? 'void' : innerType;
286
+ }
287
+ return typeName;
288
+ }
289
+ if (ts.isIdentifier(typeNode)) {
290
+ return typeNode.text;
291
+ }
292
+ if (typeNode.kind === ts.SyntaxKind.VoidKeyword) {
293
+ return 'void';
294
+ }
295
+ return 'void';
296
+ }
297
+ catch (_) {
298
+ return 'void';
299
+ }
300
+ }
301
+ function getTypeName(typeNode) {
302
+ if (!typeNode)
303
+ return 'any';
304
+ try {
305
+ if (typeNode.kind === ts.SyntaxKind.VoidKeyword) {
306
+ return 'void';
307
+ }
308
+ if (typeNode.kind === ts.SyntaxKind.StringKeyword) {
309
+ return 'string';
310
+ }
311
+ if (typeNode.kind === ts.SyntaxKind.NumberKeyword) {
312
+ return 'number';
313
+ }
314
+ if (typeNode.kind === ts.SyntaxKind.BooleanKeyword) {
315
+ return 'boolean';
316
+ }
317
+ if (ts.isIdentifier(typeNode)) {
318
+ return typeNode.text;
319
+ }
320
+ if (ts.isArrayTypeNode(typeNode)) {
321
+ const elementType = getTypeName(typeNode.elementType);
322
+ return `${elementType}[]`;
323
+ }
324
+ if (ts.isTypeReferenceNode(typeNode)) {
325
+ const typeName = ts.isIdentifier(typeNode.typeName)
326
+ ? typeNode.typeName.text
327
+ : typeNode.typeName.getText?.();
328
+ if (typeNode.typeArguments && typeNode.typeArguments.length > 0) {
329
+ const args = typeNode.typeArguments
330
+ .map((arg) => getTypeName(arg))
331
+ .join(', ');
332
+ return `${typeName}<${args}>`;
333
+ }
334
+ return typeName || 'any';
335
+ }
336
+ if (ts.isUnionTypeNode(typeNode)) {
337
+ return typeNode.types.map((t) => getTypeName(t)).join(' | ');
338
+ }
339
+ if (ts.isTypeLiteralNode(typeNode)) {
340
+ const members = typeNode.members
341
+ .map((member) => {
342
+ if (ts.isPropertySignature(member) && member.name && member.type) {
343
+ const propName = ts.isIdentifier(member.name)
344
+ ? member.name.text
345
+ : member.name.getText?.() || 'unknown';
346
+ const propType = getTypeName(member.type);
347
+ const optional = member.questionToken ? '?' : '';
348
+ return `${propName}${optional}: ${propType}`;
349
+ }
350
+ return null;
351
+ })
352
+ .filter(Boolean)
353
+ .join('; ');
354
+ return `{ ${members} }`;
355
+ }
356
+ if (typeNode.getText && typeNode.getSourceFile?.()) {
357
+ return typeNode.getText();
358
+ }
359
+ return 'any';
360
+ }
361
+ catch (_) {
362
+ return 'any';
363
+ }
364
+ }
365
+ function getJsDoc(node) {
366
+ const jsDocTags = ts.getJSDocTags(node);
367
+ if (jsDocTags.length > 0) {
368
+ return jsDocTags.map((tag) => tag.comment).join('\n');
369
+ }
370
+ return undefined;
371
+ }
372
+ function generateClientClass(controller) {
373
+ const clientName = controller.name.replace('Controller', 'Client');
374
+ const methods = controller.methods.map((method) => generateClientMethod(controller.basePath, method));
375
+ const dtoImports = new Set();
376
+ const shouldImportType = (type) => {
377
+ if (PRIMITIVE_TYPES.has(type))
378
+ return false;
379
+ if (type.startsWith('{'))
380
+ return false;
381
+ if (type.includes('{') && type.includes('}'))
382
+ return false;
383
+ return true;
384
+ };
385
+ controller.methods.forEach((method) => {
386
+ method.params.forEach((param) => {
387
+ const baseType = param.type.replace('[]', '');
388
+ if (shouldImportType(baseType)) {
389
+ dtoImports.add(baseType);
390
+ }
391
+ });
392
+ const baseReturnType = method.returnType.replace('[]', '');
393
+ if (shouldImportType(baseReturnType)) {
394
+ dtoImports.add(baseReturnType);
395
+ }
396
+ });
397
+ const imports = Array.from(dtoImports).join(', ');
398
+ const importsSection = imports
399
+ ? `import {
400
+ ${imports}
401
+ } from "../../../dtos";
402
+ `
403
+ : '';
404
+ return `import {
405
+ BaseApiClient,
406
+ ApiClientOptions,
407
+ RequestOptions,
408
+ } from "@edifice.io/rest-client-base";
409
+ ${importsSection}
410
+ /**
411
+ * Client for interacting with the ${controller.tag || controller.name} API
412
+ * ${controller.jsdoc || ''}
413
+ *
414
+ * @example
415
+ * // Basic usage with fetch (default)
416
+ * const client = new ${clientName}();
417
+ *
418
+ * @example
419
+ * // With Edifice HttpService
420
+ * import { odeServices } from '@edifice.io/client';
421
+ *
422
+ * const httpService = odeServices.http();
423
+ * const client = new ${clientName}({
424
+ * httpService: httpService
425
+ * });
426
+ */
427
+ export class ${clientName} extends BaseApiClient {
428
+ /**
429
+ * Creates a new ${clientName}
430
+ * @param options Client configuration options
431
+ */
432
+ constructor(options: ApiClientOptions = {}) {
433
+ super(options);
434
+ }
435
+
436
+ ${methods.join('\n\n')}
437
+ }
438
+ `;
439
+ }
440
+ function generateClientMethod(basePath, method) {
441
+ const methodName = toCamelCase(method.name);
442
+ const params = [];
443
+ const queryParams = [];
444
+ const pathParams = new Map();
445
+ let bodyParam = null;
446
+ method.params.forEach((param) => {
447
+ const paramDeclaration = `${param.name}${param.isOptional ? '?' : ''}: ${param.type}`;
448
+ if (param.decorator === 'Param') {
449
+ params.push(paramDeclaration);
450
+ pathParams.set(param.name, param.type);
451
+ }
452
+ else if (param.decorator === 'Query') {
453
+ params.push(paramDeclaration);
454
+ queryParams.push(param.name);
455
+ }
456
+ else if (param.decorator === 'Body') {
457
+ params.push(paramDeclaration);
458
+ bodyParam = param.name;
459
+ }
460
+ });
461
+ params.push('options?: RequestOptions');
462
+ let url = basePath;
463
+ if (method.path) {
464
+ if (!basePath.endsWith('/') && !method.path.startsWith('/')) {
465
+ url += '/';
466
+ }
467
+ url += method.path;
468
+ }
469
+ pathParams.forEach((_, paramName) => {
470
+ url = url.replace(`:${paramName}`, `\${${paramName}}`);
471
+ });
472
+ const queryParamsCode = queryParams.length > 0
473
+ ? `
474
+ const queryParams = new URLSearchParams();
475
+ ${queryParams
476
+ .map((param) => {
477
+ const paramMeta = method.params.find((p) => p.name === param);
478
+ if (paramMeta?.isOptional) {
479
+ return ` if (${param}) queryParams.append("${param}", String(${param}));`;
480
+ }
481
+ return ` queryParams.append("${param}", String(${param}));`;
482
+ })
483
+ .join('\n')}
484
+ `
485
+ : '';
486
+ const queryArg = queryParams.length > 0 ? 'queryParams' : 'undefined';
487
+ const httpMethodLower = method.httpMethod.toLowerCase();
488
+ const returnType = method.returnType === 'void'
489
+ ? 'Promise<void>'
490
+ : `Promise<${method.returnType}>`;
491
+ const jsdoc = method.operationSummary || method.jsdoc || '';
492
+ let methodCall;
493
+ if (httpMethodLower === 'get' || httpMethodLower === 'delete') {
494
+ const genericType = method.returnType === 'void' ? '' : `<${method.returnType}>`;
495
+ methodCall = `this.${httpMethodLower}${genericType}(
496
+ \`${url}\`,
497
+ ${queryArg},
498
+ options
499
+ )`;
500
+ }
501
+ else {
502
+ const bodyArg = bodyParam || 'undefined';
503
+ const genericType = method.returnType === 'void' ? '' : `<${method.returnType}>`;
504
+ methodCall = `this.${httpMethodLower}${genericType}(
505
+ \`${url}\`,
506
+ ${bodyArg},
507
+ ${queryArg},
508
+ options
509
+ )`;
510
+ }
511
+ return ` /**
512
+ * ${jsdoc}
513
+ ${method.params.map((p) => ` * @param ${p.name} ${p.type}`).join('\n')}
514
+ * @param options Additional request options
515
+ * @returns ${method.returnType === 'void' ? 'void' : method.returnType}
516
+ */
517
+ async ${methodName}(
518
+ ${params.join(',\n ')}
519
+ ): ${returnType} {${queryParamsCode}
520
+ return ${methodCall};
521
+ }`;
522
+ }
523
+ function toCamelCase(str) {
524
+ return str.charAt(0).toLowerCase() + str.slice(1);
525
+ }
526
+ function generateIndexFile(clientOutputDir, controllers) {
527
+ const clientNames = controllers.map((controller) => controller.name.replace('Controller', 'Client'));
528
+ const imports = clientNames
529
+ .map((name) => {
530
+ const fileName = toCamelCase(name.replace('Client', ''));
531
+ return `export { ${name} } from "./${fileName}.client";`;
532
+ })
533
+ .join('\n');
534
+ const indexFilePath = path.join(clientOutputDir, 'clients', 'index.ts');
535
+ const indexContent = `// This file is auto-generated by generate-rest-clients.ts
536
+ // Do not edit manually
537
+
538
+ ${imports}
539
+ `;
540
+ fs.writeFileSync(indexFilePath, indexContent, 'utf-8');
541
+ console.log(`✅ Generated ${indexFilePath}`);
542
+ }
543
+ const args = process.argv.slice(2);
544
+ if (args.length < 2) {
545
+ console.warn('Usage: generate-rest-clients <backend-src-dir> <client-output-dir>');
546
+ }
547
+ const backendSrcDir = path.resolve(args[0] || './backend/src');
548
+ const clientOutputDir = path.resolve(args[1] || './client/rest/src/clients/generated');
549
+ const controllerFiles = [];
550
+ function findControllerFiles(dir) {
551
+ const files = fs.readdirSync(dir);
552
+ files.forEach((file) => {
553
+ const fullPath = path.join(dir, file);
554
+ if (fs.statSync(fullPath).isDirectory()) {
555
+ findControllerFiles(fullPath);
556
+ }
557
+ else if (file.endsWith('.controller.ts')) {
558
+ controllerFiles.push(fullPath);
559
+ }
560
+ });
561
+ }
562
+ findControllerFiles(backendSrcDir);
563
+ console.log(`Found ${controllerFiles.length} controller files`);
564
+ const allControllers = [];
565
+ controllerFiles.forEach((controllerFile) => {
566
+ console.log(`Processing ${controllerFile}...`);
567
+ const controllers = parseControllers(controllerFile);
568
+ allControllers.push(...controllers);
569
+ controllers.forEach((controller) => {
570
+ const clientName = controller.name.replace('Controller', 'Client');
571
+ const clientFileName = `${toCamelCase(clientName.replace('Client', ''))}.client.ts`;
572
+ const clientFilePath = path.join(clientOutputDir, 'clients', clientFileName);
573
+ const clientCode = generateClientClass(controller);
574
+ fs.mkdirSync(path.dirname(clientFilePath), { recursive: true });
575
+ fs.writeFileSync(clientFilePath, clientCode, 'utf-8');
576
+ console.log(`✅ Generated ${clientFilePath}`);
577
+ });
578
+ });
579
+ generateIndexFile(clientOutputDir, allControllers);
580
+ console.log('✅ Client generation complete!');
581
+ //# sourceMappingURL=generate-rest-clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-rest-clients.js","sourceRoot":"","sources":["../../src/bin/generate-rest-clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};