docstodev 1.0.2 → 1.0.3

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 (39) hide show
  1. package/package.json +1 -1
  2. package/src/ai/analyzer.ts +3 -1
  3. package/src/analyzers/languageAnalyzer.ts +297 -5
  4. package/src/commands/generateSummary.ts +129 -39
  5. package/src/exporters/html.ts +134 -52
  6. package/.env +0 -1
  7. package/dist/ai/analyzer.d.ts +0 -3
  8. package/dist/ai/analyzer.d.ts.map +0 -1
  9. package/dist/ai/analyzer.js +0 -43
  10. package/dist/ai/analyzer.js.map +0 -1
  11. package/dist/analyzers/languageAnalyzer.d.ts +0 -18
  12. package/dist/analyzers/languageAnalyzer.d.ts.map +0 -1
  13. package/dist/analyzers/languageAnalyzer.js +0 -251
  14. package/dist/analyzers/languageAnalyzer.js.map +0 -1
  15. package/dist/cache/cacheManager.d.ts +0 -38
  16. package/dist/cache/cacheManager.d.ts.map +0 -1
  17. package/dist/cache/cacheManager.js +0 -141
  18. package/dist/cache/cacheManager.js.map +0 -1
  19. package/dist/cli/index.d.ts +0 -3
  20. package/dist/cli/index.d.ts.map +0 -1
  21. package/dist/cli/index.js +0 -316
  22. package/dist/cli/index.js.map +0 -1
  23. package/dist/commands/classify.d.ts +0 -2
  24. package/dist/commands/classify.d.ts.map +0 -1
  25. package/dist/commands/classify.js +0 -37
  26. package/dist/commands/classify.js.map +0 -1
  27. package/dist/commands/generateSummary.d.ts +0 -5
  28. package/dist/commands/generateSummary.d.ts.map +0 -1
  29. package/dist/commands/generateSummary.js +0 -54
  30. package/dist/commands/generateSummary.js.map +0 -1
  31. package/dist/commands/run.d.ts +0 -5
  32. package/dist/commands/run.d.ts.map +0 -1
  33. package/dist/commands/run.js +0 -326
  34. package/dist/commands/run.js.map +0 -1
  35. package/dist/exporters/html.d.ts +0 -6
  36. package/dist/exporters/html.d.ts.map +0 -1
  37. package/dist/exporters/html.js +0 -517
  38. package/dist/exporters/html.js.map +0 -1
  39. package/src/commands/classify.ts +0 -40
