docstodev 2.1.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,60 @@
1
+
2
+ DocsToDev 🚀
3
+ Solution d'automatisation de documentation technique intelligente
4
+
5
+ DocsToDev est une extension avancée pour Visual Studio Code conçue pour générer automatiquement une documentation technique complète, structurée et compréhensible à partir du code source d'un projet. Elle transforme n'importe quelle base de code complexe en une source de savoir claire et exploitable pour tous les acteurs du projet.
6
+
7
+ ✨ Fonctionnalités Clés
8
+
9
+ Analyse Statique Profonde : Analyse l'intégralité de l'arborescence en parcourant tous les fichiers et sous-dossiers pertinents.
10
+
11
+
12
+ Exclusion Intelligente : Ignore automatiquement les répertoires non essentiels comme node_modules, .git, dist, ou .docstodev.
13
+
14
+
15
+ Système Hybride Unique : Combine une analyse statique déterministe (imports, exports, routes) avec une couche d'Intelligence Artificielle (GPT, Grok) pour des descriptions humaines explicites sans "inventer" de données.
16
+
17
+
18
+ Visualisation des Dépendances : Génération automatique de graphiques (Mermaid) pour visualiser les interactions entre composants, APIs et services.
19
+
20
+ Mode Incrémental & Cache : Système de cache performant permettant de n'analyser que les fichiers modifiés depuis la dernière session.
21
+
22
+
23
+ Multi-formats d'Export : Exportation de la documentation en .md (Markdown), .html (interactif), .pdf et .txt.
24
+
25
+ 🛠️ Installation et Prérequis
26
+ Pour utiliser DocsToDev en ligne de commande, suivez ces étapes :
27
+
28
+ Installation des dépendances :
29
+
30
+ Compilation du projet (nécessaire pour transformer le TypeScript en JavaScript exécutable) :
31
+
32
+ 🚀 Utilisation (CLI)
33
+ Une fois le projet compilé, vous pouvez lancer l'analyse via npx :
34
+
35
+ Options disponibles :
36
+
37
+ --lang <fr|en> : Force la langue du rapport (Français ou Anglais).
38
+
39
+ -i, --incremental : Analyse uniquement les fichiers modifiés pour un gain de temps majeur.
40
+
41
+ --clear-cache : Vide le cache avant de démarrer l'analyse.
42
+
43
+ --no-animation : Désactive les animations dans le terminal.
44
+
45
+ Gestion du cache :
46
+ 🏗️ Architecture et Langages Supportés
47
+ DocsToDev repose sur un moteur capable d'identifier automatiquement le rôle exact de chaque fichier (Page, UI Component, API endpoint, Service, etc.).
48
+
49
+ Langages supportés :
50
+
51
+ Web : TypeScript (.ts, .tsx), JavaScript (.js, .jsx, .mjs, .cjs).
52
+
53
+ Backend & Système : Python (.py), Java (.java), C# (.cs), Go (.go), Rust (.rs).
54
+
55
+ 👥 Bénéficiaires et Cas d'Usage
56
+ 📄 Licence et Crédits
57
+ Développé par EspoirDev Massamba Kiminou Chadrack Delmard.
58
+
59
+
60
+ Date du projet : 6 janvier 2026.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docstodev",
3
- "version": "2.1.1",
3
+ "version": "3.0.2",
4
4
  "description": "Solution d’automatisation de documentation technique intelligente avec IA",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
