docgen-ai 0.1.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.
Files changed (90) hide show
  1. package/README.md +101 -0
  2. package/dist/ai/reasoner.d.ts +47 -0
  3. package/dist/ai/reasoner.d.ts.map +1 -0
  4. package/dist/ai/reasoner.js +235 -0
  5. package/dist/ai/reasoner.js.map +1 -0
  6. package/dist/cli/commands.d.ts +20 -0
  7. package/dist/cli/commands.d.ts.map +1 -0
  8. package/dist/cli/commands.js +344 -0
  9. package/dist/cli/commands.js.map +1 -0
  10. package/dist/config/loader.d.ts +11 -0
  11. package/dist/config/loader.d.ts.map +1 -0
  12. package/dist/config/loader.js +141 -0
  13. package/dist/config/loader.js.map +1 -0
  14. package/dist/core/analyzers/project.d.ts +8 -0
  15. package/dist/core/analyzers/project.d.ts.map +1 -0
  16. package/dist/core/analyzers/project.js +303 -0
  17. package/dist/core/analyzers/project.js.map +1 -0
  18. package/dist/core/cache/file-cache.d.ts +26 -0
  19. package/dist/core/cache/file-cache.d.ts.map +1 -0
  20. package/dist/core/cache/file-cache.js +110 -0
  21. package/dist/core/cache/file-cache.js.map +1 -0
  22. package/dist/core/generators/api.d.ts +11 -0
  23. package/dist/core/generators/api.d.ts.map +1 -0
  24. package/dist/core/generators/api.js +105 -0
  25. package/dist/core/generators/api.js.map +1 -0
  26. package/dist/core/generators/architecture.d.ts +17 -0
  27. package/dist/core/generators/architecture.d.ts.map +1 -0
  28. package/dist/core/generators/architecture.js +180 -0
  29. package/dist/core/generators/architecture.js.map +1 -0
  30. package/dist/core/generators/functions.d.ts +11 -0
  31. package/dist/core/generators/functions.d.ts.map +1 -0
  32. package/dist/core/generators/functions.js +151 -0
  33. package/dist/core/generators/functions.js.map +1 -0
  34. package/dist/core/generators/integrations.d.ts +8 -0
  35. package/dist/core/generators/integrations.d.ts.map +1 -0
  36. package/dist/core/generators/integrations.js +53 -0
  37. package/dist/core/generators/integrations.js.map +1 -0
  38. package/dist/core/generators/modules.d.ts +11 -0
  39. package/dist/core/generators/modules.d.ts.map +1 -0
  40. package/dist/core/generators/modules.js +148 -0
  41. package/dist/core/generators/modules.js.map +1 -0
  42. package/dist/core/generators/readme.d.ts +25 -0
  43. package/dist/core/generators/readme.d.ts.map +1 -0
  44. package/dist/core/generators/readme.js +193 -0
  45. package/dist/core/generators/readme.js.map +1 -0
  46. package/dist/core/generators/registry.d.ts +26 -0
  47. package/dist/core/generators/registry.d.ts.map +1 -0
  48. package/dist/core/generators/registry.js +90 -0
  49. package/dist/core/generators/registry.js.map +1 -0
  50. package/dist/core/generators/setup.d.ts +8 -0
  51. package/dist/core/generators/setup.d.ts.map +1 -0
  52. package/dist/core/generators/setup.js +73 -0
  53. package/dist/core/generators/setup.js.map +1 -0
  54. package/dist/core/parsers/javascript.d.ts +12 -0
  55. package/dist/core/parsers/javascript.d.ts.map +1 -0
  56. package/dist/core/parsers/javascript.js +389 -0
  57. package/dist/core/parsers/javascript.js.map +1 -0
  58. package/dist/core/parsers/python-regex.d.ts +11 -0
  59. package/dist/core/parsers/python-regex.d.ts.map +1 -0
  60. package/dist/core/parsers/python-regex.js +337 -0
  61. package/dist/core/parsers/python-regex.js.map +1 -0
  62. package/dist/core/parsers/python.d.ts +37 -0
  63. package/dist/core/parsers/python.d.ts.map +1 -0
  64. package/dist/core/parsers/python.js +584 -0
  65. package/dist/core/parsers/python.js.map +1 -0
  66. package/dist/core/parsers/registry.d.ts +15 -0
  67. package/dist/core/parsers/registry.d.ts.map +1 -0
  68. package/dist/core/parsers/registry.js +56 -0
  69. package/dist/core/parsers/registry.js.map +1 -0
  70. package/dist/core/pipeline.d.ts +18 -0
  71. package/dist/core/pipeline.d.ts.map +1 -0
  72. package/dist/core/pipeline.js +96 -0
  73. package/dist/core/pipeline.js.map +1 -0
  74. package/dist/index.d.ts +21 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +49 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/types/definitions.d.ts +220 -0
  79. package/dist/types/definitions.d.ts.map +1 -0
  80. package/dist/types/definitions.js +10 -0
  81. package/dist/types/definitions.js.map +1 -0
  82. package/dist/utils/helpers.d.ts +22 -0
  83. package/dist/utils/helpers.d.ts.map +1 -0
  84. package/dist/utils/helpers.js +176 -0
  85. package/dist/utils/helpers.js.map +1 -0
  86. package/dist/utils/logger.d.ts +28 -0
  87. package/dist/utils/logger.d.ts.map +1 -0
  88. package/dist/utils/logger.js +109 -0
  89. package/dist/utils/logger.js.map +1 -0
  90. package/package.json +88 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ /**
3
+ * ============================================================================
4
+ * ARCHITECTURE GENERATOR
5
+ * ============================================================================
6
+ *
7
+ * Generates architecture documentation including:
8
+ * - System overview
9
+ * - Module relationship diagram (Mermaid)
10
+ * - Dependency graph
11
+ * - Data flow description
12
+ *
13
+ * The Mermaid diagrams render on GitHub, GitLab, and most doc platforms,
14
+ * making them ideal for auto-generated architecture docs.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.generateArchitectureDocs = generateArchitectureDocs;
18
+ const reasoner_1 = require("../../ai/reasoner");
19
+ const helpers_1 = require("../../utils/helpers");
20
+ const logger_1 = require("../../utils/logger");
21
+ const log = logger_1.logger.child('ArchGen');
22
+ async function generateArchitectureDocs(analysis, config) {
23
+ log.info('Generating architecture documentation...');
24
+ const sections = [];
25
+ // ── Header ───────────────────────────────────────────────────────────
26
+ sections.push(`# Architecture — ${analysis.name}\n`);
27
+ // AI-generated architecture explanation
28
+ const explanation = await (0, reasoner_1.explainArchitecture)(analysis, config.ai);
29
+ sections.push('## Overview\n');
30
+ sections.push(explanation + '\n');
31
+ // ── Module Diagram ───────────────────────────────────────────────────
32
+ sections.push('## Module Relationships\n');
33
+ sections.push(generateMermaidModuleDiagram(analysis) + '\n');
34
+ // ── Module Details ───────────────────────────────────────────────────
35
+ sections.push('## Modules\n');
36
+ for (const module of analysis.modules) {
37
+ sections.push(`### ${module.name}\n`);
38
+ sections.push(`- **Role:** ${module.role || 'General'}`);
39
+ sections.push(`- **Files:** ${module.files.length}`);
40
+ sections.push(`- **Lines:** ${module.totalLines}`);
41
+ sections.push(`- **Exports:** ${module.publicAPI.map(e => `\`${e.name}\``).join(', ') || 'None'}`);
42
+ if (module.dependencies.length > 0) {
43
+ sections.push(`- **Depends on:** ${module.dependencies.map(d => `\`${d}\``).join(', ')}`);
44
+ }
45
+ if (module.dependents.length > 0) {
46
+ sections.push(`- **Used by:** ${module.dependents.map(d => `\`${d}\``).join(', ')}`);
47
+ }
48
+ sections.push('');
49
+ }
50
+ // ── Dependency Graph ─────────────────────────────────────────────────
51
+ sections.push('## Dependency Graph\n');
52
+ sections.push(generateMermaidDependencyGraph(analysis) + '\n');
53
+ // ── External Integrations ────────────────────────────────────────────
54
+ const nonDevDeps = analysis.externalDependencies.filter(d => !d.isDev);
55
+ const categories = [...new Set(nonDevDeps.map(d => d.category))].filter(c => c !== 'utility');
56
+ if (categories.length > 0) {
57
+ sections.push('## External Integrations\n');
58
+ for (const cat of categories) {
59
+ const deps = nonDevDeps.filter(d => d.category === cat);
60
+ sections.push(`### ${capitalize(cat)}\n`);
61
+ for (const dep of deps) {
62
+ sections.push(`- **${dep.name}** ${dep.version || ''}`);
63
+ }
64
+ sections.push('');
65
+ }
66
+ }
67
+ // ── Technology Layer Diagram ──────────────────────────────────────────
68
+ sections.push('## Technology Stack\n');
69
+ sections.push(generateStackDiagram(analysis) + '\n');
70
+ const content = sections.join('\n');
71
+ return {
72
+ filePath: 'docs/architecture.md',
73
+ content,
74
+ generator: 'architecture',
75
+ generatedAt: new Date(),
76
+ inputHash: (0, helpers_1.hashContent)(JSON.stringify(analysis.modules.map(m => m.name))),
77
+ };
78
+ }
79
+ // ─── Mermaid Diagram Generators ──────────────────────────────────────────────
80
+ /**
81
+ * Generate a Mermaid flowchart showing module relationships.
82
+ *
83
+ * LEARNING: Mermaid is a markdown-based diagramming tool. You write
84
+ * text like `A --> B` and it renders as a diagram. GitHub and GitLab
85
+ * render Mermaid blocks natively in markdown files.
86
+ */
87
+ function generateMermaidModuleDiagram(analysis) {
88
+ const lines = ['```mermaid', 'graph TD'];
89
+ // Style definitions
90
+ const roleStyles = {
91
+ api: ':::api',
92
+ service: ':::service',
93
+ model: ':::model',
94
+ utility: ':::util',
95
+ config: ':::config',
96
+ ui: ':::ui',
97
+ middleware: ':::mw',
98
+ };
99
+ // Add nodes
100
+ for (const module of analysis.modules) {
101
+ const id = sanitizeMermaidId(module.name);
102
+ const label = `${module.name}\\n(${module.files.length} files)`;
103
+ const style = module.role ? roleStyles[module.role] || '' : '';
104
+ lines.push(` ${id}["${label}"]${style}`);
105
+ }
106
+ // Add edges
107
+ const addedEdges = new Set();
108
+ for (const module of analysis.modules) {
109
+ for (const dep of module.dependencies) {
110
+ const fromId = sanitizeMermaidId(module.name);
111
+ const toId = sanitizeMermaidId(dep);
112
+ const edgeKey = `${fromId}-${toId}`;
113
+ if (!addedEdges.has(edgeKey)) {
114
+ lines.push(` ${fromId} --> ${toId}`);
115
+ addedEdges.add(edgeKey);
116
+ }
117
+ }
118
+ }
119
+ // Class definitions for styling
120
+ lines.push('');
121
+ lines.push(' classDef api fill:#e1f5fe,stroke:#0288d1');
122
+ lines.push(' classDef service fill:#f3e5f5,stroke:#7b1fa2');
123
+ lines.push(' classDef model fill:#e8f5e9,stroke:#388e3c');
124
+ lines.push(' classDef util fill:#fff3e0,stroke:#f57c00');
125
+ lines.push(' classDef config fill:#fce4ec,stroke:#c62828');
126
+ lines.push(' classDef ui fill:#e0f2f1,stroke:#00695c');
127
+ lines.push(' classDef mw fill:#f1f8e9,stroke:#558b2f');
128
+ lines.push('```');
129
+ return lines.join('\n');
130
+ }
131
+ function generateMermaidDependencyGraph(analysis) {
132
+ const lines = ['```mermaid', 'graph LR'];
133
+ // Only show unique module-level dependencies
134
+ const edges = new Set();
135
+ for (const edge of analysis.dependencyGraph) {
136
+ const from = edge.from.split('/').slice(0, 2).join('/');
137
+ const to = edge.to.split('/').slice(0, 2).join('/');
138
+ if (from !== to) {
139
+ edges.add(`${from}|${to}`);
140
+ }
141
+ }
142
+ for (const edge of edges) {
143
+ const [from, to] = edge.split('|');
144
+ lines.push(` ${sanitizeMermaidId(from)} --> ${sanitizeMermaidId(to)}`);
145
+ }
146
+ lines.push('```');
147
+ return lines.join('\n');
148
+ }
149
+ function generateStackDiagram(analysis) {
150
+ const lines = ['```mermaid', 'graph TB'];
151
+ // Build layer diagram
152
+ const hasAPI = analysis.apiEndpoints.length > 0;
153
+ const hasDB = analysis.externalDependencies.some(d => d.category === 'database');
154
+ const hasAuth = analysis.externalDependencies.some(d => d.category === 'auth');
155
+ if (hasAPI) {
156
+ lines.push(' Client["Client"] --> API["API Layer"]');
157
+ }
158
+ if (hasAuth) {
159
+ lines.push(' API --> Auth["Authentication"]');
160
+ }
161
+ lines.push(' API --> Services["Business Logic"]');
162
+ if (hasDB) {
163
+ const dbDeps = analysis.externalDependencies.filter(d => d.category === 'database');
164
+ lines.push(` Services --> DB["Database\\n(${dbDeps.map(d => d.name).join(', ')})"]`);
165
+ }
166
+ const cloudDeps = analysis.externalDependencies.filter(d => d.category === 'cloud');
167
+ if (cloudDeps.length > 0) {
168
+ lines.push(` Services --> Cloud["Cloud Services\\n(${cloudDeps.map(d => d.name).join(', ')})"]`);
169
+ }
170
+ lines.push('```');
171
+ return lines.join('\n');
172
+ }
173
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
174
+ function sanitizeMermaidId(name) {
175
+ return name.replace(/[^a-zA-Z0-9]/g, '_');
176
+ }
177
+ function capitalize(str) {
178
+ return str.charAt(0).toUpperCase() + str.slice(1);
179
+ }
180
+ //# sourceMappingURL=architecture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../../src/core/generators/architecture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ============================================================================
3
+ * FUNCTION & CLASS DOCUMENTATION GENERATOR
4
+ * ============================================================================
5
+ *
6
+ * Generates detailed documentation for all exported functions and classes.
7
+ * Also optionally generates JSDoc/docstring inserts for source code.
8
+ */
9
+ import { ProjectAnalysis, DocgenConfig, GeneratedDoc } from '../../types/definitions';
10
+ export declare function generateFunctionDocs(analysis: ProjectAnalysis, config: DocgenConfig): Promise<GeneratedDoc[]>;
11
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/core/generators/functions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAA2B,MAAM,yBAAyB,CAAC;AAI/G,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAsDzB"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * ============================================================================
4
+ * FUNCTION & CLASS DOCUMENTATION GENERATOR
5
+ * ============================================================================
6
+ *
7
+ * Generates detailed documentation for all exported functions and classes.
8
+ * Also optionally generates JSDoc/docstring inserts for source code.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.generateFunctionDocs = generateFunctionDocs;
12
+ const reasoner_1 = require("../../ai/reasoner");
13
+ async function generateFunctionDocs(analysis, config) {
14
+ const docs = [];
15
+ // Group functions and classes by file
16
+ for (const file of analysis.files) {
17
+ const exportedFuncs = file.functions.filter(f => f.isExported);
18
+ const exportedClasses = file.classes.filter(c => c.isExported);
19
+ if (exportedFuncs.length === 0 && exportedClasses.length === 0)
20
+ continue;
21
+ const sections = [];
22
+ sections.push(`# ${file.relativePath}\n`);
23
+ sections.push(`**Language:** ${file.language} | **Lines:** ${file.lineCount}\n`);
24
+ // Imports summary
25
+ if (file.imports.length > 0) {
26
+ const external = file.imports.filter(i => !i.isRelative);
27
+ const internal = file.imports.filter(i => i.isRelative);
28
+ if (external.length > 0) {
29
+ sections.push(`**External imports:** ${external.map(i => `\`${i.source}\``).join(', ')}`);
30
+ }
31
+ if (internal.length > 0) {
32
+ sections.push(`**Internal imports:** ${internal.map(i => `\`${i.source}\``).join(', ')}`);
33
+ }
34
+ sections.push('');
35
+ }
36
+ // Functions
37
+ if (exportedFuncs.length > 0) {
38
+ sections.push('## Functions\n');
39
+ for (const func of exportedFuncs) {
40
+ sections.push(formatFunctionDoc(func));
41
+ }
42
+ }
43
+ // Classes
44
+ if (exportedClasses.length > 0) {
45
+ sections.push('## Classes\n');
46
+ for (const cls of exportedClasses) {
47
+ sections.push(formatClassDoc(cls));
48
+ }
49
+ }
50
+ const safeName = file.relativePath.replace(/[^a-zA-Z0-9]/g, '-').replace(/-+/g, '-');
51
+ docs.push({
52
+ filePath: `docs/functions/${safeName}.md`,
53
+ content: sections.join('\n'),
54
+ generator: 'functions',
55
+ generatedAt: new Date(),
56
+ inputHash: file.contentHash,
57
+ });
58
+ }
59
+ return docs;
60
+ }
61
+ function formatFunctionDoc(func) {
62
+ const lines = [];
63
+ const asyncPrefix = func.isAsync ? 'async ' : '';
64
+ const params = func.params.map(p => {
65
+ let s = p.name;
66
+ if (p.type)
67
+ s += `: ${p.type}`;
68
+ if (p.isOptional)
69
+ s += '?';
70
+ if (p.defaultValue)
71
+ s += ` = ${p.defaultValue}`;
72
+ return s;
73
+ }).join(', ');
74
+ lines.push(`### \`${asyncPrefix}${func.name}(${params})\`\n`);
75
+ if (func.returnType) {
76
+ lines.push(`**Returns:** \`${func.returnType}\`\n`);
77
+ }
78
+ if (func.decorators.length > 0) {
79
+ lines.push(`**Decorators:** ${func.decorators.join(', ')}\n`);
80
+ }
81
+ if (func.complexity > 5) {
82
+ lines.push(`**Complexity:** ${func.complexity} ⚠️ (consider refactoring)\n`);
83
+ }
84
+ // Description
85
+ if (func.existingDoc) {
86
+ lines.push(`${cleanDoc(func.existingDoc)}\n`);
87
+ }
88
+ else {
89
+ lines.push(`${(0, reasoner_1.staticFunctionSummary)(func)}\n`);
90
+ }
91
+ // Parameters table
92
+ if (func.params.length > 0) {
93
+ lines.push('**Parameters:**\n');
94
+ lines.push('| Name | Type | Optional | Default | Description |');
95
+ lines.push('|------|------|:--------:|---------|-------------|');
96
+ for (const p of func.params) {
97
+ const opt = p.isOptional ? '✓' : '—';
98
+ const def = p.defaultValue || '—';
99
+ const desc = p.description || '—';
100
+ lines.push(`| \`${p.name}\` | \`${p.type || 'any'}\` | ${opt} | ${def} | ${desc} |`);
101
+ }
102
+ lines.push('');
103
+ }
104
+ lines.push(`📍 Defined at line ${func.startLine}–${func.endLine}\n`);
105
+ lines.push('---\n');
106
+ return lines.join('\n');
107
+ }
108
+ function formatClassDoc(cls) {
109
+ const lines = [];
110
+ lines.push(`### \`class ${cls.name}\`\n`);
111
+ if (cls.superClass)
112
+ lines.push(`**Extends:** \`${cls.superClass}\`\n`);
113
+ if (cls.implements.length > 0)
114
+ lines.push(`**Implements:** ${cls.implements.map(i => `\`${i}\``).join(', ')}\n`);
115
+ if (cls.decorators.length > 0)
116
+ lines.push(`**Decorators:** ${cls.decorators.join(', ')}\n`);
117
+ if (cls.existingDoc)
118
+ lines.push(`${cleanDoc(cls.existingDoc)}\n`);
119
+ // Properties
120
+ if (cls.properties.length > 0) {
121
+ lines.push('**Properties:**\n');
122
+ for (const prop of cls.properties) {
123
+ const vis = prop.isPrivate ? '🔒' : '🔓';
124
+ const stat = prop.isStatic ? ' (static)' : '';
125
+ lines.push(`- ${vis} \`${prop.name}\`: \`${prop.type || 'any'}\`${stat}`);
126
+ }
127
+ lines.push('');
128
+ }
129
+ // Methods
130
+ if (cls.methods.length > 0) {
131
+ lines.push('**Methods:**\n');
132
+ for (const method of cls.methods) {
133
+ const params = method.params.map(p => p.name).join(', ');
134
+ const ret = method.returnType ? ` → \`${method.returnType}\`` : '';
135
+ const asyncStr = method.isAsync ? 'async ' : '';
136
+ lines.push(`- \`${asyncStr}${method.name}(${params})\`${ret}`);
137
+ }
138
+ lines.push('');
139
+ }
140
+ lines.push(`📍 Defined at line ${cls.startLine}–${cls.endLine}\n`);
141
+ lines.push('---\n');
142
+ return lines.join('\n');
143
+ }
144
+ /** Clean up JSDoc/docstring formatting */
145
+ function cleanDoc(doc) {
146
+ return doc
147
+ .replace(/^\s*\*\s?/gm, '') // Remove JSDoc * prefixes
148
+ .replace(/@\w+/g, '') // Remove @tags (handled separately)
149
+ .trim();
150
+ }
151
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/core/generators/functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ============================================================================
3
+ * INTEGRATIONS DOCUMENTATION GENERATOR
4
+ * ============================================================================
5
+ */
6
+ import { ProjectAnalysis, DocgenConfig, GeneratedDoc } from '../../types/definitions';
7
+ export declare function generateIntegrationsDocs(analysis: ProjectAnalysis, config: DocgenConfig): Promise<GeneratedDoc>;
8
+ //# sourceMappingURL=integrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../../src/core/generators/integrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGtF,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,YAAY,CAAC,CA+CvB"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * ============================================================================
4
+ * INTEGRATIONS DOCUMENTATION GENERATOR
5
+ * ============================================================================
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.generateIntegrationsDocs = generateIntegrationsDocs;
9
+ const helpers_1 = require("../../utils/helpers");
10
+ async function generateIntegrationsDocs(analysis, config) {
11
+ const sections = [];
12
+ sections.push(`# Integrations & Dependencies — ${analysis.name}\n`);
13
+ const nonDevDeps = analysis.externalDependencies.filter(d => !d.isDev);
14
+ const categories = [...new Set(nonDevDeps.map(d => d.category))];
15
+ const priorityOrder = ['database', 'auth', 'payment', 'cloud', 'messaging', 'http', 'framework'];
16
+ categories.sort((a, b) => {
17
+ const ai = priorityOrder.indexOf(a);
18
+ const bi = priorityOrder.indexOf(b);
19
+ return (ai === -1 ? 99 : ai) - (bi === -1 ? 99 : bi);
20
+ });
21
+ for (const category of categories) {
22
+ const deps = nonDevDeps.filter(d => d.category === category);
23
+ sections.push(`## ${category.charAt(0).toUpperCase() + category.slice(1)}\n`);
24
+ for (const dep of deps) {
25
+ sections.push(`- **${dep.name}** ${dep.version || ''}`);
26
+ }
27
+ sections.push('');
28
+ }
29
+ const devDeps = analysis.externalDependencies.filter(d => d.isDev);
30
+ if (devDeps.length > 0) {
31
+ sections.push('## Dev Dependencies\n');
32
+ for (const dep of devDeps) {
33
+ sections.push(`- \`${dep.name}\` (${dep.category})`);
34
+ }
35
+ sections.push('');
36
+ }
37
+ const infraConfigs = analysis.configFiles.filter(c => ['docker', 'ci', 'infrastructure'].includes(c.type));
38
+ if (infraConfigs.length > 0) {
39
+ sections.push('## Infrastructure\n');
40
+ for (const cfg of infraConfigs) {
41
+ sections.push(`- **${cfg.path}** — ${cfg.description}`);
42
+ }
43
+ sections.push('');
44
+ }
45
+ return {
46
+ filePath: 'docs/integrations.md',
47
+ content: sections.join('\n'),
48
+ generator: 'integrations',
49
+ generatedAt: new Date(),
50
+ inputHash: (0, helpers_1.hashContent)(analysis.externalDependencies.map(d => d.name).join(',')),
51
+ };
52
+ }
53
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../../src/core/generators/integrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * ============================================================================
3
+ * MODULE DOCUMENTATION GENERATOR
4
+ * ============================================================================
5
+ *
6
+ * Generates a documentation page for each significant module.
7
+ * Output: docs/modules/{module-name}.md
8
+ */
9
+ import { ProjectAnalysis, DocgenConfig, GeneratedDoc } from '../../types/definitions';
10
+ export declare function generateModuleDocs(analysis: ProjectAnalysis, config: DocgenConfig): Promise<GeneratedDoc[]>;
11
+ //# sourceMappingURL=modules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../src/core/generators/modules.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAc,MAAM,yBAAyB,CAAC;AAOlG,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /**
3
+ * ============================================================================
4
+ * MODULE DOCUMENTATION GENERATOR
5
+ * ============================================================================
6
+ *
7
+ * Generates a documentation page for each significant module.
8
+ * Output: docs/modules/{module-name}.md
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.generateModuleDocs = generateModuleDocs;
12
+ const reasoner_1 = require("../../ai/reasoner");
13
+ const helpers_1 = require("../../utils/helpers");
14
+ const logger_1 = require("../../utils/logger");
15
+ const log = logger_1.logger.child('ModuleGen');
16
+ async function generateModuleDocs(analysis, config) {
17
+ log.info(`Generating documentation for ${analysis.modules.length} modules...`);
18
+ const docs = [];
19
+ // Generate index page
20
+ docs.push(generateModuleIndex(analysis));
21
+ // Generate per-module docs
22
+ for (const module of analysis.modules) {
23
+ if (module.files.length < 1)
24
+ continue; // Skip empty modules
25
+ const doc = await generateSingleModuleDoc(module, config);
26
+ docs.push(doc);
27
+ }
28
+ return docs;
29
+ }
30
+ function generateModuleIndex(analysis) {
31
+ const sections = [];
32
+ sections.push('# Modules\n');
33
+ sections.push('This project is organized into the following modules:\n');
34
+ sections.push('| Module | Role | Files | Lines | Dependencies |');
35
+ sections.push('|--------|------|-------|-------|-------------|');
36
+ for (const module of analysis.modules) {
37
+ const link = `[${module.name}](./modules/${sanitizeFilename(module.name)}.md)`;
38
+ const role = module.role || '—';
39
+ const deps = module.dependencies.length || 0;
40
+ sections.push(`| ${link} | ${role} | ${module.files.length} | ${module.totalLines} | ${deps} |`);
41
+ }
42
+ return {
43
+ filePath: 'docs/modules/index.md',
44
+ content: sections.join('\n'),
45
+ generator: 'modules',
46
+ generatedAt: new Date(),
47
+ inputHash: (0, helpers_1.hashContent)(analysis.modules.map(m => m.name).join(',')),
48
+ };
49
+ }
50
+ async function generateSingleModuleDoc(module, config) {
51
+ const sections = [];
52
+ // Header
53
+ sections.push(`# Module: ${module.name}\n`);
54
+ // Role badge
55
+ if (module.role) {
56
+ sections.push(`> **Role:** ${module.role}\n`);
57
+ }
58
+ // Description
59
+ const description = config.ai.enabled
60
+ ? await (0, reasoner_1.summarizeModule)(module, config.ai)
61
+ : (0, reasoner_1.staticModuleSummary)(module);
62
+ sections.push('## Overview\n');
63
+ sections.push(description + '\n');
64
+ // Files
65
+ sections.push('## Files\n');
66
+ for (const file of module.files) {
67
+ const funcCount = file.functions.length;
68
+ const classCount = file.classes.length;
69
+ const meta = [];
70
+ if (funcCount > 0)
71
+ meta.push(`${funcCount} functions`);
72
+ if (classCount > 0)
73
+ meta.push(`${classCount} classes`);
74
+ sections.push(`- \`${file.relativePath}\` — ${meta.join(', ') || `${file.lineCount} lines`}`);
75
+ }
76
+ sections.push('');
77
+ // Public API
78
+ if (module.publicAPI.length > 0) {
79
+ sections.push('## Public API\n');
80
+ for (const exp of module.publicAPI) {
81
+ sections.push(`- \`${exp.type}\` **${exp.name}**${exp.isDefault ? ' (default)' : ''}`);
82
+ }
83
+ sections.push('');
84
+ }
85
+ // Key Functions
86
+ const allFunctions = module.files.flatMap(f => f.functions).filter(f => f.isExported);
87
+ if (allFunctions.length > 0) {
88
+ sections.push('## Key Functions\n');
89
+ for (const func of allFunctions.slice(0, 20)) {
90
+ const params = func.params.map(p => `${p.name}${p.type ? ': ' + p.type : ''}`).join(', ');
91
+ sections.push(`### \`${func.name}(${params})\`\n`);
92
+ if (func.returnType) {
93
+ sections.push(`**Returns:** \`${func.returnType}\`\n`);
94
+ }
95
+ const summary = (0, reasoner_1.staticFunctionSummary)(func);
96
+ sections.push(summary + '\n');
97
+ }
98
+ }
99
+ // Classes
100
+ const allClasses = module.files.flatMap(f => f.classes);
101
+ if (allClasses.length > 0) {
102
+ sections.push('## Classes\n');
103
+ for (const cls of allClasses) {
104
+ sections.push(`### \`${cls.name}\`\n`);
105
+ if (cls.superClass)
106
+ sections.push(`**Extends:** \`${cls.superClass}\`\n`);
107
+ if (cls.implements.length > 0)
108
+ sections.push(`**Implements:** ${cls.implements.map(i => `\`${i}\``).join(', ')}\n`);
109
+ if (cls.methods.length > 0) {
110
+ sections.push('**Methods:**\n');
111
+ for (const method of cls.methods) {
112
+ const params = method.params.map(p => p.name).join(', ');
113
+ const vis = method.name.startsWith('_') ? '🔒' : '🔓';
114
+ sections.push(`- ${vis} \`${method.name}(${params})\`${method.returnType ? ` → \`${method.returnType}\`` : ''}`);
115
+ }
116
+ sections.push('');
117
+ }
118
+ }
119
+ }
120
+ // Dependencies
121
+ if (module.dependencies.length > 0) {
122
+ sections.push('## Dependencies\n');
123
+ sections.push('This module depends on:\n');
124
+ for (const dep of module.dependencies) {
125
+ sections.push(`- [\`${dep}\`](./modules/${sanitizeFilename(dep)}.md)`);
126
+ }
127
+ sections.push('');
128
+ }
129
+ // Dependents
130
+ if (module.dependents.length > 0) {
131
+ sections.push('## Used By\n');
132
+ for (const dep of module.dependents) {
133
+ sections.push(`- [\`${dep}\`](./modules/${sanitizeFilename(dep)}.md)`);
134
+ }
135
+ sections.push('');
136
+ }
137
+ return {
138
+ filePath: `docs/modules/${sanitizeFilename(module.name)}.md`,
139
+ content: sections.join('\n'),
140
+ generator: 'modules',
141
+ generatedAt: new Date(),
142
+ inputHash: (0, helpers_1.hashContent)(module.files.map(f => f.contentHash).join(',')),
143
+ };
144
+ }
145
+ function sanitizeFilename(name) {
146
+ return name.replace(/[^a-zA-Z0-9-]/g, '-').replace(/-+/g, '-');
147
+ }
148
+ //# sourceMappingURL=modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/core/generators/modules.ts"],"names":[],"mappings":"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"}