@@ -1,5 +0,0 @@
1
- export declare function runCommand(language?: "fr" | "en", options?: {
2
- incremental?: boolean;
3
- clearCache?: boolean;
4
- }): Promise<number>;
5
- //# sourceMappingURL=run.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAsJA,wBAAsB,UAAU,CAC5B,QAAQ,GAAE,IAAI,GAAG,IAAW,EAC5B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9D,OAAO,CAAC,MAAM,CAAC,CA0MjB"}
@@ -1,326 +0,0 @@
1
- // Emplacement absolu : M:\workspace\extensions\docstodev\src\commands\run.ts
2
- import { globby } from "globby";
3
- import { writeFileSync, readFileSync, existsSync, mkdirSync } from "node:fs";
4
- import path from "node:path";
5
- import puppeteer, { Browser, Page } from "puppeteer";
6
- import { exportToHTML } from "../exporters/html.js";
7
- import { askAI } from "../ai/analyzer.js";
8
- import { getAnalyzer, getSupportedExtensions } from "../analyzers/languageAnalyzer.js";
9
- import { CacheManager } from "../cache/cacheManager.js";
10
- const i18n = {
11
- fr: {
12
- role: "Rôle et responsabilités",
13
- density: "Complexité et maintenance",
14
- exports: "Exports publics",
15
- imports: "Dépendances",
16
- structure: "Architecture du projet",
17
- deps: "Modules externes",
18
- aiTitle: "Analyse Intelligente",
19
- genAt: "Généré le",
20
- reportTitle: "Rapport Technique DocsToDev",
21
- functions: "Fonctions",
22
- classes: "Classes",
23
- types: "Types/Interfaces",
24
- complexity: "Score de complexité"
25
- },
26
- en: {
27
- role: "Role and responsibilities",
28
- density: "Complexity & Maintenance",
29
- exports: "Public exports",
30
- imports: "Dependencies",
31
- structure: "Project Architecture",
32
- deps: "External Modules",
33
- aiTitle: "Smart Analysis",
34
- genAt: "Generated on",
35
- reportTitle: "DocsToDev Technical Report",
36
- functions: "Functions",
37
- classes: "Classes",
38
- types: "Types/Interfaces",
39
- complexity: "Complexity score"
40
- }
41
- };
42
- function buildTree(files) {
43
- const root = {};
44
- for (const file of files) {
45
- const parts = file.split(path.sep);
46
- let current = root;
47
- for (const part of parts) {
48
- if (!current[part]) {
49
- current[part] = {};
50
- }
51
- current = current[part];
52
- }
53
- }
54
- return root;
55
- }
56
- function renderTree(tree, prefix = "", currentPath = "") {
57
- const entries = Object.keys(tree).sort();
58
- let output = "";
59
- entries.forEach((key, index) => {
60
- const isLast = index === entries.length - 1;
61
- const connector = isLast ? "└─ " : "├─ ";
62
- const child = tree[key];
63
- const fullPath = currentPath ? `${currentPath}/${key}` : key;
64
- const isFile = !child || Object.keys(child).length === 0;
65
- const label = isFile ? `[${key}](../${fullPath.replace(/\\/g, '/')})` : `**${key}/**`;
66
- output += `${prefix}${connector}${label}\n`;
67
- if (child && typeof child === 'object' && Object.keys(child).length > 0) {
68
- output += renderTree(child, prefix + (isLast ? " " : "│ "), fullPath);
69
- }
70
- });
71
- return output;
72
- }
73
- function analyzeFile(file, content) {
74
- const lines = content.split(/\r?\n/);
75
- const analyzer = getAnalyzer(file);
76
- if (analyzer) {
77
- const result = analyzer.analyzeFile(content);
78
- const ifCount = (content.match(/\b(if|elif|else if)\s*\(/g) || []).length;
79
- const forCount = (content.match(/\b(for|foreach|while)\s*\(/g) || []).length;
80
- const whileCount = (content.match(/\bwhile\s*\(/g) || []).length;
81
- const complexity = lines.length * 0.1 +
82
- result.functions.length * 2 +
83
- result.classes.length * 3 +
84
- result.imports.length * 1.5 +
85
- ifCount * 1 +
86
- forCount * 1.5 +
87
- whileCount * 1.5;
88
- return {
89
- path: file,
90
- lines: lines.length,
91
- exports: result.exports,
92
- imports: result.imports,
93
- functions: result.functions,
94
- classes: result.classes,
95
- types: result.types,
96
- complexity: Math.round(complexity)
97
- };
98
- }
99
- return {
100
- path: file,
101
- lines: lines.length,
102
- exports: [],
103
- imports: [],
104
- functions: [],
105
- classes: [],
106
- types: [],
107
- complexity: 0
108
- };
109
- }
110
- function getComplexityLevel(score) {
111
- if (score < 50)
112
- return "🟢 Faible";
113
- if (score < 150)
114
- return "🟡 Modérée";
115
- if (score < 300)
116
- return "🟠 Élevée";
117
- return "🔴 Très élevée";
118
- }
119
- function formatAISummary(summary) {
120
- let formatted = summary.replace(/([a-zA-Z0-9_-]+\.(ts|js|py|java|cs|go|rs|tsx|jsx|mjs|cjs))/g, '`$1`');
121
- formatted = formatted.replace(/([a-zA-Z0-9_-]+\/[a-zA-Z0-9_\/-]+)/g, '`$1`');
122
- formatted = formatted.replace(/\b([a-z][a-zA-Z0-9]*[A-Z][a-zA-Z0-9]*|[A-Z][a-z][a-zA-Z0-9]*)\b/g, '`$1`');
123
- formatted = formatted.replace(/\.\s+/g, '.\n\n');
124
- formatted = formatted.replace(/`+/g, '`');
125
- return formatted.trim();
126
- }
127
- export async function runCommand(language = "fr", options = {}) {
128
- const t = i18n[language];
129
- console.log("\n╔══════════════════════════════════════════╗");
130
- console.log("║ 🚀 DocsToDev - Analyse Avancée ║");
131
- console.log("╚══════════════════════════════════════════╝\n");
132
- const projectRoot = process.cwd();
133
- const cache = new CacheManager(projectRoot);
134
- if (options.clearCache) {
135
- console.log("🗑️ Nettoyage du cache...");
136
- cache.invalidateAll();
137
- console.log(" ✓ Cache vidé\n");
138
- }
139
- console.log("📂 Étape 1/6 : Scan des fichiers du projet...");
140
- const supportedExts = getSupportedExtensions();
141
- const files = await globby(["**/*"], {
142
- gitignore: true,
143
- ignore: ["**/node_modules/**", "**/.git/**", "**/dist/**", "**/docs/**", "**/.docstodev/**"]
144
- });
145
- const sourceFiles = files.filter(f => {
146
- const ext = path.extname(f);
147
- return supportedExts.includes(ext);
148
- });
149
- console.log(` ✓ ${files.length} fichiers détectés (${sourceFiles.length} fichiers sources)\n`);
150
- const docsDir = "docs";
151
- if (!existsSync(docsDir)) {
152
- console.log("📁 Création du dossier 'docs'...");
153
- mkdirSync(docsDir, { recursive: true });
154
- }
155
- let filesToAnalyze = sourceFiles;
156
- let cachedCount = 0;
157
- if (options.incremental) {
158
- console.log("⚡ Mode incrémental activé - Détection des modifications...");
159
- const modifiedFiles = cache.getModifiedFiles(sourceFiles);
160
- filesToAnalyze = modifiedFiles;
161
- cachedCount = sourceFiles.length - modifiedFiles.length;
162
- console.log(` ✓ ${modifiedFiles.length} fichiers modifiés, ${cachedCount} en cache\n`);
163
- }
164
- console.log("🔍 Étape 2/6 : Analyse approfondie des fichiers sources...");
165
- let aiContext = `Tu es un expert en analyse de code. Analyse ces fichiers et explique leur architecture, leurs responsabilités et comment ils collaborent ensemble. Identifie le rôle de chaque fichier (Page, Component, Service, API, Utility, etc.). Sois précis et technique.\n\n`;
166
- let detailContent = `## 🔬 Analyse détaillée des composants\n\n`;
167
- let mermaidGraph = "graph LR\n";
168
- const allDeps = new Map();
169
- const analyses = [];
170
- let processedCount = 0;
171
- if (options.incremental) {
172
- for (const file of sourceFiles) {
173
- if (!filesToAnalyze.includes(file)) {
174
- const cached = cache.get(file);
175
- if (cached) {
176
- analyses.push(cached.analysis);
177
- }
178
- }
179
- }
180
- }
181
- for (const file of filesToAnalyze) {
182
- processedCount++;
183
- if (processedCount % 5 === 0) {
184
- process.stdout.write(` Analysé: ${processedCount}/${filesToAnalyze.length} fichiers...\r`);
185
- }
186
- const content = readFileSync(file, "utf-8");
187
- const analysis = analyzeFile(file, content);
188
- analyses.push(analysis);
189
- if (options.incremental) {
190
- cache.set(file, content, analysis);
191
- }
192
- const fileNameSanitized = path.basename(file).replace(/[.\-]/g, '_');
193
- detailContent += `### 📄 [\`${file}\`](../${file.replace(/\\/g, '/')})\n\n`;
194
- detailContent += `**${t.density}** : ${analysis.lines} lignes • ${getComplexityLevel(analysis.complexity)} (${analysis.complexity})\n\n`;
195
- if (analysis.functions.length > 0) {
196
- detailContent += `**${t.functions}** : ${analysis.functions.map(f => `\`${f}()\``).join(", ")}\n\n`;
197
- }
198
- if (analysis.classes.length > 0) {
199
- detailContent += `**${t.classes}** : ${analysis.classes.map(c => `\`${c}\``).join(", ")}\n\n`;
200
- }
201
- if (analysis.types.length > 0) {
202
- detailContent += `**${t.types}** : ${analysis.types.map(t => `\`${t}\``).join(", ")}\n\n`;
203
- }
204
- if (analysis.exports.length > 0) {
205
- detailContent += `**${t.exports}** : ${analysis.exports.map(e => `\`${e}\``).join(", ")}\n\n`;
206
- }
207
- if (analysis.imports.length > 0) {
208
- detailContent += `**${t.imports}** :\n\n`;
209
- analysis.imports.forEach(imp => {
210
- allDeps.set(imp.name, imp.type);
211
- const usageInfo = imp.usage ? ` → utilise \`${imp.usage}\`` : '';
212
- detailContent += `• \`${imp.name}\` (${imp.type})${usageInfo}\n`;
213
- if (imp.type === 'Interne') {
214
- const targetName = path.basename(imp.name).replace(/[.\-]/g, '_');
215
- mermaidGraph += ` ${fileNameSanitized} --> ${targetName}\n`;
216
- }
217
- });
218
- detailContent += `\n`;
219
- }
220
- detailContent += `---\n\n`;
221
- aiContext += `═══ FICHIER: ${file} ═══\n`;
222
- aiContext += `Langage: ${path.extname(file)}\n`;
223
- aiContext += `Complexité: ${analysis.complexity}\n`;
224
- aiContext += `Fonctions: ${analysis.functions.join(", ") || "Aucune"}\n`;
225
- aiContext += `Classes: ${analysis.classes.join(", ") || "Aucune"}\n`;
226
- aiContext += `Exports: ${analysis.exports.join(", ") || "Aucun"}\n`;
227
- aiContext += `Dépendances: ${analysis.imports.map(i => i.name).join(", ")}\n`;
228
- aiContext += `\nExtrait du code:\n${content.split(/\r?\n/).slice(0, 50).join("\n")}\n\n`;
229
- }
230
- const totalAnalyzed = processedCount + cachedCount;
231
- console.log(` ✓ ${totalAnalyzed} fichiers analysés (${processedCount} nouvelles analyses, ${cachedCount} depuis cache)\n`);
232
- console.log("🤖 Étape 3/6 : Génération de l'analyse intelligente (IA)...");
233
- const aiSummary = await askAI(aiContext) || "⚠️ Analyse IA indisponible. Vérifiez votre configuration.";
234
- const formattedAiSummary = formatAISummary(aiSummary);
235
- console.log(` ✓ Synthèse IA générée\n`);
236
- console.log("📝 Étape 4/6 : Construction du rapport Markdown...");
237
- let finalMD = `# ${t.reportTitle}\n\n`;
238
- finalMD += `> 📅 ${t.genAt} : ${new Date().toLocaleString("fr-FR", { dateStyle: "full", timeStyle: "short" })}\n`;
239
- finalMD += `> 📊 ${totalAnalyzed} fichiers analysés • ${allDeps.size} dépendances identifiées\n`;
240
- if (options.incremental && cachedCount > 0) {
241
- finalMD += `> ⚡ Mode incrémental : ${cachedCount} fichiers depuis cache\n`;
242
- }
243
- finalMD += `\n`;
244
- finalMD += `## 💡 ${t.aiTitle}\n\n${formattedAiSummary}\n\n`;
245
- finalMD += `## 📂 ${t.structure}\n\n`;
246
- finalMD += "```\n";
247
- finalMD += renderTree(buildTree(files));
248
- finalMD += "```\n\n";
249
- finalMD += detailContent;
250
- finalMD += `## 📦 ${t.deps}\n\n`;
251
- finalMD += `| Module | Type | Occurrences |\n`;
252
- finalMD += `| :--- | :--- | :---: |\n`;
253
- const depCount = new Map();
254
- analyses.forEach(a => {
255
- a.imports.forEach(imp => {
256
- depCount.set(imp.name, (depCount.get(imp.name) || 0) + 1);
257
- });
258
- });
259
- Array.from(allDeps.entries())
260
- .sort(([a], [b]) => a.localeCompare(b))
261
- .forEach(([name, type]) => {
262
- finalMD += `| \`${name}\` | ${type} | ${depCount.get(name) || 1} |\n`;
263
- });
264
- writeFileSync(path.join(docsDir, "docs-to-dev.md"), finalMD);
265
- console.log(` ✓ Rapport Markdown généré : docs/docs-to-dev.md\n`);
266
- console.log("🎨 Étape 5/6 : Export HTML avec graphiques...");
267
- const fileTreeStructure = buildTree(files);
268
- exportToHTML(docsDir, finalMD, mermaidGraph, language, fileTreeStructure);
269
- console.log(` ✓ Rapport HTML généré : docs/report.html\n`);
270
- console.log("📄 Étape 6/6 : Génération du PDF...");
271
- await generatePDF(path.join(docsDir, "report.html"), path.join(docsDir, "report.pdf"));
272
- console.log(` ✓ PDF exporté : docs/report.pdf\n`);
273
- console.log("╔══════════════════════════════════════════╗");
274
- console.log("║ ✨ Analyse terminée avec succès ! ║");
275
- console.log("╚══════════════════════════════════════════╝\n");
276
- console.log(`📊 Statistiques :`);
277
- console.log(` • ${files.length} fichiers scannés`);
278
- console.log(` • ${totalAnalyzed} fichiers analysés`);
279
- if (options.incremental) {
280
- console.log(` • ${cachedCount} fichiers depuis cache`);
281
- }
282
- console.log(` • ${allDeps.size} dépendances uniques`);
283
- const avgComp = analyses.length > 0 ? Math.round(analyses.reduce((sum, a) => sum + a.complexity, 0) / analyses.length) : 0;
284
- console.log(` • Complexité moyenne : ${avgComp}`);
285
- if (options.incremental) {
286
- const cacheStats = cache.getStats();
287
- console.log(`\n💾 Cache :`);
288
- console.log(` • ${cacheStats.total} entrées`);
289
- console.log(` • ${Math.round(cacheStats.size / 1024)} KB`);
290
- }
291
- console.log("");
292
- return files.length;
293
- }
294
- async function generatePDF(htmlPath, outputPath) {
295
- let browser = null;
296
- try {
297
- browser = await puppeteer.launch({
298
- headless: true,
299
- args: ['--no-sandbox', '--disable-setuid-sandbox']
300
- });
301
- const page = await browser.newPage();
302
- await page.goto(`file://${path.resolve(htmlPath)}`, {
303
- waitUntil: "networkidle0",
304
- timeout: 30000
305
- });
306
- await page.waitForFunction(() => {
307
- return typeof window.mermaid !== 'undefined';
308
- }, { timeout: 5000 }).catch(() => { });
309
- await new Promise(resolve => setTimeout(resolve, 2000));
310
- await page.pdf({
311
- path: outputPath,
312
- format: 'A4',
313
- printBackground: true,
314
- margin: { top: '1cm', bottom: '1cm', left: '1cm', right: '1cm' },
315
- preferCSSPageSize: true
316
- });
317
- await browser.close();
318
- }
319
- catch (e) {
320
- console.error(" ⚠️ Erreur lors de la génération du PDF:", e);
321
- if (browser) {
322
- await browser.close().catch(() => { });
323
- }
324
- }
325
- }
326
- //# sourceMappingURL=run.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- interface TreeStructure {
2
- [key: string]: TreeStructure | null;
3
- }
4
- export declare function exportToHTML(docsDir: string, markdownContent: string, mermaidGraph: string, lang?: "fr" | "en", fileTree?: TreeStructure): void;
5
- export {};
6
- //# sourceMappingURL=html.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/exporters/html.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,YAAY,CACxB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,IAAI,GAAG,IAAW,EACxB,QAAQ,CAAC,EAAE,aAAa,QA+e3B"}