@@ -1,225 +0,0 @@
1
- # Rapport Technique DocsToDev
2
-
3
- > 📅 Généré le : vendredi 9 janvier 2026 à 09:22
4
- > 📊 7 fichiers analysés • 15 dépendances identifiées
5
-
6
- ## 💡 Analyse Intelligente
7
-
8
- ## 1.
9
-
10
- **`But` du `Projet`**
11
- `Le` projet `DocsToDev` vise à analyser des données techniques brutes et à les transformer en documentation métier claire et structurée.
12
-
13
- `Il` résout les problèmes de compréhension et d'analyse de données techniques complexes pour les développeurs et les équipes de développement.
14
-
15
- `Le` public cible de ce projet inclut les développeurs, les architectes logiciels, et les équipes de développement qui cherchent à améliorer la qualité et la compréhension de leurs projets logiciels.
16
-
17
- ## 2.
18
-
19
- **`Design` `System` Détecté**
20
- `Le` design system détecté dans le projet inclut :
21
- - **`Palette` de couleurs** : `Les` couleurs primaires et secondaires utilisées dans le projet ne sont pas explicitement définies dans les extraits de code fournis, mais il est mentionné que la palette de couleurs fait partie de l'analyse du design system.
22
-
23
- - **`Typographie`** : `Les` polices utilisées ne sont pas spécifiquement mentionnées dans les extraits de code fournis.
24
-
25
- - **`Patterns` de composants** : `Les` patterns de composants, tels que les cartes, les modales, les formulaires, etc., sont détectés et documentés dans le projet.
26
-
27
- ## 3.
28
-
29
- **⚠️ `Risques` `Identifi`és**
30
- `Les` risques potentiels identifiés dans le projet sont classés par niveau :
31
- - 🔴 **`Critique`** :
32
- - `La` sécurité du projet pourrait être compromise si les clés API comme `GROQ_API_KEY` ne sont pas sécurisées correctement.
33
-
34
- - L'architecture du projet pourrait être affectée par la complexité et la maintenance des fichiers et des dépendances.
35
-
36
- - 🟡 **`Moyen`** :
37
- - `La` dette technique et les performances du projet pourraient être impactées par la complexité croissante des analyses et des exports.
38
-
39
- - 🟢 **`Faible`** :
40
- - `Les` améliorations mineures pourraient inclure la optimisation des requêtes, la mise à jour des dépendances, et la réduction de la duplication de code.
41
-
42
- ## 4.
43
-
44
- **💡 `Recommandations`**
45
- `Les` actions concrètes pour améliorer le projet sont :
46
- - **`Refactoring`** : Réorganiser le code pour améliorer la lisibilité et la maintainabilité.
47
-
48
- - **`Optimisations`** : `Optimiser` les performances en utilisant des méthodes plus efficaces pour les analyses et les exports.
49
-
50
- - **`Bonnes` pratiques** : `Adopter` des bonnes pratiques de développement telles que les tests unitaires et d'intégration, et la mise à jour régulière des dépendances.
51
-
52
- ## 5.
53
-
54
- **`Analyse` Détaillée des `Fichiers`**
55
- - **`src/ai/`analyzer.ts`** : `Ce` fichier contient les fonctions d'analyse de l'IA, notamment `askAI` et `askAIDetailed`, qui analysent les données techniques et retournent des résultats détaillés.
56
-
57
- - **`src/analyzers/`languageAnalyzer`.ts`** : `Ce` fichier contient les classes et les fonctions d'analyse de langage, notamment `TSJSAnalyzer`, qui analyse les fichiers de code et retourne des informations sur les exports, les imports, les fonctions, les classes, etc.
58
-
59
- - **`src/cache/`cacheManager`.ts`** : `Ce` fichier contient la classe `CacheManager`, qui gère le cache des analyses pour améliorer les performances.
60
-
61
- - **`src/cli/`index.ts`** : `Ce` fichier contient le point d'entrée de la ligne de commande, qui utilise les commandes pour exécuter les analyses et générer les rapports.
62
-
63
- - **`src/commands/`generateSummary`.ts`** : `Ce` fichier contient la fonction `generateSummary`, qui génère un résumé du projet en fonction des données d'analyse.
64
-
65
- - **`src/commands/`run.ts`** : `Ce` fichier contient la fonction `runCommand`, qui exécute les analyses et génère les rapports en fonction des options de la ligne de commande.
66
-
67
- - **`src/exporters/`html.ts`** : `Ce` fichier contient la fonction `exportToHTML`, qui exporte les résultats des analyses en format HTML.
68
-
69
- ## 📂 Architecture du projet
70
-
71
- ```
72
- ├─ [package-lock.json](../package-lock.json)
73
- ├─ [package.json](../package.json)
74
- ├─ [src/ai/analyzer.ts](../src/ai/analyzer.ts)
75
- ├─ [src/analyzers/languageAnalyzer.ts](../src/analyzers/languageAnalyzer.ts)
76
- ├─ [src/cache/cacheManager.ts](../src/cache/cacheManager.ts)
77
- ├─ [src/cli/index.ts](../src/cli/index.ts)
78
- ├─ [src/commands/generateSummary.ts](../src/commands/generateSummary.ts)
79
- ├─ [src/commands/run.ts](../src/commands/run.ts)
80
- ├─ [src/exporters/html.ts](../src/exporters/html.ts)
81
- └─ [tsconfig.json](../tsconfig.json)
82
- ```
83
-
84
- ## 🔬 Analyse détaillée des composants
85
-
86
- ### 📄 [`src/ai/analyzer.ts`](../src/ai/analyzer.ts)
87
-
88
- **Complexité et maintenance** : 289 lignes • 🟢 Faible (46)
89
-
90
- **Fonctions** : `askAI()`, `askAIDetailed()`, `buildSystemPrompt()`, `parseAIResponse()`
91
-
92
- **Types/Interfaces** : `AIAnalysisOptions`, `AIAnalysisResult`
93
-
94
- **Exports publics** : `AIAnalysisOptions`, `AIAnalysisResult`, `askAI`, `askAIDetailed`
95
-
96
- ---
97
-
98
- ### 📄 [`src/analyzers/languageAnalyzer.ts`](../src/analyzers/languageAnalyzer.ts)
99
-
100
- **Complexité et maintenance** : 580 lignes • 🟠 Élevée (270)
101
-
102
- **Fonctions** : `getAnalyzer()`, `getSupportedExtensions()`, `isExplicitlySupported()`
103
-
104
- **Classes** : `TSJSAnalyzer`, `PythonAnalyzer`, `JavaAnalyzer`, `CSharpAnalyzer`, `GoAnalyzer`, `RustAnalyzer`, `HTMLAnalyzer`, `CSSAnalyzer`, `PHPAnalyzer`, `RubyAnalyzer`, `SQLAnalyzer`, `DefaultAnalyzer`
105
-
106
- **Types/Interfaces** : `LanguageAnalyzer`, `FileAnalysisResult`
107
-
108
- **Exports publics** : `LanguageAnalyzer`, `FileAnalysisResult`, `getAnalyzer`, `getSupportedExtensions`, `isExplicitlySupported`
109
-
110
- ---
111
-
112
- ### 📄 [`src/cache/cacheManager.ts`](../src/cache/cacheManager.ts)
113
-
114
- **Complexité et maintenance** : 179 lignes • 🟢 Faible (36)
115
-
116
- **Classes** : `CacheManager`
117
-
118
- **Types/Interfaces** : `CacheEntry`, `CacheManifest`
119
-
120
- **Exports publics** : `CacheEntry`, `CacheManifest`, `CacheManager`
121
-
122
- **Dépendances** :
123
-
124
- • `node:crypto` (Node.js) → utilise `createHash`
125
- • `node:fs` (Node.js) → utilise `readFileSync, writeFileSync, existsSync, statSync, mkdirSync`
126
- • `node:path` (Node.js) → utilise `path`
127
-
128
- ---
129
-
130
- ### 📄 [`src/cli/index.ts`](../src/cli/index.ts)
131
-
132
- **Complexité et maintenance** : 355 lignes • 🟡 Modérée (77)
133
-
134
- **Fonctions** : `typeWriter()`, `showBanner()`, `selectLanguage()`, `showTransition()`
135
-
136
- **Classes** : `Spinner`, `ProgressBar`
137
-
138
- **Dépendances** :
139
-
140
- • `commander` (NPM) → utilise `Command`
141
- • `../commands/run.js` (Interne) → utilise `runCommand`
142
- • `../commands/generateSummary.js` (Interne) → utilise `generateSummary`
143
- • `node:readline/promises` (Node.js) → utilise `readline`
144
- • `node:process` (Node.js) → utilise `stdin as input, stdout as output`
145
- • `node:path` (Node.js) → utilise `path`
146
-
147
- ---
148
-
149
- ### 📄 [`src/commands/generateSummary.ts`](../src/commands/generateSummary.ts)
150
-
151
- **Complexité et maintenance** : 150 lignes • 🟢 Faible (27)
152
-
153
- **Fonctions** : `generateSummary()`
154
-
155
- **Types/Interfaces** : `SummaryData`
156
-
157
- **Exports publics** : `generateSummary`
158
-
159
- **Dépendances** :
160
-
161
- • `node:fs` (Node.js) → utilise `writeFileSync, mkdirSync`
162
- • `node:path` (Node.js) → utilise `path`
163
-
164
- ---
165
-
166
- ### 📄 [`src/commands/run.ts`](../src/commands/run.ts)
167
-
168
- **Complexité et maintenance** : 459 lignes • 🟡 Modérée (108)
169
-
170
- **Fonctions** : `buildTree()`, `renderTree()`, `analyzeFile()`, `getComplexityLevel()`, `formatAISummary()`, `runCommand()`, `generatePDF()`
171
-
172
- **Types/Interfaces** : `AIAnalysisOptions`, `TreeNode`, `FileAnalysis`
173
-
174
- **Exports publics** : `runCommand`
175
-
176
- **Dépendances** :
177
-
178
- • `globby` (NPM) → utilise `globby`
179
- • `node:fs` (Node.js) → utilise `writeFileSync, readFileSync, existsSync, mkdirSync`
180
- • `node:path` (Node.js) → utilise `path`
181
- • `puppeteer` (NPM) → utilise `puppeteer`
182
- • `../exporters/html.js` (Interne) → utilise `exportToHTML`
183
- • `../ai/analyzer.js` (Interne) → utilise `askAIDetailed, type AIAnalysisOptions`
184
- • `../analyzers/languageAnalyzer.js` (Interne) → utilise `getAnalyzer, getSupportedExtensions`
185
- • `../cache/cacheManager.js` (Interne) → utilise `CacheManager`
186
-
187
- ---
188
-
189
- ### 📄 [`src/exporters/html.ts`](../src/exporters/html.ts)
190
-
191
- **Complexité et maintenance** : 894 lignes • 🟠 Élevée (152)
192
-
193
- **Fonctions** : `exportToHTML()`, `toggleTheme()`, `sanitizeMermaidGraph()`, `generateHierarchyGraph()`, `sanitizeLabel()`, `getFileExtension()`, `getNodeStyle()`, `traverse()`, `getDefaultHierarchyGraph()`, `generateDataFlowGraph()`, `formatRisksSection()`, `formatText()`
194
-
195
- **Types/Interfaces** : `TreeStructure`
196
-
197
- **Exports publics** : `exportToHTML`
198
-
199
- **Dépendances** :
200
-
201
- • `node:fs` (Node.js) → utilise `writeFileSync`
202
- • `node:path` (Node.js) → utilise `path`
203
- • `https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs` (NPM) → utilise `mermaid`
204
-
205
- ---
206
-
207
- ## 📦 Modules externes
208
-
209
- | Module | Type | Occurrences |
210
- | :--- | :--- | :---: |
211
- | `../ai/analyzer.js` | Interne | 1 |
212
- | `../analyzers/languageAnalyzer.js` | Interne | 1 |
213
- | `../cache/cacheManager.js` | Interne | 1 |
214
- | `../commands/generateSummary.js` | Interne | 1 |
215
- | `../commands/run.js` | Interne | 1 |
216
- | `../exporters/html.js` | Interne | 1 |
217
- | `commander` | NPM | 1 |
218
- | `globby` | NPM | 1 |
219
- | `https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs` | NPM | 1 |
220
- | `node:crypto` | Node.js | 1 |
221
- | `node:fs` | Node.js | 4 |
222
- | `node:path` | Node.js | 5 |
223
- | `node:process` | Node.js | 1 |
224
- | `node:readline/promises` | Node.js | 1 |
225
- | `puppeteer` | NPM | 1 |
package/docs/report.html DELETED
@@ -1,633 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fr" data-theme="dark">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>DocsToDev – Rapport Technique</title>
7
-
8
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400&family=Fira+Code&display=swap" rel="stylesheet">
9
- <script type="module">
10
- import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
11
-
12
- mermaid.initialize({
13
- startOnLoad: true,
14
- theme: document.documentElement.dataset.theme === "dark" ? "dark" : "default",
15
- securityLevel: 'loose',
16
- logLevel: 'error',
17
- themeVariables: {
18
- darkMode: document.documentElement.dataset.theme === "dark",
19
- background: "transparent",
20
- primaryColor: "#58a6ff",
21
- primaryTextColor: "#c9d1d9",
22
- primaryBorderColor: "#30363d",
23
- lineColor: "#8b949e",
24
- secondaryColor: "#161b22",
25
- tertiaryColor: "#0d1117",
26
- fontSize: "14px",
27
- fontFamily: "Inter, sans-serif"
28
- },
29
- flowchart: {
30
- useMaxWidth: true,
31
- htmlLabels: true,
32
- curve: 'basis'
33
- }
34
- });
35
-
36
- window.mermaid = mermaid;
37
- </script>
38
-
39
- <style>
40
- :root[data-theme="dark"] {
41
- --bg: #0d1117;
42
- --card: #161b22;
43
- --text: #c9d1d9;
44
- --muted: #8b949e;
45
- --border: #30363d;
46
- --accent: #58a6ff;
47
- --code-bg: #1f2428;
48
- --file-badge-bg: rgba(248, 81, 73, 0.15);
49
- --file-badge-text: #f85149;
50
- }
51
-
52
- :root[data-theme="light"] {
53
- --bg: #ffffff;
54
- --card: #f6f8fa;
55
- --text: #24292f;
56
- --muted: #57606a;
57
- --border: #d0d7de;
58
- --accent: #0969da;
59
- --code-bg: #eaeef2;
60
- --file-badge-bg: rgba(218, 54, 51, 0.15);
61
- --file-badge-text: #da3633;
62
- }
63
-
64
- * {
65
- margin: 0;
66
- padding: 0;
67
- box-sizing: border-box;
68
- }
69
-
70
- body {
71
- font-family: Inter, sans-serif;
72
- background: var(--bg);
73
- color: var(--text);
74
- line-height: 1.6;
75
- }
76
-
77
- .container {
78
- max-width: 1400px;
79
- margin: 0 auto;
80
- padding: 2rem;
81
- }
82
-
83
- .controls {
84
- position: sticky;
85
- top: 0;
86
- background: var(--bg);
87
- padding: 1rem 0;
88
- display: flex;
89
- gap: 0.75rem;
90
- z-index: 100;
91
- border-bottom: 1px solid var(--border);
92
- margin-bottom: 2rem;
93
- }
94
-
95
- #search {
96
- flex: 1;
97
- padding: 0.6rem 1rem;
98
- border: 1px solid var(--border);
99
- background: var(--card);
100
- color: var(--text);
101
- font-size: 0.95rem;
102
- font-family: Inter, sans-serif;
103
- transition: border-color 0.2s;
104
- }
105
-
106
- #search:focus {
107
- outline: none;
108
- border-color: var(--accent);
109
- }
110
-
111
- button {
112
- padding: 0.6rem 1.2rem;
113
- border: 1px solid var(--border);
114
- background: var(--card);
115
- color: var(--text);
116
- cursor: pointer;
117
- font-size: 0.95rem;
118
- font-family: Inter, sans-serif;
119
- transition: all 0.2s;
120
- display: flex;
121
- align-items: center;
122
- gap: 0.5rem;
123
- }
124
-
125
- button:hover {
126
- background: var(--border);
127
- }
128
-
129
- button svg {
130
- width: 16px;
131
- height: 16px;
132
- }
133
-
134
- h1 {
135
- font-size: 2.5rem;
136
- color: var(--accent);
137
- margin-bottom: 3rem;
138
- font-weight: 400;
139
- letter-spacing: -0.02em;
140
- }
141
-
142
- h2 {
143
- font-size: 1.5rem;
144
- margin: 3rem 0 1.5rem 0;
145
- padding-bottom: 0.75rem;
146
- border-bottom: 1px solid var(--border);
147
- font-weight: 400;
148
- color: var(--text);
149
- }
150
-
151
- h3 {
152
- font-size: 1.1rem;
153
- margin-bottom: 1rem;
154
- color: var(--accent);
155
- font-weight: 400;
156
- }
157
-
158
- .graphs-grid {
159
- display: grid;
160
- grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
161
- gap: 2rem;
162
- margin: 2rem 0;
163
- }
164
-
165
- .graph-container {
166
- border: 1px solid var(--border);
167
- background: var(--card);
168
- padding: 1.5rem;
169
- min-height: 300px;
170
- position: relative;
171
- }
172
-
173
- .graph-title {
174
- font-size: 1rem;
175
- color: var(--muted);
176
- margin-bottom: 1rem;
177
- text-transform: uppercase;
178
- letter-spacing: 0.05em;
179
- font-size: 0.85rem;
180
- }
181
-
182
- .mermaid-wrapper {
183
- width: 100%;
184
- overflow-x: auto;
185
- overflow-y: hidden;
186
- }
187
-
188
- .component {
189
- border: 1px solid var(--border);
190
- background: var(--card);
191
- padding: 1.5rem;
192
- margin-bottom: 1.5rem;
193
- }
194
-
195
- .component p,
196
- .component .list-item {
197
- word-wrap: break-word;
198
- overflow-wrap: break-word;
199
- word-break: break-word;
200
- }
201
-
202
- .tree-line {
203
- font-family: "Fira Code", monospace;
204
- font-size: 0.85rem;
205
- white-space: pre-wrap;
206
- word-wrap: break-word;
207
- color: var(--muted);
208
- line-height: 1.8;
209
- }
210
-
211
- .branch {
212
- color: var(--accent);
213
- }
214
-
215
- .pipe {
216
- color: var(--border);
217
- }
218
-
219
- .file-badge {
220
- background: var(--file-badge-bg);
221
- color: var(--file-badge-text);
222
- padding: 0.15rem 0.5rem;
223
- font-size: 0.8rem;
224
- font-family: "Fira Code", monospace;
225
- display: inline-block;
226
- margin-left: 0.25rem;
227
- }
228
-
229
- .table-container {
230
- border: 1px solid var(--border);
231
- margin: 1.5rem 0;
232
- overflow-x: auto;
233
- background: var(--card);
234
- }
235
-
236
- table {
237
- width: 100%;
238
- border-collapse: collapse;
239
- font-size: 0.9rem;
240
- table-layout: fixed;
241
- }
242
-
243
- th, td {
244
- border-bottom: 1px solid var(--border);
245
- padding: 0.75rem 1rem;
246
- text-align: left;
247
- word-wrap: break-word;
248
- overflow-wrap: break-word;
249
- }
250
-
251
- th {
252
- background: var(--bg);
253
- color: var(--muted);
254
- text-transform: uppercase;
255
- font-size: 0.8rem;
256
- letter-spacing: 0.05em;
257
- font-weight: 400;
258
- }
259
-
260
- tr:last-child td {
261
- border-bottom: none;
262
- }
263
-
264
- code {
265
- font-family: "Fira Code", monospace;
266
- background: var(--code-bg);
267
- padding: 0.2rem 0.4rem;
268
- font-size: 0.9em;
269
- color: var(--accent);
270
- word-wrap: break-word;
271
- overflow-wrap: break-word;
272
- }
273
-
274
- .list-item {
275
- margin-bottom: 0.5rem;
276
- padding-left: 1.5rem;
277
- position: relative;
278
- }
279
-
280
- .list-item::before {
281
- content: "";
282
- position: absolute;
283
- left: 0.5rem;
284
- top: 0.7rem;
285
- width: 4px;
286
- height: 4px;
287
- background: var(--accent);
288
- }
289
-
290
- p {
291
- margin-bottom: 1rem;
292
- color: var(--muted);
293
- }
294
-
295
- a {
296
- color: var(--accent);
297
- text-decoration: none;
298
- }
299
-
300
- a:hover {
301
- text-decoration: underline;
302
- }
303
-
304
- mark {
305
- background: #ffd33d;
306
- color: #000;
307
- padding: 0.1rem 0.3rem;
308
- }
309
-
310
- .mermaid {
311
- background: transparent;
312
- display: flex;
313
- justify-content: center;
314
- align-items: center;
315
- min-height: 200px;
316
- }
317
-
318
- .mermaid svg {
319
- max-width: 100%;
320
- height: auto;
321
- }
322
-
323
- .error-message {
324
- color: #f85149;
325
- padding: 1rem;
326
- background: rgba(248, 81, 73, 0.1);
327
- border: 1px solid rgba(248, 81, 73, 0.3);
328
- border-radius: 4px;
329
- font-family: "Fira Code", monospace;
330
- font-size: 0.9rem;
331
- }
332
-
333
- .project-goal-section {
334
- background: linear-gradient(135deg, var(--accent) 0%, #7c3aed 100%);
335
- padding: 2rem;
336
- margin: 2rem 0;
337
- border-radius: 8px;
338
- border-left: 4px solid var(--accent);
339
- }
340
-
341
- .project-goal-section h2 {
342
- color: #ffffff;
343
- border-bottom: none;
344
- margin: 0 0 1rem 0;
345
- font-size: 1.8rem;
346
- }
347
-
348
- .project-goal-section p {
349
- color: rgba(255, 255, 255, 0.95);
350
- font-size: 1.1rem;
351
- line-height: 1.8;
352
- }
353
-
354
- .risks-section {
355
- background: var(--card);
356
- border: 1px solid var(--border);
357
- border-left: 4px solid #f85149;
358
- padding: 1.5rem;
359
- margin: 2rem 0;
360
- }
361
-
362
- .risks-section h3 {
363
- color: #f85149;
364
- margin-bottom: 1rem;
365
- }
366
-
367
- .risk-item {
368
- padding: 0.75rem;
369
- margin: 0.5rem 0;
370
- border-radius: 4px;
371
- display: flex;
372
- align-items: flex-start;
373
- gap: 0.75rem;
374
- }
375
-
376
- .risk-item.critical {
377
- background: rgba(248, 81, 73, 0.1);
378
- border-left: 3px solid #f85149;
379
- }
380
-
381
- .risk-item.medium {
382
- background: rgba(251, 191, 36, 0.1);
383
- border-left: 3px solid #fbbf24;
384
- }
385
-
386
- .risk-item.low {
387
- background: rgba(34, 197, 94, 0.1);
388
- border-left: 3px solid #22c55e;
389
- }
390
-
391
- .risk-icon {
392
- font-size: 1.2rem;
393
- flex-shrink: 0;
394
- }
395
-
396
- .recommendations-section {
397
- background: var(--card);
398
- border: 1px solid var(--border);
399
- border-left: 4px solid #22c55e;
400
- padding: 1.5rem;
401
- margin: 2rem 0;
402
- }
403
-
404
- .recommendations-section h3 {
405
- color: #22c55e;
406
- margin-bottom: 1rem;
407
- }
408
-
409
- .recommendation-item {
410
- padding: 0.75rem;
411
- margin: 0.5rem 0;
412
- background: rgba(34, 197, 94, 0.05);
413
- border-radius: 4px;
414
- padding-left: 2rem;
415
- position: relative;
416
- }
417
-
418
- .recommendation-item::before {
419
- content: "💡";
420
- position: absolute;
421
- left: 0.5rem;
422
- top: 0.75rem;
423
- }
424
-
425
- .design-system-section {
426
- background: var(--card);
427
- border: 1px solid var(--border);
428
- padding: 1.5rem;
429
- margin: 2rem 0;
430
- }
431
-
432
- .color-palette {
433
- display: flex;
434
- gap: 1rem;
435
- flex-wrap: wrap;
436
- margin: 1rem 0;
437
- }
438
-
439
- .color-swatch {
440
- display: flex;
441
- flex-direction: column;
442
- align-items: center;
443
- gap: 0.5rem;
444
- }
445
-
446
- .color-box {
447
- width: 60px;
448
- height: 60px;
449
- border-radius: 8px;
450
- border: 2px solid var(--border);
451
- box-shadow: 0 2px 8px rgba(0,0,0,0.1);
452
- }
453
-
454
- .color-label {
455
- font-size: 0.75rem;
456
- font-family: "Fira Code", monospace;
457
- color: var(--muted);
458
- }
459
-
460
- @media print {
461
- .controls {
462
- display: none;
463
- }
464
-
465
- .container {
466
- max-width: 100%;
467
- padding: 0;
468
- }
469
-
470
- .component {
471
- page-break-inside: avoid;
472
- }
473
- }
474
-
475
- @media (max-width: 768px) {
476
- .graphs-grid {
477
- grid-template-columns: 1fr;
478
- }
479
-
480
- .controls {
481
- flex-direction: column;
482
- }
483
- }
484
- </style>
485
- </head>
486
-
487
- <body>
488
- <div class="container">
489
-
490
-
491
-
492
-
493
-
494
- <div class="controls">
495
- <input id="search" placeholder="Rechercher dans la documentation..." type="text">
496
- <button onclick="toggleTheme()">
497
- <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
498
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/>
499
- </svg>
500
- Thème
501
- </button>
502
- <button onclick="window.print()">
503
- <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
504
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"/>
505
- </svg>
506
- Exporter PDF
507
- </button>
508
- </div>
509
-
510
- <h2>Architecture du projet</h2>
511
- <div class="graphs-grid">
512
- <div class="graph-container">
513
- <div class="graph-title">Graphe des dépendances</div>
514
- <div class="mermaid-wrapper">
515
- <pre class="mermaid">
516
- graph LR
517
- index_ts --> run_js:::jsFileStyle
518
- index_ts --> generateSummary_js:::jsFileStyle
519
- run_ts --> html_js:::jsFileStyle
520
- run_ts --> analyzer_js:::jsFileStyle
521
- run_ts --> languageAnalyzer_js:::jsFileStyle
522
- run_ts --> cacheManager_js:::jsFileStyle
523
-
524
- classDef jsFileStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
525
- classDef tsFileStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
526
- classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
527
- classDef componentStyle fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#fff
528
- classDef functionStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
529
- classDef serviceStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
530
- classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
531
- </pre>
532
- </div>
533
- </div>
534
-
535
- <div class="graph-container">
536
- <div class="graph-title">Structure du projet</div>
537
- <div class="mermaid-wrapper">
538
- <pre class="mermaid">
539
- graph TD
540
- node0["📄 package-lock.json"]:::configStyle
541
- node1["📄 package.json"]:::configStyle
542
- node2["📄 tsconfig.json"]:::configStyle
543
- node3["📄 srcaianalyzer.ts"]:::tsStyle
544
- node4["📄 srcanalyzerslanguageAnalyzer.ts"]:::tsStyle
545
- node5["📄 srccachecacheManager.ts"]:::tsStyle
546
- node6["📄 srccliindex.ts"]:::tsStyle
547
- node7["📄 srccommandsgenerateSummary.ts"]:::tsStyle
548
- node8["📄 srccommandsrun.ts"]:::tsStyle
549
- node9["📄 srcexportershtml.ts"]:::tsStyle
550
-
551
- classDef folderStyle fill:#58a6ff,stroke:#1f6feb,stroke-width:2px,color:#fff
552
- classDef tsStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
553
- classDef jsStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
554
- classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
555
- classDef htmlStyle fill:#e34c26,stroke:#b83c1f,stroke-width:2px,color:#fff
556
- classDef cssStyle fill:#264de4,stroke:#1b3ba3,stroke-width:2px,color:#fff
557
- classDef docStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
558
- classDef fileStyle fill:#8b949e,stroke:#6e7681,stroke-width:2px,color:#fff
559
- </pre>
560
- </div>
561
- </div>
562
- </div>
563
-
564
- <div class="graph-container" style="margin-bottom: 3rem;">
565
- <div class="graph-title">Flux de données</div>
566
- <div class="mermaid-wrapper">
567
- <pre class="mermaid">
568
- graph LR
569
- A["📥 Input<br/>(fichiers source)"]:::inputStyle --> B["🔍 Analyzer<br/>(analyse code)"]:::analyzerStyle
570
- B --> C["📊 Parser<br/>(extraction données)"]:::parserStyle
571
- C --> D["⚙️ Generator<br/>(génération docs)"]:::generatorStyle
572
- D --> E["📤 Exporter<br/>(export HTML/PDF)"]:::exporterStyle
573
- E --> F["✅ Output<br/>(documentation)"]:::outputStyle
574
-
575
- classDef inputStyle fill:#3b82f6,stroke:#1d4ed8,stroke-width:2px,color:#fff
576
- classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
577
- classDef parserStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
578
- classDef generatorStyle fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff
579
- classDef exporterStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
580
- classDef outputStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
581
- </pre>
582
- </div>
583
- </div>
584
-
585
- <div id="content-area"><h1>Rapport Technique DocsToDev</h1><p>> 📅 Généré le : vendredi 9 janvier 2026 à 09:22</p><p>> 📊 7 fichiers analysés • 15 dépendances identifiées</p><h2>💡 Analyse Intelligente</h2><h2>1.</h2><p><code>But</code> du <code>Projet</code></p><p><code>Le</code> projet <code>DocsToDev</code> vise à analyser des données techniques brutes et à les transformer en documentation métier claire et structurée.</p><p><code>Il</code> résout les problèmes de compréhension et d'analyse de données techniques complexes pour les développeurs et les équipes de développement.</p><p><code>Le</code> public cible de ce projet inclut les développeurs, les architectes logiciels, et les équipes de développement qui cherchent à améliorer la qualité et la compréhension de leurs projets logiciels.</p><h2>2.</h2><p><code>Design</code> <code>System</code> Détecté</p><p><code>Le</code> design system détecté dans le projet inclut :</p><div class="list-item"><code>Palette</code> de couleurs : <code>Les</code> couleurs primaires et secondaires utilisées dans le projet ne sont pas explicitement définies dans les extraits de code fournis, mais il est mentionné que la palette de couleurs fait partie de l'analyse du design system.</div><div class="list-item"><code>Typographie</code> : <code>Les</code> polices utilisées ne sont pas spécifiquement mentionnées dans les extraits de code fournis.</div><div class="list-item"><code>Patterns</code> de composants : <code>Les</code> patterns de composants, tels que les cartes, les modales, les formulaires, etc., sont détectés et documentés dans le projet.</div><h2>3.</h2><p>⚠️ <code>Risques</code> <code>Identifi</code>és</p><p><code>Les</code> risques potentiels identifiés dans le projet sont classés par niveau :</p><div class="list-item">🔴 <code>Critique</code> :</div><div class="list-item"><code>La</code> sécurité du projet pourrait être compromise si les clés API comme <code>GROQ_API_KEY</code> ne sont pas sécurisées correctement.</div><div class="list-item">L'architecture du projet pourrait être affectée par la complexité et la maintenance des fichiers et des dépendances.</div><div class="list-item">🟡 <code>Moyen</code> :</div><div class="list-item"><code>La</code> dette technique et les performances du projet pourraient être impactées par la complexité croissante des analyses et des exports.</div><div class="list-item">🟢 <code>Faible</code> :</div><div class="list-item"><code>Les</code> améliorations mineures pourraient inclure la optimisation des requêtes, la mise à jour des dépendances, et la réduction de la duplication de code.</div><h2>4.</h2><p>💡 <code>Recommandations</code></p><p><code>Les</code> actions concrètes pour améliorer le projet sont :</p><div class="list-item"><code>Refactoring</code> : Réorganiser le code pour améliorer la lisibilité et la maintainabilité.</div><div class="list-item"><code>Optimisations</code> : <code>Optimiser</code> les performances en utilisant des méthodes plus efficaces pour les analyses et les exports.</div><div class="list-item"><code>Bonnes</code> pratiques : <code>Adopter</code> des bonnes pratiques de développement telles que les tests unitaires et d'intégration, et la mise à jour régulière des dépendances.</div><h2>5.</h2><p><code>Analyse</code> Détaillée des <code>Fichiers</code></p><div class="tree-line">- <code>src/ai/</code>analyzer.ts<code> : </code>Ce<code> fichier contient les fonctions d'analyse de l'IA, notamment </code>askAI<code> et </code>askAIDetailed`, qui analysent les données techniques et retournent des résultats détaillés.</div><div class="tree-line">- <code>src/analyzers/</code>languageAnalyzer<code>.ts</code> : <code>Ce</code> fichier contient les classes et les fonctions d'analyse de langage, notamment <code>TSJSAnalyzer</code>, qui analyse les fichiers de code et retourne des informations sur les exports, les imports, les fonctions, les classes, etc.</div><div class="tree-line">- <code>src/cache/</code>cacheManager<code>.ts</code> : <code>Ce</code> fichier contient la classe <code>CacheManager</code>, qui gère le cache des analyses pour améliorer les performances.</div><div class="tree-line">- <code>src/cli/</code>index.ts<code> : </code>Ce` fichier contient le point d'entrée de la ligne de commande, qui utilise les commandes pour exécuter les analyses et générer les rapports.</div><div class="tree-line">- <code>src/commands/</code>generateSummary<code>.ts</code> : <code>Ce</code> fichier contient la fonction <code>generateSummary</code>, qui génère un résumé du projet en fonction des données d'analyse.</div><div class="tree-line">- <code>src/commands/</code>run.ts<code> : </code>Ce<code> fichier contient la fonction </code>runCommand`, qui exécute les analyses et génère les rapports en fonction des options de la ligne de commande.</div><div class="tree-line">- <code>src/exporters/</code>html.ts<code> : </code>Ce<code> fichier contient la fonction </code>exportToHTML`, qui exporte les résultats des analyses en format HTML.</div><h2>📂 Architecture du projet</h2><p><code></code>`</p><div class="tree-line"><span class="branch">├─</span> <a href="../package-lock.json">package-lock.json</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../package.json">package.json</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/ai/analyzer.ts">src/ai/analyzer.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/analyzers/languageAnalyzer.ts">src/analyzers/languageAnalyzer.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/cache/cacheManager.ts">src/cache/cacheManager.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/cli/index.ts">src/cli/index.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/commands/generateSummary.ts">src/commands/generateSummary.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/commands/run.ts">src/commands/run.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/exporters/html.ts">src/exporters/html.ts</a></div><div class="tree-line"><span class="branch">└─</span> <a href="../tsconfig.json">tsconfig.json</a></div><p><code></code>`</p><h2>🔬 Analyse détaillée des composants</h2><div class="tree-line">### 📄 <a href="../src/ai/analyzer.ts"><code>src/ai/analyzer.ts</code></a></div><p>Complexité et maintenance : 289 lignes • 🟢 Faible (46)</p><p>Fonctions : <code>askAI()</code>, <code>askAIDetailed()</code>, <code>buildSystemPrompt()</code>, <code>parseAIResponse()</code></p><div class="tree-line">Types/Interfaces : <code>AIAnalysisOptions</code>, <code>AIAnalysisResult</code></div><p>Exports publics : <code>AIAnalysisOptions</code>, <code>AIAnalysisResult</code>, <code>askAI</code>, <code>askAIDetailed</code></p><p>---</p><div class="tree-line">### 📄 <a href="../src/analyzers/languageAnalyzer.ts"><code>src/analyzers/languageAnalyzer.ts</code></a></div><p>Complexité et maintenance : 580 lignes • 🟠 Élevée (270)</p><p>Fonctions : <code>getAnalyzer()</code>, <code>getSupportedExtensions()</code>, <code>isExplicitlySupported()</code></p><p>Classes : <code>TSJSAnalyzer</code>, <code>PythonAnalyzer</code>, <code>JavaAnalyzer</code>, <code>CSharpAnalyzer</code>, <code>GoAnalyzer</code>, <code>RustAnalyzer</code>, <code>HTMLAnalyzer</code>, <code>CSSAnalyzer</code>, <code>PHPAnalyzer</code>, <code>RubyAnalyzer</code>, <code>SQLAnalyzer</code>, <code>DefaultAnalyzer</code></p><div class="tree-line">Types/Interfaces : <code>LanguageAnalyzer</code>, <code>FileAnalysisResult</code></div><p>Exports publics : <code>LanguageAnalyzer</code>, <code>FileAnalysisResult</code>, <code>getAnalyzer</code>, <code>getSupportedExtensions</code>, <code>isExplicitlySupported</code></p><p>---</p><div class="tree-line">### 📄 <a href="../src/cache/cacheManager.ts"><code>src/cache/cacheManager.ts</code></a></div><p>Complexité et maintenance : 179 lignes • 🟢 Faible (36)</p><p>Classes : <code>CacheManager</code></p><div class="tree-line">Types/Interfaces : <code>CacheEntry</code>, <code>CacheManifest</code></div><p>Exports publics : <code>CacheEntry</code>, <code>CacheManifest</code>, <code>CacheManager</code></p><p>Dépendances :</p><div class="list-item"><code>node:crypto</code> (Node.js) → utilise <code>createHash</code></div><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>readFileSync, writeFileSync, existsSync, statSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/cli/index.ts"><code>src/cli/index.ts</code></a></div><p>Complexité et maintenance : 355 lignes • 🟡 Modérée (77)</p><p>Fonctions : <code>typeWriter()</code>, <code>showBanner()</code>, <code>selectLanguage()</code>, <code>showTransition()</code></p><p>Classes : <code>Spinner</code>, <code>ProgressBar</code></p><p>Dépendances :</p><div class="list-item"><code>commander</code> (NPM) → utilise <code>Command</code></div><div class="tree-line">• <code>../commands/run.js</code> (Interne) → utilise <code>runCommand</code></div><div class="tree-line">• <code>../commands/generateSummary.js</code> (Interne) → utilise <code>generateSummary</code></div><div class="tree-line">• <code>node:readline/promises</code> (Node.js) → utilise <code>readline</code></div><div class="list-item"><code>node:process</code> (Node.js) → utilise <code>stdin as input, stdout as output</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/commands/generateSummary.ts"><code>src/commands/generateSummary.ts</code></a></div><p>Complexité et maintenance : 150 lignes • 🟢 Faible (27)</p><p>Fonctions : <code>generateSummary()</code></p><div class="tree-line">Types/Interfaces : <code>SummaryData</code></div><p>Exports publics : <code>generateSummary</code></p><p>Dépendances :</p><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/commands/run.ts"><code>src/commands/run.ts</code></a></div><p>Complexité et maintenance : 459 lignes • 🟡 Modérée (108)</p><p>Fonctions : <code>buildTree()</code>, <code>renderTree()</code>, <code>analyzeFile()</code>, <code>getComplexityLevel()</code>, <code>formatAISummary()</code>, <code>runCommand()</code>, <code>generatePDF()</code></p><div class="tree-line">Types/Interfaces : <code>AIAnalysisOptions</code>, <code>TreeNode</code>, <code>FileAnalysis</code></div><p>Exports publics : <code>runCommand</code></p><p>Dépendances :</p><div class="list-item"><code>globby</code> (NPM) → utilise <code>globby</code></div><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync, readFileSync, existsSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><div class="list-item"><code>puppeteer</code> (NPM) → utilise <code>puppeteer</code></div><div class="tree-line">• <code>../exporters/html.js</code> (Interne) → utilise <code>exportToHTML</code></div><div class="tree-line">• <code>../ai/analyzer.js</code> (Interne) → utilise <code>askAIDetailed, type AIAnalysisOptions</code></div><div class="tree-line">• <code>../analyzers/languageAnalyzer.js</code> (Interne) → utilise <code>getAnalyzer, getSupportedExtensions</code></div><div class="tree-line">• <code>../cache/cacheManager.js</code> (Interne) → utilise <code>CacheManager</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/exporters/html.ts"><code>src/exporters/html.ts</code></a></div><p>Complexité et maintenance : 894 lignes • 🟠 Élevée (152)</p><p>Fonctions : <code>exportToHTML()</code>, <code>toggleTheme()</code>, <code>sanitizeMermaidGraph()</code>, <code>generateHierarchyGraph()</code>, <code>sanitizeLabel()</code>, <code>getFileExtension()</code>, <code>getNodeStyle()</code>, <code>traverse()</code>, <code>getDefaultHierarchyGraph()</code>, <code>generateDataFlowGraph()</code>, <code>formatRisksSection()</code>, <code>formatText()</code></p><div class="tree-line">Types/Interfaces : <code>TreeStructure</code></div><p>Exports publics : <code>exportToHTML</code></p><p>Dépendances :</p><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><div class="tree-line">• <code>https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs</code> (NPM) → utilise <code>mermaid</code></div><p>---</p><h2>📦 Modules externes</h2><div class="table-container"><table><tr><th>Module</th><th>Type</th><th>Occurrences</th></tr><tr><td><code>../ai/analyzer.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../analyzers/languageAnalyzer.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../cache/cacheManager.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../commands/generateSummary.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../commands/run.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../exporters/html.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>commander</code></td><td>NPM</td><td>1</td></tr><tr><td><code>globby</code></td><td>NPM</td><td>1</td></tr><tr><td><code>https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs</code></td><td>NPM</td><td>1</td></tr><tr><td><code>node:crypto</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>node:fs</code></td><td>Node.js</td><td>4</td></tr><tr><td><code>node:path</code></td><td>Node.js</td><td>5</td></tr><tr><td><code>node:process</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>node:readline/promises</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>puppeteer</code></td><td>NPM</td><td>1</td></tr></table></div></div>
586
-
587
- </div>
588
-
589
- <script>
590
- function toggleTheme() {
591
- const root = document.documentElement;
592
- const next = root.dataset.theme === "dark" ? "light" : "dark";
593
- root.dataset.theme = next;
594
- localStorage.setItem("theme", next);
595
- location.reload();
596
- }
597
-
598
- document.documentElement.dataset.theme = localStorage.getItem("theme") || "dark";
599
-
600
- const originalHTML = document.getElementById("content-area").innerHTML;
601
-
602
- document.getElementById("search").addEventListener("input", e => {
603
- const term = e.target.value.trim();
604
- const container = document.getElementById("content-area");
605
-
606
- if (!term) {
607
- container.innerHTML = originalHTML;
608
- return;
609
- }
610
-
611
- const regex = new RegExp("(" + term.replace(/[.*+?\${}()|[\]\\]/g, "\\$&") + ")", "gi");
612
- container.innerHTML = originalHTML.replace(regex, "<mark>$1</mark>");
613
-
614
- const first = container.querySelector("mark");
615
- if (first) first.scrollIntoView({ behavior: "smooth", block: "center" });
616
- });
617
-
618
- window.addEventListener('load', () => {
619
- setTimeout(() => {
620
- document.querySelectorAll('.mermaid').forEach(el => {
621
- if (!el.querySelector('svg') && !el.querySelector('.error-message')) {
622
- const errorMsg = document.createElement('div');
623
- errorMsg.className = 'error-message';
624
- errorMsg.textContent = 'Erreur de rendu du graphe';
625
- el.appendChild(errorMsg);
626
- }
627
- });
628
- }, 3000);
629
- });
630
- </script>
631
-
632
- </body>
633
- </html>
package/docs/report.pdf DELETED
Binary file
package/docs/summary.md DELETED
@@ -1,16 +0,0 @@
1
- # 📊 Vue d'ensemble du Projet – DocsToDev
2
-
3
- > 📅 **Rapport généré le :** vendredi 9 janvier 2026 à 09:22
4
-
5
- ## 🚀 État des lieux
6
- Salut ! J'ai passé ton projet au peigne fin. Voici un résumé rapide de ce que j'ai trouvé :
7
- - **Volume traité :** 10 fichiers analysés avec succès.
8
- - **Diagnostic :** La structure est claire et l'analyse est complète. ✅
9
-
10
- ## 🧭 Navigation Rapide
11
- Pour aller plus loin, tu peux consulter les documents suivants :
12
- - **[📂 Arborescence & Analyse](../docs/docs-to-dev.md)** : Pour comprendre la vocation de chaque fichier et les capacités du système.
13
- - **[💻 Code Source](../)** : Pour retourner explorer la racine de ton projet.
14
-
15
- ---
16
- *DocsToDev – Ton allié pour une documentation technique vivante et intelligente.*