nestjs-d2-diagrams 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,14 @@
1
- import { ClassInfo } from '../types';
1
+ import { ClassInfo, ModuleInfo } from '../types';
2
2
  export declare class ClassAnalyzer {
3
3
  private project;
4
4
  constructor(projectPath: string);
5
- analyze(): ClassInfo[];
5
+ analyze(modules?: ModuleInfo[]): ClassInfo[];
6
6
  private analyzeSourceFile;
7
7
  private analyzeClass;
8
+ private determineClassType;
8
9
  private extractDependencies;
10
+ private extractProperties;
11
+ private extractMethods;
9
12
  private extractTypeName;
10
13
  private isPrimitiveOrCommon;
11
14
  private hasInjectableDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"class-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/class-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAC;AAErD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAU;gBAEb,WAAW,EAAE,MAAM;IAQ/B,OAAO,IAAI,SAAS,EAAE;IAYtB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,mBAAmB;IAsD3B,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,sBAAsB;CAG/B"}
1
+ {"version":3,"file":"class-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/class-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAkB,UAAU,EAA4B,MAAM,UAAU,CAAC;AAE3F,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAU;gBAEb,WAAW,EAAE,MAAM;IAQ/B,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE;IAwD5C,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,kBAAkB;IAoC1B,OAAO,CAAC,mBAAmB;IAsD3B,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,cAAc;IAkDtB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,sBAAsB;CAG/B"}
@@ -10,39 +10,128 @@ class ClassAnalyzer {
10
10
  });
11
11
  this.project.addSourceFilesAtPaths(`${projectPath}/src/**/*.ts`);
12
12
  }
