fragment-ts 1.0.34 → 1.0.35

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 (72) hide show
  1. package/API.md +248 -38
  2. package/DOCS.md +327 -63
  3. package/NewCLIGENERATECOMMANDS.txt +5 -0
  4. package/README.md +168 -3
  5. package/USAGE.md +395 -2
  6. package/dist/cli/commands/build.command.d.ts.map +1 -1
  7. package/dist/cli/commands/build.command.js +20 -8
  8. package/dist/cli/commands/build.command.js.map +1 -1
  9. package/dist/cli/commands/diagnostics.command.d.ts +1 -2
  10. package/dist/cli/commands/diagnostics.command.d.ts.map +1 -1
  11. package/dist/cli/commands/diagnostics.command.js +37 -23
  12. package/dist/cli/commands/diagnostics.command.js.map +1 -1
  13. package/dist/cli/commands/generate.command.d.ts +5 -1
  14. package/dist/cli/commands/generate.command.d.ts.map +1 -1
  15. package/dist/cli/commands/generate.command.js +171 -39
  16. package/dist/cli/commands/generate.command.js.map +1 -1
  17. package/dist/cli/commands/init.command.d.ts.map +1 -1
  18. package/dist/cli/commands/init.command.js +98 -28
  19. package/dist/cli/commands/init.command.js.map +1 -1
  20. package/dist/cli/commands/migrate.command.d.ts +10 -17
  21. package/dist/cli/commands/migrate.command.d.ts.map +1 -1
  22. package/dist/cli/commands/migrate.command.js +133 -170
  23. package/dist/cli/commands/migrate.command.js.map +1 -1
  24. package/dist/cli/commands/serve.command.d.ts.map +1 -1
  25. package/dist/cli/commands/serve.command.js +9 -4
  26. package/dist/cli/commands/serve.command.js.map +1 -1
  27. package/dist/cli/commands/test.command.d.ts.map +1 -1
  28. package/dist/cli/commands/test.command.js +24 -6
  29. package/dist/cli/commands/test.command.js.map +1 -1
  30. package/dist/core/scanner/component-scanner.d.ts +12 -0
  31. package/dist/core/scanner/component-scanner.d.ts.map +1 -1
  32. package/dist/core/scanner/component-scanner.js +72 -14
  33. package/dist/core/scanner/component-scanner.js.map +1 -1
  34. package/dist/shared/config.utils.d.ts +58 -0
  35. package/dist/shared/config.utils.d.ts.map +1 -0
  36. package/dist/shared/config.utils.js +137 -0
  37. package/dist/shared/config.utils.js.map +1 -0
  38. package/dist/shared/env.utils.d.ts +27 -0
  39. package/dist/shared/env.utils.d.ts.map +1 -0
  40. package/dist/shared/env.utils.js +68 -0
  41. package/dist/shared/env.utils.js.map +1 -0
  42. package/dist/shared/tsconfig.utils.d.ts +122 -0
  43. package/dist/shared/tsconfig.utils.d.ts.map +1 -0
  44. package/dist/shared/tsconfig.utils.js +305 -0
  45. package/dist/shared/tsconfig.utils.js.map +1 -0
  46. package/dist/testing/runner.d.ts +9 -1
  47. package/dist/testing/runner.d.ts.map +1 -1
  48. package/dist/testing/runner.js +50 -10
  49. package/dist/testing/runner.js.map +1 -1
  50. package/dist/typeorm/typeorm-module.d.ts +1 -0
  51. package/dist/typeorm/typeorm-module.d.ts.map +1 -1
  52. package/dist/typeorm/typeorm-module.js +193 -85
  53. package/dist/typeorm/typeorm-module.js.map +1 -1
  54. package/dist/web/application.d.ts +0 -1
  55. package/dist/web/application.d.ts.map +1 -1
  56. package/dist/web/application.js +4 -26
  57. package/dist/web/application.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/cli/commands/build.command.ts +24 -9
  60. package/src/cli/commands/diagnostics.command.ts +42 -30
  61. package/src/cli/commands/generate.command.ts +212 -52
  62. package/src/cli/commands/init.command.ts +100 -29
  63. package/src/cli/commands/migrate.command.ts +145 -198
  64. package/src/cli/commands/serve.command.ts +181 -170
  65. package/src/cli/commands/test.command.ts +25 -11
  66. package/src/core/scanner/component-scanner.ts +100 -18
  67. package/src/shared/config.utils.ts +148 -0
  68. package/src/shared/env.utils.ts +72 -0
  69. package/src/shared/tsconfig.utils.ts +360 -0
  70. package/src/testing/runner.ts +62 -14
  71. package/src/typeorm/typeorm-module.ts +209 -86
  72. package/src/web/application.ts +4 -33
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/web/application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/web/application.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fragment-ts",
3
- "version": "1.0.34",
3
+ "version": "1.0.35",
4
4
  "description": "Spring Boot-style framework for TypeScript with Express and TypeORM",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -4,6 +4,7 @@ import * as path from "path";
4
4
  import * as fs from "fs";
5
5
  import chalk from "chalk";
6
6
  import ora from "ora";
7
+ import { TsConfigUtils } from "../../shared/tsconfig.utils";
7
8
 
8
9
  export class BuildCommand {
9
10
  static register(program: Command): void {
@@ -31,9 +32,8 @@ export class BuildCommand {
31
32
  process.exit(1);
32
33
  }
33
34
 
34
- // Check if tsconfig.json exists
35
- const tsconfigPath = path.join(process.cwd(), "tsconfig.json");
36
- if (!fs.existsSync(tsconfigPath)) {
35
+ // Check if tsconfig.json exists using utility
36
+ if (!TsConfigUtils.exists()) {
37
37
  spinner.fail("tsconfig.json not found");
38
38
  console.log(
39
39
  chalk.yellow("\nCreate a tsconfig.json file in your project root"),
@@ -41,6 +41,21 @@ export class BuildCommand {
41
41
  process.exit(1);
42
42
  }
43
43
 
44
+ // Validate required compiler options for Fragment
45
+ if (!TsConfigUtils.hasDecoratorSupport()) {
46
+ spinner.fail("Required TypeScript compiler options not enabled");
47
+ console.log(chalk.yellow("\nYour tsconfig.json must include:"));
48
+ console.log(chalk.cyan(' "compilerOptions": {'));
49
+ console.log(chalk.cyan(' "experimentalDecorators": true,'));
50
+ console.log(chalk.cyan(' "emitDecoratorMetadata": true'));
51
+ console.log(chalk.cyan(" }"));
52
+ process.exit(1);
53
+ }
54
+
55
+ // Get output directory from tsconfig instead of hardcoding
56
+ const outDir = TsConfigUtils.getOutDir();
57
+ const relativeOutDir = path.relative(process.cwd(), outDir);
58
+
44
59
  // Run TypeScript compiler
45
60
  spinner.text = "Compiling TypeScript...";
46
61
  execSync(`"${tscPath}"`, {
@@ -52,10 +67,10 @@ export class BuildCommand {
52
67
 
53
68
  if (options.analyze) {
54
69
  console.log(chalk.blue("\n📊 Bundle Analysis:"));
55
- this.analyzeBuild();
70
+ this.analyzeBuild(outDir); // Pass the actual output directory
56
71
  }
57
72
 
58
- console.log(chalk.green("\n✨ Build output: dist/"));
73
+ console.log(chalk.green(`\n✨ Build output: ${relativeOutDir}/`));
59
74
  } catch (error: any) {
60
75
  spinner.fail("Build failed");
61
76
  console.error(chalk.red(error.message || error));
@@ -94,11 +109,11 @@ export class BuildCommand {
94
109
  return null;
95
110
  }
96
111
 
97
- private static analyzeBuild(): void {
98
- const distPath = path.join(process.cwd(), "dist");
99
-
112
+ private static analyzeBuild(distPath: string): void {
100
113
  if (!fs.existsSync(distPath)) {
101
- console.log(chalk.yellow(" No dist/ directory found"));
114
+ console.log(
115
+ chalk.yellow(` No ${path.basename(distPath)}/ directory found`),
116
+ );
102
117
  return;
103
118
  }
104
119
 
@@ -3,6 +3,8 @@ import chalk from "chalk";
3
3
  import * as fs from "fs";
4
4
  import * as path from "path";
5
5
  import { spawn } from "child_process";
6
+ import { ConfigUtils } from "../../shared/config.utils";
7
+ import { EnvUtils } from "../../shared/env.utils";
6
8
 
7
9
  export class DiagnosticsCommand {
8
10
  static register(program: Command): void {
@@ -129,7 +131,7 @@ export class DiagnosticsCommand {
129
131
  return new Promise((resolve) => {
130
132
  const cwd = process.cwd();
131
133
 
132
- // Detect available directories
134
+ // Use EnvUtils for consistent environment detection
133
135
  const hasSource = fs.existsSync(path.join(cwd, "src"));
134
136
  const hasDist = fs.existsSync(path.join(cwd, "dist"));
135
137
 
@@ -161,13 +163,20 @@ export class DiagnosticsCommand {
161
163
  useTypeScript = false;
162
164
  mode = "production (dist/)";
163
165
  } else {
164
- // Auto-detect - DEFAULT TO SOURCE
165
- if (hasSource) {
166
- // Prefer source (development)
166
+ // Auto-detect using same logic as EnvUtils
167
+ const isDevMode = EnvUtils.isDevelopmentMode();
168
+ if (isDevMode && hasSource) {
169
+ useTypeScript = true;
170
+ mode = "auto-detected development (src/)";
171
+ } else if (!isDevMode && hasDist) {
172
+ useTypeScript = false;
173
+ mode = "auto-detected production (dist/)";
174
+ } else if (hasSource) {
175
+ // Fallback to source if available
167
176
  useTypeScript = true;
168
177
  mode = "auto-detected development (src/)";
169
178
  } else if (hasDist) {
170
- // Fall back to compiled
179
+ // Fallback to dist if available
171
180
  useTypeScript = false;
172
181
  mode = "auto-detected production (dist/)";
173
182
  } else {
@@ -369,30 +378,12 @@ diagnose();
369
378
  console.log(` Node: ${process.version}`);
370
379
  console.log(` Platform: ${process.platform}`);
371
380
  console.log(` Architecture: ${process.arch}`);
372
- console.log(` Environment: ${process.env.NODE_ENV || "development"}`);
381
+ console.log(` Environment: ${EnvUtils.getEnvironmentMode()}`);
373
382
  console.log(` Source: ${hasSource ? "✓ src/" : "✗ src/"}`);
374
383
  console.log(` Built: ${hasDist ? "✓ dist/" : "✗ dist/"}`);
375
384
  console.log("");
376
385
  }
377
386
 
378
- private static interpolateEnvVars(value: any): any {
379
- if (typeof value === "string") {
380
- return value.replace(
381
- /\$?\{([^}]+)\}/g,
382
- (_, varName) => process.env[varName] ?? "",
383
- );
384
- }
385
- if (Array.isArray(value))
386
- return value.map((v) => this.interpolateEnvVars(v));
387
- if (value && typeof value === "object") {
388
- const result: any = {};
389
- for (const key in value)
390
- result[key] = this.interpolateEnvVars(value[key]);
391
- return result;
392
- }
393
- return value;
394
- }
395
-
396
387
  private static showConfig(): void {
397
388
  console.log(chalk.blue("\n⚙️ Configuration:\n"));
398
389
 
@@ -400,11 +391,32 @@ diagnose();
400
391
 
401
392
  if (fs.existsSync(configPath)) {
402
393
  try {
403
- const configRaw = JSON.parse(fs.readFileSync(configPath, "utf-8"));
404
- const config = this.interpolateEnvVars(configRaw);
405
- console.log(
406
- " " + JSON.stringify(config, null, 2).replace(/\n/g, "\n "),
407
- );
394
+ const configRaw = ConfigUtils.getFullConfig();
395
+ const mode = EnvUtils.getEnvironmentMode();
396
+
397
+ console.log(chalk.gray(` Detected mode: ${mode}`));
398
+
399
+ // Show the relevant section
400
+ const dbConfig = ConfigUtils.getDatabaseConfig();
401
+ if (Object.keys(dbConfig).length > 0) {
402
+ console.log(`\n ${mode} database config:`);
403
+ console.log(
404
+ " " + JSON.stringify(dbConfig, null, 2).replace(/\n/g, "\n "),
405
+ );
406
+ } else if (configRaw.database) {
407
+ // Fallback to legacy flat structure
408
+ const interpolated = ConfigUtils.interpolateEnvVars
409
+ ? ConfigUtils.interpolateEnvVars(configRaw.database)
410
+ : configRaw.database;
411
+ console.log("\n legacy database config:");
412
+ console.log(
413
+ " " + JSON.stringify(interpolated, null, 2).replace(/\n/g, "\n "),
414
+ );
415
+ } else {
416
+ console.log(
417
+ chalk.yellow(` No database config found for ${mode} mode`),
418
+ );
419
+ }
408
420
  } catch (error) {
409
421
  console.log(chalk.red(" Error reading fragment.json"));
410
422
  }
@@ -435,7 +447,7 @@ diagnose();
435
447
  }
436
448
  }
437
449
 
438
- private static loadFragmentPackageJson(): any {
450
+ public static loadFragmentPackageJson(): any {
439
451
  try {
440
452
  const possiblePaths = [
441
453
  path.join(__dirname, "..", "..", "..", "package.json"),
@@ -1,51 +1,68 @@
1
- import { Command } from 'commander';
2
- import * as fs from 'fs-extra';
3
- import * as path from 'path';
4
- import chalk from 'chalk';
5
- import ora from 'ora';
1
+ import { Command } from "commander";
2
+ import * as fs from "fs-extra";
3
+ import * as path from "path";
4
+ import chalk from "chalk";
5
+ import ora from "ora";
6
+ import { TsConfigUtils } from "../../shared/tsconfig.utils";
6
7
 
7
8
  export class GenerateCommand {
8
9
  static register(program: Command): void {
9
10
  program
10
- .command('generate <type> <name>')
11
- .alias('g')
12
- .description('Generate a new resource')
13
- .option('--with-repository', 'Generate repository for service')
11
+ .command("generate <type> <name>")
12
+ .alias("g")
13
+ .description("Generate a new resource")
14
+ .option("--with-repository", "Generate repository for service")
14
15
  .action(async (type, name, options) => {
15
16
  await GenerateCommand.execute(type, name, options);
16
17
  });
17
18
  }
18
19
 
19
- static async execute(type: string, name: string, options: any): Promise<void> {
20
+ static async execute(
21
+ type: string,
22
+ name: string,
23
+ options: any,
24
+ ): Promise<void> {
20
25
  const spinner = ora();
21
-
26
+
22
27
  try {
23
28
  spinner.start(`Generating ${type}...`);
24
-
29
+
25
30
  switch (type) {
26
- case 'controller':
31
+ case "controller":
27
32
  await this.generateController(name);
28
33
  break;
29
- case 'service':
34
+ case "service":
30
35
  await this.generateService(name, options.withRepository);
31
36
  break;
32
- case 'resource':
37
+ case "resource":
33
38
  await this.generateResource(name);
34
39
  break;
35
- case 'entity':
40
+ case "entity":
36
41
  await this.generateEntity(name);
37
42
  break;
38
- case 'dto':
43
+ case "dto":
39
44
  await this.generateDto(name);
40
45
  break;
41
- case 'repository':
46
+ case "repository":
42
47
  await this.generateRepository(name);
43
48
  break;
49
+ case "middleware":
50
+ await this.generateMiddleware(name);
51
+ break;
52
+ case "guard":
53
+ await this.generateGuard(name);
54
+ break;
55
+ case "interceptor":
56
+ await this.generateInterceptor(name);
57
+ break;
58
+ case "filter":
59
+ await this.generateFilter(name);
60
+ break;
44
61
  default:
45
62
  spinner.fail(`Unknown type: ${type}`);
46
63
  return;
47
64
  }
48
-
65
+
49
66
  spinner.succeed(`${type} generated successfully!`);
50
67
  } catch (error) {
51
68
  spinner.fail(`Failed to generate ${type}`);
@@ -54,14 +71,21 @@ export class GenerateCommand {
54
71
  }
55
72
 
56
73
  private static async generateController(name: string): Promise<void> {
57
- const className = this.capitalize(name) + 'Controller';
58
- const fileName = this.kebabCase(name) + '.controller.ts';
59
- const filePath = path.join(process.cwd(), 'src', 'controllers', fileName);
74
+ const className = this.capitalize(name) + "Controller";
75
+ const fileName = this.kebabCase(name) + ".controller.ts";
60
76
 
61
- const content = `import { Controller, Get, Post, Put, Delete, Body, Param } from 'fragment-ts';
77
+ // Use tsconfig rootDir or default to 'src'
78
+ const srcDir = TsConfigUtils.getRootDir();
79
+ const relativeSrc = path.relative(process.cwd(), srcDir);
80
+ const filePath = path.join(srcDir, "controllers", fileName);
81
+
82
+ const content = `import { Controller, Get, Post, Put, Delete, Body, Param, Autowired } from 'fragment-ts';
62
83
 
63
84
  @Controller('/${this.kebabCase(name)}')
64
85
  export class ${className} {
86
+ // @Autowired()
87
+ // private ${this.camelCase(name)}Service!: any;
88
+
65
89
  @Get()
66
90
  findAll() {
67
91
  return [];
@@ -93,18 +117,23 @@ export class ${className} {
93
117
  await fs.writeFile(filePath, content);
94
118
  }
95
119
 
96
- private static async generateService(name: string, withRepository: boolean): Promise<void> {
97
- const className = this.capitalize(name) + 'Service';
98
- const fileName = this.kebabCase(name) + '.service.ts';
99
- const filePath = path.join(process.cwd(), 'src', 'services', fileName);
120
+ private static async generateService(
121
+ name: string,
122
+ withRepository: boolean,
123
+ ): Promise<void> {
124
+ const className = this.capitalize(name) + "Service";
125
+ const fileName = this.kebabCase(name) + ".service.ts";
126
+
127
+ const srcDir = TsConfigUtils.getRootDir();
128
+ const filePath = path.join(srcDir, "services", fileName);
129
+
130
+ let imports = "import { Service, Autowired } from 'fragment-ts';\n";
131
+ let repositoryProp = "";
100
132
 
101
- let imports = "import { Service } from 'fragment-ts';\n";
102
- let repositoryProp = '';
103
-
104
133
  if (withRepository) {
105
- const repoName = this.capitalize(name) + 'Repository';
134
+ const repoName = this.capitalize(name) + "Repository";
106
135
  imports += `import { ${repoName} } from '../repositories/${this.kebabCase(name)}.repository';\n`;
107
- repositoryProp = `\n constructor(private ${this.camelCase(name)}Repository: ${repoName}) {}\n`;
136
+ repositoryProp = `\n @Autowired()\n private ${this.camelCase(name)}Repository!: ${repoName};\n`;
108
137
  }
109
138
 
110
139
  const content = `${imports}
@@ -134,7 +163,7 @@ export class ${className} {${repositoryProp}
134
163
 
135
164
  await fs.ensureDir(path.dirname(filePath));
136
165
  await fs.writeFile(filePath, content);
137
-
166
+
138
167
  if (withRepository) {
139
168
  await this.generateRepository(name);
140
169
  }
@@ -149,10 +178,12 @@ export class ${className} {${repositoryProp}
149
178
 
150
179
  private static async generateEntity(name: string): Promise<void> {
151
180
  const className = this.capitalize(name);
152
- const fileName = this.kebabCase(name) + '.entity.ts';
153
- const filePath = path.join(process.cwd(), 'src', 'entities', fileName);
181
+ const fileName = this.kebabCase(name) + ".entity.ts";
154
182
 
155
- const content = `import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
183
+ const srcDir = TsConfigUtils.getRootDir();
184
+ const filePath = path.join(srcDir, "entities", fileName);
185
+
186
+ const content = `import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';
156
187
 
157
188
  @Entity()
158
189
  export class ${className} {
@@ -162,10 +193,10 @@ export class ${className} {
162
193
  @Column()
163
194
  name: string;
164
195
 
165
- @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
196
+ @CreateDateColumn()
166
197
  createdAt: Date;
167
198
 
168
- @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', onUpdate: 'CURRENT_TIMESTAMP' })
199
+ @UpdateDateColumn()
169
200
  updatedAt: Date;
170
201
  }
171
202
  `;
@@ -175,9 +206,11 @@ export class ${className} {
175
206
  }
176
207
 
177
208
  private static async generateDto(name: string): Promise<void> {
178
- const className = 'Create' + this.capitalize(name) + 'Dto';
179
- const fileName = 'create-' + this.kebabCase(name) + '.dto.ts';
180
- const filePath = path.join(process.cwd(), 'src', 'dto', fileName);
209
+ const className = "Create" + this.capitalize(name) + "Dto";
210
+ const fileName = "create-" + this.kebabCase(name) + ".dto.ts";
211
+
212
+ const srcDir = TsConfigUtils.getRootDir();
213
+ const filePath = path.join(srcDir, "dto", fileName);
181
214
 
182
215
  const content = `export class ${className} {
183
216
  name: string;
@@ -189,34 +222,161 @@ export class ${className} {
189
222
  }
190
223
 
191
224
  private static async generateRepository(name: string): Promise<void> {
192
- const className = this.capitalize(name) + 'Repository';
225
+ const className = this.capitalize(name) + "Repository";
193
226
  const entityName = this.capitalize(name);
194
- const fileName = this.kebabCase(name) + '.repository.ts';
195
- const filePath = path.join(process.cwd(), 'src', 'repositories', fileName);
227
+ const fileName = this.kebabCase(name) + ".repository.ts";
196
228
 
197
- const content = `import { Repository } from 'fragment-ts';
229
+ const srcDir = TsConfigUtils.getRootDir();
230
+ const filePath = path.join(srcDir, "repositories", fileName);
231
+
232
+ const content = `import { Repository, InjectRepository } from 'fragment-ts';
198
233
  import { ${entityName} } from '../entities/${this.kebabCase(name)}.entity';
234
+ import { Repository as TypeOrmRepository } from 'typeorm';
199
235
 
200
236
  @Repository()
201
237
  export class ${className} {
238
+ @InjectRepository(${entityName})
239
+ private repo!: TypeOrmRepository<${entityName}>;
240
+
202
241
  async findAll(): Promise<${entityName}[]> {
203
- return [];
242
+ return this.repo.find();
204
243
  }
205
244
 
206
245
  async findById(id: number): Promise<${entityName} | null> {
207
- return null;
246
+ return this.repo.findOneBy({ id });
208
247
  }
209
248
 
210
249
  async create(data: Partial<${entityName}>): Promise<${entityName}> {
211
- return data as ${entityName};
250
+ const entity = this.repo.create(data);
251
+ return this.repo.save(entity);
212
252
  }
213
253
 
214
254
  async update(id: number, data: Partial<${entityName}>): Promise<${entityName} | null> {
215
- return null;
255
+ await this.repo.update(id, data);
256
+ return this.findById(id);
216
257
  }
217
258
 
218
259
  async delete(id: number): Promise<boolean> {
219
- return true;
260
+ const result = await this.repo.delete(id);
261
+ return result.affected > 0;
262
+ }
263
+ }
264
+ `;
265
+
266
+ await fs.ensureDir(path.dirname(filePath));
267
+ await fs.writeFile(filePath, content);
268
+ }
269
+
270
+ // New enhancement generators
271
+ private static async generateMiddleware(name: string): Promise<void> {
272
+ const className = this.capitalize(name) + "Middleware";
273
+ const fileName = this.kebabCase(name) + ".middleware.ts";
274
+
275
+ const srcDir = TsConfigUtils.getRootDir();
276
+ const filePath = path.join(srcDir, "middlewares", fileName);
277
+
278
+ const content = `import { Injectable } from 'fragment-ts';
279
+ import { Request, Response, NextFunction } from 'express';
280
+
281
+ @Injectable()
282
+ export class ${className} {
283
+ use(req: Request, res: Response, next: NextFunction): void {
284
+ console.log(\`📥 [Middleware] ${this.capitalize(name)} processing \${req.method} \${req.path}\`);
285
+ // Add your middleware logic here
286
+
287
+ next();
288
+ }
289
+ }
290
+ `;
291
+
292
+ await fs.ensureDir(path.dirname(filePath));
293
+ await fs.writeFile(filePath, content);
294
+ }
295
+
296
+ private static async generateGuard(name: string): Promise<void> {
297
+ const className = this.capitalize(name) + "Guard";
298
+ const fileName = this.kebabCase(name) + ".guard.ts";
299
+
300
+ const srcDir = TsConfigUtils.getRootDir();
301
+ const filePath = path.join(srcDir, "guards", fileName);
302
+
303
+ const content = `import { Injectable } from 'fragment-ts';
304
+ import { Request } from 'express';
305
+
306
+ @Injectable()
307
+ export class ${className} {
308
+ canActivate(req: Request): boolean {
309
+ console.log(\`🛡️ [Guard] ${this.capitalize(name)} checking access for \${req.path}\`);
310
+ // Add your authorization logic here
311
+ // Return true to allow access, false to deny
312
+
313
+ return true; // TODO: Implement actual guard logic
314
+ }
315
+ }
316
+ `;
317
+
318
+ await fs.ensureDir(path.dirname(filePath));
319
+ await fs.writeFile(filePath, content);
320
+ }
321
+
322
+ private static async generateInterceptor(name: string): Promise<void> {
323
+ const className = this.capitalize(name) + "Interceptor";
324
+ const fileName = this.kebabCase(name) + ".interceptor.ts";
325
+
326
+ const srcDir = TsConfigUtils.getRootDir();
327
+ const filePath = path.join(srcDir, "interceptors", fileName);
328
+
329
+ const content = `import { Injectable } from 'fragment-ts';
330
+ import { Request, Response } from 'express';
331
+
332
+ @Injectable()
333
+ export class ${className} {
334
+ intercept(req: Request, res: Response, result: any): any {
335
+ console.log(\`🔄 [Interceptor] ${this.capitalize(name)} transforming response for \${req.path}\`);
336
+ // Add your transformation logic here
337
+ // Return the modified result
338
+
339
+ return result; // TODO: Implement actual transformation logic
340
+ }
341
+ }
342
+ `;
343
+
344
+ await fs.ensureDir(path.dirname(filePath));
345
+ await fs.writeFile(filePath, content);
346
+ }
347
+
348
+ private static async generateFilter(name: string): Promise<void> {
349
+ const className = this.capitalize(name) + "ExceptionFilter";
350
+ const fileName = this.kebabCase(name) + ".exception.filter.ts";
351
+
352
+ const srcDir = TsConfigUtils.getRootDir();
353
+ const filePath = path.join(srcDir, "filters", fileName);
354
+
355
+ const content = `import { Injectable } from 'fragment-ts';
356
+ import { Request, Response } from 'express';
357
+
358
+ @Injectable()
359
+ export class ${className} {
360
+ catch(exception: Error, req: Request, res: Response): void {
361
+ console.error(\`❌ [Exception Filter] ${this.capitalize(name)} handling error:\`, exception);
362
+ // Add your error handling logic here
363
+
364
+ // Example: Handle specific error types
365
+ if (exception.name === 'ValidationError') {
366
+ res.status(400).json({
367
+ statusCode: 400,
368
+ error: 'Bad Request',
369
+ message: exception.message
370
+ });
371
+ return;
372
+ }
373
+
374
+ // Default error response
375
+ res.status(500).json({
376
+ statusCode: 500,
377
+ error: 'Internal Server Error',
378
+ message: process.env.NODE_ENV === 'development' ? exception.message : 'Something went wrong'
379
+ });
220
380
  }
221
381
  }
222
382
  `;
@@ -230,10 +390,10 @@ export class ${className} {
230
390
  }
231
391
 
232
392
  private static kebabCase(str: string): string {
233
- return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
393
+ return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
234
394
  }
235
395
 
236
396
  private static camelCase(str: string): string {
237
397
  return str.charAt(0).toLowerCase() + str.slice(1);
238
398
  }
239
- }
399
+ }