13
- analyze() {
13
+ analyze(modules) {
14
14
  const classes = [];
15
15
  const sourceFiles = this.project.getSourceFiles();
16
+ // Build a map of class names to their module context
17
+ const classToModuleMap = new Map();
18
+ if (modules) {
19
+ for (const module of modules) {
20
+ const allClasses = [
21
+ ...module.controllers,
22
+ ...module.providers,
23
+ ...(module.guards || []),
24
+ ...(module.interceptors || []),
25
+ ...(module.pipes || []),
26
+ ...(module.filters || []),
27
+ ];
28
+ for (const className of allClasses) {
29
+ classToModuleMap.set(className, module.name);
30
+ }
31
+ }
32
+ }
16
33
  for (const sourceFile of sourceFiles) {
17
- const classInfos = this.analyzeSourceFile(sourceFile);
34
+ // Skip module files
35
+ if (sourceFile.getFilePath().endsWith('.module.ts'))
36
+ continue;
37
+ const classInfos = this.analyzeSourceFile(sourceFile, classToModuleMap);
18
38
  classes.push(...classInfos);
19
39
  }
20
- return classes;
40
+ // Filter to include only classes that are either:
41
+ // 1. In a module context (registered in a module)
42
+ // 2. Referenced as a dependency by another class
43
+ const referencedTypes = new Set();
44
+ for (const classInfo of classes) {
45
+ for (const dep of classInfo.dependencies) {
46
+ referencedTypes.add(dep.type);
47
+ }
48
+ // Also add properties and method parameter types as referenced
49
+ for (const prop of classInfo.properties) {
50
+ referencedTypes.add(prop.type);
51
+ }
52
+ for (const method of classInfo.methods) {
53
+ referencedTypes.add(method.returnType);
54
+ for (const param of method.parameters) {
55
+ const typeMatch = param.match(/:\s*(.+)$/);
56
+ if (typeMatch) {
57
+ referencedTypes.add(typeMatch[1].trim());
58
+ }
59
+ }
60
+ }
61
+ }
62
+ return classes.filter(c => c.moduleContext || referencedTypes.has(c.name));
21
63
  }
22
- analyzeSourceFile(sourceFile) {
64
+ analyzeSourceFile(sourceFile, classToModuleMap) {
23
65
  const classes = [];
24
66
  const classDeclarations = sourceFile.getClasses();
25
67
  for (const classDeclaration of classDeclarations) {
26
- const classInfo = this.analyzeClass(classDeclaration, sourceFile);
68
+ const classInfo = this.analyzeClass(classDeclaration, sourceFile, classToModuleMap);
27
69
  if (classInfo) {
28
70
  classes.push(classInfo);
29
71
  }
30
72
  }
31
73
  return classes;
32
74
  }
33
- analyzeClass(classDeclaration, sourceFile) {
75
+ analyzeClass(classDeclaration, sourceFile, classToModuleMap) {
34
76
  const name = classDeclaration.getName();
35
77
  if (!name)
36
78
  return null;
37
79
  const dependencies = this.extractDependencies(classDeclaration);
80
+ const properties = this.extractProperties(classDeclaration);
81
+ const methods = this.extractMethods(classDeclaration);
38
82
  const isInjectable = this.hasInjectableDecorator(classDeclaration);
83
+ const classType = this.determineClassType(classDeclaration);
84
+ const moduleContext = classToModuleMap.get(name);
39
85
  return {
40
86
  name,
41
87
  filePath: sourceFile.getFilePath(),
42
88
  dependencies,
89
+ properties,
90
+ methods,
43
91
  isInjectable,
92
+ classType,
93
+ moduleContext,
44
94
  };
45
95
  }
96
+ determineClassType(classDeclaration) {
97
+ // Check for specific decorators
98
+ if (classDeclaration.getDecorator('Controller'))
99
+ return 'controller';
100
+ if (classDeclaration.getDecorator('Injectable')) {
101
+ // Check if it's a guard, interceptor, pipe, or filter by interface/extends
102
+ const implementsClause = classDeclaration.getImplements();
103
+ const extendsClause = classDeclaration.getExtends();
104
+ for (const impl of implementsClause) {
105
+ const implName = impl.getText();
106
+ if (implName.includes('Guard'))
107
+ return 'guard';
108
+ if (implName.includes('Interceptor'))
109
+ return 'interceptor';
110
+ if (implName.includes('PipeTransform'))
111
+ return 'pipe';
112
+ if (implName.includes('ExceptionFilter'))
113
+ return 'filter';
114
+ }
115
+ if (extendsClause) {
116
+ const extendsName = extendsClause.getText();
117
+ if (extendsName.includes('Guard'))
118
+ return 'guard';
119
+ if (extendsName.includes('Interceptor'))
120
+ return 'interceptor';
121
+ }
122
+ return 'service';
123
+ }
124
+ if (classDeclaration.getDecorator('Catch'))
125
+ return 'filter';
126
+ // Check for middleware by interface
127
+ const implementsClause = classDeclaration.getImplements();
128
+ for (const impl of implementsClause) {
129
+ const implName = impl.getText();
130
+ if (implName.includes('NestMiddleware'))
131
+ return 'middleware';
132
+ }
133
+ return 'other';
134
+ }
46
135
  extractDependencies(classDeclaration) {
47
136
  const dependencies = [];
48
137
  const constructors = classDeclaration.getConstructors();
@@ -88,6 +177,65 @@ class ClassAnalyzer {
88
177
  }
89
178
  return dependencies;
90
179
  }
180
+ extractProperties(classDeclaration) {
181
+ const properties = [];
182
+ const props = classDeclaration.getProperties();
183
+ for (const prop of props) {
184
+ const name = prop.getName();
185
+ const type = prop.getType().getText();
186
+ const isPrivate = prop.hasModifier(ts_morph_1.SyntaxKind.PrivateKeyword);
187
+ const isReadonly = prop.isReadonly();
188
+ properties.push({
189
+ name,
190
+ type: this.extractTypeName(type),
191
+ isPrivate,
192
+ isReadonly,
193
+ });
194
+ }
195
+ return properties;
196
+ }
197
+ extractMethods(classDeclaration) {
198
+ const methods = [];
199
+ const methodDeclarations = classDeclaration.getMethods();
200
+ for (const method of methodDeclarations) {
201
+ const name = method.getName();
202
+ if (name === 'constructor')
203
+ continue;
204
+ const isPrivate = method.hasModifier(ts_morph_1.SyntaxKind.PrivateKeyword);
205
+ // ONLY use explicit type annotation from source code
206
+ const returnTypeNode = method.getReturnTypeNode();
207
+ let returnType;
208
+ if (returnTypeNode) {
209
+ returnType = returnTypeNode.getText();
210
+ // Unwrap Promise<T> to just T
211
+ const promiseMatch = returnType.match(/^Promise<(.+)>$/);
212
+ if (promiseMatch) {
213
+ returnType = promiseMatch[1];
214
+ }
215
+ }
216
+ else {
217
+ // No annotation - just say the method returns something
218
+ returnType = 'any';
219
+ }
220
+ const parameters = method.getParameters().map(p => {
221
+ const paramName = p.getName();
222
+ const paramTypeNode = p.getTypeNode();
223
+ let paramType = paramTypeNode ? paramTypeNode.getText() : 'any';
224
+ // Escape brackets for D2
225
+ paramType = paramType.replace(/\[/g, '\\[').replace(/\]/g, '\\]');
226
+ return `${paramName}: ${paramType}`;
227
+ });
228
+ // Escape brackets in return type
229
+ returnType = returnType.replace(/\[/g, '\\[').replace(/\]/g, '\\]');
230
+ methods.push({
231
+ name,
232
+ returnType,
233
+ isPrivate,
234
+ parameters,
235
+ });
236
+ }
237
+ return methods;
238
+ }
91
239
  extractTypeName(typeText) {
92
240
  // Remove import() wrappers if present
93
241
  let cleaned = typeText.replace(/import\([^)]+\)\./g, '');
@@ -1 +1 @@
1
- {"version":3,"file":"class-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/class-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/class-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/module-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAU;gBAEb,WAAW,EAAE,MAAM;IAQ/B,OAAO,IAAI,UAAU,EAAE;IAcvB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,0BAA0B;CAiCnC"}
1
+ {"version":3,"file":"module-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/module-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAU;gBAEb,WAAW,EAAE,MAAM;IAQ/B,OAAO,IAAI,UAAU,EAAE;IAcvB,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,0BAA0B;CAiCnC"}
@@ -42,6 +42,10 @@ class ModuleAnalyzer {
42
42
  providers: this.extractArrayPropertyValues(configObject, 'providers'),
43
43
  controllers: this.extractArrayPropertyValues(configObject, 'controllers'),
44
44
  exports: this.extractArrayPropertyValues(configObject, 'exports'),
45
+ guards: this.extractArrayPropertyValues(configObject, 'guards'),
46
+ interceptors: this.extractArrayPropertyValues(configObject, 'interceptors'),
47
+ pipes: this.extractArrayPropertyValues(configObject, 'pipes'),
48
+ filters: this.extractArrayPropertyValues(configObject, 'filters'),
45
49
  };
46
50
  }
47
51
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"module-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/module-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-analyzer.js","sourceRoot":"","sources":["../../src/analyzers/module-analyzer.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -39,45 +39,55 @@ program
39
39
  // Check for interactive mode
40
40
  let isInteractive = options.interactive;
41
41
  let defaultTechnology = '';
42
- if (!isInteractive && !options.classOnly) {
43
- isInteractive = await (0, interactive_1.promptForInteractiveMode)();
44
- }
45
- if (isInteractive) {
46
- defaultTechnology = await (0, interactive_1.promptForDefaultTechnology)();
47
- }
42
+ let containerTitle = '';
43
+ let modules = [];
44
+ // Analyze modules first (needed for both diagrams)
45
+ console.log('\nAnalyzing modules...');
46
+ const moduleAnalyzer = new module_analyzer_1.ModuleAnalyzer(projectPath);
47
+ modules = moduleAnalyzer.analyze();
48
+ console.log(`Found ${modules.length} modules`);
48
49
  // Generate component diagram
49
50
  if (!options.classOnly) {
50
- console.log('\nAnalyzing modules...');
51
- const moduleAnalyzer = new module_analyzer_1.ModuleAnalyzer(projectPath);
52
- let modules = moduleAnalyzer.analyze();
53
- console.log(`Found ${modules.length} modules`);
54
- // Enrich modules with metadata if interactive
51
+ containerTitle = await (0, interactive_1.promptForContainerTitle)();
52
+ if (!isInteractive) {
53
+ isInteractive = await (0, interactive_1.promptForInteractiveMode)();
54
+ }
55
55
  if (isInteractive) {
56
+ defaultTechnology = await (0, interactive_1.promptForDefaultTechnology)();
57
+ // Check for existing component diagram and parse metadata
58
+ const existingDiagramPath = `${outputDir}/component-diagram.d2`;
59
+ const existingMetadataMap = (0, interactive_1.parseExistingD2File)(existingDiagramPath, containerTitle);
60
+ if (existingMetadataMap.size > 0) {
61
+ console.log('\n✓ Found existing component diagram with metadata');
62
+ }
56
63
  console.log('\n=== Adding metadata to modules ===');
57
64
  const enrichedModules = [];
58
65
  for (const module of modules) {
59
- const enriched = await (0, interactive_1.enrichModuleWithMetadata)(module, defaultTechnology);
66
+ const existingMetadata = existingMetadataMap.get(module.name);
67
+ const enriched = await (0, interactive_1.enrichModuleWithMetadata)(module, defaultTechnology, existingMetadata);
60
68
  enrichedModules.push(enriched);
61
69
  }
62
70
  modules = enrichedModules;
63
71
  }
64
- const componentGen = new component_diagram_1.ComponentDiagramGenerator();
65
- const componentD2 = componentGen.generate(modules);
72
+ const componentGen = new component_diagram_1.ComponentDiagramGenerator(containerTitle);
73
+ // Don't show nesting in interactive mode (only show tech + desc)
74
+ const componentD2 = componentGen.generate(modules, !isInteractive);
66
75
  const componentPath = `${outputDir}/component-diagram.d2`;
67
76
  (0, fs_1.writeFileSync)(componentPath, componentD2);
68
77
  console.log(`\n✓ Component diagram saved to: ${componentPath}`);
69
78
  }
70
- // Generate class diagram
79
+ // Generate class diagrams
71
80
  if (!options.componentOnly) {
72
81
  console.log('\nAnalyzing classes...');
82
+ // Prompt for class diagram options
83
+ const classOptions = await (0, interactive_1.promptForClassDiagramOptions)();
73
84
  const classAnalyzer = new class_analyzer_1.ClassAnalyzer(projectPath);
74
- const classes = classAnalyzer.analyze();
85
+ const classes = classAnalyzer.analyze(modules);
75
86
  console.log(`Found ${classes.length} classes`);
76
- const classGen = new class_diagram_1.ClassDiagramGenerator();
77
- const classD2 = classGen.generate(classes);
78
- const classPath = `${outputDir}/class-diagram.d2`;
79
- (0, fs_1.writeFileSync)(classPath, classD2);
80
- console.log(`✓ Class diagram saved to: ${classPath}`);
87
+ const classGen = new class_diagram_1.ClassDiagramGenerator(classOptions.includeAttributes, classOptions.includeMethods);
88
+ classGen.generateAll(classes, modules, outputDir);
89
+ console.log(`✓ Global class diagram saved to: ${outputDir}/class-diagram-global.d2`);
90
+ console.log(`✓ Component class diagrams saved to: ${outputDir}/class-diagrams/`);
81
91
  }
82
92
  console.log('\nDone! 🎉');
83
93
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
- import { ClassInfo } from '../types';
1
+ import { ClassInfo, ModuleInfo } from '../types';
2
2
  export declare class ClassDiagramGenerator {
3
- generate(classes: ClassInfo[]): string;
4
- private findRelevantClasses;
3
+ private includeAttributes;
4
+ private includeMethods;
5
+ constructor(includeAttributes?: boolean, includeMethods?: boolean);
6
+ generateAll(classes: ClassInfo[], modules: ModuleInfo[], outputDir: string): void;
7
+ generateGlobal(classes: ClassInfo[], modules: ModuleInfo[]): string;
8
+ generateForComponent(module: ModuleInfo, allClasses: ClassInfo[], allModules: ModuleInfo[]): string;
9
+ private addClassDefinitions;
10
+ private addClassNode;
5
11
  private sanitizeName;
6
12
  }
7
13
  //# sourceMappingURL=class-diagram.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"class-diagram.d.ts","sourceRoot":"","sources":["../../src/generators/class-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM;IA0DtC,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,YAAY;CAMrB"}
1
+ {"version":3,"file":"class-diagram.d.ts","sourceRoot":"","sources":["../../src/generators/class-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGjD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,cAAc,CAAU;gBAEpB,iBAAiB,GAAE,OAAc,EAAE,cAAc,GAAE,OAAc;IAK7E,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAmBjF,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAsEnE,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM;IA8GnG,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY;IAyCpB,OAAO,CAAC,YAAY;CAKrB"}
@@ -1,73 +1,233 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClassDiagramGenerator = void 0;
4
+ const fs_1 = require("fs");
4
5
  class ClassDiagramGenerator {
5
- generate(classes) {
6
+ constructor(includeAttributes = true, includeMethods = true) {
7
+ this.includeAttributes = includeAttributes;
8
+ this.includeMethods = includeMethods;
9
+ }
10
+ generateAll(classes, modules, outputDir) {
11
+ // Create class-diagrams subdirectory
12
+ const classDiagramsDir = `${outputDir}/class-diagrams`;
13
+ if (!(0, fs_1.existsSync)(classDiagramsDir)) {
14
+ (0, fs_1.mkdirSync)(classDiagramsDir, { recursive: true });
15
+ }
16
+ // Generate global diagram
17
+ const globalD2 = this.generateGlobal(classes, modules);
18
+ (0, fs_1.writeFileSync)(`${outputDir}/class-diagram-global.d2`, globalD2);
19
+ // Generate per-component diagrams
20
+ for (const module of modules) {
21
+ const componentD2 = this.generateForComponent(module, classes, modules);
22
+ const sanitizedModuleName = this.sanitizeName(module.name);
23
+ (0, fs_1.writeFileSync)(`${classDiagramsDir}/${sanitizedModuleName}.d2`, componentD2);
24
+ }
25
+ }
26
+ generateGlobal(classes, modules) {
6
27
  const lines = [];
7
- lines.push('# NestJS Class Diagram');
28
+ lines.push('# NestJS Class Diagram - Global');
8
29
  lines.push('');
9
30
  lines.push('direction: down');
10
31
  lines.push('');
11
- // Filter to only classes that have dependencies or are depended upon
12
- const relevantClasses = this.findRelevantClasses(classes);
13
- // Create nodes for each class
14
- for (const classInfo of relevantClasses) {
32
+ this.addClassDefinitions(lines);
33
+ lines.push('');
34
+ // Group classes by module
35
+ const moduleMap = new Map();
36
+ const ungrouped = [];
37
+ for (const classInfo of classes) {
38
+ if (classInfo.moduleContext) {
39
+ if (!moduleMap.has(classInfo.moduleContext)) {
40
+ moduleMap.set(classInfo.moduleContext, []);
41
+ }
42
+ moduleMap.get(classInfo.moduleContext).push(classInfo);
43
+ }
44
+ else {
45
+ ungrouped.push(classInfo);
46
+ }
47
+ }
48
+ // Create expanded containers for each module
49
+ for (const [moduleName, moduleClasses] of moduleMap) {
50
+ const sanitizedModuleName = this.sanitizeName(moduleName);
51
+ lines.push(`${sanitizedModuleName}: ${moduleName} {`);
52
+ lines.push(' class: [container-expanded]');
53
+ lines.push('');
54
+ for (const classInfo of moduleClasses) {
55
+ this.addClassNode(lines, classInfo, ' ');
56
+ }
57
+ lines.push('}');
58
+ lines.push('');
59
+ }
60
+ // Add ungrouped classes
61
+ for (const classInfo of ungrouped) {
62
+ this.addClassNode(lines, classInfo, '');
63
+ }
64
+ // Add all edges with full paths
65
+ for (const classInfo of classes) {
15
66
  const className = this.sanitizeName(classInfo.name);
16
- lines.push(`${className}: ${classInfo.name} {`);
17
- lines.push(' shape: class');
18
- // Add a note if it has @Injectable
19
- if (classInfo.isInjectable) {
20
- lines.push(' style.fill: "#e3f2fd"');
67
+ const sourceFullPath = classInfo.moduleContext
68
+ ? `${this.sanitizeName(classInfo.moduleContext)}.${className}`
69
+ : className;
70
+ for (const dep of classInfo.dependencies) {
71
+ const depClassName = this.sanitizeName(dep.type);
72
+ const depClass = classes.find(c => c.name === dep.type);
73
+ if (!depClass)
74
+ continue;
75
+ const targetFullPath = depClass.moduleContext
76
+ ? `${this.sanitizeName(depClass.moduleContext)}.${depClassName}`
77
+ : depClassName;
78
+ const style = dep.isOptional ? ' {style.stroke-dash: 3}' : '';
79
+ lines.push(`${sourceFullPath} -> ${targetFullPath}: depends on${style}`);
21
80
  }
22
- // List dependencies as attributes
23
- if (classInfo.dependencies.length > 0) {
24
- lines.push(' # Dependencies');
25
- for (const dep of classInfo.dependencies) {
26
- const optional = dep.isOptional ? '?' : '';
27
- const token = dep.token ? ` (@Inject('${dep.token}'))` : '';
28
- lines.push(` ${dep.name}${optional}: ${dep.type}${token}`);
81
+ }
82
+ return lines.join('\n');
83
+ }
84
+ generateForComponent(module, allClasses, allModules) {
85
+ const lines = [];
86
+ lines.push(`# NestJS Class Diagram - ${module.name}`);
87
+ lines.push('');
88
+ lines.push('direction: down');
89
+ lines.push('');
90
+ this.addClassDefinitions(lines);
91
+ lines.push('');
92
+ // Get classes directly in this module
93
+ const moduleClasses = allClasses.filter(c => c.moduleContext === module.name);
94
+ // Get all dependencies of module classes
95
+ const allDependencies = new Set();
96
+ for (const classInfo of moduleClasses) {
97
+ for (const dep of classInfo.dependencies) {
98
+ allDependencies.add(dep.type);
99
+ }
100
+ }
101
+ // Find dependency classes and group them by module
102
+ const dependencyClassesByModule = new Map();
103
+ const localDependencies = [];
104
+ for (const depName of allDependencies) {
105
+ const depClass = allClasses.find(c => c.name === depName);
106
+ if (!depClass)
107
+ continue;
108
+ if (depClass.moduleContext === module.name) {
109
+ // Already in our module, will be shown at root
110
+ continue;
111
+ }
112
+ else if (depClass.moduleContext) {
113
+ // From another module - group it
114
+ if (!dependencyClassesByModule.has(depClass.moduleContext)) {
115
+ dependencyClassesByModule.set(depClass.moduleContext, []);
29
116
  }
117
+ dependencyClassesByModule.get(depClass.moduleContext).push(depClass);
118
+ }
119
+ else {
120
+ // No module context - show at root
121
+ localDependencies.push(depClass);
122
+ }
123
+ }
124
+ // Build a set of all modules that will be rendered as containers
125
+ const renderedModules = new Set();
126
+ renderedModules.add(module.name);
127
+ for (const depModuleName of dependencyClassesByModule.keys()) {
128
+ renderedModules.add(depModuleName);
129
+ }
130
+ // Create this module's container
131
+ const sanitizedModuleName = this.sanitizeName(module.name);
132
+ lines.push(`${sanitizedModuleName}: ${module.name} {`);
133
+ lines.push(' class: [container-expanded]');
134
+ lines.push('');
135
+ for (const classInfo of moduleClasses) {
136
+ this.addClassNode(lines, classInfo, ' ');
137
+ }
138
+ lines.push('}');
139
+ lines.push('');
140
+ // Create expanded containers for dependency modules
141
+ for (const [depModuleName, depClasses] of dependencyClassesByModule) {
142
+ const sanitizedDepModuleName = this.sanitizeName(depModuleName);
143
+ lines.push(`${sanitizedDepModuleName}: ${depModuleName} {`);
144
+ lines.push(' class: [container-expanded]');
145
+ lines.push('');
146
+ for (const classInfo of depClasses) {
147
+ this.addClassNode(lines, classInfo, ' ');
30
148
  }
31
149
  lines.push('}');
32
150
  lines.push('');
33
151
  }
34
- // Create edges for dependencies
35
- for (const classInfo of relevantClasses) {
152
+ // Add ungrouped dependencies
153
+ for (const classInfo of localDependencies) {
154
+ this.addClassNode(lines, classInfo, '');
155
+ }
156
+ // Add edges - NO module prefixes since classes are nested inside containers
157
+ for (const classInfo of moduleClasses) {
36
158
  const className = this.sanitizeName(classInfo.name);
159
+ const sourceFullPath = `${sanitizedModuleName}.${className}`;
37
160
  for (const dep of classInfo.dependencies) {
38
161
  const depClassName = this.sanitizeName(dep.type);
39
- // Check if the dependency class exists in our analysis
40
- const exists = relevantClasses.some(c => this.sanitizeName(c.name) === depClassName);
41
- if (exists) {
42
- const style = dep.isOptional ? ' {style.stroke-dash: 3}' : '';
43
- lines.push(`${className} -> ${depClassName}: depends on${style}`);
162
+ const depClass = allClasses.find(c => c.name === dep.type);
163
+ if (!depClass)
164
+ continue;
165
+ let targetFullPath;
166
+ if (depClass.moduleContext && renderedModules.has(depClass.moduleContext)) {
167
+ targetFullPath = `${this.sanitizeName(depClass.moduleContext)}.${depClassName}`;
44
168
  }
169
+ else {
170
+ targetFullPath = depClassName;
171
+ }
172
+ const style = dep.isOptional ? ' {style.stroke-dash: 3}' : '';
173
+ lines.push(`${sourceFullPath} -> ${targetFullPath}: depends on${style}`);
45
174
  }
46
175
  }
47
176
  return lines.join('\n');
48
177
  }
49
- findRelevantClasses(classes) {
50
- // Find classes that either have dependencies or are referenced as dependencies
51
- const classNames = new Set(classes.map(c => c.name));
52
- const referencedTypes = new Set();
53
- // Collect all referenced types
54
- for (const classInfo of classes) {
178
+ addClassDefinitions(lines) {
179
+ lines.push('classes: {');
180
+ lines.push(' container-expanded: {');
181
+ lines.push(' shape: rectangle');
182
+ lines.push(' style.border-radius: 32');
183
+ lines.push(' style.stroke-dash: 3');
184
+ lines.push(' label.near: bottom-left');
185
+ lines.push(' style.stroke: "#666666"');
186
+ lines.push(' style.font-color: "#333333"');
187
+ lines.push(' }');
188
+ lines.push('}');
189
+ }
190
+ addClassNode(lines, classInfo, indent) {
191
+ const className = this.sanitizeName(classInfo.name);
192
+ lines.push(`${indent}${className}: ${classInfo.name} {`);
193
+ lines.push(`${indent} shape: class`);
194
+ if (classInfo.isInjectable) {
195
+ lines.push(`${indent} style.fill: "#e3f2fd"`);
196
+ }
197
+ // Add properties/attributes
198
+ if (this.includeAttributes && classInfo.properties.length > 0) {
199
+ for (const prop of classInfo.properties) {
200
+ if (prop.isPrivate)
201
+ continue;
202
+ const readonly = prop.isReadonly ? 'readonly ' : '';
203
+ lines.push(`${indent} ${readonly}${prop.name}: ${prop.type}`);
204
+ }
205
+ }
206
+ // Add dependency injections
207
+ if (classInfo.dependencies.length > 0) {
208
+ lines.push(`${indent} # Dependencies`);
55
209
  for (const dep of classInfo.dependencies) {
56
- referencedTypes.add(dep.type);
210
+ const optional = dep.isOptional ? '?' : '';
211
+ const token = dep.token ? ` (@Inject('${dep.token}'))` : '';
212
+ lines.push(`${indent} ${dep.name}${optional}: ${dep.type}${token}`);
57
213
  }
58
214
  }
59
- // Include classes that have dependencies or are referenced
60
- return classes.filter(classInfo => {
61
- const hasDependencies = classInfo.dependencies.length > 0;
62
- const isReferenced = referencedTypes.has(classInfo.name);
63
- return hasDependencies || isReferenced;
64
- });
215
+ // Add methods
216
+ if (this.includeMethods && classInfo.methods.length > 0) {
217
+ for (const method of classInfo.methods) {
218
+ if (method.isPrivate)
219
+ continue;
220
+ const params = method.parameters.join(', ');
221
+ lines.push(`${indent} ${method.name}(${params}): ${method.returnType}`);
222
+ }
223
+ }
224
+ lines.push(`${indent}}`);
225
+ lines.push('');
65
226
  }
66
227
  sanitizeName(name) {
67
- // Remove special characters and make valid D2 identifier
68
228
  return name
69
229
  .replace(/[^a-zA-Z0-9_]/g, '_')
70
- .replace(/^(\d)/, '_$1'); // D2 identifiers can't start with numbers
230
+ .replace(/^(\d)/, '_$1');
71
231
  }
72
232
  }
73
233
  exports.ClassDiagramGenerator = ClassDiagramGenerator;
@@ -1 +1 @@
1
- {"version":3,"file":"class-diagram.js","sourceRoot":"","sources":["../../src/generators/class-diagram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-diagram.js","sourceRoot":"","sources":["../../src/generators/class-diagram.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { ModuleInfo } from '../types';
2
2
  export declare class ComponentDiagramGenerator {
3
+ private containerTitle;
4
+ constructor(containerTitle: string);
3
5
  generate(modules: ModuleInfo[], showNesting?: boolean): string;
4
6
  private sanitizeName;
5
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"component-diagram.d.ts","sourceRoot":"","sources":["../../src/generators/component-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,qBAAa,yBAAyB;IACpC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,GAAE,OAAe,GAAG,MAAM;IA2FrE,OAAO,CAAC,YAAY;CAMrB"}
1
+ {"version":3,"file":"component-diagram.d.ts","sourceRoot":"","sources":["../../src/generators/component-diagram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,qBAAa,yBAAyB;IAExB,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,MAAM;IAE1C,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,GAAE,OAAe,GAAG,MAAM;IAgIrE,OAAO,CAAC,YAAY;CAMrB"}
@@ -2,18 +2,58 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ComponentDiagramGenerator = void 0;
4
4
  class ComponentDiagramGenerator {
5
+ constructor(containerTitle) {
6
+ this.containerTitle = containerTitle;
7
+ }
5
8
  generate(modules, showNesting = false) {
6
9
  const lines = [];
10
+ const containerTitleUpperCamelCase = this.sanitizeName(this.containerTitle.replace(/ /g, ""));
7
11
  lines.push('# NestJS Component Diagram');
8
12
  lines.push('');
9
13
  lines.push('direction: right');
10
14
  lines.push('');
15
+ lines.push('vars: {');
16
+ lines.push(' d2-config: {');
17
+ lines.push(' theme-id: 303');
18
+ lines.push(' }');
19
+ lines.push('}');
20
+ lines.push('');
11
21
  lines.push('classes: {');
12
22
  lines.push(' component: {');
13
23
  lines.push(' shape: rectangle');
14
- lines.push(' style.fill: "#87CEEB"');
24
+ lines.push(' style.fill: "#63BEF2"');
25
+ lines.push(' style.border-radius: 32');
26
+ lines.push(' }');
27
+ lines.push(' container-expanded: {');
28
+ lines.push(' shape: rectangle');
29
+ lines.push(' style.border-radius: 32');
30
+ lines.push(' style.stroke-dash: 3');
31
+ lines.push(' label.near: bottom-left');
32
+ lines.push(' style.stroke: "#666666"');
33
+ lines.push(' style.font-color: "#333333"');
34
+ lines.push(' }');
35
+ lines.push(' container: {');
36
+ lines.push(' shape: rectangle');
37
+ lines.push(' style.fill: "#23A2D9"');
15
38
  lines.push(' style.border-radius: 32');
16
39
  lines.push(' }');
40
+ lines.push(' system: {');
41
+ lines.push(' shape: rectangle');
42
+ lines.push(' style.fill: "#1061B0"');
43
+ lines.push(' style.border-radius: 32');
44
+ lines.push(' }');
45
+ lines.push(' external-system: {');
46
+ lines.push(' shape: rectangle');
47
+ lines.push(' style.fill: "#8C8496"');
48
+ lines.push(' style.border-radius: 32');
49
+ lines.push(' }');
50
+ lines.push('}');
51
+ lines.push('');
52
+ lines.push(`${containerTitleUpperCamelCase}: |md`);
53
+ lines.push(` ## ${this.containerTitle}`);
54
+ lines.push(` **[Container: NestJS]**`);
55
+ lines.push(`| {`);
56
+ lines.push(' class: [container-expanded]');
17
57
  lines.push('}');
18
58
  lines.push('');
19
59
  // Create nodes for each module
@@ -29,7 +69,7 @@ class ComponentDiagramGenerator {
29
69
  label += `\n\n ${module.description}`;
30
70
  }
31
71
  // Start module block
32
- lines.push(`${moduleName}: |md`);
72
+ lines.push(`${containerTitleUpperCamelCase}.${moduleName}: |md`);
33
73
  lines.push(` ${label}`);
34
74
  lines.push(`| {`);
35
75
  lines.push(' class: [component]');
@@ -69,7 +109,7 @@ class ComponentDiagramGenerator {
69
109
  // Check if the imported module exists in our analysis
70
110
  const exists = modules.some(m => this.sanitizeName(m.name) === importedModuleName);
71
111
  if (exists) {
72
- lines.push(`${moduleName} -> ${importedModuleName}: imports`);
112
+ lines.push(`${containerTitleUpperCamelCase}.${moduleName} -> ${containerTitleUpperCamelCase}.${importedModuleName}: imports`);
73
113
  }
74
114
  }
75
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"component-diagram.js","sourceRoot":"","sources":["../../src/generators/component-diagram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-diagram.js","sourceRoot":"","sources":["../../src/generators/component-diagram.ts"],"names":[],"mappings":";;;AAEA,MAAa,yBAAyB;IAEpC,YAAoB,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;IAAG,CAAC;IAE9C,QAAQ,CAAC,OAAqB,EAAE,cAAuB,KAAK;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,4BAA4B,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAE9F,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,4BAA4B,OAAO,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,+BAA+B;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAElD,uCAAuC;YACvC,IAAI,KAAK,GAAG,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YAEjC,KAAK,IAAI,SAAS,CAAC;YAEnB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,KAAK,IAAI,qBAAqB,MAAM,CAAC,UAAU,KAAK,CAAC;YACvD,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,KAAK,IAAI,SAAS,MAAM,CAAC,WAAW,EAAE,CAAC;YACzC,CAAC;YAED,qBAAqB;YACrB,KAAK,CAAC,IAAI,CAAC,GAAG,4BAA4B,IAAI,UAAU,OAAO,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEnC,mEAAmE;YACnE,IAAI,WAAW,EAAE,CAAC;gBAChB,mCAAmC;gBACnC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;oBACvC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACnC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;wBACxC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACjD,KAAK,CAAC,IAAI,CAAC,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC,CAAC;oBACjD,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;gBAED,qCAAqC;gBACrC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;oBAC3C,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBACnC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;wBAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;wBACrD,KAAK,CAAC,IAAI,CAAC,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC,CAAC;oBACrD,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,2BAA2B;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAElD,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAE7D,sDAAsD;gBACtD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,kBAAkB,CACjD,CAAC;gBAEF,IAAI,MAAM,EAAE,CAAC;oBACX,KAAK,CAAC,IAAI,CAAC,GAAG,4BAA4B,IAAI,UAAU,OAAO,4BAA4B,IAAI,kBAAkB,WAAW,CAAC,CAAC;gBAChI,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,yDAAyD;QACzD,OAAO,IAAI;aACR,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;aAC9B,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,0CAA0C;IACxE,CAAC;CACF;AA1ID,8DA0IC"}
@@ -1,5 +1,16 @@
1
1
  import { ModuleInfo } from './types';
2
+ interface ExistingMetadata {
3
+ technology?: string;
4
+ description?: string;
5
+ }
6
+ export declare function parseExistingD2File(filePath: string, containerName: string): Map<string, ExistingMetadata>;
7
+ export declare function promptForContainerTitle(): Promise<string>;
2
8
  export declare function promptForInteractiveMode(): Promise<boolean>;
3
9
  export declare function promptForDefaultTechnology(): Promise<string>;
4
- export declare function enrichModuleWithMetadata(module: ModuleInfo, defaultTechnology: string): Promise<ModuleInfo>;
10
+ export declare function promptForClassDiagramOptions(): Promise<{
11
+ includeAttributes: boolean;
12
+ includeMethods: boolean;
13
+ }>;
14
+ export declare function enrichModuleWithMetadata(module: ModuleInfo, defaultTechnology: string, existingMetadata?: ExistingMetadata): Promise<ModuleInfo>;
15
+ export {};
5
16
  //# sourceMappingURL=interactive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CASjE;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CASlE;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAqCrB"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAwG1G;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAS/D;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CASjE;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CASlE;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAC,CAAC,CAoBnH;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,UAAU,CAAC,CAoCrB"}
@@ -3,10 +3,117 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseExistingD2File = parseExistingD2File;
7
+ exports.promptForContainerTitle = promptForContainerTitle;
6
8
  exports.promptForInteractiveMode = promptForInteractiveMode;
7
9
  exports.promptForDefaultTechnology = promptForDefaultTechnology;
10
+ exports.promptForClassDiagramOptions = promptForClassDiagramOptions;
8
11
  exports.enrichModuleWithMetadata = enrichModuleWithMetadata;
9
12
  const prompts_1 = __importDefault(require("prompts"));
13
+ const fs_1 = require("fs");
14
+ function parseExistingD2File(filePath, containerName) {
15
+ const metadataMap = new Map();
16
+ if (!(0, fs_1.existsSync)(filePath)) {
17
+ return metadataMap;
18
+ }
19
+ try {
20
+ const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
21
+ const lines = content.split('\n');
22
+ // Sanitize container name to match D2 identifier format
23
+ const sanitizedContainer = containerName.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\d)/, '_$1');
24
+ let insideContainerExpanded = false;
25
+ let currentModule = null;
26
+ let inModuleBlock = false;
27
+ let braceDepth = 0;
28
+ for (let i = 0; i < lines.length; i++) {
29
+ const line = lines[i];
30
+ const trimmed = line.trim();
31
+ // Check if we're entering the container-expanded block
32
+ if (trimmed.startsWith(`${sanitizedContainer}:`) && trimmed.includes('|md')) {
33
+ insideContainerExpanded = true;
34
+ braceDepth = 0;
35
+ continue;
36
+ }
37
+ // Track brace depth to know when we exit the container
38
+ if (insideContainerExpanded) {
39
+ if (trimmed === '{')
40
+ braceDepth++;
41
+ if (trimmed === '}') {
42
+ braceDepth--;
43
+ if (braceDepth === 0) {
44
+ insideContainerExpanded = false;
45
+ inModuleBlock = false;
46
+ currentModule = null;
47
+ }
48
+ }
49
+ }
50
+ // Only parse modules inside the container-expanded block
51
+ if (!insideContainerExpanded)
52
+ continue;
53
+ // Detect module block start: Container.ModuleName: |md
54
+ if (trimmed.includes(': |md') && trimmed.startsWith(`${sanitizedContainer}.`)) {
55
+ const match = trimmed.match(new RegExp(`^${sanitizedContainer}\\.([^:]+):`));
56
+ if (match) {
57
+ currentModule = match[1].trim();
58
+ inModuleBlock = true;
59
+ continue;
60
+ }
61
+ }
62
+ // Inside module block, look for metadata
63
+ if (inModuleBlock && currentModule) {
64
+ // Extract module name from markdown header (### ModuleName)
65
+ if (trimmed.startsWith('###')) {
66
+ const moduleName = trimmed.replace(/^###\s*/, '').trim();
67
+ if (!metadataMap.has(moduleName)) {
68
+ metadataMap.set(moduleName, {});
69
+ }
70
+ currentModule = moduleName;
71
+ }
72
+ // Extract technology: **[Component: NestJS]**
73
+ if (trimmed.includes('[Component:')) {
74
+ const match = trimmed.match(/\[Component:\s*([^\]]+)\]/);
75
+ if (match && currentModule) {
76
+ const metadata = metadataMap.get(currentModule) || {};
77
+ metadata.technology = match[1].trim();
78
+ metadataMap.set(currentModule, metadata);
79
+ }
80
+ }
81
+ // Extract description (any line after technology that's not formatting)
82
+ if (currentModule && !trimmed.startsWith('###') &&
83
+ !trimmed.includes('[Component:') &&
84
+ !trimmed.includes('---') &&
85
+ !trimmed.includes('|') &&
86
+ !trimmed.includes('{') &&
87
+ !trimmed.includes('}') &&
88
+ !trimmed.includes('class:') &&
89
+ trimmed.length > 0) {
90
+ const metadata = metadataMap.get(currentModule) || {};
91
+ if (!metadata.description) {
92
+ metadata.description = trimmed;
93
+ metadataMap.set(currentModule, metadata);
94
+ }
95
+ }
96
+ // End of module block
97
+ if (trimmed === '| {') {
98
+ inModuleBlock = false;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ catch (error) {
104
+ console.warn('Warning: Could not parse existing D2 file:', error);
105
+ }
106
+ return metadataMap;
107
+ }
108
+ async function promptForContainerTitle() {
109
+ const response = await (0, prompts_1.default)({
110
+ type: 'text',
111
+ name: 'container',
112
+ message: 'Please name the container that represents this project',
113
+ initial: '',
114
+ });
115
+ return response.container;
116
+ }
10
117
  async function promptForInteractiveMode() {
11
118
  const response = await (0, prompts_1.default)({
12
119
  type: 'confirm',
@@ -25,38 +132,55 @@ async function promptForDefaultTechnology() {
25
132
  });
26
133
  return response.technology || '';
27
134
  }
28
- async function enrichModuleWithMetadata(module, defaultTechnology) {
135
+ async function promptForClassDiagramOptions() {
136
+ const responses = await (0, prompts_1.default)([
137
+ {
138
+ type: 'confirm',
139
+ name: 'includeAttributes',
140
+ message: 'Include class attributes/properties in diagrams?',
141
+ initial: true,
142
+ },
143
+ {
144
+ type: 'confirm',
145
+ name: 'includeMethods',
146
+ message: 'Include class methods in diagrams?',
147
+ initial: true,
148
+ }
149
+ ]);
150
+ return {
151
+ includeAttributes: responses.includeAttributes ?? true,
152
+ includeMethods: responses.includeMethods ?? true,
153
+ };
154
+ }
155
+ async function enrichModuleWithMetadata(module, defaultTechnology, existingMetadata) {
29
156
  console.log(`\n--- ${module.name} ---`);
157
+ // Use existing metadata as fallback
158
+ const existingTech = existingMetadata?.technology || defaultTechnology || 'NestJS';
159
+ const existingDesc = existingMetadata?.description || '';
30
160
  const questions = [];
31
- // Technology question
32
- if (defaultTechnology) {
33
- questions.push({
34
- type: 'text',
35
- name: 'technology',
36
- message: `Technology (press Enter for "${defaultTechnology}"):`,
37
- initial: defaultTechnology,
38
- });
39
- }
40
- else {
41
- questions.push({
42
- type: 'text',
43
- name: 'technology',
44
- message: 'Technology (e.g., NestJS, Spring Boot):',
45
- initial: 'NestJS',
46
- });
47
- }
48
- // Description question
161
+ // Technology question with existing value as initial
162
+ questions.push({
163
+ type: 'text',
164
+ name: 'technology',
165
+ message: existingMetadata?.technology
166
+ ? `Technology (press Enter to keep "${existingTech}"):`
167
+ : `Technology (press Enter for "${existingTech}"):`,
168
+ initial: existingTech,
169
+ });
170
+ // Description question with existing value as initial
49
171
  questions.push({
50
172
  type: 'text',
51
173
  name: 'description',
52
- message: 'Description (what does this module do?):',
53
- initial: '',
174
+ message: existingMetadata?.description
175
+ ? `Description (press Enter to keep current):`
176
+ : 'Description (what does this module do?):',
177
+ initial: existingDesc,
54
178
  });
55
179
  const answers = await (0, prompts_1.default)(questions);
56
180
  return {
57
181
  ...module,
58
- technology: answers.technology || defaultTechnology || 'NestJS',
59
- description: answers.description || '',
182
+ technology: answers.technology || existingTech,
183
+ description: answers.description || existingDesc || '',
60
184
  };
61
185
  }
62
186
  //# sourceMappingURL=interactive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":";;;;;AAGA,4DASC;AAED,gEASC;AAED,4DAwCC;AAjED,sDAA8B;AAGvB,KAAK,UAAU,wBAAwB;IAC5C,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAO,EAAC;QAC7B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,uEAAuE;QAChF,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,WAAW,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,0BAA0B;IAC9C,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAO,EAAC;QAC7B,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,+EAA+E;QACxF,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;AACnC,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,MAAkB,EAClB,iBAAyB;IAEzB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC;IAExC,MAAM,SAAS,GAA2B,EAAE,CAAC;IAE7C,sBAAsB;IACtB,IAAI,iBAAiB,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,gCAAgC,iBAAiB,KAAK;YAC/D,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,yCAAyC;YAClD,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,SAAS,CAAC,IAAI,CAAC;QACb,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,0CAA0C;QACnD,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,IAAA,iBAAO,EAAC,SAAS,CAAC,CAAC;IAEzC,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,iBAAiB,IAAI,QAAQ;QAC/D,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,6 +5,10 @@ export interface ModuleInfo {
5
5
  providers: string[];
6
6
  controllers: string[];
7
7
  exports: string[];
8
+ guards?: string[];
9
+ interceptors?: string[];
10
+ pipes?: string[];
11
+ filters?: string[];
8
12
  technology?: string;
9
13
  description?: string;
10
14
  }
@@ -13,6 +17,22 @@ export interface ClassInfo {
13
17
  filePath: string;
14
18
  dependencies: DependencyInfo[];
15
19
  isInjectable: boolean;
20
+ classType?: 'controller' | 'service' | 'guard' | 'interceptor' | 'pipe' | 'filter' | 'middleware' | 'other';
21
+ moduleContext?: string;
22
+ properties: PropertyInfo[];
23
+ methods: MethodInfo[];
24
+ }
25
+ export interface PropertyInfo {
26
+ name: string;
27
+ type: string;
28
+ isPrivate: boolean;
29
+ isReadonly: boolean;
30
+ }
31
+ export interface MethodInfo {
32
+ name: string;
33
+ returnType: string;
34
+ isPrivate: boolean;
35
+ parameters: string[];
16
36
  }
17
37
  export interface DependencyInfo {
18
38
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;IAC5G,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestjs-d2-diagrams",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "Generate D2 component and class diagrams from NestJS projects",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {